diff --git a/.env b/.env new file mode 100644 index 000000000..d4e31d19a --- /dev/null +++ b/.env @@ -0,0 +1,10 @@ +DBDRIVER=mysql +MYSQLHOST=localhost +MYSQLUSER=root +MYSQLPASSWORD= +MYSQLDATABASE=mlite +MYSQLPORT=3306 +APPURL=http://localhost:8000/uploads +MULTIAPP= +MULTIAPP_REDIRECT= +DEV_MODE=false diff --git a/.gitignore b/.gitignore index 67dc49e73..de38332b4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store -#config.php +.trae/ +config.php admin/tmp admin/pla.php tmp @@ -7,11 +8,17 @@ websocket uploads vendor __vendor -systems/data/database.sdb +app_amati/ +systems/data/*.sdb webapps backup/ plugins/apotek_online plugins/simrsp +# plugins/mini_pacs/*.sh +# plugins/mini_pacs/*.json +# plugins/mini_pacs/worklist_monitor.php +# plugins/mini_pacs/receiver.php +# plugins/mini_pacs/systemd/* config.php themes/mlite systems/lib/jasperphp @@ -21,26 +28,49 @@ plugins/utd/www plugins/lisensi assets/easyui plugins/desktop +plugins/sia plugins/kasir plugins/dokter_radiologi plugins/dokter_ulun plugins/reg_periksa -plugins/khanza plugins/___siap_insulin plugins/siap_insulin plugins/pasien_galleries plugins/cssd +plugins/orthanc/docker jasperphp plugins/utd/Site.php plugins/utd/view/adonan.html websocket -plugins/khanza.zip plugins/website_ausy -plugins/khanza +plugins/rsgmgha +plugins/verifikasi_klaim plugins/pasien_galleries +# plugins/log_antrian_taskid + +mobile-react/node_modules +frontend-react/node_modules +frontend-react/dist +frontend-react/node_modules/* +frontend-react/dist/* +#docker/ +docker/mysql* +docker/orthanc/orthanc-db/* +docker/orthanc/dummy-dicom/* +docker/.trae +docker/nginx/conf.d/* +docker/dns/dnsmasq.log +docker/www/* -.env +# .env logs/ config.php -workerman.php +#workerman.php +composer.lock +backups +themes/atilamedika +.vercel +api/ +docker/.env +mobile-react/node_modules/.package-lock.json \ No newline at end of file diff --git a/.htaccess b/.htaccess index 9728d1073..30c608345 100644 --- a/.htaccess +++ b/.htaccess @@ -2,7 +2,7 @@ Options -Indexes # Prevent visitors from viewing files directly - + Order allow,deny Deny from all diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..481ba9ccf --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,25 @@ +# Changelog + +## [2026-04-07] + +### Added +- VClaim: Tambah alur pembaruan tanggal-pulang SEP (endpoint baru `updatetglplg2`) + modal UI `plugins/vclaim/view/admin/sep_pulang.html`. +- VClaim: Tambah endpoint `spridata` untuk mengambil detail SPRI berdasarkan `no_surat` (dipakai untuk memuat data ke form). +- VClaim: Tambah aksi Update/Delete SPRI dari form SPRI (menggunakan endpoint update & delete VClaim). +- VClaim: Tambah aksi Update/Delete Kontrol dari form Kontrol (menggunakan endpoint update & delete VClaim). +- VClaim: Tambah menu SEP Internal di menu. + +### Changed +- VClaim: Tambah tombol “Pulang” di riwayat SEP (ditampilkan untuk `jnsPelayanan == 1`) dan muat modal tanggal-pulang. +- VClaim: Perbaiki alur input SEP (isi otomatis No. MR dari data peserta, buat otomatis No. Rujukan saat kosong, dan izinkan klik No. SEP di riwayat untuk mengisi No. Rujukan). +- VClaim: Perbarui permintaan tanggal-pulang menggunakan HTTP `PUT` (bukan `DELETE`) dan terima nilai dari input. +- VClaim: Tingkatkan UX SPRI (tambah field No Surat + mode Update/Delete setelah memilih item, dan buat baris No Rawat bisa diklik untuk memuat data ke form). + +### Fixed +- VClaim: Perkuat penanganan pesan kesalahan saat respons BPJS null/tidak valid (fallback ke “Unknown error”). +- VClaim: Perbaiki kesalahan kecil dan pengutipan token sesi di beberapa URL AJAX (mis. label “Faskes” dan pengutipan token). + +## [2026-04-08] + +### Changed +- VClaim: Perubahan header dan body request pada aproval SEP \ No newline at end of file diff --git a/MLITE.postman_collection.json b/MLITE.postman_collection.json new file mode 100644 index 000000000..c0cead3d9 --- /dev/null +++ b/MLITE.postman_collection.json @@ -0,0 +1,7371 @@ +{ + "info": { + "name": "mLITE API", + "description": "Collection for mLITE API", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Login", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "if (jsonData.token) {", + " pm.collectionVariables.set(\"token\", jsonData.token);", + "}" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text", + "description": "API Key wajib disertakan untuk validasi akses Layer 1" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"username\": \"{{username}}\",\n \"password\": \"{{password}}\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/login", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "login" + ] + }, + "description": "Mendapatkan Token JWT untuk Frontend/Mobile App. \n\nKeamanan Layer 1: Aplikasi diverifikasi via X-Api-Key.\nKeamanan Layer 2: End-User diverifikasi via Username & Password di body.\n(API Key bebas digunakan untuk meloginkan End-User mana saja sesuai tabel mlite_users)." + }, + "response": [] + }, + { + "name": "Dashboard", + "item": [ + { + "name": "Doctor Dashboard", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/dashboard/stats", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "dashboard", + "stats" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Pasien", + "item": [ + { + "name": "List Pasien", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/pasien/list?page={{page}}&per_page={{per_page}}&s={{s}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "pasien", + "list" + ], + "query": [ + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "per_page", + "value": "{{per_page}}" + }, + { + "key": "s", + "value": "{{s}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Show Pasien", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/pasien/show/{{no_rkm_medis}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "pasien", + "show", + "{{no_rkm_medis}}" + ] + } + }, + "response": [] + }, + { + "name": "Riwayat Perawatan", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/pasien/riwayatperawatan/{{no_rkm_medis}}?no_rawat={{no_rawat}}&detail=false", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "pasien", + "riwayatperawatan", + "{{no_rkm_medis}}" + ], + "query": [ + { + "key": "no_rawat", + "value": "{{no_rawat}}" + }, + { + "key": "detail", + "value": "false" + } + ] + } + }, + "response": [] + }, + { + "name": "Create Pasien", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"nm_pasien\": \"Pasien Baru\",\n \"no_ktp\": \"1234567890123456\",\n \"jk\": \"L\",\n \"tgl_lahir\": \"1990-01-01\",\n \"alamat\": \"Jl. Contoh No. 1\",\n \"no_tlp\": \"08123456789\",\n \"kd_pj\": \"UMUM\",\n \"no_rkm_medis\": \"{{no_rkm_medis}}\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/pasien/create", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "pasien", + "create" + ] + } + }, + "response": [] + }, + { + "name": "Update Pasien", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"nm_pasien\": \"Pasien Update\",\n \"alamat\": \"Jl. Update No. 2\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/pasien/update/{{no_rkm_medis}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "pasien", + "update", + "{{no_rkm_medis}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Pasien", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/pasien/delete/{{no_rkm_medis}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "pasien", + "delete", + "{{no_rkm_medis}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Rawat Jalan", + "item": [ + { + "name": "List Rawat Jalan", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/list?draw=1&start=0&length=10&tgl_awal=2025-01-01&tgl_akhir=2025-12-31", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "list" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2025-01-01" + }, + { + "key": "tgl_akhir", + "value": "2025-12-31" + }, + { + "key": "search", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "Show Rawat Jalan", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/show/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "show", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Rawat Jalan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rkm_medis\": \"000001\",\n \"kd_poli\": \"IGD\",\n \"kd_dokter\": \"D00001\",\n \"kd_pj\": \"UMU\",\n \"tgl_registrasi\": \"2025-01-01\",\n \"jam_reg\": \"08:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/create", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "create" + ] + } + }, + "response": [] + }, + { + "name": "Update Rawat Jalan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kd_poli\": \"POLI01\",\n \"kd_dokter\": \"D00002\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/update/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "update", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Rawat Jalan", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/delete/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "delete", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Show SOAP Rawat Jalan", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/showsoap/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "showsoap", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Save SOAP Rawat Jalan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\",\n \"suhu_tubuh\": \"36.5\",\n \"tensi\": \"120/80\",\n \"nadi\": \"80\",\n \"respirasi\": \"20\",\n \"tinggi\": \"170\",\n \"berat\": \"60\",\n \"gcs\": \"E4V5M6\",\n \"keluhan\": \"Demam\",\n \"pemeriksaan\": \"Suhu badan tinggi\",\n \"alergi\": \"-\",\n \"lingkar_perut\": \"80\",\n \"rtl\": \"Istirahat\",\n \"penilaian\": \"Demam berdarah\",\n \"instruksi\": \"Minum obat\",\n \"evaluasi\": \"Baik\",\n \"nip\": \"D00001\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/savesoap", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "savesoap" + ] + } + }, + "response": [] + }, + { + "name": "Delete SOAP Rawat Jalan", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/deletesoap", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "deletesoap" + ] + } + }, + "response": [] + }, + { + "name": "Show Detail Rawat Jalan", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/showdetail/tindakan/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "showdetail", + "tindakan", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Save Detail Rawat Jalan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kat\": \"tindakan\",\n \"jml_tindakan\": \"1\",\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_jenis_prw\": \"T001\",\n \"provider\": \"rawat_jl_dr\",\n \"kode_provider\": \"D00001\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/savedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "savedetail" + ] + } + }, + "response": [] + }, + { + "name": "Delete Detail Rawat Jalan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kat\": \"tindakan\",\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_jenis_prw\": \"T001\",\n \"provider\": \"rawat_jl_dr\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/deletedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "deletedetail" + ] + } + }, + "response": [] + }, + { + "name": "Save Diagnosa", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kd_penyakit\": \"A00.0\",\n \"status\": \"Ralan\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/savediagnosa", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "savediagnosa" + ] + } + } + }, + { + "name": "Delete Diagnosa", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kd_penyakit\": \"A00.0\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/deletediagnosa", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "deletediagnosa" + ] + } + } + }, + { + "name": "Save Prosedur", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kode\": \"89.01\",\n \"status\": \"Ralan\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/saveprosedur", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "saveprosedur" + ] + } + } + }, + { + "name": "Delete Prosedur", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kode\": \"89.01\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/deleteprosedur", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "deleteprosedur" + ] + } + } + }, + { + "name": "Save Catatan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"catatan\": \"Pasien perlu istirahat cukup\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/savecatatan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "savecatatan" + ] + } + } + }, + { + "name": "Delete Catatan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"catatan\": \"Pasien perlu istirahat cukup\",\n \"tanggal\": \"2025-01-01\",\n \"jam\": \"12:00:00\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/deletecatatan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "deletecatatan" + ] + } + } + }, + { + "name": "Save Berkas", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"judul\": \"Hasil Lab Luar\",\n \"deskripsi\": \"http://link-to-file.com/file.pdf\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/saveberkas", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "saveberkas" + ] + } + } + }, + { + "name": "Delete Berkas", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"judul\": \"Hasil Lab Luar\",\n \"deskripsi\": \"http://link-to-file.com/file.pdf\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/deleteberkas", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "deleteberkas" + ] + } + } + }, + { + "name": "Save Resume", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"diagnosa_utama\": \"Demam Berdarah\",\n \"diagnosa_sekunder\": \"Tifus\",\n \"jalannya_penyakit\": \"Demam 3 hari...\",\n \"terapi\": \"Paracetamol 3x1\",\n \"kondisi_pulang\": \"Hidup\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/saveresume", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "saveresume" + ] + } + } + }, + { + "name": "Delete Resume", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kd_dokter\": \"D001\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/deleteresume", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "deleteresume" + ] + } + } + }, + { + "name": "Save Rujukan Internal", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kd_poli\": \"P001\",\n \"kd_dokter\": \"D001\",\n \"catatan\": \"Mohon konsul bedah\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/saverujukaninternal", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "saverujukaninternal" + ] + } + } + }, + { + "name": "Delete Rujukan Internal", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kd_poli\": \"P001\",\n \"kd_dokter\": \"D001\",\n \"catatan\": \"Mohon konsul bedah\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/deleterujukaninternal", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "deleterujukaninternal" + ] + } + } + }, + { + "name": "Save Laporan Operasi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"tanggal\": \"2023-01-01\",\n \"jam\": \"10:00:00\",\n \"operator\": \"D001\",\n \"laporan\": \"Operasi berjalan lancar\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/savelaporanoperasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "savelaporanoperasi" + ] + } + } + }, + { + "name": "Delete Laporan Operasi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"tanggal\": \"2023-01-01\",\n \"jam\": \"10:00:00\",\n \"operator\": \"D001\",\n \"laporan\": \"Operasi berjalan lancar\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_jalan/deletelaporanoperasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_jalan", + "deletelaporanoperasi" + ] + } + } + } + ] + }, + { + "name": "Website", + "item": [ + { + "name": "List Website News", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/website/list?draw=1&start=0&length=10&search=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "website", + "list" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "search", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "Show Website News", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/website/show/{{news_id}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "website", + "show", + "{{news_id}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Website News", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"title\": \"Judul Berita API\",\n \"content\": \"Isi berita dari API\",\n \"intro\": \"Ringkasan berita\",\n \"status\": 2,\n \"comments\": 1,\n \"markdown\": 0,\n \"published_at\": \"2026-05-01 10:00:00\",\n \"tags\": [\"api\", \"website\"]\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/website/create", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "website", + "create" + ] + } + }, + "response": [] + }, + { + "name": "Update Website News", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"title\": \"Judul Berita API (Update)\",\n \"intro\": \"Ringkasan update\",\n \"status\": 2,\n \"tags\": [\"api\", \"update\"]\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/website/update/{{news_id}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "website", + "update", + "{{news_id}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Website News", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/website/delete/{{news_id}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "website", + "delete", + "{{news_id}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Presensi", + "item": [ + { + "name": "List Presensi", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/presensi/list", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "presensi", + "list" + ] + } + } + }, + { + "name": "Show Presensi", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/presensi/show?tanggal={{tanggal}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "presensi", + "show" + ], + "query": [ + { + "key": "tanggal", + "value": "{{tanggal}}" + } + ] + } + } + }, + { + "name": "Clock In", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"shift\": \"Pagi\",\n \"photo\": \"\",\n \"lat\": \"-6.200000\",\n \"lng\": \"106.816666\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/presensi/create", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "presensi", + "create" + ] + } + } + }, + { + "name": "Clock Out", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/presensi/update", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "presensi", + "update" + ] + } + } + }, + { + "name": "Delete Presensi", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"jam_datang\": \"2023-01-01 08:00:00\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/presensi/delete", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "presensi", + "delete" + ] + } + } + } + ] + }, + { + "name": "IGD", + "item": [ + { + "name": "List IGD", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/igd/list?tgl_awal={{tgl_awal}}&tgl_akhir={{tgl_akhir}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "list" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2025-01-01" + }, + { + "key": "tgl_akhir", + "value": "2025-12-31" + }, + { + "key": "search", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "Detail IGD", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/igd/show/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "show", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Create IGD", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rkm_medis\": \"123456\",\n \"kd_poli\": \"IGD\",\n \"kd_dokter\": \"D001\",\n \"kd_pj\": \"A01\",\n \"tgl_registrasi\": \"2024-01-01\",\n \"jam_reg\": \"08:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/create", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "create" + ] + } + }, + "response": [] + }, + { + "name": "Update IGD", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"stts\": \"Sudah\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/update/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "update", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete IGD", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/igd/delete/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "delete", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Show SOAP", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/igd/showsoap/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "showsoap", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Save SOAP", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_perawatan\": \"2024-01-01\",\n \"jam_rawat\": \"10:00:00\",\n \"suhu_tubuh\": \"36.5\",\n \"tensi\": \"120/80\",\n \"nadi\": \"80\",\n \"respirasi\": \"20\",\n \"tinggi\": \"170\",\n \"berat\": \"65\",\n \"gcs\": \"E4V5M6\",\n \"keluhan\": \"Sakit kepala\",\n \"pemeriksaan\": \"Keadaan umum baik\",\n \"alergi\": \"-\",\n \"lingkar_perut\": \"-\",\n \"rtl\": \"Istirahat\",\n \"penilaian\": \"-\",\n \"instruksi\": \"-\",\n \"evaluasi\": \"-\",\n \"nip\": \"-\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/savesoap", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "savesoap" + ] + } + }, + "response": [] + }, + { + "name": "Delete SOAP", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_perawatan\": \"2024-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/deletesoap", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "deletesoap" + ] + } + }, + "response": [] + }, + { + "name": "Show Tindakan", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/igd/showdetail/tindakan/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "showdetail", + "tindakan", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Save Tindakan", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kat\": \"tindakan\",\n \"jml_tindakan\": \"1\",\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_perawatan\": \"2024-01-01\",\n \"jam_rawat\": \"10:00:00\",\n \"kd_jenis_prw\": \"T001\",\n \"provider\": \"rawat_jl_dr\",\n \"kode_provider\": \"D001\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/savedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "savedetail" + ] + } + }, + "response": [] + }, + { + "name": "Delete Tindakan", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"provider\": \"rawat_jl_dr\",\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_jenis_prw\": \"T001\",\n \"tgl_perawatan\": \"2024-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/deletedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "deletedetail" + ] + } + }, + "response": [] + }, + { + "name": "Show Obat", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/igd/showdetail/obat/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "showdetail", + "obat", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Save Obat", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kat\": \"obat\",\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_perawatan\": \"2024-01-01\",\n \"jam_rawat\": \"10:00:00\",\n \"kd_jenis_prw\": \"OB001\",\n \"jml\": \"10\",\n \"aturan_pakai\": \"3x1\",\n \"kode_provider\": \"D001\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/savedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "savedetail" + ] + } + }, + "response": [] + }, + { + "name": "Delete Obat", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"kode_brng\": \"OB001\",\n \"tgl_peresepan\": \"2024-01-01\",\n \"jam_peresepan\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/deletedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "deletedetail" + ] + } + }, + "response": [] + }, + { + "name": "Save Diagnosa", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_penyakit\": \"A00.1\",\n \"status\": \"Ralan\",\n \"prioritas\": \"1\",\n \"status_penyakit\": \"Lama\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/savediagnosa", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "savediagnosa" + ] + } + }, + "response": [] + }, + { + "name": "Delete Diagnosa", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_penyakit\": \"A00.1\",\n \"prioritas\": \"1\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/deletediagnosa", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "deletediagnosa" + ] + } + }, + "response": [] + }, + { + "name": "Save Prosedur", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kode\": \"89.01\",\n \"status\": \"Ralan\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/saveprosedur", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "saveprosedur" + ] + } + } + }, + { + "name": "Delete Prosedur", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kode\": \"89.01\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/deleteprosedur", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "deleteprosedur" + ] + } + } + }, + { + "name": "Save Catatan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"catatan\": \"Pasien perlu istirahat cukup\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/savecatatan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "savecatatan" + ] + } + } + }, + { + "name": "Delete Catatan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"catatan\": \"Pasien perlu istirahat cukup\",\n \"tanggal\": \"2025-01-01\",\n \"jam\": \"12:00:00\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/deletecatatan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "deletecatatan" + ] + } + } + }, + { + "name": "Save Berkas", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"judul\": \"Hasil Lab Luar\",\n \"deskripsi\": \"http://link-to-file.com/file.pdf\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/saveberkas", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "saveberkas" + ] + } + } + }, + { + "name": "Delete Berkas", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"judul\": \"Hasil Lab Luar\",\n \"deskripsi\": \"http://link-to-file.com/file.pdf\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/deleteberkas", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "deleteberkas" + ] + } + } + }, + { + "name": "Save Resume", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"diagnosa_utama\": \"Demam Berdarah\",\n \"diagnosa_sekunder\": \"Tifus\",\n \"jalannya_penyakit\": \"Demam 3 hari...\",\n \"terapi\": \"Paracetamol 3x1\",\n \"kondisi_pulang\": \"Hidup\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/saveresume", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "saveresume" + ] + } + } + }, + { + "name": "Save Laporan Operasi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"tanggal\": \"2023-01-01\",\n \"jam\": \"10:00:00\",\n \"operator\": \"D001\",\n \"laporan\": \"Operasi berjalan lancar\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/savelaporanoperasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "savelaporanoperasi" + ] + } + } + }, + { + "name": "Delete Laporan Operasi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"tanggal\": \"2023-01-01\",\n \"jam\": \"10:00:00\",\n \"operator\": \"D001\",\n \"laporan\": \"Operasi berjalan lancar\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/igd/deletelaporanoperasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "igd", + "deletelaporanoperasi" + ] + } + } + } + ] + }, + { + "name": "Rawat Inap", + "item": [ + { + "name": "List Rawat Inap", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/list?draw=1&start=0&length=10&tgl_awal=2025-01-01&tgl_akhir=2025-12-31", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "list" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2025-01-01" + }, + { + "key": "tgl_akhir", + "value": "2025-12-31" + } + ] + } + }, + "response": [] + }, + { + "name": "Show Rawat Inap", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/show/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "show", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Rawat Inap", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_kamar\": \"K001\",\n \"kd_dokter\": \"D00001\",\n \"lama\": \"1\",\n \"diagnosa_awal\": \"Demam\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/create", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "create" + ] + } + }, + "response": [] + }, + { + "name": "Update Rawat Inap", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kd_kamar\": \"K002\",\n \"stts_pulang\": \"-\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/update/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "update", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Rawat Inap", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/delete/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "delete", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Save Detail Kamar Inap", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kat\": \"tindakan\",\n \"jml_tindakan\": \"1\",\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_jenis_prw\": \"T001\",\n \"provider\": \"rawat_inap_dr\",\n \"kode_provider\": \"D00001\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/savedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "savedetail" + ] + } + }, + "response": [] + }, + { + "name": "Show Detail Kamar Inap", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/showdetail/tindakan/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "showdetail", + "tindakan", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Detail Kamar Inap", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kat\": \"tindakan\",\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_jenis_prw\": \"T001\",\n \"provider\": \"rawat_inap_dr\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/deletedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "deletedetail" + ] + } + }, + "response": [] + }, + { + "name": "Show SOAP Kamar Inap", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/showsoap/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "showsoap", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Save SOAP Kamar Inap", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_perawatan\": \"2025-12-29\",\n \"jam_rawat\": \"18:30:00\",\n \"suhu_tubuh\": \"36\",\n \"tensi\": \"120/80\",\n \"nadi\": \"80\",\n \"respirasi\": \"20\",\n \"tinggi\": \"170\",\n \"berat\": \"60\",\n \"spo2\": \"98\",\n \"gcs\": \"12\",\n \"kesadaran\": \"Sopor\",\n \"keluhan\": \"Demam\",\n \"pemeriksaan\": \"Suhu badan tinggi\",\n \"alergi\": \"-\",\n \"rtl\": \"Istirahat\",\n \"instruksi\": \"Minum obat\",\n \"evaluasi\": \"Baik\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/savesoap", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "savesoap" + ] + } + }, + "response": [] + }, + { + "name": "Delete SOAP Kamar Inap", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/deletesoap", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "deletesoap" + ] + } + }, + "response": [] + }, + { + "name": "Save Diagnosa", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kd_penyakit\": \"A00.0\",\n \"status\": \"Ranap\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/savediagnosa", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "savediagnosa" + ] + } + } + }, + { + "name": "Delete Diagnosa", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kd_penyakit\": \"A00.0\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/deletediagnosa", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "deletediagnosa" + ] + } + } + }, + { + "name": "Save Prosedur", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kode\": \"89.01\",\n \"status\": \"Ranap\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/saveprosedur", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "saveprosedur" + ] + } + } + }, + { + "name": "Delete Prosedur", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"kode\": \"89.01\",\n \"prioritas\": 1\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/deleteprosedur", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "deleteprosedur" + ] + } + } + }, + { + "name": "Save Catatan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"catatan\": \"Pasien perlu istirahat cukup\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/savecatatan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "savecatatan" + ] + } + } + }, + { + "name": "Delete Catatan", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"catatan\": \"Pasien perlu istirahat cukup\",\n \"tanggal\": \"2025-01-01\",\n \"jam\": \"12:00:00\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/deletecatatan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "deletecatatan" + ] + } + } + }, + { + "name": "Save Berkas", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"judul\": \"Hasil Lab Luar\",\n \"deskripsi\": \"http://link-to-file.com/file.pdf\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/saveberkas", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "saveberkas" + ] + } + } + }, + { + "name": "Delete Berkas", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"judul\": \"Hasil Lab Luar\",\n \"deskripsi\": \"http://link-to-file.com/file.pdf\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/deleteberkas", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "deleteberkas" + ] + } + } + }, + { + "name": "Save Resume", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"diagnosa_utama\": \"Demam Berdarah\",\n \"diagnosa_sekunder\": \"Tifus\",\n \"jalannya_penyakit\": \"Demam 3 hari...\",\n \"terapi\": \"Paracetamol 3x1\",\n \"kondisi_pulang\": \"Hidup\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/saveresume", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "saveresume" + ] + } + } + }, + { + "name": "Save Laporan Operasi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"tanggal\": \"2023-01-01\",\n \"jam\": \"10:00:00\",\n \"operator\": \"D001\",\n \"laporan\": \"Operasi berjalan lancar\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/savelaporanoperasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "savelaporanoperasi" + ] + } + } + }, + { + "name": "Delete Laporan Operasi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"2023/01/01/000001\",\n \"tanggal\": \"2023-01-01\",\n \"jam\": \"10:00:00\",\n \"operator\": \"D001\",\n \"laporan\": \"Operasi berjalan lancar\"\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseUrl}}/admin/api/rawat_inap/deletelaporanoperasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "rawat_inap", + "deletelaporanoperasi" + ] + } + } + } + ] + }, + { + "name": "Laboratorium", + "item": [ + { + "name": "List Laboratorium", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/list?draw=1&start=0&length=10&tgl_awal=2025-01-01&tgl_akhir=2025-12-31", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "list" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2025-01-01" + }, + { + "key": "tgl_akhir", + "value": "2025-12-31" + }, + { + "key": "search", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "Show Laboratorium", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/show/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "show", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Laboratorium", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rkm_medis\": \"000001\",\n \"tgl_registrasi\": \"2025-01-01\",\n \"jam_reg\": \"08:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/save", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "save" + ] + } + }, + "response": [] + }, + { + "name": "Update Laboratorium", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kd_dokter\": \"D00002\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/update/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "update", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Laboratorium", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/delete/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "delete", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Save Detail Laboratorium", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kat\": \"laboratorium\",\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_jenis_prw\": \"PK0001\",\n \"jml_tindakan\": 1,\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\",\n \"kode_provider\": \"D00001\",\n \"status\": \"Ralan\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/savedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "savedetail" + ] + } + }, + "response": [] + }, + { + "name": "Delete Detail Laboratorium", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_jenis_prw\": \"PK0001\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/deletedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "deletedetail" + ] + } + }, + "response": [] + }, + { + "name": "Show Detail Laboratorium", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/showdetail/{{status}}/{{no_rawat}}/{{noorder}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "showdetail", + "{{status}}", + "{{no_rawat}}", + "{{noorder}}" + ] + } + }, + "response": [] + }, + { + "name": "Save Nilai Laboratorium", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_periksa\": \"2025-01-01\",\n \"jam\": \"10:00:00\",\n \"id_template\": \"1\",\n \"value\": \"Normal\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/savenilai", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "savenilai" + ] + } + }, + "response": [] + }, + { + "name": "Save Keterangan Laboratorium", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_periksa\": \"2025-01-01\",\n \"jam\": \"10:00:00\",\n \"id_template\": \"1\",\n \"value\": \"Catat tambahan\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/saveketerangan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "saveketerangan" + ] + } + }, + "response": [] + }, + { + "name": "Save Validasi Laboratorium", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"noorder\": \"PR0001\",\n \"tgl_permintaan\": \"2025-01-01\",\n \"jam_permintaan\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/laboratorium/savevalidasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "laboratorium", + "savevalidasi" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Radiologi", + "item": [ + { + "name": "List Radiologi", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/list?draw=1&start=0&length=10&tgl_awal=2025-01-01&tgl_akhir=2025-12-31", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "list" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2025-01-01" + }, + { + "key": "tgl_akhir", + "value": "2025-12-31" + }, + { + "key": "search", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "Show Radiologi", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/show/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "show", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Radiologi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rkm_medis\": \"000001\",\n \"tgl_registrasi\": \"2025-01-01\",\n \"jam_reg\": \"08:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/save", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "save" + ] + } + }, + "response": [] + }, + { + "name": "Update Radiologi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kd_dokter\": \"D00002\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/update/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "update", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Radiologi", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/delete/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "delete", + "{{no_rawat}}" + ] + } + }, + "response": [] + }, + { + "name": "Save Detail Radiologi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kat\": \"radiologi\",\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_jenis_prw\": \"PR0001\",\n \"jml_tindakan\": 1,\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\",\n \"kode_provider\": \"D00001\",\n \"status\": \"Ralan\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/savedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "savedetail" + ] + } + }, + "response": [] + }, + { + "name": "Delete Detail Radiologi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"kd_jenis_prw\": \"PR0001\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/deletedetail", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "deletedetail" + ] + } + }, + "response": [] + }, + { + "name": "Show Detail Radiologi", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/showdetail/{{status}}/{{no_rawat}}/{{noorder}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "showdetail", + "{{status}}", + "{{no_rawat}}", + "{{noorder}}" + ] + } + }, + "response": [] + }, + { + "name": "Save Hasil Radiologi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_periksa\": \"2025-01-01\",\n \"jam\": \"10:00:00\",\n \"hasil\": \"Tampak normal batas jantung dan paru\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/savehasil", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "savehasil" + ] + } + }, + "response": [] + }, + { + "name": "Delete Hasil Radiologi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"tgl_perawatan\": \"2025-01-01\",\n \"jam_rawat\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/deletehasil", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "deletehasil" + ] + } + }, + "response": [] + }, + { + "name": "Save Validasi Radiologi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"noorder\": \"PR0001\",\n \"tgl_permintaan\": \"2025-01-01\",\n \"jam_permintaan\": \"10:00:00\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/radiologi/savevalidasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "radiologi", + "savevalidasi" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Vedika", + "item": [ + { + "name": "List Vedika", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/vedika/list?draw=1&start=0&length=10&tgl_awal=2025-01-01&tgl_akhir=2025-12-31&type=ralan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "vedika", + "list" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2025-01-01" + }, + { + "key": "tgl_akhir", + "value": "2025-12-31" + }, + { + "key": "type", + "value": "ralan", + "description": "ralan / ranap" + }, + { + "key": "search", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "List Vedika Lengkap", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/vedika/lengkap?draw=1&start=0&length=10&tgl_awal=2025-01-01&tgl_akhir=2025-12-31&type=ralan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "vedika", + "lengkap" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2025-01-01" + }, + { + "key": "tgl_akhir", + "value": "2025-12-31" + }, + { + "key": "type", + "value": "ralan", + "description": "ralan / ranap" + }, + { + "key": "search", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "List Vedika Pengajuan", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/vedika/pengajuan?draw=1&start=0&length=10&tgl_awal=2025-01-01&tgl_akhir=2025-12-31&type=ralan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "vedika", + "pengajuan" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2025-01-01" + }, + { + "key": "tgl_akhir", + "value": "2025-12-31" + }, + { + "key": "type", + "value": "ralan", + "description": "ralan / ranap" + }, + { + "key": "search", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "List Vedika Perbaikan", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/vedika/perbaikan?draw=1&start=0&length=10&tgl_awal=2025-01-01&tgl_akhir=2025-12-31&type=ralan", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "vedika", + "perbaikan" + ], + "query": [ + { + "key": "draw", + "value": "1" + }, + { + "key": "start", + "value": "0" + }, + { + "key": "length", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2025-01-01" + }, + { + "key": "tgl_akhir", + "value": "2025-12-31" + }, + { + "key": "type", + "value": "ralan", + "description": "ralan / ranap" + }, + { + "key": "search", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "Show Vedika", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/vedika/show/{{nosep}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "vedika", + "show", + "{{nosep}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Vedika", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"nosep\": \"00001\",\n \"no_rawat\": \"2023/01/01/000001\",\n \"no_rkm_medis\": \"000001\",\n \"catatan\": \"Berkas lengkap\",\n \"status\": \"Verifikasi\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/vedika/create", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "vedika", + "create" + ] + } + }, + "response": [] + }, + { + "name": "Update Vedika", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"catatan\": \"Revisi berkas\",\n \"status\": \"Pending\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/vedika/update/{{nosep}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "vedika", + "update", + "{{nosep}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Vedika", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/vedika/delete/{{nosep}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "vedika", + "delete", + "{{nosep}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Master", + "description": "\n\n#### Modul Master menyediakan endpoint list/simpan/hapus data master.\n\n### Endpoint\n- **List Data (GET)**: `{{baseUrl}}/admin/api/master/list/{table}`\n- **Simpan Data (POST)**: `{{baseUrl}}/admin/api/master/save/{table}`\n- **Hapus Data (DELETE)**: `{{baseUrl}}/admin/api/master/delete/{table}`\n\n### Perilaku Endpoint\n- `list/{table}`: bersifat generic untuk tabel yang ada di database (kecuali tabel sensitif yang diblokir).\n- `save/{table}` dan `delete/{table}`: hanya bisa untuk tabel yang sudah terdaftar handler-nya di modul `plugins/master`.\n- Jika tabel belum didukung handler, API mengembalikan: `Table not allowed or not found`.\n\n### Parameter Pencarian (GET)\n- `page`: Nomor halaman (default: 1)\n- `per_page`: Jumlah record per halaman (default: 10)\n- `s`: Kata kunci pencarian (string)\n- `col`: Nama kolom spesifik untuk pencarian (opsional)\n\n### Catatan Keamanan\n- Tabel sensitif seperti `mlite_api_key` diblokir.\n\n### Contoh `{table}`\n- Data dasar: `dokter`, `petugas`, `poliklinik`, `bangsal`, `kamar`, `databarang`\n- Layanan: `jns_perawatan`, `jns_perawatan_inap`, `jns_perawatan_lab`, `jns_perawatan_radiologi`\n- Biodata: `bahasa`, `suku_bangsa`, `cacat_fisik`, `pendidikan`, `personal_pasien`\n- Diagnosis/prosedur: `penyakit` (ICD-10), `icd9` (ICD-9)", + "item": [ + { + "name": "List Master Data", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/master/list/dokter?page={{page}}&per_page={{per_page}}&s={{s}}&col=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "master", + "list", + "dokter" + ], + "query": [ + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "per_page", + "value": "{{per_page}}" + }, + { + "key": "s", + "value": "{{s}}" + }, + { + "key": "col", + "value": "" + } + ] + } + }, + "response": [] + }, + { + "name": "Create Master Data", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kd_dokter\": \"D00001\",\n \"nm_dokter\": \"Dr. Contoh\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/master/save/dokter", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "master", + "save", + "dokter" + ] + } + }, + "response": [] + }, + { + "name": "Delete Master Data", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"kd_dokter\": \"D00001\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/master/delete/dokter", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "master", + "delete", + "dokter" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Apotek Ralan", + "item": [ + { + "name": "Resep List", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ralan/reseplist?page={{page}}&per_page={{per_page}}&s={{s}}&tgl_awal={{tgl_awal}}&tgl_akhir={{tgl_akhir}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ralan", + "reseplist" + ], + "query": [ + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "per_page", + "value": "{{per_page}}" + }, + { + "key": "s", + "value": "{{s}}" + }, + { + "key": "tgl_awal", + "value": "{{tgl_awal}}" + }, + { + "key": "tgl_akhir", + "value": "{{tgl_akhir}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Show Detail", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ralan/showdetail/{{category}}/{{no_rawat}}?no_resep={{no_resep}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ralan", + "showdetail", + "{{category}}", + "{{no_rawat}}" + ], + "query": [ + { + "key": "no_resep", + "value": "{{no_resep}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Validasi Resep", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ralan/validasi/{{no_rawat}}?no_resep={{no_resep}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ralan", + "validasi", + "{{no_rawat}}" + ], + "query": [ + { + "key": "no_resep", + "value": "{{no_resep}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Save Validasi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"no_resep\": \"{{no_resep}}\",\n \"jumlah\": {},\n \"aturan_pakai\": {}\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ralan/savevalidasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ralan", + "savevalidasi" + ] + } + }, + "response": [] + }, + { + "name": "Simpan Obat Resep", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_resep\": \"{{no_resep}}\",\n \"kode_brng\": \"{{kode_brng}}\",\n \"jml\": \"10\",\n \"aturan_pakai\": \"3x1\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ralan/simpanobatresep", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ralan", + "simpanobatresep" + ] + } + }, + "response": [] + }, + { + "name": "Simpan Racikan Resep", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_resep\": \"{{no_resep}}\",\n \"no_racik\": \"1\",\n \"nama_racik\": \"Racikan 1\",\n \"kd_racik\": \"R01\",\n \"jml_dr\": \"10\",\n \"aturan_pakai\": \"3x1\",\n \"keterangan\": \"-\",\n \"items\": [\n {\n \"kode_brng\": \"B01\",\n \"kandungan\": \"10mg\",\n \"jml\": \"5\"\n }\n ]\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ralan/simpanracikanresep", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ralan", + "simpanracikanresep" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Apotek Ranap", + "item": [ + { + "name": "Resep List", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ranap/reseplist?page={{page}}&per_page={{per_page}}&s={{s}}&tgl_awal={{tgl_awal}}&tgl_akhir={{tgl_akhir}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ranap", + "reseplist" + ], + "query": [ + { + "key": "page", + "value": "{{page}}" + }, + { + "key": "per_page", + "value": "{{per_page}}" + }, + { + "key": "s", + "value": "{{s}}" + }, + { + "key": "tgl_awal", + "value": "{{tgl_awal}}" + }, + { + "key": "tgl_akhir", + "value": "{{tgl_akhir}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Show Detail", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ranap/showdetail/{{category}}/{{no_rawat}}?no_resep={{no_resep}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ranap", + "showdetail", + "{{category}}", + "{{no_rawat}}" + ], + "query": [ + { + "key": "no_resep", + "value": "{{no_resep}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Validasi Resep", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ranap/validasi/{{no_rawat}}?no_resep={{no_resep}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ranap", + "validasi", + "{{no_rawat}}" + ], + "query": [ + { + "key": "no_resep", + "value": "{{no_resep}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Save Validasi", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_rawat\": \"{{no_rawat}}\",\n \"no_resep\": \"{{no_resep}}\",\n \"jumlah\": {},\n \"aturan_pakai\": {}\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ranap/savevalidasi", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ranap", + "savevalidasi" + ] + } + }, + "response": [] + }, + { + "name": "Simpan Obat Resep", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_resep\": \"{{no_resep}}\",\n \"kode_brng\": \"{{kode_brng}}\",\n \"jml\": \"10\",\n \"aturan_pakai\": \"3x1\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ranap/simpanobatresep", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ranap", + "simpanobatresep" + ] + } + }, + "response": [] + }, + { + "name": "Simpan Racikan Resep", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"no_resep\": \"{{no_resep}}\",\n \"no_racik\": \"1\",\n \"nama_racik\": \"Racikan 1\",\n \"kd_racik\": \"R01\",\n \"jml_dr\": \"10\",\n \"aturan_pakai\": \"3x1\",\n \"keterangan\": \"-\",\n \"items\": [\n {\n \"kode_brng\": \"B01\",\n \"kandungan\": \"10mg\",\n \"jml\": \"5\"\n }\n ]\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/apotek_ranap/simpanracikanresep", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "apotek_ranap", + "simpanracikanresep" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Kasir", + "item": [ + { + "name": "Billing List (Rawat Jalan)", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/kasir_rawat_jalan/billinglist?page=1&per_page=10&tgl_awal=2024-01-01&tgl_akhir=2024-12-31", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "kasir_rawat_jalan", + "billinglist" + ], + "query": [ + { + "key": "page", + "value": "1" + }, + { + "key": "per_page", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2024-01-01" + }, + { + "key": "tgl_akhir", + "value": "2024-12-31" + } + ] + } + } + }, + { + "name": "Billing Detail (Rawat Jalan)", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/kasir_rawat_jalan/billingdetail/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "kasir_rawat_jalan", + "billingdetail", + "{{no_rawat}}" + ] + } + } + }, + { + "name": "Billing (Rawat Jalan)", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/kasir_rawat_jalan/billing/{{no_rawat}}?all=false", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "kasir_rawat_jalan", + "billing", + "{{no_rawat}}" + ], + "query": [ + { + "key": "all", + "value": "false", + "description": "true/false" + } + ] + } + } + }, + { + "name": "Billing List (Rawat Inap)", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/kasir_rawat_inap/billinglist?page=1&per_page=10&tgl_awal=2024-01-01&tgl_akhir=2024-12-31", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "kasir_rawat_inap", + "billinglist" + ], + "query": [ + { + "key": "page", + "value": "1" + }, + { + "key": "per_page", + "value": "10" + }, + { + "key": "tgl_awal", + "value": "2024-01-01" + }, + { + "key": "tgl_akhir", + "value": "2024-12-31" + } + ] + } + } + }, + { + "name": "Billing Detail (Rawat Inap)", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/kasir_rawat_inap/billingdetail/{{no_rawat}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "kasir_rawat_inap", + "billingdetail", + "2024/01/01/000001" + ] + } + } + }, + { + "name": "Billing (Rawat Inap)", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + }, + { + "key": "X-Username-Permission", + "value": "{{username_permission}}", + "type": "text" + }, + { + "key": "X-Password-Permission", + "value": "{{password_permission}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/kasir_rawat_inap/billing/{{no_rawat}}?all=false", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "kasir_rawat_inap", + "billing", + "{{no_rawat}}" + ], + "query": [ + { + "key": "all", + "value": "false", + "description": "true/false" + } + ] + } + } + } + ] + }, + { + "name": "Users", + "item": [ + { + "name": "Save User", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"username\": \"testuser\",\n \"fullname\": \"Test User\",\n \"password\": \"password123\",\n \"email\": \"test@example.com\",\n \"role\": \"staff\",\n \"cap\": \"ANG,APT\",\n \"access\": \"pasien,rawat_jalan\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/users/save", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "users", + "save" + ] + } + }, + "response": [] + }, + { + "name": "Delete User", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"id\": \"3\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/users/delete", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "users", + "delete" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Settings", + "item": [ + { + "name": "Get Settings", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/settings/settings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "settings", + "settings" + ] + } + }, + "response": [] + }, + { + "name": "Save Settings", + "request": { + "method": "POST", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}", + "type": "text" + }, + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"nama_instansi\": \"RS Baru\",\n \"alamat\": \"Jl. Baru No. 1\"\n}" + }, + "url": { + "raw": "{{baseUrl}}/admin/api/settings/saveSettings", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "admin", + "api", + "settings", + "saveSettings" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Mini PACS", + "item": [ + { + "name": "Study List", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/mini_pacs/studylist?page=1&per_page=10&s=" + } + } + }, + { + "name": "Study Detail", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/mini_pacs/studydetail/{{study_id}}" + } + } + }, + { + "name": "Series Detail", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/mini_pacs/seriesdetail/{{series_id}}" + } + } + }, + { + "name": "Download DICOM", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/mini_pacs/instancedicom/{{instance_id}}" + } + } + }, + { + "name": "Get Thumbnail", + "request": { + "method": "GET", + "header": [ + { + "key": "X-Api-Key", + "value": "{{apiKey}}" + }, + { + "key": "Authorization", + "value": "Bearer {{token}}" + } + ], + "url": { + "raw": "{{baseUrl}}/admin/api/mini_pacs/instancejpg/{{instance_id}}" + } + } + } + ] + } + ], + "variable": [ + { + "key": "baseUrl", + "value": "https://mlite.up.railway.app", + "type": "string" + }, + { + "key": "apiKey", + "value": "YOUR_API_KEY_HERE", + "type": "string" + }, + { + "key": "username", + "value": "admin", + "type": "string" + }, + { + "key": "password", + "value": "admin", + "type": "string" + }, + { + "key": "token", + "value": "", + "type": "string" + }, + { + "key": "s", + "value": "", + "type": "string" + }, + { + "key": "page", + "value": "1", + "type": "string" + }, + { + "key": "per_page", + "value": "10", + "type": "string" + }, + { + "key": "no_rkm_medis", + "value": "000001", + "type": "string" + }, + { + "key": "no_rawat", + "value": "", + "type": "string" + }, + { + "key": "username_permission", + "value": "DR001", + "type": "string" + }, + { + "key": "password_permission", + "value": "12345678", + "type": "string" + }, + { + "key": "tgl_awal", + "value": "2025-01-01", + "type": "string" + }, + { + "key": "tgl_akhir", + "value": "2027-01-01", + "type": "string" + } + ] +} diff --git a/README.md b/README.md index b448426c1..58a1938be 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- Codename: Ataaka
+ Codename: Sabrina

# mLITE @@ -12,73 +12,93 @@ Panel kontrol dan tampilan default sepenuhnya responsif, yang membuatnya dapat d Masih banyak fitur-fitur tersembunyi untuk kebutuhan pengembangan. Silahkan jelajahi!! - -Kebutuhan Sistem ----------------- +## Kebutuhan Sistem Persyaratan sistem untuk mLITE sangat sederhana, sehingga setiap server modern sudah cukup. Berikut persyaratan minimal yang diperlukan -+ Apache 2.2+ dengan `mod_rewrite` atau Nginx -+ PHP versi 7.0 - 8.1 -+ MySQL atau MariaDB +- Apache 2.2+ dengan `mod_rewrite` atau Nginx +- PHP versi 7.4 - 8.3+ +- MySQL atau MariaDB Konfigurasi PHP harus memiliki ekstensi berikut: -+ dom -+ gd -+ mbstring -+ pdo -+ zip -+ cURL +- dom +- gd +- mbstring +- pdo +- zip +- cURL -Pemasangan ----------- +## Pemasangan ### Pemasangan menggunakan composer. + 1. Install composer di server/PC dan jalankan perintah composer untuk pemasangan paket utama dan independensi ``` $ composer create-project basoro/mlite ``` -2. Buat folder `uploads`, `tmp/` dan `admin/tmp`. Beberapa server mungkin memerlukan izin tambahan `chmod 777` untuk direktori dan file tersebut. - -3. Sesuaikan pengaturan di config.php - +1. Buat folder `uploads`, `tmp/` dan `admin/tmp`. Beberapa server mungkin memerlukan izin tambahan `chmod 777` untuk direktori dan file tersebut. +2. Sesuaikan pengaturan di .env +3. Buat database baru di MySQL/MariaDB dan import file `mlite_db.sql` 4. Buka browser Anda dan navigasikan ke alamat tempat file mLITE berada. - 5. Silahkan login dengan Username: admin dan Password: admin ### Pemasangan Manual -1. Unduh versi terbaru [mLITE] (https://github.com/basoro/mlite). - -2. Ekstrak semua file dari paket terkompresi dan kemudian transfer ke direktori lokal atau server. Biasanya, file diunggah ke `www`,` htdocs` atau `public_html`. +1. Unduh versi terbaru \[mLITE] (). +2. Ekstrak semua file dari paket terkompresi dan kemudian transfer ke direktori lokal atau server. Biasanya, file diunggah ke `www`, ` htdocs` atau `public_html`. 3. Install composer di server/PC dan jalankan perintah composer untuk pemasangan independensi + ``` $ composer install ``` -4. Buat folder `uploads`, `tmp/` dan `admin/tmp`. Beberapa server mungkin memerlukan izin tambahan `chmod 777` untuk direktori dan file tersebut. +1. Buat folder `uploads`, `tmp/` dan `admin/tmp`. Beberapa server mungkin memerlukan izin tambahan `chmod 777` untuk direktori dan file tersebut. +2. Sesuaikan pengaturan di .env +3. Buat database baru di MySQL/MariaDB dan import file `mlite_db.sql` (tambahkan sql-mode = '' pada my.cnf atau jalankan perintah berikut) + +``` +$ sed -i "/user=mysql/a sql-mode = ''" /etc/my.cnf +``` + +1. Buka browser Anda dan navigasikan ke alamat tempat file mLITE berada. +2. Silahkan login dengan Username: admin dan Password: admin + +### Pemasangan menggunakan docker. + +1. Download file release terbaru \[mLITE] atau lakukan git clone. + +``` +$ git clone https://github.com/basoro/mlite.git +``` + +Sesuaikan environment variable di .env seperti port APP dan MySQL dari default ke port yang anda inginkan (atau biarkan defautl saja). -5. Sesuaikan pengaturan di config.php +1. Jalankan perintah docker-compose -6. Buka browser Anda dan navigasikan ke alamat tempat file mLITE berada. +``` +$ cd mlite/docker && docker-compose build && docker-compose up -d +``` + +1. Buka browser Anda dan navigasikan ke alamat URL\_ADDRESS:8088. +2. Silahkan login dengan Username: admin dan Password: admin -7. Silahkan login dengan Username: admin dan Password: admin +## Catatan: -#### Catatan: Untuk setiap kali update, silahkan jalankan perintah + ``` $ composer update ``` -Ini untuk menambahkan dependensi baru pada aplikasi +Ini untuk menambahkan dependensi baru pada aplikasi -### Peringatan! +## Peringatan! -+ Untuk pengguna Apache, pastikan file `.htaccess` juga ada di server. Tanpanya mLITE tidak akan berfungsi. -+ Untuk pengguna Nginx, tambahkan konfigurasi berikut di pengaturan nginx.conf (atau sejenisnya) +- Untuk pengguna Apache, pastikan file `.htaccess` juga ada di server. Tanpanya mLITE tidak akan berfungsi. +- Untuk pengguna Nginx, tambahkan konfigurasi berikut di pengaturan nginx.conf (atau sejenisnya) ```bash location / { @@ -93,6 +113,11 @@ location ^~ /systems/data/ { return 403; } +location ~* \.(sdb|txt|env|md)$ { + deny all; + return 403; +} + location /admin { index index.php; try_files $uri $uri/ /admin/index.php?$args; @@ -114,6 +139,11 @@ location ^~ /lite/systems/data/ { return 403; } +location ~* \.(sdb|txt|env|md)$ { + deny all; + return 403; +} + location /lite/admin { index index.php; try_files $uri $uri/ /lite/admin/index.php?$args; @@ -121,8 +151,11 @@ location /lite/admin { ``` Untuk masuk ke panel administrasi, tambahkan `/admin/` di akhir URL. + #### Login: `admin` Kata sandi: `admin` + Ini harus diubah segera setelah login untuk alasan keamanan. Juga dapat mengganti nama direktori dengan panel administrasi. (Anda perlu mengubahnya pada `config.php`) ## Demo -Demo dan Info lebih lanjut di https://mlite.id + +Untuk Demo dan Info lebih lanjut di diff --git a/admin/index.php b/admin/index.php index 903da2953..5ccd2ce51 100644 --- a/admin/index.php +++ b/admin/index.php @@ -1,67 +1,392 @@ 0) + ob_end_clean(); + http_response_code(200); + exit; + } + + // Handle HTTPS forwarding with strict comparison + if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { + $_SERVER['HTTPS'] = 'on'; + } + if (!defined('BASE_DIR')) { + define('BASE_DIR', __DIR__ . '/..'); + } + require_once('../config.php'); + + // if (!file_exists(BASE_DIR . '/.env')) { + // header('Location: /install.php'); + // exit; + // } -require_once('../systems/lib/Autoloader.php'); -//ob_start(base64_decode('XFN5c3RlbXNcTWFpbjo6dmVyaWZ5TGljZW5zZQ==')); + if (DEV_MODE) { + error_reporting(E_ALL); + ini_set('display_errors', '1'); + } else { + error_reporting(0); + ini_set('display_errors', '0'); + } + + require_once('../systems/lib/Autoloader.php'); + //ob_start(base64_decode('XFN5c3RlbXNcTWFpbjo6dmVyaWZ5TGljZW5zZQ==')); + + $core = new Systems\Admin; + + // Register API routes available regardless of login state + $core->router->set('api/login', function () use ($core) { + if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $apiUser = $core->checkAuth('POST'); + $input = json_decode(file_get_contents('php://input'), true); + $username = $input['username'] ?? $_POST['username'] ?? ''; + $password = $input['password'] ?? $_POST['password'] ?? ''; + + $user = $core->db('mlite_users')->where('username', $username)->oneArray(); + if ($user && password_verify($password, $user['password'])) { + $payload = [ + 'iss' => url(), + 'sub' => $user['id'], + 'username' => $user['username'] + ]; + $token = \Systems\Lib\Jwt::encode($payload, JWT_SECRET); + header('Content-Type: application/json'); + echo json_encode([ + 'token' => $token, + 'fullname' => htmlspecialchars($user['fullname'] ?? $user['username'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') + ]); + } else { + header('Content-Type: application/json'); + http_response_code(401); + echo json_encode(['error' => 'Invalid credentials']); + } + exit; + } + }); -$core = new Systems\Admin; + $core->router->set('api/(:str)/(:str)(:any)', function ($module, $method, $params) use ($core) { + // 1. Verifikasi kredensial aplikasi klien via API Key atau Sesi + $apiUser = $core->checkAuth(strtoupper($_SERVER['REQUEST_METHOD'])); -if ($core->loginCheck()) { - $core->loadModules(); + $token = null; + if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Bearer\s(\S+)/', $_SERVER['HTTP_AUTHORIZATION'], $m)) { + $token = $m[1]; + } elseif (function_exists('getallheaders')) { + $headers = getallheaders(); + $auth = $headers['Authorization'] ?? $headers['authorization'] ?? null; + if ($auth && preg_match('/Bearer\s(\S+)/', $auth, $m)) { + $token = $m[1]; + } + } + $payload = $token ? \Systems\Lib\Jwt::verify($token, JWT_SECRET) : false; + $loggedIn = $core->loginCheck(); - $core->router->set('(:str)/(:str)(:any)', function ($module, $method, $params) use ($core) { - $core->createNav($module, $method); - if ($params) { - $core->loadModule($module, $method, explode('/', trim($params, '/'))); + $core->loadModules(); + $moduleObj = $core->module->{$module}; + if (!$moduleObj) { + header('Content-Type: application/json'); + http_response_code(404); + echo json_encode(['error' => 'Module not found']); + exit; + } + $access = 'all'; + if ($loggedIn) { + $access = $core->getUserInfo('access'); + } elseif ($payload) { + $uid = $payload['sub'] ?? 0; + $urow = $core->db('mlite_users')->where('id', $uid)->oneArray(); + $access = $urow['access'] ?? ''; + } else { + $urow = $core->db('mlite_users')->where('username', $apiUser)->oneArray(); + $access = $urow['access'] ?? ''; + } + if (!($access == 'all' || in_array($module, explode(',', (string) $access)))) { + header('Content-Type: application/json'); + http_response_code(403); + echo json_encode(['error' => 'Forbidden']); + exit; + } + $args = $params ? explode('/', trim($params, '/')) : []; + $apiMethod = 'api' . ucfirst($method); + $anyMethod = 'any' . ucfirst($method); + $httpMethod = strtolower($_SERVER['REQUEST_METHOD']) . ucfirst($method); + if (method_exists($moduleObj, $apiMethod)) { + $result = $moduleObj->{$apiMethod}(...array_values($args)); + } elseif (method_exists($moduleObj, $httpMethod)) { + $result = $moduleObj->{$httpMethod}(...array_values($args)); + } elseif (method_exists($moduleObj, $anyMethod)) { + $result = $moduleObj->{$anyMethod}(...array_values($args)); } else { - $core->loadModule($module, $method); + header('Content-Type: application/json'); + http_response_code(404); + echo json_encode(['error' => 'Method not found']); + exit; } + header('Content-Type: application/json'); + if (is_array($result) || is_object($result)) { + echo json_encode($result); + } else { + echo json_encode(['data' => $result]); + } + exit; }); - $core->router->execute(); - $core->drawTheme('index.html'); - $core->module->finishLoop(); -} else { - if (isset($_POST['login'])) { - if ($core->login($_POST['username'], $_POST['password'], isset($_POST['remember_me']))) { - if (count($arrayURL = parseURL()) > 1) { - $url = array_merge([ADMIN], $arrayURL); - redirect(url($url)); + // Execute API route early if requested + $__path = $core->router->execute(true); + + // daftar API yang TIDAK lewat API umum + $excludedApiPrefixes = [ + 'api/manage', + 'api/notifikasi', + 'api/settingsapam', + 'api/paymentduitku', + 'api/settingskey', + 'api/saveSettingsApam', + 'api/saveSettingsKey', + ]; + + $skipApi = false; + foreach ($excludedApiPrefixes as $prefix) { + if (strpos($__path, $prefix) === 0) { + $skipApi = true; + break; + } + } + + if (!$skipApi && strpos($__path, 'api/') === 0) { + $core->router->execute(); + return; + } + + + if ($core->loginCheck()) { + $core->loadModules(); + + $core->router->set('(:str)/(:str)(:any)', function ($module, $method, $params) use ($core) { + $core->createNav($module, $method); + if ($params) { + $core->loadModule($module, $method, explode('/', trim($params, '/'))); + } else { + $core->loadModule($module, $method); } - if(MULTI_APP) { - if(!empty(MULTI_APP_REDIRECT)) { - redirect(url([ADMIN, MULTI_APP_REDIRECT, 'main'])); + }); + + $core->router->execute(); + $core->drawTheme('index.html'); + $core->module->finishLoop(); + } else { + if (isset($_GET['cancel_otp'])) { + unset($_SESSION['mlite_otp_pending']); + unset($_SESSION['mlite_otp_user_id']); + unset($_SESSION['mlite_otp_remember_me']); + redirect(url([ADMIN])); + } + + if (isset($_POST['verify_otp']) && isset($_SESSION['mlite_otp_pending'])) { + $otp_code = trim($_POST['otp_code'] ?? ''); + $uid = $_SESSION['mlite_otp_user_id'] ?? 0; + $userRow = $core->db('mlite_users')->where('id', $uid)->oneArray(); + + if ($userRow && $userRow['otp_code'] === $otp_code && strtotime($userRow['otp_expires']) >= time()) { + // OTP Valid + unset($_SESSION['mlite_otp_pending']); + unset($_SESSION['mlite_otp_user_id']); + + $_SESSION['mlite_user']= $userRow['id']; + $_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(6)); + $_SESSION['userAgent'] = $_SERVER['HTTP_USER_AGENT']; + $_SESSION['IPaddress'] = $_SERVER['REMOTE_ADDR']; + + if (isset($_SESSION['mlite_otp_remember_me'])) { + $token = str_gen(64, "1234567890qwertyuiop[]asdfghjkl;zxcvbnm,./"); + $isHttps = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') + || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower((string) $_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https'); + $core->db('mlite_remember_me')->save(['user_id' => $userRow['id'], 'token' => $token, 'expiry' => time()+60*60*24*30]); + setcookie('mlite_remember', $userRow['id'] . ':' . $token, [ + 'expires' => time() + 60 * 60 * 24 * 365, + 'path' => '/', + 'secure' => $isHttps, + 'httponly' => true, + 'samesite' => 'Lax', + ]); + unset($_SESSION['mlite_otp_remember_me']); + } + + $arrayURL = parseURL(); + if ($arrayURL && count($arrayURL) > 1) { + $url = array_merge([ADMIN], $arrayURL); + redirect(url($url)); + } + if (!empty($_SESSION['mlite_force_change'])) { + redirect(url([ADMIN, 'profil', 'ganti_pass'])); + } + if (MULTI_APP) { + if (!empty(MULTI_APP_REDIRECT)) { + redirect(url([ADMIN, MULTI_APP_REDIRECT, 'main'])); + } else { + redirect(url([ADMIN, 'dashboard', 'main'])); + } } else { redirect(url([ADMIN, 'dashboard', 'main'])); } } else { - redirect(url([ADMIN, 'dashboard', 'main'])); + $core->setNotify('failure', 'Kode OTP tidak valid atau telah kedaluwarsa.'); } } + + if (isset($_POST['login'])) { + if ($core->login($_POST['username'], $_POST['password'], isset($_POST['remember_me']))) { + if (isset($_SESSION['mlite_otp_pending'])) { + $core->setNotify('success', 'Harap masukkan 6-digit kode OTP yang telah dikirim ke WhatsApp Anda.'); + } else { + $arrayURL = parseURL(); + if ($arrayURL && count($arrayURL) > 1) { + $url = array_merge([ADMIN], $arrayURL); + redirect(url($url)); + } + if (!empty($_SESSION['mlite_force_change'])) { + redirect(url([ADMIN, 'profil', 'ganti_pass'])); + } + if (MULTI_APP) { + if (!empty(MULTI_APP_REDIRECT)) { + redirect(url([ADMIN, MULTI_APP_REDIRECT, 'main'])); + } else { + redirect(url([ADMIN, 'dashboard', 'main'])); + } + } else { + redirect(url([ADMIN, 'dashboard', 'main'])); + } + } + } + } + if (MULTI_APP) { + if (!empty(MULTI_APP_REDIRECT)) { + echo $core->tpl->draw(MODULES . '/' . MULTI_APP_REDIRECT . '/view/login.html', true); + } else { + $core->drawTheme('login.html'); + } + } else { + $core->drawTheme('login.html'); + } + } - if(MULTI_APP) { - if(!empty(MULTI_APP_REDIRECT)) { - echo $core->tpl->draw(MODULES.'/'.MULTI_APP_REDIRECT.'/view/login.html', true); - } else { - $core->drawTheme('login.html'); - } + +} catch (Throwable $e) { + // Tangkap khusus error ketidakadaan tabel untuk tidak di redirect melainkan dimunculkan sebagai notifikasi + $errMsg = $e->getMessage(); + $isMissingTable = (strpos($errMsg, 'Base table or view not found') !== false || strpos($errMsg, 'no such table') !== false || strpos($errMsg, 'Unknown database') !== false); + + // Check if this is an AJAX request expecting JSON + $isAjaxRequest = ( + (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') || + (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false) || + (isset($_SERVER['CONTENT_TYPE']) && strpos($_SERVER['CONTENT_TYPE'], 'application/json') !== false) + ); + + if ($isAjaxRequest) { + $error = 'Database connection failed'; + $message = 'Please check database configuration and ensure MySQL server is running'; + $debug = []; + + if ($isMissingTable) { + $error = 'Table / Database Not Found'; + $message = $errMsg; + } elseif ($e->getCode() == 23000) { + $message = $e->getMessage(); + } + + if (defined('DEV_MODE') && DEV_MODE) { + $error = 'System Error'; + $message = $e->getMessage(); + $debug = [ + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'trace' => explode("\n", $e->getTraceAsString()) + ]; + } + + // Return HTML error response for AJAX requests (e.g. for modal content or alerts) + header('Content-Type: text/html'); + $debug_html = ''; + if (!empty($debug)) { + $debug_html .= '
'; + $debug_html .= 'File: ' . htmlspecialchars($debug['file']) . ' on line ' . $debug['line'] . ''; + $debug_html .= '
'; + $debug_html .= '
' . htmlspecialchars(implode("\n", $debug['trace'])) . '
'; + $debug_html .= '
'; + } + + echo ''; } else { - $core->drawTheme('login.html'); - } + // Return HTML error for regular requests + $title = 'System Error'; + $content = '

Please contact administrator.

'; + $debug_info = ''; + + if ($isMissingTable) { + $title = 'Database Error'; + $content = '
Warning:
' . htmlspecialchars($errMsg) . '
'; + $content .= '

Sepertinya tabel yang hendak diakses tidak tersedia di database. Anda mungkin tidak menginstal plugin secara menyeluruh, atau modul belum menyediakan tabel tersebut.

'; + } + + if (defined('DEV_MODE') && DEV_MODE) { + $content .= '
Error: ' . htmlspecialchars($e->getMessage()) . '
'; + $debug_info = '
'; + $debug_info .= '

File: ' . htmlspecialchars($e->getFile()) . ' on line ' . $e->getLine() . '

'; + $debug_info .= '

Stack Trace:

'; + $debug_info .= '
' . htmlspecialchars($e->getTraceAsString()) . '
'; + $debug_info .= '
'; + } + + echo ' + + + ' . $title . ' + + + +
+

' . $title . '

+ ' . $content . ' + ' . $debug_info . ' +
+

mLITE Healthcare System © ' . date('Y') . '

+
+
+ + '; + } } -ob_end_flush(); +// Safe buffer handling for PHP 8+ +if (ob_get_level() > 0) { + ob_end_flush(); +} diff --git a/assets/css/atilamedika.min.css b/assets/css/atilamedika.min.css new file mode 100644 index 000000000..93f83666b --- /dev/null +++ b/assets/css/atilamedika.min.css @@ -0,0 +1 @@ +@import url("mlite.min.css");body{background-color:#fff7f2;color:#14332d}a{color:#f08a54}a:hover,a:focus{color:#d9733d}.text-primary{color:#0f3d34}a.text-primary:hover,a.text-primary:focus{color:#0b2f29}.bg-primary{background-color:#0f3d34}a.bg-primary:hover,a.bg-primary:focus{background-color:#0b2f29}.btn-primary{background-color:#0f3d34;border-color:#0f3d34}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-color:#0b2f29;border-color:#0b2f29}.btn-warning{background-color:#f08a54;border-color:#f08a54}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-color:#d9733d;border-color:#d9733d}.label-primary{background-color:#0f3d34}.label-warning{background-color:#f08a54}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{background-color:#0f3d34;border-color:#0f3d34}.navbar-default{background-color:#0f3d34;border-color:#0f3d34}.navbar-default .navbar-brand,.navbar-default .navbar-nav>li>a{color:#fff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus,.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#f08a54}.panel-primary>.panel-heading{background-color:#0f3d34;border-color:#0f3d34;color:#fff}.panel-primary{border-color:#0f3d34}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{border-top-color:#0f3d34}.form-control:focus{border-color:#f08a54;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(240,138,84,.35);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(240,138,84,.35)} diff --git a/assets/css/cosmo.min.css b/assets/css/cosmo.min.css index 5ddc0b419..1e0023b19 100644 --- a/assets/css/cosmo.min.css +++ b/assets/css/cosmo.min.css @@ -8,4 +8,4 @@ * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2780e3;text-decoration:none}a:hover,a:focus{color:#165ba8;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #e6e6e6}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#ff7518;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#2780e3}a.text-primary:hover,a.text-primary:focus{color:#1967be}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2780e3}a.bg-primary:hover,a.bg-primary:focus{background-color:#1967be}.bg-success{background-color:#3fb618}a.bg-success:hover,a.bg-success:focus{background-color:#2f8912}.bg-info{background-color:#9954bb}a.bg-info:hover,a.bg-info:focus{background-color:#7e3f9d}.bg-warning{background-color:#ff7518}a.bg-warning:hover,a.bg-warning:focus{background-color:#e45c00}.bg-danger{background-color:#ff0039}a.bg-danger:hover,a.bg-danger:focus{background-color:#cc002e}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #e6e6e6}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e6e6e6}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e6e6e6;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#3fb618}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#379f15}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9954bb}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8d46b0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff7518}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#fe6600}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#ff0039}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e60033}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#333333}.form-control{display:block;width:100%;height:43px;padding:10px 18px;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#e6e6e6;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:43px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:64px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:31px;line-height:31px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:31px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5}.input-lg{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:64px;line-height:64px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:64px;line-height:64px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:64px;min-height:40px;padding:19px 30px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#3fb618}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff7518}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff0039}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 18px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#222222;border-color:#222222}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#090909;border-color:#000000}.btn-default:hover{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#000000;border-color:#000000}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#222222;border-color:#222222}.btn-default .badge{color:#222222;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#1967be;border-color:#10427b}.btn-primary:hover{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#15569f;border-color:#10427b}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2780e3;border-color:#2780e3}.btn-primary .badge{color:#2780e3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#3fb618;border-color:#3fb618}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2f8912;border-color:#184509}.btn-success:hover{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#24690e;border-color:#184509}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#3fb618;border-color:#3fb618}.btn-success .badge{color:#3fb618;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9954bb;border-color:#9954bb}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#7e3f9d;border-color:#522967}.btn-info:hover{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#6a3484;border-color:#522967}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#9954bb;border-color:#9954bb}.btn-info .badge{color:#9954bb;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff7518;border-color:#ff7518}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#e45c00;border-color:#983d00}.btn-warning:hover{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#c04d00;border-color:#983d00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#ff7518;border-color:#ff7518}.btn-warning .badge{color:#ff7518;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#ff0039;border-color:#ff0039}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#cc002e;border-color:#80001c}.btn-danger:hover{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#a80026;border-color:#80001c}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#ff0039;border-color:#ff0039}.btn-danger .badge{color:#ff0039;background-color:#ffffff}.btn-link{color:#2780e3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#165ba8;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2780e3}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2780e3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:64px;line-height:64px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 18px;font-size:15px;font-weight:normal;line-height:1;color:#333333;text-align:center;background-color:#e6e6e6;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:0}.input-group-addon.input-lg{padding:18px 30px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#e6e6e6}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#e6e6e6;border-color:#2780e3}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#e6e6e6 #e6e6e6 #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2780e3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:14.5px 15px;font-size:19px;line-height:21px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3.5px;margin-bottom:3.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3.5px;margin-bottom:3.5px}.navbar-btn.btn-sm{margin-top:9.5px;margin-bottom:9.5px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#222222;border-color:#121212}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#090909}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#121212}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#090909;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2780e3;border-color:#1967be}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#1967be}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#1a6ecc}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#1967be;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ffffff;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#ffffff}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 18px;line-height:1.42857143;text-decoration:none;color:#2780e3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#165ba8;background-color:#e6e6e6;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 30px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:0}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#e6e6e6}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#222222}.label-default[href]:hover,.label-default[href]:focus{background-color:#090909}.label-primary{background-color:#2780e3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1967be}.label-success{background-color:#3fb618}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f8912}.label-info{background-color:#9954bb}.label-info[href]:hover,.label-info[href]:focus{background-color:#7e3f9d}.label-warning{background-color:#ff7518}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#e45c00}.label-danger{background-color:#ff0039}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#cc002e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#2780e3;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2780e3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e6e6e6}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cccccc}.container .jumbotron,.container-fluid .jumbotron{border-radius:0;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2780e3}.thumbnail .caption{padding:9px;color:#333333}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#3fb618;border-color:#4e9f15;color:#ffffff}.alert-success hr{border-top-color:#438912}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9954bb;border-color:#7643a8;color:#ffffff}.alert-info hr{border-top-color:#693c96}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff7518;border-color:#ff4309;color:#ffffff}.alert-warning hr{border-top-color:#ee3800}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#ff0039;border-color:#f0005e;color:#ffffff}.alert-danger hr{border-top-color:#d60054}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#2780e3;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3fb618}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9954bb}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff7518}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#ff0039}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#e6e6e6;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2780e3;border-color:#dddddd}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#dceafa}.list-group-item-success{color:#ffffff;background-color:#3fb618}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#379f15}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9954bb}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#8d46b0}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff7518}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#fe6600}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#ff0039}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e60033}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2780e3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2780e3}.panel-primary>.panel-heading .badge{color:#2780e3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2780e3}.panel-success{border-color:#4e9f15}.panel-success>.panel-heading{color:#ffffff;background-color:#3fb618;border-color:#4e9f15}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#4e9f15}.panel-success>.panel-heading .badge{color:#3fb618;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#4e9f15}.panel-info{border-color:#7643a8}.panel-info>.panel-heading{color:#ffffff;background-color:#9954bb;border-color:#7643a8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#7643a8}.panel-info>.panel-heading .badge{color:#9954bb;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#7643a8}.panel-warning{border-color:#ff4309}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff7518;border-color:#ff4309}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff4309}.panel-warning>.panel-heading .badge{color:#ff7518;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff4309}.panel-danger{border-color:#f0005e}.panel-danger>.panel-heading{color:#ffffff;background-color:#ff0039;border-color:#f0005e}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f0005e}.panel-danger>.panel-heading .badge{color:#ff0039;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f0005e}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#2780e3}body{-webkit-font-smoothing:antialiased}.text-primary,.text-primary:hover{color:#2780e3}.text-success,.text-success:hover{color:#3fb618}.text-danger,.text-danger:hover{color:#ff0039}.text-warning,.text-warning:hover{color:#ff7518}.text-info,.text-info:hover{color:#9954bb}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a,.table .success a,table .warning a,.table .warning a,table .danger a,.table .danger a,table .info a,.table .info a{color:#fff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#ff7518}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border:1px solid #ff7518}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#ff0039}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border:1px solid #ff0039}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#3fb618}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border:1px solid #3fb618}.nav-pills>li>a{border-radius:0}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:none}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert{border:none}.alert .alert-link{text-decoration:underline;color:#fff}.label{border-radius:0}.progress{height:8px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:8px;line-height:8px}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#333333}a.list-group-item-success.active{background-color:#3fb618}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#379f15}a.list-group-item-warning.active{background-color:#ff7518}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#fe6600}a.list-group-item-danger.active{background-color:#ff0039}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e60033}.modal .close{color:#333333}.popover{color:#333333} \ No newline at end of file + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2780e3;text-decoration:none}a:hover,a:focus{color:#165ba8;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #e6e6e6}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#ff7518;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#2780e3}a.text-primary:hover,a.text-primary:focus{color:#1967be}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2780e3}a.bg-primary:hover,a.bg-primary:focus{background-color:#1967be}.bg-success{background-color:#3fb618}a.bg-success:hover,a.bg-success:focus{background-color:#2f8912}.bg-info{background-color:#9954bb}a.bg-info:hover,a.bg-info:focus{background-color:#7e3f9d}.bg-warning{background-color:#ff7518}a.bg-warning:hover,a.bg-warning:focus{background-color:#e45c00}.bg-danger{background-color:#ff0039}a.bg-danger:hover,a.bg-danger:focus{background-color:#cc002e}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #e6e6e6}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e6e6e6}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e6e6e6;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#3fb618}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#379f15}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9954bb}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8d46b0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff7518}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#fe6600}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#ff0039}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e60033}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#333333}.form-control{display:block;width:100%;height:43px;padding:10px 18px;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#e6e6e6;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:43px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:64px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:31px;line-height:31px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:31px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5}.input-lg{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:64px;line-height:64px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:64px;line-height:64px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:64px;min-height:40px;padding:19px 30px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#3fb618}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff7518}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff0039}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 18px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#222222;border-color:#222222}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#090909;border-color:#000000}.btn-default:hover{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#000000;border-color:#000000}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#222222;border-color:#222222}.btn-default .badge{color:#222222;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#1967be;border-color:#10427b}.btn-primary:hover{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#15569f;border-color:#10427b}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2780e3;border-color:#2780e3}.btn-primary .badge{color:#2780e3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#3fb618;border-color:#3fb618}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2f8912;border-color:#184509}.btn-success:hover{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#24690e;border-color:#184509}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#3fb618;border-color:#3fb618}.btn-success .badge{color:#3fb618;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9954bb;border-color:#9954bb}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#7e3f9d;border-color:#522967}.btn-info:hover{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#6a3484;border-color:#522967}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#9954bb;border-color:#9954bb}.btn-info .badge{color:#9954bb;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff7518;border-color:#ff7518}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#e45c00;border-color:#983d00}.btn-warning:hover{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#c04d00;border-color:#983d00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#ff7518;border-color:#ff7518}.btn-warning .badge{color:#ff7518;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#ff0039;border-color:#ff0039}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#cc002e;border-color:#80001c}.btn-danger:hover{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#a80026;border-color:#80001c}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#ff0039;border-color:#ff0039}.btn-danger .badge{color:#ff0039;background-color:#ffffff}.btn-link{color:#2780e3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#165ba8;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2780e3}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2780e3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:64px;line-height:64px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 18px;font-size:15px;font-weight:normal;line-height:1;color:#333333;text-align:center;background-color:#e6e6e6;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:0}.input-group-addon.input-lg{padding:18px 30px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#e6e6e6}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#e6e6e6;border-color:#2780e3}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#e6e6e6 #e6e6e6 #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2780e3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:14.5px 15px;font-size:19px;line-height:21px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3.5px;margin-bottom:3.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3.5px;margin-bottom:3.5px}.navbar-btn.btn-sm{margin-top:9.5px;margin-bottom:9.5px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#222222;border-color:#121212}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#090909}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#121212}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#090909;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2780e3;border-color:#1967be}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#1967be}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#1a6ecc}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#1967be;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ffffff;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#ffffff}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 18px;line-height:1.42857143;text-decoration:none;color:#2780e3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#165ba8;background-color:#e6e6e6;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 30px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:0}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#e6e6e6}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#222222}.label-default[href]:hover,.label-default[href]:focus{background-color:#090909}.label-primary{background-color:#2780e3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1967be}.label-success{background-color:#3fb618}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f8912}.label-info{background-color:#9954bb}.label-info[href]:hover,.label-info[href]:focus{background-color:#7e3f9d}.label-warning{background-color:#ff7518}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#e45c00}.label-danger{background-color:#ff0039}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#cc002e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#2780e3;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2780e3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e6e6e6}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cccccc}.container .jumbotron,.container-fluid .jumbotron{border-radius:0;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2780e3}.thumbnail .caption{padding:9px;color:#333333}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#3fb618;border-color:#4e9f15;color:#ffffff}.alert-success hr{border-top-color:#438912}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9954bb;border-color:#7643a8;color:#ffffff}.alert-info hr{border-top-color:#693c96}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff7518;border-color:#ff4309;color:#ffffff}.alert-warning hr{border-top-color:#ee3800}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#ff0039;border-color:#f0005e;color:#ffffff}.alert-danger hr{border-top-color:#d60054}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#2780e3;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3fb618}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9954bb}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff7518}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#ff0039}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#e6e6e6;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2780e3;border-color:#dddddd}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#dceafa}.list-group-item-success{color:#ffffff;background-color:#3fb618}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#379f15}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9954bb}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#8d46b0}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff7518}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#fe6600}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#ff0039}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e60033}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2780e3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2780e3}.panel-primary>.panel-heading .badge{color:#2780e3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2780e3}.panel-success{border-color:#4e9f15}.panel-success>.panel-heading{color:#ffffff;background-color:#3fb618;border-color:#4e9f15}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#4e9f15}.panel-success>.panel-heading .badge{color:#3fb618;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#4e9f15}.panel-info{border-color:#7643a8}.panel-info>.panel-heading{color:#ffffff;background-color:#9954bb;border-color:#7643a8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#7643a8}.panel-info>.panel-heading .badge{color:#9954bb;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#7643a8}.panel-warning{border-color:#ff4309}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff7518;border-color:#ff4309}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff4309}.panel-warning>.panel-heading .badge{color:#ff7518;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff4309}.panel-danger{border-color:#f0005e}.panel-danger>.panel-heading{color:#ffffff;background-color:#ff0039;border-color:#f0005e}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f0005e}.panel-danger>.panel-heading .badge{color:#ff0039;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f0005e}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#2780e3}body{-webkit-font-smoothing:antialiased}.text-primary,.text-primary:hover{color:#0e56a9}.text-success,.text-success:hover{color:#3fb618}.text-danger,.text-danger:hover{color:#ff0039}.text-warning,.text-warning:hover{color:#ff7518}.text-info,.text-info:hover{color:#9954bb}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a,.table .success a,table .warning a,.table .warning a,table .danger a,.table .danger a,table .info a,.table .info a{color:#fff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#ff7518}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border:1px solid #ff7518}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#ff0039}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border:1px solid #ff0039}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#3fb618}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border:1px solid #3fb618}.nav-pills>li>a{border-radius:0}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:none}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert{border:none}.alert .alert-link{text-decoration:underline;color:#fff}.label{border-radius:0}.progress{height:8px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:8px;line-height:8px}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#333333}a.list-group-item-success.active{background-color:#3fb618}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#379f15}a.list-group-item-warning.active{background-color:#ff7518}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#fe6600}a.list-group-item-danger.active{background-color:#ff0039}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e60033}.modal .close{color:#333333}.popover{color:#333333} \ No newline at end of file diff --git a/assets/css/darkly.min.css b/assets/css/darkly.min.css index 90f14a4eb..fb0a1268b 100644 --- a/assets/css/darkly.min.css +++ b/assets/css/darkly.min.css @@ -8,4 +8,4 @@ * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#ffffff;background-color:#222222}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#0ce3ac;text-decoration:none}a:hover,a:focus{color:#0ce3ac;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:2px;line-height:1.42857143;background-color:#222222;border:1px solid #464545;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #464545}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#f39c12;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#375a7f}a.text-primary:hover,a.text-primary:focus{color:#28415b}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#375a7f}a.bg-primary:hover,a.bg-primary:focus{background-color:#28415b}.bg-success{background-color:#00bc8c}a.bg-success:hover,a.bg-success:focus{background-color:#008966}.bg-info{background-color:#3498db}a.bg-info:hover,a.bg-info:focus{background-color:#217dbb}.bg-warning{background-color:#f39c12}a.bg-warning:hover,a.bg-warning:focus{background-color:#c87f0a}.bg-danger{background-color:#e74c3c}a.bg-danger:hover,a.bg-danger:focus{background-color:#d62c1a}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid transparent}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #464545}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #464545;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#303030;background-color:#ebebeb;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #464545}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #464545}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #464545}.table .table{background-color:#222222}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #464545}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #464545}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#3d3d3d}.table-hover>tbody>tr:hover{background-color:#464545}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#464545}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#393838}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#00bc8c}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#00a379}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#3498db}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#258cd1}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f39c12}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e08e0b}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#e74c3c}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e43725}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #464545}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#ffffff;border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#464545}.form-control{display:block;width:100%;height:45px;padding:10px 15px;font-size:15px;line-height:1.42857143;color:#464545;background-color:#ffffff;background-image:none;border:1px solid #f1f1f1;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#ffffff;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(255,255,255,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(255,255,255,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#ebebeb;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:45px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:35px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:66px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:35px;line-height:35px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:35px;line-height:35px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:35px;min-height:34px;padding:7px 9px;font-size:13px;line-height:1.5}.input-lg{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-lg{height:66px;line-height:66px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:66px;line-height:66px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:66px;min-height:40px;padding:19px 27px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:56.25px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:45px;height:45px;line-height:45px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:66px;height:66px;line-height:66px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:35px;height:35px;line-height:35px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#00bc8c}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#f39c12}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#e74c3c}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#ffffff}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:7px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 15px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#464545;border-color:#464545}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#2c2c2c;border-color:#060606}.btn-default:hover{color:#ffffff;background-color:#2c2c2c;border-color:#272727}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#2c2c2c;border-color:#272727}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#1a1a1a;border-color:#060606}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#464545;border-color:#464545}.btn-default .badge{color:#464545;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#375a7f;border-color:#375a7f}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#28415b;border-color:#101b26}.btn-primary:hover{color:#ffffff;background-color:#28415b;border-color:#253c54}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#28415b;border-color:#253c54}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1d2f43;border-color:#101b26}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#375a7f;border-color:#375a7f}.btn-primary .badge{color:#375a7f;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#00bc8c;border-color:#00bc8c}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#008966;border-color:#003d2d}.btn-success:hover{color:#ffffff;background-color:#008966;border-color:#007f5e}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#008966;border-color:#007f5e}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#00654b;border-color:#003d2d}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#00bc8c;border-color:#00bc8c}.btn-success .badge{color:#00bc8c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#3498db;border-color:#3498db}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#217dbb;border-color:#16527a}.btn-info:hover{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#1c699d;border-color:#16527a}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#3498db;border-color:#3498db}.btn-info .badge{color:#3498db;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#c87f0a;border-color:#7f5006}.btn-warning:hover{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a66908;border-color:#7f5006}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f39c12;border-color:#f39c12}.btn-warning .badge{color:#f39c12;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#d62c1a;border-color:#921e12}.btn-danger:hover{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#b62516;border-color:#921e12}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e74c3c;border-color:#e74c3c}.btn-danger .badge{color:#e74c3c;background-color:#ffffff}.btn-link{color:#0ce3ac;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#0ce3ac;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#303030;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#464545}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#ebebeb;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#375a7f}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#375a7f}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:66px;line-height:66px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:35px;line-height:35px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 15px;font-size:15px;font-weight:normal;line-height:1;color:#464545;text-align:center;background-color:#464545;border:1px solid transparent;border-radius:4px}.input-group-addon.input-sm{padding:6px 9px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:18px 27px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#303030}.nav>li.disabled>a{color:#605e5e}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#605e5e;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#303030;border-color:#0ce3ac}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #464545}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#464545 #464545 #464545}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#00bc8c;background-color:#222222;border:1px solid #464545;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ebebeb}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#222222}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#375a7f}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ebebeb}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#222222}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:19.5px 15px;font-size:19px;line-height:21px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:7.5px;margin-bottom:7.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7.5px;margin-bottom:7.5px}.navbar-btn.btn-sm{margin-top:12.5px;margin-bottom:12.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#375a7f;border-color:transparent}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#00bc8c;background-color:transparent}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#00bc8c;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#28415b}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#28415b}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#28415b}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#28415b;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#00bc8c;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#28415b}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#00bc8c}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#00bc8c}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#00bc8c;border-color:transparent}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#375a7f;background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#375a7f;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#00a379}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#aaaaaa;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#008966}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#008966}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#009871}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#00a379;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#375a7f;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#00a379}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#aaaaaa;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#375a7f}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#375a7f}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#aaaaaa}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#464545;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ffffff}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 15px;line-height:1.42857143;text-decoration:none;color:#ffffff;background-color:#00bc8c;border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ffffff;background-color:#00dba3;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#00dba3;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#ffffff;background-color:#007053;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 27px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:6px 9px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#00bc8c;border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#00dba3}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#dddddd;background-color:#00bc8c;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#464545}.label-default[href]:hover,.label-default[href]:focus{background-color:#2c2c2c}.label-primary{background-color:#375a7f}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#28415b}.label-success{background-color:#00bc8c}.label-success[href]:hover,.label-success[href]:focus{background-color:#008966}.label-info{background-color:#3498db}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb}.label-warning{background-color:#f39c12}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a}.label-danger{background-color:#e74c3c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#464545;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#375a7f;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#303030}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#161616}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:2px;margin-bottom:21px;line-height:1.42857143;background-color:#222222;border:1px solid #464545;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#0ce3ac}.thumbnail .caption{padding:9px;color:#ffffff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#00bc8c;border-color:#00bc8c;color:#ffffff}.alert-success hr{border-top-color:#00a379}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#3498db;border-color:#3498db;color:#ffffff}.alert-info hr{border-top-color:#258cd1}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f39c12;border-color:#f39c12;color:#ffffff}.alert-warning hr{border-top-color:#e08e0b}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#ffffff}.alert-danger hr{border-top-color:#e43725}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#ebebeb;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#375a7f;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#00bc8c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#3498db}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#e74c3c}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#303030;border:1px solid #464545}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#0ce3ac}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#0bcb9a}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#0ce3ac;background-color:transparent}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#ebebeb;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#375a7f;border-color:#375a7f}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#a8c0da}.list-group-item-success{color:#ffffff;background-color:#00bc8c}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#00a379}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#3498db}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#258cd1}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#f39c12}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#e08e0b}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#e74c3c}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e43725}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#303030;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#464545;border-top:1px solid #464545;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #464545}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #464545}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #464545}.panel-default{border-color:#464545}.panel-default>.panel-heading{color:#ffffff;background-color:#303030;border-color:#464545}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#464545}.panel-default>.panel-heading .badge{color:#303030;background-color:#ffffff}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#464545}.panel-primary{border-color:#375a7f}.panel-primary>.panel-heading{color:#ffffff;background-color:#375a7f;border-color:#375a7f}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#375a7f}.panel-primary>.panel-heading .badge{color:#375a7f;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#375a7f}.panel-success{border-color:#00bc8c}.panel-success>.panel-heading{color:#ffffff;background-color:#00bc8c;border-color:#00bc8c}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#00bc8c}.panel-success>.panel-heading .badge{color:#00bc8c;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#00bc8c}.panel-info{border-color:#3498db}.panel-info>.panel-heading{color:#ffffff;background-color:#3498db;border-color:#3498db}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3498db}.panel-info>.panel-heading .badge{color:#3498db;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3498db}.panel-warning{border-color:#f39c12}.panel-warning>.panel-heading{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f39c12}.panel-warning>.panel-heading .badge{color:#f39c12;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#e74c3c}.panel-danger>.panel-heading{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e74c3c}.panel-danger>.panel-heading .badge{color:#e74c3c;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e74c3c}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#303030;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#303030;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.7;filter:alpha(opacity=70)}.modal-header{padding:15px;border-bottom:1px solid #464545}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #464545}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#303030;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#282828;border-bottom:1px solid #1c1c1c;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#666666;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#303030}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#666666;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#303030}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#666666;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#303030}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#666666;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#303030;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border-width:0}.navbar-default .badge{background-color:#fff;color:#375a7f}.navbar-inverse .badge{background-color:#fff;color:#00bc8c}.navbar-brand{line-height:1}.navbar-form .form-control{background-color:white}.navbar-form .form-control:focus{border-color:white}.btn{border-width:2px}.btn:active{-webkit-box-shadow:none;box-shadow:none}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.text-primary,.text-primary:hover{color:#4673a3}.text-success,.text-success:hover{color:#00bc8c}.text-danger,.text-danger:hover{color:#e74c3c}.text-warning,.text-warning:hover{color:#f39c12}.text-info,.text-info:hover{color:#3498db}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success>th>a,.table .success>th>a,table .warning>th>a,.table .warning>th>a,table .danger>th>a,.table .danger>th>a,table .info>th>a,.table .info>th>a,table .success>td>a,.table .success>td>a,table .warning>td>a,.table .warning>td>a,table .danger>td>a,.table .danger>td>a,table .info>td>a,.table .info>td>a,table .success>a,.table .success>a,table .warning>a,.table .warning>a,table .danger>a,.table .danger>a,table .info>a,.table .info>a{color:#fff}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border:none}table-bordered>thead>tr>th,.table-bordered>thead>tr>th,table-bordered>tbody>tr>th,.table-bordered>tbody>tr>th,table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>th,table-bordered>thead>tr>td,.table-bordered>thead>tr>td,table-bordered>tbody>tr>td,.table-bordered>tbody>tr>td,table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #464545}input,textarea{color:#464545}.form-control,input,textarea{border:2px hidden transparent;-webkit-box-shadow:none;box-shadow:none}.form-control:focus,input:focus,textarea:focus{-webkit-box-shadow:none;box-shadow:none}.form-control-feedback{color:#464545}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f39c12}.has-warning .form-control,.has-warning .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .input-group-addon{border-color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#e74c3c}.has-error .form-control,.has-error .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-error .input-group-addon{border-color:#e74c3c}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#00bc8c}.has-success .form-control,.has-success .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-success .input-group-addon{border-color:#00bc8c}.input-group-addon{color:#ffffff}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:#464545}.nav-tabs>li>a,.nav-pills>li>a{color:#fff}.pager a,.pager a:hover{color:#fff}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{background-color:#007053}.breadcrumb a{color:#fff}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert .alert-link{color:#fff;text-decoration:underline}.progress{height:10px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:10px;line-height:10px}.well{-webkit-box-shadow:none;box-shadow:none}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#464545}a.list-group-item-success.active{background-color:#00bc8c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#00a379}a.list-group-item-warning.active{background-color:#f39c12}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#e08e0b}a.list-group-item-danger.active{background-color:#e74c3c}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e43725}.popover{color:#ffffff}.panel-default>.panel-heading{background-color:#464545} \ No newline at end of file + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#ffffff;background-color:#222222}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#0ce3ac;text-decoration:none}a:hover,a:focus{color:#0ce3ac;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:2px;line-height:1.42857143;background-color:#222222;border:1px solid #464545;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #464545}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#f39c12;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#375a7f}a.text-primary:hover,a.text-primary:focus{color:#28415b}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#375a7f}a.bg-primary:hover,a.bg-primary:focus{background-color:#28415b}.bg-success{background-color:#00bc8c}a.bg-success:hover,a.bg-success:focus{background-color:#008966}.bg-info{background-color:#3498db}a.bg-info:hover,a.bg-info:focus{background-color:#217dbb}.bg-warning{background-color:#f39c12}a.bg-warning:hover,a.bg-warning:focus{background-color:#c87f0a}.bg-danger{background-color:#e74c3c}a.bg-danger:hover,a.bg-danger:focus{background-color:#d62c1a}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid transparent}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #464545}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #464545;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#303030;background-color:#ebebeb;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #464545}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #464545}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #464545}.table .table{background-color:#222222}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #464545}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #464545}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#3d3d3d}.table-hover>tbody>tr:hover{background-color:#464545}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#464545}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#393838}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#00bc8c}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#00a379}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#3498db}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#258cd1}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f39c12}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e08e0b}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#e74c3c}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e43725}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #464545}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#ffffff;border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#464545}.form-control{display:block;width:100%;height:45px;padding:10px 15px;font-size:15px;line-height:1.42857143;color:#464545;background-color:#ffffff;background-image:none;border:1px solid #f1f1f1;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#ffffff;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(255,255,255,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(255,255,255,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#ebebeb;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:45px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:35px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:66px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:35px;line-height:35px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:35px;line-height:35px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:35px;min-height:34px;padding:7px 9px;font-size:13px;line-height:1.5}.input-lg{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-lg{height:66px;line-height:66px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:66px;line-height:66px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:66px;min-height:40px;padding:19px 27px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:56.25px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:45px;height:45px;line-height:45px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:66px;height:66px;line-height:66px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:35px;height:35px;line-height:35px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#00bc8c}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#f39c12}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#e74c3c}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#ffffff}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:7px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 15px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#464545;border-color:#464545}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#2c2c2c;border-color:#060606}.btn-default:hover{color:#ffffff;background-color:#2c2c2c;border-color:#272727}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#2c2c2c;border-color:#272727}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#1a1a1a;border-color:#060606}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#464545;border-color:#464545}.btn-default .badge{color:#464545;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#375a7f;border-color:#375a7f}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#28415b;border-color:#101b26}.btn-primary:hover{color:#ffffff;background-color:#28415b;border-color:#253c54}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#28415b;border-color:#253c54}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1d2f43;border-color:#101b26}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#375a7f;border-color:#375a7f}.btn-primary .badge{color:#375a7f;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#00bc8c;border-color:#00bc8c}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#008966;border-color:#003d2d}.btn-success:hover{color:#ffffff;background-color:#008966;border-color:#007f5e}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#008966;border-color:#007f5e}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#00654b;border-color:#003d2d}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#00bc8c;border-color:#00bc8c}.btn-success .badge{color:#00bc8c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#3498db;border-color:#3498db}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#217dbb;border-color:#16527a}.btn-info:hover{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#1c699d;border-color:#16527a}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#3498db;border-color:#3498db}.btn-info .badge{color:#3498db;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#c87f0a;border-color:#7f5006}.btn-warning:hover{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a66908;border-color:#7f5006}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f39c12;border-color:#f39c12}.btn-warning .badge{color:#f39c12;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#d62c1a;border-color:#921e12}.btn-danger:hover{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#b62516;border-color:#921e12}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e74c3c;border-color:#e74c3c}.btn-danger .badge{color:#e74c3c;background-color:#ffffff}.btn-link{color:#0ce3ac;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#0ce3ac;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#303030;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#464545}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#ebebeb;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#375a7f}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#375a7f}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:66px;line-height:66px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:35px;line-height:35px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 15px;font-size:15px;font-weight:normal;line-height:1;color:#464545;text-align:center;background-color:#464545;border:1px solid transparent;border-radius:4px}.input-group-addon.input-sm{padding:6px 9px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:18px 27px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#303030}.nav>li.disabled>a{color:#605e5e}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#605e5e;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#303030;border-color:#0ce3ac}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #464545}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#464545 #464545 #464545}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#00bc8c;background-color:#222222;border:1px solid #464545;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ebebeb}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#222222}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#375a7f}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ebebeb}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#222222}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:19.5px 15px;font-size:19px;line-height:21px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:7.5px;margin-bottom:7.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7.5px;margin-bottom:7.5px}.navbar-btn.btn-sm{margin-top:12.5px;margin-bottom:12.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#375a7f;border-color:transparent}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#00bc8c;background-color:transparent}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#00bc8c;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#28415b}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#28415b}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#28415b}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#28415b;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#00bc8c;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#28415b}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#00bc8c}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#00bc8c}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#00bc8c;border-color:transparent}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#375a7f;background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#375a7f;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#00a379}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#aaaaaa;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#008966}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#008966}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#009871}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#00a379;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#375a7f;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#00a379}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#aaaaaa;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#375a7f}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#375a7f}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#aaaaaa}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#464545;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ffffff}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 15px;line-height:1.42857143;text-decoration:none;color:#ffffff;background-color:#00bc8c;border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ffffff;background-color:#00dba3;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#00dba3;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#ffffff;background-color:#007053;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 27px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:6px 9px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#00bc8c;border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#00dba3}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#dddddd;background-color:#00bc8c;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#464545}.label-default[href]:hover,.label-default[href]:focus{background-color:#2c2c2c}.label-primary{background-color:#375a7f}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#28415b}.label-success{background-color:#00bc8c}.label-success[href]:hover,.label-success[href]:focus{background-color:#008966}.label-info{background-color:#3498db}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb}.label-warning{background-color:#f39c12}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a}.label-danger{background-color:#e74c3c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#464545;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#375a7f;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#303030}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#161616}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:2px;margin-bottom:21px;line-height:1.42857143;background-color:#222222;border:1px solid #464545;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#0ce3ac}.thumbnail .caption{padding:9px;color:#ffffff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#00bc8c;border-color:#00bc8c;color:#ffffff}.alert-success hr{border-top-color:#00a379}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#3498db;border-color:#3498db;color:#ffffff}.alert-info hr{border-top-color:#258cd1}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f39c12;border-color:#f39c12;color:#ffffff}.alert-warning hr{border-top-color:#e08e0b}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#ffffff}.alert-danger hr{border-top-color:#e43725}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#ebebeb;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#375a7f;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#00bc8c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#3498db}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#e74c3c}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#303030;border:1px solid #464545}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#0ce3ac}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#0bcb9a}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#0ce3ac;background-color:transparent}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#ebebeb;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#375a7f;border-color:#375a7f}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#a8c0da}.list-group-item-success{color:#ffffff;background-color:#00bc8c}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#00a379}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#3498db}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#258cd1}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#f39c12}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#e08e0b}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#e74c3c}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e43725}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#303030;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#464545;border-top:1px solid #464545;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #464545}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #464545}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #464545}.panel-default{border-color:#464545}.panel-default>.panel-heading{color:#ffffff;background-color:#303030;border-color:#464545}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#464545}.panel-default>.panel-heading .badge{color:#303030;background-color:#ffffff}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#464545}.panel-primary{border-color:#375a7f}.panel-primary>.panel-heading{color:#ffffff;background-color:#375a7f;border-color:#375a7f}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#375a7f}.panel-primary>.panel-heading .badge{color:#375a7f;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#375a7f}.panel-success{border-color:#00bc8c}.panel-success>.panel-heading{color:#ffffff;background-color:#00bc8c;border-color:#00bc8c}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#00bc8c}.panel-success>.panel-heading .badge{color:#00bc8c;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#00bc8c}.panel-info{border-color:#3498db}.panel-info>.panel-heading{color:#ffffff;background-color:#3498db;border-color:#3498db}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3498db}.panel-info>.panel-heading .badge{color:#3498db;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3498db}.panel-warning{border-color:#f39c12}.panel-warning>.panel-heading{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f39c12}.panel-warning>.panel-heading .badge{color:#f39c12;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#e74c3c}.panel-danger>.panel-heading{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e74c3c}.panel-danger>.panel-heading .badge{color:#e74c3c;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e74c3c}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#303030;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#303030;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.7;filter:alpha(opacity=70)}.modal-header{padding:15px;border-bottom:1px solid #464545}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #464545}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#303030;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#282828;border-bottom:1px solid #1c1c1c;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#666666;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#303030}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#666666;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#303030}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#666666;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#303030}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#666666;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#303030;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border-width:0}.navbar-default .badge{background-color:#fff;color:#375a7f}.navbar-inverse .badge{background-color:#fff;color:#00bc8c}.navbar-brand{line-height:1}.navbar-form .form-control{background-color:white}.navbar-form .form-control:focus{border-color:white}.btn{border-width:2px}.btn:active{-webkit-box-shadow:none;box-shadow:none}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.text-primary,.text-primary:hover{color:#4673a3}.text-success,.text-success:hover{color:#018664}.text-danger,.text-danger:hover{color:#e74c3c}.text-warning,.text-warning:hover{color:#f39c12}.text-info,.text-info:hover{color:#3498db}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success>th>a,.table .success>th>a,table .warning>th>a,.table .warning>th>a,table .danger>th>a,.table .danger>th>a,table .info>th>a,.table .info>th>a,table .success>td>a,.table .success>td>a,table .warning>td>a,.table .warning>td>a,table .danger>td>a,.table .danger>td>a,table .info>td>a,.table .info>td>a,table .success>a,.table .success>a,table .warning>a,.table .warning>a,table .danger>a,.table .danger>a,table .info>a,.table .info>a{color:#fff}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border:none}table-bordered>thead>tr>th,.table-bordered>thead>tr>th,table-bordered>tbody>tr>th,.table-bordered>tbody>tr>th,table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>th,table-bordered>thead>tr>td,.table-bordered>thead>tr>td,table-bordered>tbody>tr>td,.table-bordered>tbody>tr>td,table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #464545}input,textarea{color:#464545}.form-control,input,textarea{border:2px hidden transparent;-webkit-box-shadow:none;box-shadow:none}.form-control:focus,input:focus,textarea:focus{-webkit-box-shadow:none;box-shadow:none}.form-control-feedback{color:#464545}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f39c12}.has-warning .form-control,.has-warning .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .input-group-addon{border-color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#e74c3c}.has-error .form-control,.has-error .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-error .input-group-addon{border-color:#e74c3c}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#00bc8c}.has-success .form-control,.has-success .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-success .input-group-addon{border-color:#00bc8c}.input-group-addon{color:#ffffff}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:#464545}.nav-tabs>li>a,.nav-pills>li>a{color:#fff}.pager a,.pager a:hover{color:#fff}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{background-color:#007053}.breadcrumb a{color:#fff}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert .alert-link{color:#fff;text-decoration:underline}.progress{height:10px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:10px;line-height:10px}.well{-webkit-box-shadow:none;box-shadow:none}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#464545}a.list-group-item-success.active{background-color:#00bc8c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#00a379}a.list-group-item-warning.active{background-color:#f39c12}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#e08e0b}a.list-group-item-danger.active{background-color:#e74c3c}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e43725}.popover{color:#ffffff}.panel-default>.panel-heading{background-color:#464545} \ No newline at end of file diff --git a/assets/css/fixedColumns.dataTables.min.css b/assets/css/fixedColumns.dataTables.min.css new file mode 100644 index 000000000..ce934fdfc --- /dev/null +++ b/assets/css/fixedColumns.dataTables.min.css @@ -0,0 +1 @@ +table.dataTable thead tr>.dtfc-fixed-left,table.dataTable thead tr>.dtfc-fixed-right,table.dataTable tfoot tr>.dtfc-fixed-left,table.dataTable tfoot tr>.dtfc-fixed-right{top:0;bottom:0;z-index:3;background-color:white}table.dataTable tbody tr>.dtfc-fixed-left,table.dataTable tbody tr>.dtfc-fixed-right{z-index:1;background-color:white}div.dtfc-left-top-blocker,div.dtfc-right-top-blocker{background-color:white}html.dark table.dataTable thead tr>.dtfc-fixed-left,html.dark table.dataTable thead tr>.dtfc-fixed-right,html.dark table.dataTable tfoot tr>.dtfc-fixed-left,html.dark table.dataTable tfoot tr>.dtfc-fixed-right{background-color:var(--dt-html-background)}html.dark table.dataTable tbody tr>.dtfc-fixed-left,html.dark table.dataTable tbody tr>.dtfc-fixed-right{background-color:var(--dt-html-background)}html.dark div.dtfc-left-top-blocker,html.dark div.dtfc-right-top-blocker{background-color:var(--dt-html-background)} diff --git a/assets/css/flatly.min.css b/assets/css/flatly.min.css index 2f615143e..dc0d72862 100644 --- a/assets/css/flatly.min.css +++ b/assets/css/flatly.min.css @@ -8,4 +8,4 @@ * Bootstrap v3.4.1 (https://getbootstrap.com/) * Copyright 2011-2019 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{color:#000 !important;text-shadow:none !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:"Glyphicons Halflings";src:url("../fonts/glyphicons-halflings-regular.eot");src:url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("../fonts/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{box-sizing:border-box}*:before,*:after{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#2c3e50;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#18bc9c;text-decoration:none}a:hover,a:focus{color:#18bc9c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #ecf0f1;border-radius:4px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #ecf0f1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#b4bcc2}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{padding:.2em;background-color:#f39c12}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#b4bcc2}.text-primary{color:#2c3e50}a.text-primary:hover,a.text-primary:focus{color:#1a242f}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2c3e50}a.bg-primary:hover,a.bg-primary:focus{background-color:#1a242f}.bg-success{background-color:#18bc9c}a.bg-success:hover,a.bg-success:focus{background-color:#128f76}.bg-info{background-color:#3498db}a.bg-info:hover,a.bg-info:focus{background-color:#217dbb}.bg-warning{background-color:#f39c12}a.bg-warning:hover,a.bg-warning:focus{background-color:#c87f0a}.bg-danger{background-color:#e74c3c}a.bg-danger:hover,a.bg-danger:focus{background-color:#d62c1a}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid transparent}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #ecf0f1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#b4bcc2}blockquote footer:before,blockquote small:before,blockquote .small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #ecf0f1;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:""}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:"\00A0 \2014"}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;color:#7b8a8b;word-break:break-all;word-wrap:break-word;background-color:#ecf0f1;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*="col-"]{padding-right:0;padding-left:0}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}table col[class*="col-"]{position:static;display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#b4bcc2;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ecf0f1}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ecf0f1}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ecf0f1}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ecf0f1}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ecf0f1}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#ecf0f1}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#ecf0f1}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#dde4e6}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#18bc9c}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#15a589}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#3498db}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#258cd1}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f39c12}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e08e0b}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#e74c3c}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e43725}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ecf0f1}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#2c3e50;border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type="search"]{box-sizing:border-box;-webkit-appearance:none;appearance:none}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#2c3e50}.form-control{display:block;width:100%;height:45px;padding:10px 15px;font-size:15px;line-height:1.42857143;color:#2c3e50;background-color:#ffffff;background-image:none;border:1px solid #dce4ec;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#2c3e50;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(44,62,80,0.6)}.form-control::-moz-placeholder{color:#acb6c0;opacity:1}.form-control:-ms-input-placeholder{color:#acb6c0}.form-control::-webkit-input-placeholder{color:#acb6c0}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#ecf0f1;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:45px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:35px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:66px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:36px;padding-top:11px;padding-bottom:11px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:35px;line-height:35px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:35px;line-height:35px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:35px;min-height:34px;padding:7px 9px;font-size:13px;line-height:1.5}.input-lg{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-lg{height:66px;line-height:66px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:66px;line-height:66px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:66px;min-height:40px;padding:19px 27px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:56.25px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:45px;height:45px;line-height:45px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:66px;height:66px;line-height:66px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:35px;height:35px;line-height:35px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;background-color:#18bc9c;border-color:#ffffff}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;background-color:#f39c12;border-color:#ffffff}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;background-color:#e74c3c;border-color:#ffffff}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#597ea2}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:11px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:11px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:7px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:10px 15px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:0.65;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#95a5a6;border-color:#95a5a6}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#798d8f;border-color:#566566}.btn-default:hover{color:#ffffff;background-color:#798d8f;border-color:#74898a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#798d8f;background-image:none;border-color:#74898a}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#687b7c;border-color:#566566}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#95a5a6;border-color:#95a5a6}.btn-default .badge{color:#95a5a6;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2c3e50;border-color:#2c3e50}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#1a242f;border-color:#000000}.btn-primary:hover{color:#ffffff;background-color:#1a242f;border-color:#161f29}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1a242f;background-image:none;border-color:#161f29}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#0d1318;border-color:#000000}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2c3e50;border-color:#2c3e50}.btn-primary .badge{color:#2c3e50;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#18bc9c;border-color:#18bc9c}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#128f76;border-color:#0a4b3e}.btn-success:hover{color:#ffffff;background-color:#128f76;border-color:#11866f}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#128f76;background-image:none;border-color:#11866f}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#0e6f5c;border-color:#0a4b3e}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#18bc9c;border-color:#18bc9c}.btn-success .badge{color:#18bc9c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#3498db;border-color:#3498db}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#217dbb;border-color:#16527a}.btn-info:hover{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#217dbb;background-image:none;border-color:#2077b2}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#1c699d;border-color:#16527a}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#3498db;border-color:#3498db}.btn-info .badge{color:#3498db;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#c87f0a;border-color:#7f5006}.btn-warning:hover{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#c87f0a;background-image:none;border-color:#be780a}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a66908;border-color:#7f5006}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f39c12;border-color:#f39c12}.btn-warning .badge{color:#f39c12;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#d62c1a;border-color:#921e12}.btn-danger:hover{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d62c1a;background-image:none;border-color:#cd2a19}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#b62516;border-color:#921e12}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e74c3c;border-color:#e74c3c}.btn-danger .badge{color:#e74c3c;background-color:#ffffff}.btn-link{font-weight:400;color:#18bc9c;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#18bc9c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#b4bcc2;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition-property:height, visibility;transition-duration:0.35s;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:15px;text-align:left;list-style:none;background-color:#ffffff;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,0.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#7b8a8b;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#ffffff;text-decoration:none;background-color:#2c3e50}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;background-color:#2c3e50;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#b4bcc2}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#b4bcc2;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:66px;line-height:66px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:35px;line-height:35px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 15px;font-size:15px;font-weight:400;line-height:1;color:#2c3e50;text-align:center;background-color:#ecf0f1;border:1px solid #dce4ec;border-radius:4px}.input-group-addon.input-sm{padding:6px 9px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:18px 27px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#ecf0f1}.nav>li.disabled>a{color:#b4bcc2}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#b4bcc2;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#ecf0f1;border-color:#18bc9c}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ecf0f1}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#ecf0f1 #ecf0f1 #ecf0f1}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#2c3e50;cursor:default;background-color:#ffffff;border:1px solid #ecf0f1;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ecf0f1}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ecf0f1;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2c3e50}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ecf0f1}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ecf0f1;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:60px;padding:19.5px 15px;font-size:19px;line-height:21px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}}.navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:7.5px;margin-bottom:7.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7.5px;margin-bottom:7.5px}.navbar-btn.btn-sm{margin-top:12.5px;margin-bottom:12.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#2c3e50;border-color:transparent}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#18bc9c;background-color:transparent}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#18bc9c;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1a242f}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#ffffff;background-color:#1a242f}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#18bc9c;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1a242f}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#1a242f}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#1a242f}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#18bc9c}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#18bc9c}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#18bc9c;border-color:transparent}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#2c3e50;background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#2c3e50;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#15a589}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#ffffff;background-color:#15a589}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#2c3e50;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#15a589}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#128f76}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#128f76}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#149c82}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#2c3e50}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#2c3e50}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#ecf0f1;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#cccccc;content:"/\00a0"}.breadcrumb>.active{color:#95a5a6}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 15px;margin-left:-1px;line-height:1.42857143;color:#ffffff;text-decoration:none;background-color:#18bc9c;border:1px solid transparent}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ffffff;background-color:#0f7864;border-color:transparent}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;cursor:default;background-color:#0f7864;border-color:transparent}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#ecf0f1;cursor:not-allowed;background-color:#3be6c4;border-color:transparent}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 27px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:6px 9px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:21px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#18bc9c;border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#0f7864}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#ffffff;cursor:not-allowed;background-color:#18bc9c}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#95a5a6}.label-default[href]:hover,.label-default[href]:focus{background-color:#798d8f}.label-primary{background-color:#2c3e50}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a242f}.label-success{background-color:#18bc9c}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76}.label-info{background-color:#3498db}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb}.label-warning{background-color:#f39c12}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a}.label-danger{background-color:#e74c3c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#2c3e50;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2c3e50;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#ecf0f1}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cfd9db}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #ecf0f1;border-radius:4px;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#18bc9c}.thumbnail .caption{padding:9px;color:#2c3e50}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#ffffff;background-color:#18bc9c;border-color:#18bc9c}.alert-success hr{border-top-color:#15a589}.alert-success .alert-link{color:#e6e6e6}.alert-info{color:#ffffff;background-color:#3498db;border-color:#3498db}.alert-info hr{border-top-color:#258cd1}.alert-info .alert-link{color:#e6e6e6}.alert-warning{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.alert-warning hr{border-top-color:#e08e0b}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.alert-danger hr{border-top-color:#e43725}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:21px;margin-bottom:21px;overflow:hidden;background-color:#ecf0f1;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#2c3e50;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);transition:width 0.6s ease}.progress-striped .progress-bar,.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:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#18bc9c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#3498db}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#e74c3c}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #ecf0f1}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#b4bcc2;cursor:not-allowed;background-color:#ecf0f1}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#b4bcc2}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2c3e50;border-color:#2c3e50}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#8aa4be}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{color:#555555;text-decoration:none;background-color:#ecf0f1}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#ffffff;background-color:#18bc9c}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#15a589}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#3498db}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#258cd1}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#f39c12}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#e08e0b}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#e74c3c}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e43725}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#ecf0f1;border-top:1px solid #ecf0f1;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ecf0f1}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ecf0f1}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ecf0f1}.panel-default{border-color:#ecf0f1}.panel-default>.panel-heading{color:#2c3e50;background-color:#ecf0f1;border-color:#ecf0f1}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ecf0f1}.panel-default>.panel-heading .badge{color:#ecf0f1;background-color:#2c3e50}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ecf0f1}.panel-primary{border-color:#2c3e50}.panel-primary>.panel-heading{color:#ffffff;background-color:#2c3e50;border-color:#2c3e50}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2c3e50}.panel-primary>.panel-heading .badge{color:#2c3e50;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2c3e50}.panel-success{border-color:#18bc9c}.panel-success>.panel-heading{color:#ffffff;background-color:#18bc9c;border-color:#18bc9c}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#18bc9c}.panel-success>.panel-heading .badge{color:#18bc9c;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#18bc9c}.panel-info{border-color:#3498db}.panel-info>.panel-heading{color:#ffffff;background-color:#3498db;border-color:#3498db}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3498db}.panel-info>.panel-heading .badge{color:#3498db;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3498db}.panel-warning{border-color:#f39c12}.panel-warning>.panel-heading{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f39c12}.panel-warning>.panel-heading .badge{color:#f39c12;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#e74c3c}.panel-danger>.panel-heading{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e74c3c}.panel-danger>.panel-heading .badge{color:#e74c3c;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e74c3c}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#ecf0f1;border:1px solid transparent;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:none;filter:alpha(opacity=20);opacity:0.2}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:0.5}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);transform:translate(0, -25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;background-clip:padding-box;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,0.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:0.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:13px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:0.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:15px;background-color:#ffffff;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#ffffff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#ffffff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#ffffff}.popover-title{padding:8px 14px;margin:0;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:0.5}.carousel-control.left{background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#ffffff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:0.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #ffffff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#ffffff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border-width:0}.navbar-default .badge{background-color:#fff;color:#2c3e50}.navbar-inverse .badge{background-color:#fff;color:#18bc9c}.navbar-brand{line-height:1}.btn{border-width:2px}.btn:active{box-shadow:none}.btn-group.open .dropdown-toggle{box-shadow:none}.text-primary,.text-primary:hover{color:#2c3e50}.text-success,.text-success:hover{color:#18bc9c}.text-danger,.text-danger:hover{color:#e74c3c}.text-warning,.text-warning:hover{color:#f39c12}.text-info,.text-info:hover{color:#3498db}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success>th>a,.table .success>th>a,table .warning>th>a,.table .warning>th>a,table .danger>th>a,.table .danger>th>a,table .info>th>a,.table .info>th>a,table .success>td>a,.table .success>td>a,table .warning>td>a,.table .warning>td>a,table .danger>td>a,.table .danger>td>a,table .info>td>a,.table .info>td>a,table .success>a,.table .success>a,table .warning>a,.table .warning>a,table .danger>a,.table .danger>a,table .info>a,.table .info>a{color:#fff}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border:none}table-bordered>thead>tr>th,.table-bordered>thead>tr>th,table-bordered>tbody>tr>th,.table-bordered>tbody>tr>th,table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>th,table-bordered>thead>tr>td,.table-bordered>thead>tr>td,table-bordered>tbody>tr>td,.table-bordered>tbody>tr>td,table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ecf0f1}.form-control,input{border-width:2px;box-shadow:none}.form-control:focus,input:focus{box-shadow:none}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f39c12}.has-warning .form-control,.has-warning .form-control:focus{border:2px solid #f39c12}.has-warning .input-group-addon{border-color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#e74c3c}.has-error .form-control,.has-error .form-control:focus{border:2px solid #e74c3c}.has-error .input-group-addon{border-color:#e74c3c}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#18bc9c}.has-success .form-control,.has-success .form-control:focus{border:2px solid #18bc9c}.has-success .input-group-addon{border-color:#18bc9c}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.pager a,.pager a:hover{color:#fff}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{background-color:#3be6c4}.close{color:#fff;text-decoration:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}.alert .alert-link{color:#fff;text-decoration:underline}.progress{height:10px;box-shadow:none}.progress .progress-bar{font-size:10px;line-height:10px}.well{box-shadow:none}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#ecf0f1}a.list-group-item-success.active{background-color:#18bc9c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#15a589}a.list-group-item-warning.active{background-color:#f39c12}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#e08e0b}a.list-group-item-danger.active{background-color:#e74c3c}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e43725}.panel-default .close{color:#2c3e50}.modal .close{color:#2c3e50}.popover{color:#2c3e50} + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{color:#000 !important;text-shadow:none !important;background:transparent !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:"Glyphicons Halflings";src:url("../fonts/glyphicons-halflings-regular.eot");src:url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("../fonts/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{box-sizing:border-box}*:before,*:after{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#2c3e50;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#18bc9c;text-decoration:none}a:hover,a:focus{color:#18bc9c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #ecf0f1;border-radius:4px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #ecf0f1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#b4bcc2}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{padding:.2em;background-color:#f39c12}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#b4bcc2}.text-primary{color:#2c3e50}a.text-primary:hover,a.text-primary:focus{color:#1a242f}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2c3e50}a.bg-primary:hover,a.bg-primary:focus{background-color:#1a242f}.bg-success{background-color:#18bc9c}a.bg-success:hover,a.bg-success:focus{background-color:#128f76}.bg-info{background-color:#3498db}a.bg-info:hover,a.bg-info:focus{background-color:#217dbb}.bg-warning{background-color:#f39c12}a.bg-warning:hover,a.bg-warning:focus{background-color:#c87f0a}.bg-danger{background-color:#e74c3c}a.bg-danger:hover,a.bg-danger:focus{background-color:#d62c1a}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid transparent}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #ecf0f1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#b4bcc2}blockquote footer:before,blockquote small:before,blockquote .small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #ecf0f1;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:""}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:"\00A0 \2014"}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;color:#7b8a8b;word-break:break-all;word-wrap:break-word;background-color:#ecf0f1;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*="col-"]{padding-right:0;padding-left:0}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}table col[class*="col-"]{position:static;display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#b4bcc2;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ecf0f1}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ecf0f1}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ecf0f1}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ecf0f1}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ecf0f1}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#ecf0f1}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#ecf0f1}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#dde4e6}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#18bc9c}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#15a589}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#3498db}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#258cd1}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f39c12}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#e08e0b}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#e74c3c}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e43725}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ecf0f1}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#2c3e50;border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type="search"]{box-sizing:border-box;-webkit-appearance:none;appearance:none}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#2c3e50}.form-control{display:block;width:100%;height:45px;padding:10px 15px;font-size:15px;line-height:1.42857143;color:#2c3e50;background-color:#ffffff;background-image:none;border:1px solid #dce4ec;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#2c3e50;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(44,62,80,0.6)}.form-control::-moz-placeholder{color:#acb6c0;opacity:1}.form-control:-ms-input-placeholder{color:#acb6c0}.form-control::-webkit-input-placeholder{color:#acb6c0}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#ecf0f1;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:45px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:35px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:66px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:36px;padding-top:11px;padding-bottom:11px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:35px;line-height:35px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:35px;line-height:35px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:35px;min-height:34px;padding:7px 9px;font-size:13px;line-height:1.5}.input-lg{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-lg{height:66px;line-height:66px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:66px;line-height:66px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:66px;min-height:40px;padding:19px 27px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:56.25px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:45px;height:45px;line-height:45px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:66px;height:66px;line-height:66px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:35px;height:35px;line-height:35px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;background-color:#18bc9c;border-color:#ffffff}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;background-color:#f39c12;border-color:#ffffff}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;background-color:#e74c3c;border-color:#ffffff}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#597ea2}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:11px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:11px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:19px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:7px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:10px 15px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:0.65;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#95a5a6;border-color:#95a5a6}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#798d8f;border-color:#566566}.btn-default:hover{color:#ffffff;background-color:#798d8f;border-color:#74898a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#798d8f;background-image:none;border-color:#74898a}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#687b7c;border-color:#566566}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#95a5a6;border-color:#95a5a6}.btn-default .badge{color:#95a5a6;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2c3e50;border-color:#2c3e50}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#1a242f;border-color:#000000}.btn-primary:hover{color:#ffffff;background-color:#1a242f;border-color:#161f29}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1a242f;background-image:none;border-color:#161f29}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#0d1318;border-color:#000000}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2c3e50;border-color:#2c3e50}.btn-primary .badge{color:#2c3e50;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#18bc9c;border-color:#18bc9c}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#128f76;border-color:#0a4b3e}.btn-success:hover{color:#ffffff;background-color:#128f76;border-color:#11866f}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#128f76;background-image:none;border-color:#11866f}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#0e6f5c;border-color:#0a4b3e}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#18bc9c;border-color:#18bc9c}.btn-success .badge{color:#18bc9c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#3498db;border-color:#3498db}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#217dbb;border-color:#16527a}.btn-info:hover{color:#ffffff;background-color:#217dbb;border-color:#2077b2}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#217dbb;background-image:none;border-color:#2077b2}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#1c699d;border-color:#16527a}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#3498db;border-color:#3498db}.btn-info .badge{color:#3498db;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#c87f0a;border-color:#7f5006}.btn-warning:hover{color:#ffffff;background-color:#c87f0a;border-color:#be780a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#c87f0a;background-image:none;border-color:#be780a}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a66908;border-color:#7f5006}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f39c12;border-color:#f39c12}.btn-warning .badge{color:#f39c12;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#d62c1a;border-color:#921e12}.btn-danger:hover{color:#ffffff;background-color:#d62c1a;border-color:#cd2a19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d62c1a;background-image:none;border-color:#cd2a19}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#b62516;border-color:#921e12}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e74c3c;border-color:#e74c3c}.btn-danger .badge{color:#e74c3c;background-color:#ffffff}.btn-link{font-weight:400;color:#18bc9c;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#18bc9c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#b4bcc2;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition-property:height, visibility;transition-duration:0.35s;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:15px;text-align:left;list-style:none;background-color:#ffffff;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;box-shadow:0 6px 12px rgba(0,0,0,0.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#7b8a8b;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#ffffff;text-decoration:none;background-color:#2c3e50}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;background-color:#2c3e50;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#b4bcc2}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#b4bcc2;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:66px;padding:18px 27px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:66px;line-height:66px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:35px;padding:6px 9px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:35px;line-height:35px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 15px;font-size:15px;font-weight:400;line-height:1;color:#2c3e50;text-align:center;background-color:#ecf0f1;border:1px solid #dce4ec;border-radius:4px}.input-group-addon.input-sm{padding:6px 9px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:18px 27px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#ecf0f1}.nav>li.disabled>a{color:#b4bcc2}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#b4bcc2;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#ecf0f1;border-color:#18bc9c}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ecf0f1}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#ecf0f1 #ecf0f1 #ecf0f1}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#2c3e50;cursor:default;background-color:#ffffff;border:1px solid #ecf0f1;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ecf0f1}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ecf0f1;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2c3e50}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ecf0f1}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ecf0f1;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:60px;padding:19.5px 15px;font-size:19px;line-height:21px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}}.navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:7.5px;margin-bottom:7.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7.5px;margin-bottom:7.5px}.navbar-btn.btn-sm{margin-top:12.5px;margin-bottom:12.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#2c3e50;border-color:transparent}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#18bc9c;background-color:transparent}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#18bc9c;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1a242f}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#ffffff;background-color:#1a242f}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#18bc9c;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1a242f}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#1a242f}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#1a242f}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#18bc9c}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#18bc9c}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#18bc9c;border-color:transparent}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#2c3e50;background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#2c3e50;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#15a589}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#ffffff;background-color:#15a589}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#2c3e50;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#15a589}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#128f76}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#128f76}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#149c82}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#2c3e50}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#2c3e50}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#ecf0f1;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#cccccc;content:"/\00a0"}.breadcrumb>.active{color:#95a5a6}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 15px;margin-left:-1px;line-height:1.42857143;color:#ffffff;text-decoration:none;background-color:#18bc9c;border:1px solid transparent}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ffffff;background-color:#0f7864;border-color:transparent}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;cursor:default;background-color:#0f7864;border-color:transparent}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#ecf0f1;cursor:not-allowed;background-color:#3be6c4;border-color:transparent}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 27px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:6px 9px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:21px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#18bc9c;border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#0f7864}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#ffffff;cursor:not-allowed;background-color:#18bc9c}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#95a5a6}.label-default[href]:hover,.label-default[href]:focus{background-color:#798d8f}.label-primary{background-color:#2c3e50}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a242f}.label-success{background-color:#18bc9c}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76}.label-info{background-color:#3498db}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb}.label-warning{background-color:#f39c12}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a}.label-danger{background-color:#e74c3c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#2c3e50;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2c3e50;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#ecf0f1}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cfd9db}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #ecf0f1;border-radius:4px;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#18bc9c}.thumbnail .caption{padding:9px;color:#2c3e50}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#ffffff;background-color:#18bc9c;border-color:#18bc9c}.alert-success hr{border-top-color:#15a589}.alert-success .alert-link{color:#e6e6e6}.alert-info{color:#ffffff;background-color:#3498db;border-color:#3498db}.alert-info hr{border-top-color:#258cd1}.alert-info .alert-link{color:#e6e6e6}.alert-warning{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.alert-warning hr{border-top-color:#e08e0b}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.alert-danger hr{border-top-color:#e43725}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:21px;margin-bottom:21px;overflow:hidden;background-color:#ecf0f1;border-radius:4px;box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#2c3e50;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);transition:width 0.6s ease}.progress-striped .progress-bar,.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:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#18bc9c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#3498db}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f39c12}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#e74c3c}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #ecf0f1}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#b4bcc2;cursor:not-allowed;background-color:#ecf0f1}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#b4bcc2}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2c3e50;border-color:#2c3e50}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#8aa4be}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{color:#555555;text-decoration:none;background-color:#ecf0f1}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#ffffff;background-color:#18bc9c}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#15a589}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#3498db}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#258cd1}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#f39c12}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#e08e0b}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#e74c3c}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e43725}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#ecf0f1;border-top:1px solid #ecf0f1;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ecf0f1}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ecf0f1}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ecf0f1}.panel-default{border-color:#ecf0f1}.panel-default>.panel-heading{color:#2c3e50;background-color:#ecf0f1;border-color:#ecf0f1}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ecf0f1}.panel-default>.panel-heading .badge{color:#ecf0f1;background-color:#2c3e50}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ecf0f1}.panel-primary{border-color:#2c3e50}.panel-primary>.panel-heading{color:#ffffff;background-color:#2c3e50;border-color:#2c3e50}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2c3e50}.panel-primary>.panel-heading .badge{color:#2c3e50;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2c3e50}.panel-success{border-color:#18bc9c}.panel-success>.panel-heading{color:#ffffff;background-color:#18bc9c;border-color:#18bc9c}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#18bc9c}.panel-success>.panel-heading .badge{color:#18bc9c;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#18bc9c}.panel-info{border-color:#3498db}.panel-info>.panel-heading{color:#ffffff;background-color:#3498db;border-color:#3498db}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3498db}.panel-info>.panel-heading .badge{color:#3498db;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3498db}.panel-warning{border-color:#f39c12}.panel-warning>.panel-heading{color:#ffffff;background-color:#f39c12;border-color:#f39c12}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f39c12}.panel-warning>.panel-heading .badge{color:#f39c12;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#e74c3c}.panel-danger>.panel-heading{color:#ffffff;background-color:#e74c3c;border-color:#e74c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#e74c3c}.panel-danger>.panel-heading .badge{color:#e74c3c;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#e74c3c}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#ecf0f1;border:1px solid transparent;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:none;filter:alpha(opacity=20);opacity:0.2}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:0.5}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);transform:translate(0, -25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;background-clip:padding-box;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;box-shadow:0 3px 9px rgba(0,0,0,0.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:0.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:13px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:0.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:15px;background-color:#ffffff;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#ffffff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#ffffff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#ffffff}.popover-title{padding:8px 14px;margin:0;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:0.5}.carousel-control.left{background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#ffffff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:0.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #ffffff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#ffffff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border-width:0}.navbar-default .badge{background-color:#fff;color:#2c3e50}.navbar-inverse .badge{background-color:#fff;color:#18bc9c}.navbar-brand{line-height:1}.btn{border-width:2px}.btn:active{box-shadow:none}.btn-group.open .dropdown-toggle{box-shadow:none}.text-primary,.text-primary:hover{color:#2c3e50}.text-success,.text-success:hover{color:#03800d}.text-danger,.text-danger:hover{color:#e74c3c}.text-warning,.text-warning:hover{color:#f39c12}.text-info,.text-info:hover{color:#3498db}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success>th>a,.table .success>th>a,table .warning>th>a,.table .warning>th>a,table .danger>th>a,.table .danger>th>a,table .info>th>a,.table .info>th>a,table .success>td>a,.table .success>td>a,table .warning>td>a,.table .warning>td>a,table .danger>td>a,.table .danger>td>a,table .info>td>a,.table .info>td>a,table .success>a,.table .success>a,table .warning>a,.table .warning>a,table .danger>a,.table .danger>a,table .info>a,.table .info>a{color:#fff}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border:none}table-bordered>thead>tr>th,.table-bordered>thead>tr>th,table-bordered>tbody>tr>th,.table-bordered>tbody>tr>th,table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>th,table-bordered>thead>tr>td,.table-bordered>thead>tr>td,table-bordered>tbody>tr>td,.table-bordered>tbody>tr>td,table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ecf0f1}.form-control,input{border-width:2px;box-shadow:none}.form-control:focus,input:focus{box-shadow:none}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f39c12}.has-warning .form-control,.has-warning .form-control:focus{border:2px solid #f39c12}.has-warning .input-group-addon{border-color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#e74c3c}.has-error .form-control,.has-error .form-control:focus{border:2px solid #e74c3c}.has-error .input-group-addon{border-color:#e74c3c}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#18bc9c}.has-success .form-control,.has-success .form-control:focus{border:2px solid #18bc9c}.has-success .input-group-addon{border-color:#18bc9c}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.pager a,.pager a:hover{color:#fff}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{background-color:#3be6c4}.close{color:#fff;text-decoration:none;opacity:0.4}.close:hover,.close:focus{color:#fff;opacity:1}.alert .alert-link{color:#fff;text-decoration:underline}.progress{height:10px;box-shadow:none}.progress .progress-bar{font-size:10px;line-height:10px}.well{box-shadow:none}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border-color:#ecf0f1}a.list-group-item-success.active{background-color:#18bc9c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#15a589}a.list-group-item-warning.active{background-color:#f39c12}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#e08e0b}a.list-group-item-danger.active{background-color:#e74c3c}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e43725}.panel-default .close{color:#2c3e50}.modal .close{color:#2c3e50}.popover{color:#2c3e50} diff --git a/assets/css/journal.min.css b/assets/css/journal.min.css index de6209cd7..3ff4af2ed 100644 --- a/assets/css/journal.min.css +++ b/assets/css/journal.min.css @@ -8,4 +8,4 @@ * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:Georgia,"Times New Roman",Times,serif;font-size:15px;line-height:1.42857143;color:#777777;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#eb6864;text-decoration:none}a:hover,a:focus{color:#e22620;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700;line-height:1.1;color:#000000}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#eb6864}a.text-primary:hover,a.text-primary:focus{color:#e53c37}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover,a.text-danger:focus{color:#953b39}.bg-primary{color:#fff;background-color:#eb6864}a.bg-primary:hover,a.bg-primary:focus{background-color:#e53c37}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#777777;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:15px;line-height:1.42857143;color:#777777}.form-control{display:block;width:100%;height:39px;padding:8px 12px;font-size:15px;line-height:1.42857143;color:#777777;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:39px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:56px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:31px;line-height:31px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:31px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5}.input-lg{height:56px;padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-lg{height:56px;line-height:56px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:56px;padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:56px;line-height:56px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:56px;min-height:40px;padding:15px 16px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:48.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:39px;height:39px;line-height:39px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:56px;height:56px;line-height:56px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#b7b7b7}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#999999;border-color:#999999}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#808080;border-color:#595959}.btn-default:hover{color:#ffffff;background-color:#808080;border-color:#7a7a7a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#808080;border-color:#7a7a7a}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#6e6e6e;border-color:#595959}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#999999;border-color:#999999}.btn-default .badge{color:#999999;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#eb6864;border-color:#eb6864}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#e53c37;border-color:#b81c18}.btn-primary:hover{color:#ffffff;background-color:#e53c37;border-color:#e4332e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#e53c37;border-color:#e4332e}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#dc221c;border-color:#b81c18}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#eb6864;border-color:#eb6864}.btn-primary .badge{color:#eb6864;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#22b24c;border-color:#22b24c}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#1a873a;border-color:#0e471e}.btn-success:hover{color:#ffffff;background-color:#1a873a;border-color:#187f36}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#1a873a;border-color:#187f36}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#14692d;border-color:#0e471e}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#22b24c;border-color:#22b24c}.btn-success .badge{color:#22b24c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#336699;border-color:#336699}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#264c73;border-color:#132639}.btn-info:hover{color:#ffffff;background-color:#264c73;border-color:#24476b}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#264c73;border-color:#24476b}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#1d3b58;border-color:#132639}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#336699;border-color:#336699}.btn-info .badge{color:#336699;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f5e625;border-color:#f5e625}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ddce0a;border-color:#948a07}.btn-warning:hover{color:#ffffff;background-color:#ddce0a;border-color:#d3c50a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ddce0a;border-color:#d3c50a}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#bbae09;border-color:#948a07}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f5e625;border-color:#f5e625}.btn-warning .badge{color:#f5e625;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#f57a00;border-color:#f57a00}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c26100;border-color:#763b00}.btn-danger:hover{color:#ffffff;background-color:#c26100;border-color:#b85c00}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c26100;border-color:#b85c00}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#9e4f00;border-color:#763b00}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#f57a00;border-color:#f57a00}.btn-danger .badge{color:#f57a00;background-color:#ffffff}.btn-link{color:#eb6864;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#e22620;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#eb6864}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#eb6864}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:56px;padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:56px;line-height:56px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:15px;font-weight:normal;line-height:1;color:#777777;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#eb6864}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#777777;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#eb6864}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:19.5px 15px;font-size:19px;line-height:21px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:10.5px;margin-bottom:10.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:10.5px;margin-bottom:10.5px}.navbar-btn.btn-sm{margin-top:14.5px;margin-bottom:14.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:#eeeeee}.navbar-default .navbar-brand{color:#000000}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-text{color:#000000}.navbar-default .navbar-nav>li>a{color:#000000}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#dddddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#eeeeee}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#eeeeee;color:#000000}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#000000}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#000000}.navbar-default .navbar-link:hover{color:#000000}.navbar-default .btn-link{color:#000000}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#000000}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#eb6864;border-color:#e53c37}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#e53c37}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#e53c37}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#e74944}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#e74b47;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#e53c37}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#e53c37}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#eb6864;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#e22620;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#eb6864}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#e53c37}.label-success{background-color:#22b24c}.label-success[href]:hover,.label-success[href]:focus{background-color:#1a873a}.label-info{background-color:#336699}.label-info[href]:hover,.label-info[href]:focus{background-color:#264c73}.label-warning{background-color:#f5e625}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ddce0a}.label-danger{background-color:#f57a00}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c26100}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#eb6864;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#eb6864;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#eb6864}.thumbnail .caption{padding:9px;color:#777777}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#eb6864;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#22b24c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#336699}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f5e625}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#f57a00}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#eb6864;border-color:#eb6864}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#ffffff}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#777777;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#777777}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#eb6864}.panel-primary>.panel-heading{color:#ffffff;background-color:#eb6864;border-color:#eb6864}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#eb6864}.panel-primary>.panel-heading .badge{color:#eb6864;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#eb6864}.panel-success{border-color:#22b24c}.panel-success>.panel-heading{color:#468847;background-color:#22b24c;border-color:#22b24c}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#22b24c}.panel-success>.panel-heading .badge{color:#22b24c;background-color:#468847}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#22b24c}.panel-info{border-color:#336699}.panel-info>.panel-heading{color:#3a87ad;background-color:#336699;border-color:#336699}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#336699}.panel-info>.panel-heading .badge{color:#336699;background-color:#3a87ad}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#336699}.panel-warning{border-color:#f5e625}.panel-warning>.panel-heading{color:#c09853;background-color:#f5e625;border-color:#f5e625}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5e625}.panel-warning>.panel-heading .badge{color:#f5e625;background-color:#c09853}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5e625}.panel-danger{border-color:#f57a00}.panel-danger>.panel-heading{color:#b94a48;background-color:#f57a00;border-color:#f57a00}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f57a00}.panel-danger>.panel-heading .badge{color:#f57a00;background-color:#b94a48}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f57a00}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:Georgia,"Times New Roman",Times,serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:Georgia,"Times New Roman",Times,serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{font-size:18px;font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700}.navbar-default .badge{background-color:#000;color:#fff}.navbar-inverse .badge{background-color:#fff;color:#eb6864}.navbar-brand{font-size:inherit;font-weight:700;text-transform:uppercase}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f57a00}.has-warning .form-control,.has-warning .form-control:focus{border-color:#f57a00}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#eb6864}.has-error .form-control,.has-error .form-control:focus{border-color:#eb6864}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#22b24c}.has-success .form-control,.has-success .form-control:focus{border-color:#22b24c}.badge{padding-bottom:4px;vertical-align:3px;font-size:10px}.jumbotron h1,.jumbotron h2,.jumbotron h3,.jumbotron h4,.jumbotron h5,.jumbotron h6{font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700;color:#000}.panel-primary .panel-title,.panel-success .panel-title,.panel-warning .panel-title,.panel-danger .panel-title,.panel-info .panel-title{color:#fff} \ No newline at end of file + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:Georgia,"Times New Roman",Times,serif;font-size:15px;line-height:1.42857143;color:#777777;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#eb6864;text-decoration:none}a:hover,a:focus{color:#e22620;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700;line-height:1.1;color:#000000}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#a4211d}a.text-primary:hover,a.text-primary:focus{color:#e53c37}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover,a.text-danger:focus{color:#953b39}.bg-primary{color:#fff;background-color:#eb6864}a.bg-primary:hover,a.bg-primary:focus{background-color:#e53c37}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#777777;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:15px;line-height:1.42857143;color:#777777}.form-control{display:block;width:100%;height:39px;padding:8px 12px;font-size:15px;line-height:1.42857143;color:#777777;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:39px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:56px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:31px;line-height:31px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:31px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5}.input-lg{height:56px;padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-lg{height:56px;line-height:56px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:56px;padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:56px;line-height:56px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:56px;min-height:40px;padding:15px 16px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:48.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:39px;height:39px;line-height:39px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:56px;height:56px;line-height:56px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#b7b7b7}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:15px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#999999;border-color:#999999}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#808080;border-color:#595959}.btn-default:hover{color:#ffffff;background-color:#808080;border-color:#7a7a7a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#808080;border-color:#7a7a7a}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#6e6e6e;border-color:#595959}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#999999;border-color:#999999}.btn-default .badge{color:#999999;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#eb6864;border-color:#eb6864}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#e53c37;border-color:#b81c18}.btn-primary:hover{color:#ffffff;background-color:#e53c37;border-color:#e4332e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#e53c37;border-color:#e4332e}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#dc221c;border-color:#b81c18}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#eb6864;border-color:#eb6864}.btn-primary .badge{color:#eb6864;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#22b24c;border-color:#22b24c}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#1a873a;border-color:#0e471e}.btn-success:hover{color:#ffffff;background-color:#1a873a;border-color:#187f36}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#1a873a;border-color:#187f36}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#14692d;border-color:#0e471e}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#22b24c;border-color:#22b24c}.btn-success .badge{color:#22b24c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#336699;border-color:#336699}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#264c73;border-color:#132639}.btn-info:hover{color:#ffffff;background-color:#264c73;border-color:#24476b}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#264c73;border-color:#24476b}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#1d3b58;border-color:#132639}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#336699;border-color:#336699}.btn-info .badge{color:#336699;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f5e625;border-color:#f5e625}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ddce0a;border-color:#948a07}.btn-warning:hover{color:#ffffff;background-color:#ddce0a;border-color:#d3c50a}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ddce0a;border-color:#d3c50a}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#bbae09;border-color:#948a07}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f5e625;border-color:#f5e625}.btn-warning .badge{color:#f5e625;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#f57a00;border-color:#f57a00}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c26100;border-color:#763b00}.btn-danger:hover{color:#ffffff;background-color:#c26100;border-color:#b85c00}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c26100;border-color:#b85c00}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#9e4f00;border-color:#763b00}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#f57a00;border-color:#f57a00}.btn-danger .badge{color:#f57a00;background-color:#ffffff}.btn-link{color:#eb6864;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#e22620;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#eb6864}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#eb6864}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:56px;padding:14px 16px;font-size:19px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:56px;line-height:56px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:15px;font-weight:normal;line-height:1;color:#777777;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:19px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#eb6864}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#777777;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#eb6864}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:19.5px 15px;font-size:19px;line-height:21px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:9.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:19.5px;padding-bottom:19.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:10.5px;margin-bottom:10.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:10.5px;margin-bottom:10.5px}.navbar-btn.btn-sm{margin-top:14.5px;margin-bottom:14.5px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:19.5px;margin-bottom:19.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:#eeeeee}.navbar-default .navbar-brand{color:#000000}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-text{color:#000000}.navbar-default .navbar-nav>li>a{color:#000000}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#dddddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#eeeeee}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#eeeeee;color:#000000}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#000000}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#000000;background-color:#eeeeee}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#000000}.navbar-default .navbar-link:hover{color:#000000}.navbar-default .btn-link{color:#000000}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#000000}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#eb6864;border-color:#e53c37}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#e53c37}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#e53c37}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#e74944}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#e74b47;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#e53c37}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#e53c37}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#e74b47}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#eb6864;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#e22620;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#eb6864}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#e53c37}.label-success{background-color:#22b24c}.label-success[href]:hover,.label-success[href]:focus{background-color:#1a873a}.label-info{background-color:#336699}.label-info[href]:hover,.label-info[href]:focus{background-color:#264c73}.label-warning{background-color:#f5e625}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ddce0a}.label-danger{background-color:#f57a00}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c26100}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#eb6864;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#eb6864;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#eb6864}.thumbnail .caption{padding:9px;color:#777777}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#eb6864;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#22b24c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#336699}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f5e625}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#f57a00}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#eb6864;border-color:#eb6864}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#ffffff}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#777777;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#777777}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#eb6864}.panel-primary>.panel-heading{color:#ffffff;background-color:#eb6864;border-color:#eb6864}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#eb6864}.panel-primary>.panel-heading .badge{color:#eb6864;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#eb6864}.panel-success{border-color:#22b24c}.panel-success>.panel-heading{color:#468847;background-color:#22b24c;border-color:#22b24c}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#22b24c}.panel-success>.panel-heading .badge{color:#22b24c;background-color:#468847}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#22b24c}.panel-info{border-color:#336699}.panel-info>.panel-heading{color:#3a87ad;background-color:#336699;border-color:#336699}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#336699}.panel-info>.panel-heading .badge{color:#336699;background-color:#3a87ad}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#336699}.panel-warning{border-color:#f5e625}.panel-warning>.panel-heading{color:#c09853;background-color:#f5e625;border-color:#f5e625}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5e625}.panel-warning>.panel-heading .badge{color:#f5e625;background-color:#c09853}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5e625}.panel-danger{border-color:#f57a00}.panel-danger>.panel-heading{color:#b94a48;background-color:#f57a00;border-color:#f57a00}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f57a00}.panel-danger>.panel-heading .badge{color:#f57a00;background-color:#b94a48}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f57a00}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:Georgia,"Times New Roman",Times,serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:Georgia,"Times New Roman",Times,serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{font-size:18px;font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700}.navbar-default .badge{background-color:#000;color:#fff}.navbar-inverse .badge{background-color:#fff;color:#eb6864}.navbar-brand{font-size:inherit;font-weight:700;text-transform:uppercase}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f57a00}.has-warning .form-control,.has-warning .form-control:focus{border-color:#f57a00}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#eb6864}.has-error .form-control,.has-error .form-control:focus{border-color:#eb6864}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#22b24c}.has-success .form-control,.has-success .form-control:focus{border-color:#22b24c}.badge{padding-bottom:4px;vertical-align:3px;font-size:10px}.jumbotron h1,.jumbotron h2,.jumbotron h3,.jumbotron h4,.jumbotron h5,.jumbotron h6{font-family:"News Cycle","Arial Narrow Bold",sans-serif;font-weight:700;color:#000}.panel-primary .panel-title,.panel-success .panel-title,.panel-warning .panel-title,.panel-danger .panel-title,.panel-info .panel-title{color:#fff} \ No newline at end of file diff --git a/assets/css/jquery.contextMenu.min.css b/assets/css/jquery.contextMenu.min.css new file mode 100644 index 000000000..6c45c063a --- /dev/null +++ b/assets/css/jquery.contextMenu.min.css @@ -0,0 +1,16 @@ +@charset "UTF-8";/*! + * jQuery contextMenu - Plugin for simple contextMenu handling + * + * Version: v2.9.2 + * + * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF) + * Web: http://swisnl.github.io/jQuery-contextMenu/ + * + * Copyright (c) 2011-2020 SWIS BV and contributors + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + * Date: 2020-05-13T13:55:37.023Z + */@-webkit-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@-o-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@font-face{font-family:context-menu-icons;font-style:normal;font-weight:400;src:url(font/context-menu-icons.eot?33lxn);src:url(font/context-menu-icons.eot?33lxn#iefix) format("embedded-opentype"),url(font/context-menu-icons.woff2?33lxn) format("woff2"),url(font/context-menu-icons.woff?33lxn) format("woff"),url(font/context-menu-icons.ttf?33lxn) format("truetype")}.context-menu-icon-add:before{content:"\EA01"}.context-menu-icon-copy:before{content:"\EA02"}.context-menu-icon-cut:before{content:"\EA03"}.context-menu-icon-delete:before{content:"\EA04"}.context-menu-icon-edit:before{content:"\EA05"}.context-menu-icon-loading:before{content:"\EA06"}.context-menu-icon-paste:before{content:"\EA07"}.context-menu-icon-quit:before{content:"\EA08"}.context-menu-icon::before{position:absolute;top:50%;left:0;width:2em;font-family:context-menu-icons;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon-loading:before{-webkit-animation:cm-spin 2s infinite;-o-animation:cm-spin 2s infinite;animation:cm-spin 2s infinite}.context-menu-icon.context-menu-icon--fa{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa::before{position:absolute;top:50%;left:0;width:2em;font-family:FontAwesome;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-icon--fa.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-icon--fa.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon--fa5{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa5 i,.context-menu-icon.context-menu-icon--fa5 svg{position:absolute;top:.3em;left:.5em;color:#2980b9}.context-menu-icon.context-menu-icon--fa5.context-menu-hover>i,.context-menu-icon.context-menu-icon--fa5.context-menu-hover>svg{color:#fff}.context-menu-icon.context-menu-icon--fa5.context-menu-disabled i,.context-menu-icon.context-menu-icon--fa5.context-menu-disabled svg{color:#bbb}.context-menu-list{position:absolute;display:inline-block;min-width:13em;max-width:26em;padding:.25em 0;margin:.3em;font-family:inherit;font-size:inherit;list-style-type:none;background:#fff;border:1px solid #bebebe;border-radius:.2em;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5)}.context-menu-item{position:relative;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:.2em 2em;color:#2f2f2f;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.context-menu-separator{padding:0;margin:.35em 0;border-bottom:1px solid #e6e6e6}.context-menu-item>label>input,.context-menu-item>label>textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.context-menu-item.context-menu-hover{color:#fff;cursor:pointer;background-color:#2980b9}.context-menu-item.context-menu-disabled{color:#bbb;cursor:default;background-color:#fff}.context-menu-input.context-menu-hover{color:#2f2f2f;cursor:default}.context-menu-submenu:after{position:absolute;top:50%;right:.5em;z-index:1;width:0;height:0;content:'';border-color:transparent transparent transparent #2f2f2f;border-style:solid;border-width:.25em 0 .25em .25em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.context-menu-item.context-menu-input{padding:.3em .6em}.context-menu-input>label>*{vertical-align:top}.context-menu-input>label>input[type=checkbox],.context-menu-input>label>input[type=radio]{position:relative;top:.12em;margin-right:.4em}.context-menu-input>label{margin:0}.context-menu-input>label,.context-menu-input>label>input[type=text],.context-menu-input>label>select,.context-menu-input>label>textarea{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.context-menu-input>label>textarea{height:7em}.context-menu-item>.context-menu-list{top:.3em;right:-.3em;display:none}.context-menu-item.context-menu-visible>.context-menu-list{display:block}.context-menu-accesskey{text-decoration:underline} +/*# sourceMappingURL=jquery.contextMenu.min.css.map */ diff --git a/assets/css/jquery.keypad.css b/assets/css/jquery.keypad.css new file mode 100644 index 000000000..fb76197ac --- /dev/null +++ b/assets/css/jquery.keypad.css @@ -0,0 +1,15 @@ +.keypad button { + margin: 1%; + width: 31%; + height: 23%; + background: #eee; + border: 2px solid black; + border-radius: 10px; + font-size: 3em; +} + +.keypad button.delete, +.keypad button.submit { + background: black; + color: white; +} \ No newline at end of file diff --git a/assets/css/paper.min.css b/assets/css/paper.min.css index e8d6228a2..c79381409 100644 --- a/assets/css/paper.min.css +++ b/assets/css/paper.min.css @@ -8,4 +8,4 @@ * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:1.846;color:#666666;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2196f3;text-decoration:none}a:hover,a:focus{color:#0a6ebd;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:3px}.img-thumbnail{padding:4px;line-height:1.846;background-color:#ffffff;border:1px solid #dddddd;border-radius:3px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:23px;margin-bottom:23px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:#444444}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#bbbbbb}h1,.h1,h2,.h2,h3,.h3{margin-top:23px;margin-bottom:11.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:11.5px;margin-bottom:11.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:56px}h2,.h2{font-size:45px}h3,.h3{font-size:34px}h4,.h4{font-size:24px}h5,.h5{font-size:20px}h6,.h6{font-size:14px}p{margin:0 0 11.5px}.lead{margin-bottom:23px;font-size:14px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}small,.small{font-size:92%}mark,.mark{background-color:#ffe0b2;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#bbbbbb}.text-primary{color:#2196f3}a.text-primary:hover,a.text-primary:focus{color:#0c7cd5}.text-success{color:#4caf50}a.text-success:hover,a.text-success:focus{color:#3d8b40}.text-info{color:#9c27b0}a.text-info:hover,a.text-info:focus{color:#771e86}.text-warning{color:#ff9800}a.text-warning:hover,a.text-warning:focus{color:#cc7a00}.text-danger{color:#e51c23}a.text-danger:hover,a.text-danger:focus{color:#b9151b}.bg-primary{color:#fff;background-color:#2196f3}a.bg-primary:hover,a.bg-primary:focus{background-color:#0c7cd5}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#e1bee7}a.bg-info:hover,a.bg-info:focus{background-color:#d099d9}.bg-warning{background-color:#ffe0b2}a.bg-warning:hover,a.bg-warning:focus{background-color:#ffcb7f}.bg-danger{background-color:#f9bdbb}a.bg-danger:hover,a.bg-danger:focus{background-color:#f5908c}.page-header{padding-bottom:10.5px;margin:46px 0 23px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:11.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:23px}dt,dd{line-height:1.846}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #bbbbbb}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:11.5px 23px;margin:0 0 23px;font-size:16.25px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.846;color:#bbbbbb}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:23px;font-style:normal;line-height:1.846}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:3px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:11px;margin:0 0 11.5px;font-size:12px;line-height:1.846;word-break:break-all;word-wrap:break-word;color:#212121;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:3px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#bbbbbb;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:23px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.846;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#e1bee7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#d8abe0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ffe0b2}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#ffd699}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f9bdbb}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#f7a6a4}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:17.25px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:23px;font-size:19.5px;line-height:inherit;color:#212121;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:13px;line-height:1.846;color:#666666}.form-control{display:block;width:100%;height:37px;padding:6px 16px;font-size:13px;line-height:1.846;color:#666666;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#bbbbbb;opacity:1}.form-control:-ms-input-placeholder{color:#bbbbbb}.form-control::-webkit-input-placeholder{color:#bbbbbb}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:transparent;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:37px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:45px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:23px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:35px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}select.input-lg{height:45px;line-height:45px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}.form-group-lg select.form-control{height:45px;line-height:45px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:45px;min-height:40px;padding:11px 16px;font-size:17px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:46.25px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:37px;height:37px;line-height:37px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:45px;height:45px;line-height:45px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#4caf50}.has-success .form-control{border-color:#4caf50;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#3d8b40;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #92cf94;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #92cf94}.has-success .input-group-addon{color:#4caf50;border-color:#4caf50;background-color:#dff0d8}.has-success .form-control-feedback{color:#4caf50}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ff9800}.has-warning .form-control{border-color:#ff9800;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#cc7a00;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ffc166;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ffc166}.has-warning .input-group-addon{color:#ff9800;border-color:#ff9800;background-color:#ffe0b2}.has-warning .form-control-feedback{color:#ff9800}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#e51c23}.has-error .form-control{border-color:#e51c23;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#b9151b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ef787c;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ef787c}.has-error .input-group-addon{color:#e51c23;border-color:#e51c23;background-color:#f9bdbb}.has-error .form-control-feedback{color:#e51c23}.has-feedback label~.form-control-feedback{top:28px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#a6a6a6}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:17px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 16px;font-size:13px;line-height:1.846;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#444444;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#444444;background-color:#ffffff;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#444444;background-color:#e6e6e6;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#444444;background-color:#e6e6e6;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#444444;background-color:#e6e6e6;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#444444;background-color:#d4d4d4;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#ffffff;border-color:transparent}.btn-default .badge{color:#ffffff;background-color:#444444}.btn-primary{color:#ffffff;background-color:#2196f3;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#0c7cd5;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#0c7cd5;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#0c7cd5;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#0a68b4;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2196f3;border-color:transparent}.btn-primary .badge{color:#2196f3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#4caf50;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#3d8b40;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#3d8b40;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#3d8b40;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#327334;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#4caf50;border-color:transparent}.btn-success .badge{color:#4caf50;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9c27b0;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#771e86;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#771e86;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#771e86;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#5d1769;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#9c27b0;border-color:transparent}.btn-info .badge{color:#9c27b0;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff9800;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#cc7a00;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#cc7a00;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#cc7a00;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a86400;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#ff9800;border-color:transparent}.btn-warning .badge{color:#ff9800;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e51c23;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#b9151b;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#b9151b;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#b9151b;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#991216;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e51c23;border-color:transparent}.btn-danger .badge{color:#e51c23;background-color:#ffffff}.btn-link{color:#2196f3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#0a6ebd;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#bbbbbb;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:13px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:3px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:10.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.846;color:#666666;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#141414;background-color:#eeeeee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2196f3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#bbbbbb}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.846;color:#bbbbbb;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 16px;font-size:13px;font-weight:normal;line-height:1;color:#666666;text-align:center;background-color:transparent;border:1px solid transparent;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:3px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#bbbbbb}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#bbbbbb;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#2196f3}.nav .nav-divider{height:1px;margin:10.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid transparent}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.846;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee transparent}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#666666;background-color:transparent;border:1px solid transparent;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid transparent}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2196f3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid transparent}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:64px;margin-bottom:23px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:3px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:20.5px 15px;font-size:17px;line-height:23px;height:64px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:15px;margin-bottom:15px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:10.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:23px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:23px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:20.5px;padding-bottom:20.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:13.5px;margin-bottom:13.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:13.5px;margin-bottom:13.5px}.navbar-btn.btn-sm{margin-top:17px;margin-bottom:17px}.navbar-btn.btn-xs{margin-top:21px;margin-bottom:21px}.navbar-text{margin-top:20.5px;margin-bottom:20.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:transparent}.navbar-default .navbar-brand{color:#666666}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#212121;background-color:transparent}.navbar-default .navbar-text{color:#bbbbbb}.navbar-default .navbar-nav>li>a{color:#666666}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#212121;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#212121;background-color:#eeeeee}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:transparent}.navbar-default .navbar-toggle .icon-bar{background-color:rgba(0,0,0,0.5)}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#eeeeee;color:#212121}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#666666}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#212121;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#212121;background-color:#eeeeee}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#666666}.navbar-default .navbar-link:hover{color:#212121}.navbar-default .btn-link{color:#666666}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#212121}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2196f3;border-color:transparent}.navbar-inverse .navbar-brand{color:#b2dbfb}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#bbbbbb}.navbar-inverse .navbar-nav>li>a{color:#b2dbfb}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#0c7cd5}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:transparent}.navbar-inverse .navbar-toggle .icon-bar{background-color:rgba(0,0,0,0.5)}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#0c84e4}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#0c7cd5;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#b2dbfb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#0c7cd5}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#b2dbfb}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#b2dbfb}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:23px;list-style:none;background-color:#f5f5f5;border-radius:3px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#bbbbbb}.pagination{display:inline-block;padding-left:0;margin:23px 0;border-radius:3px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 16px;line-height:1.846;text-decoration:none;color:#2196f3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#0a6ebd;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#2196f3;border-color:#2196f3;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#bbbbbb;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:17px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:23px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#bbbbbb;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#bbbbbb}.label-default[href]:hover,.label-default[href]:focus{background-color:#a2a2a2}.label-primary{background-color:#2196f3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#0c7cd5}.label-success{background-color:#4caf50}.label-success[href]:hover,.label-success[href]:focus{background-color:#3d8b40}.label-info{background-color:#9c27b0}.label-info[href]:hover,.label-info[href]:focus{background-color:#771e86}.label-warning{background-color:#ff9800}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#cc7a00}.label-danger{background-color:#e51c23}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#b9151b}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:normal;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#bbbbbb;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2196f3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f9f9f9}.jumbotron h1,.jumbotron .h1{color:#444444}.jumbotron p{margin-bottom:15px;font-size:20px;font-weight:200}.jumbotron>hr{border-top-color:#e0e0e0}.container .jumbotron,.container-fluid .jumbotron{border-radius:3px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:59px}}.thumbnail{display:block;padding:4px;margin-bottom:23px;line-height:1.846;background-color:#ffffff;border:1px solid #dddddd;border-radius:3px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2196f3}.thumbnail .caption{padding:9px;color:#666666}.alert{padding:15px;margin-bottom:23px;border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#4caf50}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#3d8b40}.alert-info{background-color:#e1bee7;border-color:#cba4dd;color:#9c27b0}.alert-info hr{border-top-color:#c191d6}.alert-info .alert-link{color:#771e86}.alert-warning{background-color:#ffe0b2;border-color:#ffc599;color:#ff9800}.alert-warning hr{border-top-color:#ffb67f}.alert-warning .alert-link{color:#cc7a00}.alert-danger{background-color:#f9bdbb;border-color:#f7a4af;color:#e51c23}.alert-danger hr{border-top-color:#f58c9a}.alert-danger .alert-link{color:#b9151b}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:23px;margin-bottom:23px;background-color:#f5f5f5;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:23px;color:#ffffff;text-align:center;background-color:#2196f3;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#4caf50}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9c27b0}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff9800}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#e51c23}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#bbbbbb;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#bbbbbb}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2196f3;border-color:#2196f3}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e3f2fd}.list-group-item-success{color:#4caf50;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#4caf50}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#4caf50;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#4caf50;border-color:#4caf50}.list-group-item-info{color:#9c27b0;background-color:#e1bee7}a.list-group-item-info,button.list-group-item-info{color:#9c27b0}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#9c27b0;background-color:#d8abe0}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#9c27b0;border-color:#9c27b0}.list-group-item-warning{color:#ff9800;background-color:#ffe0b2}a.list-group-item-warning,button.list-group-item-warning{color:#ff9800}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ff9800;background-color:#ffd699}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ff9800;border-color:#ff9800}.list-group-item-danger{color:#e51c23;background-color:#f9bdbb}a.list-group-item-danger,button.list-group-item-danger{color:#e51c23}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#e51c23;background-color:#f7a6a4}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#e51c23;border-color:#e51c23}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:23px;background-color:#ffffff;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:2px;border-top-left-radius:2px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:2px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:2px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:2px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:2px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:23px}.panel-group .panel{margin-bottom:0;border-radius:3px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#212121;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#212121}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2196f3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2196f3;border-color:#2196f3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2196f3}.panel-primary>.panel-heading .badge{color:#2196f3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2196f3}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#ffffff;background-color:#4caf50;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#4caf50;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#cba4dd}.panel-info>.panel-heading{color:#ffffff;background-color:#9c27b0;border-color:#cba4dd}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#cba4dd}.panel-info>.panel-heading .badge{color:#9c27b0;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#cba4dd}.panel-warning{border-color:#ffc599}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff9800;border-color:#ffc599}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ffc599}.panel-warning>.panel-heading .badge{color:#ff9800;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ffc599}.panel-danger{border-color:#f7a4af}.panel-danger>.panel-heading{color:#ffffff;background-color:#e51c23;border-color:#f7a4af}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f7a4af}.panel-danger>.panel-heading .badge{color:#e51c23;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f7a4af}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f9f9f9;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:3px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:19.5px;font-weight:normal;line-height:1;color:#000000;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid transparent}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.846}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid transparent}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.846;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#727272;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#727272}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#727272}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#727272}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#727272}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#727272}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#727272}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#727272}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#727272}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.846;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:13px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:2px 2px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:rgba(0,0,0,0);border-top-color:rgba(0,0,0,0.075);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:rgba(0,0,0,0);border-right-color:rgba(0,0,0,0.075)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0.075);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,0);border-left-color:rgba(0,0,0,0.075)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border:none;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.3);box-shadow:0 1px 2px rgba(0,0,0,0.3)}.navbar-brand{font-size:24px}.navbar-inverse .navbar-form input[type=text],.navbar-inverse .navbar-form input[type=password]{color:#fff;-webkit-box-shadow:inset 0 -1px 0 #b2dbfb;box-shadow:inset 0 -1px 0 #b2dbfb}.navbar-inverse .navbar-form input[type=text]::-moz-placeholder,.navbar-inverse .navbar-form input[type=password]::-moz-placeholder{color:#b2dbfb;opacity:1}.navbar-inverse .navbar-form input[type=text]:-ms-input-placeholder,.navbar-inverse .navbar-form input[type=password]:-ms-input-placeholder{color:#b2dbfb}.navbar-inverse .navbar-form input[type=text]::-webkit-input-placeholder,.navbar-inverse .navbar-form input[type=password]::-webkit-input-placeholder{color:#b2dbfb}.navbar-inverse .navbar-form input[type=text]:focus,.navbar-inverse .navbar-form input[type=password]:focus{-webkit-box-shadow:inset 0 -2px 0 #fff;box-shadow:inset 0 -2px 0 #fff}.btn-default{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-default:focus{background-color:#ffffff}.btn-default:hover,.btn-default:active:hover{background-color:#f0f0f0}.btn-default:active{background-color:#e0e0e0;background-image:-webkit-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:-o-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-primary{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-primary:focus{background-color:#2196f3}.btn-primary:hover,.btn-primary:active:hover{background-color:#0d87e9}.btn-primary:active{background-color:#0b76cc;background-image:-webkit-radial-gradient(circle, #0b76cc 10%, #2196f3 11%);background-image:-o-radial-gradient(circle, #0b76cc 10%, #2196f3 11%);background-image:radial-gradient(circle, #0b76cc 10%, #2196f3 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-success{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-success:focus{background-color:#4caf50}.btn-success:hover,.btn-success:active:hover{background-color:#439a46}.btn-success:active{background-color:#39843c;background-image:-webkit-radial-gradient(circle, #39843c 10%, #4caf50 11%);background-image:-o-radial-gradient(circle, #39843c 10%, #4caf50 11%);background-image:radial-gradient(circle, #39843c 10%, #4caf50 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-info{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-info:focus{background-color:#9c27b0}.btn-info:hover,.btn-info:active:hover{background-color:#862197}.btn-info:active{background-color:#701c7e;background-image:-webkit-radial-gradient(circle, #701c7e 10%, #9c27b0 11%);background-image:-o-radial-gradient(circle, #701c7e 10%, #9c27b0 11%);background-image:radial-gradient(circle, #701c7e 10%, #9c27b0 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-warning{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-warning:focus{background-color:#ff9800}.btn-warning:hover,.btn-warning:active:hover{background-color:#e08600}.btn-warning:active{background-color:#c27400;background-image:-webkit-radial-gradient(circle, #c27400 10%, #ff9800 11%);background-image:-o-radial-gradient(circle, #c27400 10%, #ff9800 11%);background-image:radial-gradient(circle, #c27400 10%, #ff9800 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-danger{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-danger:focus{background-color:#e51c23}.btn-danger:hover,.btn-danger:active:hover{background-color:#cb171e}.btn-danger:active{background-color:#b0141a;background-image:-webkit-radial-gradient(circle, #b0141a 10%, #e51c23 11%);background-image:-o-radial-gradient(circle, #b0141a 10%, #e51c23 11%);background-image:radial-gradient(circle, #b0141a 10%, #e51c23 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-link{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-link:focus{background-color:#ffffff}.btn-link:hover,.btn-link:active:hover{background-color:#f0f0f0}.btn-link:active{background-color:#e0e0e0;background-image:-webkit-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:-o-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn{text-transform:uppercase;border:none;-webkit-box-shadow:1px 1px 4px rgba(0,0,0,0.4);box-shadow:1px 1px 4px rgba(0,0,0,0.4);-webkit-transition:all 0.4s;-o-transition:all 0.4s;transition:all 0.4s}.btn-link{border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#444444}.btn-link:hover,.btn-link:focus{-webkit-box-shadow:none;box-shadow:none;color:#444444;text-decoration:none}.btn-default.disabled{background-color:rgba(0,0,0,0.1);color:rgba(0,0,0,0.4);opacity:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:0}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:0}body{-webkit-font-smoothing:antialiased;letter-spacing:.1px}p{margin:0 0 1em}input,button{-webkit-font-smoothing:antialiased;letter-spacing:.1px}a{-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}.table-hover>tbody>tr,.table-hover>tbody>tr>th,.table-hover>tbody>tr>td{-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}label{font-weight:normal}textarea,textarea.form-control,input.form-control,input[type=text],input[type=password],input[type=email],input[type=number],[type=text].form-control,[type=password].form-control,[type=email].form-control,[type=tel].form-control,[contenteditable].form-control{padding:0;border:none;border-radius:0;-webkit-appearance:none;-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd;font-size:16px}textarea:focus,textarea.form-control:focus,input.form-control:focus,input[type=text]:focus,input[type=password]:focus,input[type=email]:focus,input[type=number]:focus,[type=text].form-control:focus,[type=password].form-control:focus,[type=email].form-control:focus,[type=tel].form-control:focus,[contenteditable].form-control:focus{-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3}textarea[disabled],textarea.form-control[disabled],input.form-control[disabled],input[type=text][disabled],input[type=password][disabled],input[type=email][disabled],input[type=number][disabled],[type=text].form-control[disabled],[type=password].form-control[disabled],[type=email].form-control[disabled],[type=tel].form-control[disabled],[contenteditable].form-control[disabled],textarea[readonly],textarea.form-control[readonly],input.form-control[readonly],input[type=text][readonly],input[type=password][readonly],input[type=email][readonly],input[type=number][readonly],[type=text].form-control[readonly],[type=password].form-control[readonly],[type=email].form-control[readonly],[type=tel].form-control[readonly],[contenteditable].form-control[readonly]{-webkit-box-shadow:none;box-shadow:none;border-bottom:1px dotted #ddd}textarea.input-sm,textarea.form-control.input-sm,input.form-control.input-sm,input[type=text].input-sm,input[type=password].input-sm,input[type=email].input-sm,input[type=number].input-sm,[type=text].form-control.input-sm,[type=password].form-control.input-sm,[type=email].form-control.input-sm,[type=tel].form-control.input-sm,[contenteditable].form-control.input-sm{font-size:12px}textarea.input-lg,textarea.form-control.input-lg,input.form-control.input-lg,input[type=text].input-lg,input[type=password].input-lg,input[type=email].input-lg,input[type=number].input-lg,[type=text].form-control.input-lg,[type=password].form-control.input-lg,[type=email].form-control.input-lg,[type=tel].form-control.input-lg,[contenteditable].form-control.input-lg{font-size:17px}select,select.form-control{border:0;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-left:0;padding-right:0\9;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEVmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmaP/QSjAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);-webkit-background-size:13px 13px;background-size:13px;background-repeat:no-repeat;background-position:right center;-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd;font-size:16px;line-height:1.5}select::-ms-expand,select.form-control::-ms-expand{display:none}select.input-sm,select.form-control.input-sm{font-size:12px}select.input-lg,select.form-control.input-lg{font-size:17px}select:focus,select.form-control:focus{-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEUhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF8S9ewAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=)}select[multiple],select.form-control[multiple]{background:none}.radio label,.radio-inline label,.checkbox label,.checkbox-inline label{padding-left:25px}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="radio"],.checkbox-inline input[type="radio"],.radio input[type="checkbox"],.radio-inline input[type="checkbox"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{margin-left:-25px}input[type="radio"],.radio input[type="radio"],.radio-inline input[type="radio"]{position:relative;margin-top:6px;margin-right:4px;vertical-align:top;border:none;background-color:transparent;-webkit-appearance:none;appearance:none;cursor:pointer}input[type="radio"]:focus,.radio input[type="radio"]:focus,.radio-inline input[type="radio"]:focus{outline:none}input[type="radio"]:before,.radio input[type="radio"]:before,.radio-inline input[type="radio"]:before,input[type="radio"]:after,.radio input[type="radio"]:after,.radio-inline input[type="radio"]:after{content:"";display:block;width:18px;height:18px;border-radius:50%;-webkit-transition:240ms;-o-transition:240ms;transition:240ms}input[type="radio"]:before,.radio input[type="radio"]:before,.radio-inline input[type="radio"]:before{position:absolute;left:0;top:-3px;background-color:#2196f3;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}input[type="radio"]:after,.radio input[type="radio"]:after,.radio-inline input[type="radio"]:after{position:relative;top:-3px;border:2px solid #666666}input[type="radio"]:checked:before,.radio input[type="radio"]:checked:before,.radio-inline input[type="radio"]:checked:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}input[type="radio"]:disabled:checked:before,.radio input[type="radio"]:disabled:checked:before,.radio-inline input[type="radio"]:disabled:checked:before{background-color:#bbbbbb}input[type="radio"]:checked:after,.radio input[type="radio"]:checked:after,.radio-inline input[type="radio"]:checked:after{border-color:#2196f3}input[type="radio"]:disabled:after,.radio input[type="radio"]:disabled:after,.radio-inline input[type="radio"]:disabled:after,input[type="radio"]:disabled:checked:after,.radio input[type="radio"]:disabled:checked:after,.radio-inline input[type="radio"]:disabled:checked:after{border-color:#bbbbbb}input[type="checkbox"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:relative;border:none;margin-bottom:-4px;-webkit-appearance:none;appearance:none;cursor:pointer}input[type="checkbox"]:focus,.checkbox input[type="checkbox"]:focus,.checkbox-inline input[type="checkbox"]:focus{outline:none}input[type="checkbox"]:focus:after,.checkbox input[type="checkbox"]:focus:after,.checkbox-inline input[type="checkbox"]:focus:after{border-color:#2196f3}input[type="checkbox"]:after,.checkbox input[type="checkbox"]:after,.checkbox-inline input[type="checkbox"]:after{content:"";display:block;width:18px;height:18px;margin-top:-2px;margin-right:5px;border:2px solid #666666;border-radius:2px;-webkit-transition:240ms;-o-transition:240ms;transition:240ms}input[type="checkbox"]:checked:before,.checkbox input[type="checkbox"]:checked:before,.checkbox-inline input[type="checkbox"]:checked:before{content:"";position:absolute;top:0;left:6px;display:table;width:6px;height:12px;border:2px solid #fff;border-top-width:0;border-left-width:0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}input[type="checkbox"]:checked:after,.checkbox input[type="checkbox"]:checked:after,.checkbox-inline input[type="checkbox"]:checked:after{background-color:#2196f3;border-color:#2196f3}input[type="checkbox"]:disabled:after,.checkbox input[type="checkbox"]:disabled:after,.checkbox-inline input[type="checkbox"]:disabled:after{border-color:#bbbbbb}input[type="checkbox"]:disabled:checked:after,.checkbox input[type="checkbox"]:disabled:checked:after,.checkbox-inline input[type="checkbox"]:disabled:checked:after{background-color:#bbbbbb;border-color:transparent}.has-warning input:not([type=checkbox]),.has-warning .form-control,.has-warning input.form-control[readonly],.has-warning input[type=text][readonly],.has-warning [type=text].form-control[readonly],.has-warning input:not([type=checkbox]):focus,.has-warning .form-control:focus{border-bottom:none;-webkit-box-shadow:inset 0 -2px 0 #ff9800;box-shadow:inset 0 -2px 0 #ff9800}.has-error input:not([type=checkbox]),.has-error .form-control,.has-error input.form-control[readonly],.has-error input[type=text][readonly],.has-error [type=text].form-control[readonly],.has-error input:not([type=checkbox]):focus,.has-error .form-control:focus{border-bottom:none;-webkit-box-shadow:inset 0 -2px 0 #e51c23;box-shadow:inset 0 -2px 0 #e51c23}.has-success input:not([type=checkbox]),.has-success .form-control,.has-success input.form-control[readonly],.has-success input[type=text][readonly],.has-success [type=text].form-control[readonly],.has-success input:not([type=checkbox]):focus,.has-success .form-control:focus{border-bottom:none;-webkit-box-shadow:inset 0 -2px 0 #4caf50;box-shadow:inset 0 -2px 0 #4caf50}.has-warning .input-group-addon,.has-error .input-group-addon,.has-success .input-group-addon{color:#666666;border-color:transparent;background-color:transparent}.form-group-lg select,.form-group-lg select.form-control{line-height:1.5}.nav-tabs>li>a,.nav-tabs>li>a:focus{margin-right:0;background-color:transparent;border:none;color:#666666;-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus:hover{background-color:transparent;-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3;color:#2196f3}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus{border:none;-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3;color:#2196f3}.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus:hover{border:none;color:#2196f3}.nav-tabs>li.disabled>a{-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd}.nav-tabs.nav-justified>li>a,.nav-tabs.nav-justified>li>a:hover,.nav-tabs.nav-justified>li>a:focus,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:none}.nav-tabs .dropdown-menu{margin-top:0}.dropdown-menu{margin-top:0;border:none;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.3);box-shadow:0 1px 4px rgba(0,0,0,0.3)}.alert{border:none;color:#fff}.alert-success{background-color:#4caf50}.alert-info{background-color:#9c27b0}.alert-warning{background-color:#ff9800}.alert-danger{background-color:#e51c23}.alert a:not(.close):not(.btn),.alert .alert-link{color:#fff;font-weight:bold}.alert .close{color:#fff}.badge{padding:4px 6px 4px}.progress{position:relative;z-index:1;height:6px;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress-bar:last-child{border-radius:0 3px 3px 0}.progress-bar:last-child:before{display:block;content:"";position:absolute;width:100%;height:100%;left:0;right:0;z-index:-1;background-color:#cae6fc}.progress-bar-success:last-child.progress-bar:before{background-color:#c7e7c8}.progress-bar-info:last-child.progress-bar:before{background-color:#edc9f3}.progress-bar-warning:last-child.progress-bar:before{background-color:#ffe0b3}.progress-bar-danger:last-child.progress-bar:before{background-color:#f28e92}.close{font-size:34px;font-weight:300;line-height:24px;opacity:0.6;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}.close:hover{opacity:1}.list-group-item{padding:15px}.list-group-item-text{color:#bbbbbb}.well{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.panel{border:none;border-radius:2px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.3);box-shadow:0 1px 4px rgba(0,0,0,0.3)}.panel-heading{border-bottom:none}.panel-footer{border-top:none}.popover{border:none;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.3);box-shadow:0 1px 4px rgba(0,0,0,0.3)}.carousel-caption h1,.carousel-caption h2,.carousel-caption h3,.carousel-caption h4,.carousel-caption h5,.carousel-caption h6{color:inherit} \ No newline at end of file + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:1.846;color:#666666;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2196f3;text-decoration:none}a:hover,a:focus{color:#0a6ebd;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:3px}.img-thumbnail{padding:4px;line-height:1.846;background-color:#ffffff;border:1px solid #dddddd;border-radius:3px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:23px;margin-bottom:23px;border:0;border-top:1px solid #eeeeee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:#444444}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#bbbbbb}h1,.h1,h2,.h2,h3,.h3{margin-top:23px;margin-bottom:11.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:11.5px;margin-bottom:11.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:56px}h2,.h2{font-size:45px}h3,.h3{font-size:34px}h4,.h4{font-size:24px}h5,.h5{font-size:20px}h6,.h6{font-size:14px}p{margin:0 0 11.5px}.lead{margin-bottom:23px;font-size:14px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}small,.small{font-size:92%}mark,.mark{background-color:#ffe0b2;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#bbbbbb}.text-primary{color:#06599e}a.text-primary:hover,a.text-primary:focus{color:#0c7cd5}.text-success{color:#4caf50}a.text-success:hover,a.text-success:focus{color:#3d8b40}.text-info{color:#9c27b0}a.text-info:hover,a.text-info:focus{color:#771e86}.text-warning{color:#ff9800}a.text-warning:hover,a.text-warning:focus{color:#cc7a00}.text-danger{color:#e51c23}a.text-danger:hover,a.text-danger:focus{color:#b9151b}.bg-primary{color:#fff;background-color:#2196f3}a.bg-primary:hover,a.bg-primary:focus{background-color:#0c7cd5}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#e1bee7}a.bg-info:hover,a.bg-info:focus{background-color:#d099d9}.bg-warning{background-color:#ffe0b2}a.bg-warning:hover,a.bg-warning:focus{background-color:#ffcb7f}.bg-danger{background-color:#f9bdbb}a.bg-danger:hover,a.bg-danger:focus{background-color:#f5908c}.page-header{padding-bottom:10.5px;margin:46px 0 23px;border-bottom:1px solid #eeeeee}ul,ol{margin-top:0;margin-bottom:11.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:23px}dt,dd{line-height:1.846}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #bbbbbb}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:11.5px 23px;margin:0 0 23px;font-size:16.25px;border-left:5px solid #eeeeee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.846;color:#bbbbbb}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:23px;font-style:normal;line-height:1.846}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:3px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:11px;margin:0 0 11.5px;font-size:12px;line-height:1.846;word-break:break-all;word-wrap:break-word;color:#212121;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:3px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#bbbbbb;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:23px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.846;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#e1bee7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#d8abe0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ffe0b2}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#ffd699}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f9bdbb}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#f7a6a4}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:17.25px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:23px;font-size:19.5px;line-height:inherit;color:#212121;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:13px;line-height:1.846;color:#666666}.form-control{display:block;width:100%;height:37px;padding:6px 16px;font-size:13px;line-height:1.846;color:#666666;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#bbbbbb;opacity:1}.form-control:-ms-input-placeholder{color:#bbbbbb}.form-control::-webkit-input-placeholder{color:#bbbbbb}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:transparent;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:37px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:45px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:23px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:35px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}select.input-lg{height:45px;line-height:45px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}.form-group-lg select.form-control{height:45px;line-height:45px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:45px;min-height:40px;padding:11px 16px;font-size:17px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:46.25px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:37px;height:37px;line-height:37px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:45px;height:45px;line-height:45px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#4caf50}.has-success .form-control{border-color:#4caf50;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#3d8b40;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #92cf94;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #92cf94}.has-success .input-group-addon{color:#4caf50;border-color:#4caf50;background-color:#dff0d8}.has-success .form-control-feedback{color:#4caf50}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ff9800}.has-warning .form-control{border-color:#ff9800;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#cc7a00;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ffc166;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ffc166}.has-warning .input-group-addon{color:#ff9800;border-color:#ff9800;background-color:#ffe0b2}.has-warning .form-control-feedback{color:#ff9800}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#e51c23}.has-error .form-control{border-color:#e51c23;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#b9151b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ef787c;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ef787c}.has-error .input-group-addon{color:#e51c23;border-color:#e51c23;background-color:#f9bdbb}.has-error .form-control-feedback{color:#e51c23}.has-feedback label~.form-control-feedback{top:28px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#a6a6a6}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:17px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 16px;font-size:13px;line-height:1.846;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#444444;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#444444;background-color:#ffffff;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#444444;background-color:#e6e6e6;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#444444;background-color:#e6e6e6;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#444444;background-color:#e6e6e6;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#444444;background-color:#d4d4d4;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#ffffff;border-color:transparent}.btn-default .badge{color:#ffffff;background-color:#444444}.btn-primary{color:#ffffff;background-color:#2196f3;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#0c7cd5;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#0c7cd5;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#0c7cd5;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#0a68b4;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2196f3;border-color:transparent}.btn-primary .badge{color:#2196f3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#4caf50;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#3d8b40;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#3d8b40;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#3d8b40;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#327334;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#4caf50;border-color:transparent}.btn-success .badge{color:#4caf50;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9c27b0;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#771e86;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#771e86;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#771e86;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#5d1769;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#9c27b0;border-color:transparent}.btn-info .badge{color:#9c27b0;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff9800;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#cc7a00;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#cc7a00;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#cc7a00;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#a86400;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#ff9800;border-color:transparent}.btn-warning .badge{color:#ff9800;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#e51c23;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#b9151b;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#b9151b;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#b9151b;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#991216;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e51c23;border-color:transparent}.btn-danger .badge{color:#e51c23;background-color:#ffffff}.btn-link{color:#2196f3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#0a6ebd;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#bbbbbb;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:13px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:3px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:10.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.846;color:#666666;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#141414;background-color:#eeeeee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2196f3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#bbbbbb}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.846;color:#bbbbbb;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:17px;line-height:1.3333333;border-radius:3px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 16px;font-size:13px;font-weight:normal;line-height:1;color:#666666;text-align:center;background-color:transparent;border:1px solid transparent;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:3px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#bbbbbb}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#bbbbbb;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#2196f3}.nav .nav-divider{height:1px;margin:10.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid transparent}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.846;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee transparent}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#666666;background-color:transparent;border:1px solid transparent;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid transparent}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2196f3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid transparent}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:64px;margin-bottom:23px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:3px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:20.5px 15px;font-size:17px;line-height:23px;height:64px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:15px;margin-bottom:15px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:10.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:23px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:23px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:20.5px;padding-bottom:20.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:13.5px;margin-bottom:13.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:13.5px;margin-bottom:13.5px}.navbar-btn.btn-sm{margin-top:17px;margin-bottom:17px}.navbar-btn.btn-xs{margin-top:21px;margin-bottom:21px}.navbar-text{margin-top:20.5px;margin-bottom:20.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:transparent}.navbar-default .navbar-brand{color:#666666}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#212121;background-color:transparent}.navbar-default .navbar-text{color:#bbbbbb}.navbar-default .navbar-nav>li>a{color:#666666}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#212121;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#212121;background-color:#eeeeee}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:transparent}.navbar-default .navbar-toggle .icon-bar{background-color:rgba(0,0,0,0.5)}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#eeeeee;color:#212121}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#666666}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#212121;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#212121;background-color:#eeeeee}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#666666}.navbar-default .navbar-link:hover{color:#212121}.navbar-default .btn-link{color:#666666}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#212121}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2196f3;border-color:transparent}.navbar-inverse .navbar-brand{color:#b2dbfb}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#bbbbbb}.navbar-inverse .navbar-nav>li>a{color:#b2dbfb}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#0c7cd5}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:transparent}.navbar-inverse .navbar-toggle .icon-bar{background-color:rgba(0,0,0,0.5)}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#0c84e4}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#0c7cd5;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#b2dbfb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#0c7cd5}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#b2dbfb}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#b2dbfb}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:23px;list-style:none;background-color:#f5f5f5;border-radius:3px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#bbbbbb}.pagination{display:inline-block;padding-left:0;margin:23px 0;border-radius:3px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 16px;line-height:1.846;text-decoration:none;color:#2196f3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#0a6ebd;background-color:#eeeeee;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#2196f3;border-color:#2196f3;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#bbbbbb;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:17px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:23px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#bbbbbb;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#bbbbbb}.label-default[href]:hover,.label-default[href]:focus{background-color:#a2a2a2}.label-primary{background-color:#2196f3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#0c7cd5}.label-success{background-color:#4caf50}.label-success[href]:hover,.label-success[href]:focus{background-color:#3d8b40}.label-info{background-color:#9c27b0}.label-info[href]:hover,.label-info[href]:focus{background-color:#771e86}.label-warning{background-color:#ff9800}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#cc7a00}.label-danger{background-color:#e51c23}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#b9151b}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:normal;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#bbbbbb;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2196f3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f9f9f9}.jumbotron h1,.jumbotron .h1{color:#444444}.jumbotron p{margin-bottom:15px;font-size:20px;font-weight:200}.jumbotron>hr{border-top-color:#e0e0e0}.container .jumbotron,.container-fluid .jumbotron{border-radius:3px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:59px}}.thumbnail{display:block;padding:4px;margin-bottom:23px;line-height:1.846;background-color:#ffffff;border:1px solid #dddddd;border-radius:3px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2196f3}.thumbnail .caption{padding:9px;color:#666666}.alert{padding:15px;margin-bottom:23px;border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#4caf50}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#3d8b40}.alert-info{background-color:#e1bee7;border-color:#cba4dd;color:#9c27b0}.alert-info hr{border-top-color:#c191d6}.alert-info .alert-link{color:#771e86}.alert-warning{background-color:#ffe0b2;border-color:#ffc599;color:#ff9800}.alert-warning hr{border-top-color:#ffb67f}.alert-warning .alert-link{color:#cc7a00}.alert-danger{background-color:#f9bdbb;border-color:#f7a4af;color:#e51c23}.alert-danger hr{border-top-color:#f58c9a}.alert-danger .alert-link{color:#b9151b}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:23px;margin-bottom:23px;background-color:#f5f5f5;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:23px;color:#ffffff;text-align:center;background-color:#2196f3;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#4caf50}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9c27b0}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff9800}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#e51c23}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#bbbbbb;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#bbbbbb}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2196f3;border-color:#2196f3}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e3f2fd}.list-group-item-success{color:#4caf50;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#4caf50}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#4caf50;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#4caf50;border-color:#4caf50}.list-group-item-info{color:#9c27b0;background-color:#e1bee7}a.list-group-item-info,button.list-group-item-info{color:#9c27b0}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#9c27b0;background-color:#d8abe0}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#9c27b0;border-color:#9c27b0}.list-group-item-warning{color:#ff9800;background-color:#ffe0b2}a.list-group-item-warning,button.list-group-item-warning{color:#ff9800}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ff9800;background-color:#ffd699}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ff9800;border-color:#ff9800}.list-group-item-danger{color:#e51c23;background-color:#f9bdbb}a.list-group-item-danger,button.list-group-item-danger{color:#e51c23}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#e51c23;background-color:#f7a6a4}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#e51c23;border-color:#e51c23}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:23px;background-color:#ffffff;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:2px;border-top-left-radius:2px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:2px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:2px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:2px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:2px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:23px}.panel-group .panel{margin-bottom:0;border-radius:3px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#212121;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#212121}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2196f3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2196f3;border-color:#2196f3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2196f3}.panel-primary>.panel-heading .badge{color:#2196f3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2196f3}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#ffffff;background-color:#4caf50;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#4caf50;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#cba4dd}.panel-info>.panel-heading{color:#ffffff;background-color:#9c27b0;border-color:#cba4dd}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#cba4dd}.panel-info>.panel-heading .badge{color:#9c27b0;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#cba4dd}.panel-warning{border-color:#ffc599}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff9800;border-color:#ffc599}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ffc599}.panel-warning>.panel-heading .badge{color:#ff9800;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ffc599}.panel-danger{border-color:#f7a4af}.panel-danger>.panel-heading{color:#ffffff;background-color:#e51c23;border-color:#f7a4af}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f7a4af}.panel-danger>.panel-heading .badge{color:#e51c23;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f7a4af}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f9f9f9;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:3px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:19.5px;font-weight:normal;line-height:1;color:#000000;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid transparent}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.846}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid transparent}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.846;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#727272;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#727272}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#727272}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#727272}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#727272}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#727272}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#727272}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#727272}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#727272}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.846;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:13px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:2px 2px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:rgba(0,0,0,0);border-top-color:rgba(0,0,0,0.075);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:rgba(0,0,0,0);border-right-color:rgba(0,0,0,0.075)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,0);border-bottom-color:rgba(0,0,0,0.075);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,0);border-left-color:rgba(0,0,0,0.075)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border:none;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.3);box-shadow:0 1px 2px rgba(0,0,0,0.3)}.navbar-brand{font-size:24px}.navbar-inverse .navbar-form input[type=text],.navbar-inverse .navbar-form input[type=password]{color:#fff;-webkit-box-shadow:inset 0 -1px 0 #b2dbfb;box-shadow:inset 0 -1px 0 #b2dbfb}.navbar-inverse .navbar-form input[type=text]::-moz-placeholder,.navbar-inverse .navbar-form input[type=password]::-moz-placeholder{color:#b2dbfb;opacity:1}.navbar-inverse .navbar-form input[type=text]:-ms-input-placeholder,.navbar-inverse .navbar-form input[type=password]:-ms-input-placeholder{color:#b2dbfb}.navbar-inverse .navbar-form input[type=text]::-webkit-input-placeholder,.navbar-inverse .navbar-form input[type=password]::-webkit-input-placeholder{color:#b2dbfb}.navbar-inverse .navbar-form input[type=text]:focus,.navbar-inverse .navbar-form input[type=password]:focus{-webkit-box-shadow:inset 0 -2px 0 #fff;box-shadow:inset 0 -2px 0 #fff}.btn-default{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-default:focus{background-color:#ffffff}.btn-default:hover,.btn-default:active:hover{background-color:#f0f0f0}.btn-default:active{background-color:#e0e0e0;background-image:-webkit-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:-o-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-primary{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-primary:focus{background-color:#2196f3}.btn-primary:hover,.btn-primary:active:hover{background-color:#0d87e9}.btn-primary:active{background-color:#0b76cc;background-image:-webkit-radial-gradient(circle, #0b76cc 10%, #2196f3 11%);background-image:-o-radial-gradient(circle, #0b76cc 10%, #2196f3 11%);background-image:radial-gradient(circle, #0b76cc 10%, #2196f3 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-success{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-success:focus{background-color:#4caf50}.btn-success:hover,.btn-success:active:hover{background-color:#439a46}.btn-success:active{background-color:#39843c;background-image:-webkit-radial-gradient(circle, #39843c 10%, #4caf50 11%);background-image:-o-radial-gradient(circle, #39843c 10%, #4caf50 11%);background-image:radial-gradient(circle, #39843c 10%, #4caf50 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-info{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-info:focus{background-color:#9c27b0}.btn-info:hover,.btn-info:active:hover{background-color:#862197}.btn-info:active{background-color:#701c7e;background-image:-webkit-radial-gradient(circle, #701c7e 10%, #9c27b0 11%);background-image:-o-radial-gradient(circle, #701c7e 10%, #9c27b0 11%);background-image:radial-gradient(circle, #701c7e 10%, #9c27b0 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-warning{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-warning:focus{background-color:#ff9800}.btn-warning:hover,.btn-warning:active:hover{background-color:#e08600}.btn-warning:active{background-color:#c27400;background-image:-webkit-radial-gradient(circle, #c27400 10%, #ff9800 11%);background-image:-o-radial-gradient(circle, #c27400 10%, #ff9800 11%);background-image:radial-gradient(circle, #c27400 10%, #ff9800 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-danger{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-danger:focus{background-color:#e51c23}.btn-danger:hover,.btn-danger:active:hover{background-color:#cb171e}.btn-danger:active{background-color:#b0141a;background-image:-webkit-radial-gradient(circle, #b0141a 10%, #e51c23 11%);background-image:-o-radial-gradient(circle, #b0141a 10%, #e51c23 11%);background-image:radial-gradient(circle, #b0141a 10%, #e51c23 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn-link{-webkit-background-size:200% 200%;background-size:200% 200%;background-position:50%}.btn-link:focus{background-color:#ffffff}.btn-link:hover,.btn-link:active:hover{background-color:#f0f0f0}.btn-link:active{background-color:#e0e0e0;background-image:-webkit-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:-o-radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-image:radial-gradient(circle, #e0e0e0 10%, #fff 11%);background-repeat:no-repeat;-webkit-background-size:1000% 1000%;background-size:1000% 1000%;-webkit-box-shadow:2px 2px 4px rgba(0,0,0,0.4);box-shadow:2px 2px 4px rgba(0,0,0,0.4)}.btn{text-transform:uppercase;border:none;-webkit-box-shadow:1px 1px 4px rgba(0,0,0,0.4);box-shadow:1px 1px 4px rgba(0,0,0,0.4);-webkit-transition:all 0.4s;-o-transition:all 0.4s;transition:all 0.4s}.btn-link{border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#444444}.btn-link:hover,.btn-link:focus{-webkit-box-shadow:none;box-shadow:none;color:#444444;text-decoration:none}.btn-default.disabled{background-color:rgba(0,0,0,0.1);color:rgba(0,0,0,0.4);opacity:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:0}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:0}body{-webkit-font-smoothing:antialiased;letter-spacing:.1px}p{margin:0 0 1em}input,button{-webkit-font-smoothing:antialiased;letter-spacing:.1px}a{-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}.table-hover>tbody>tr,.table-hover>tbody>tr>th,.table-hover>tbody>tr>td{-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}label{font-weight:normal}textarea,textarea.form-control,input.form-control,input[type=text],input[type=password],input[type=email],input[type=number],[type=text].form-control,[type=password].form-control,[type=email].form-control,[type=tel].form-control,[contenteditable].form-control{padding:0;border:none;border-radius:0;-webkit-appearance:none;-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd;font-size:16px}textarea:focus,textarea.form-control:focus,input.form-control:focus,input[type=text]:focus,input[type=password]:focus,input[type=email]:focus,input[type=number]:focus,[type=text].form-control:focus,[type=password].form-control:focus,[type=email].form-control:focus,[type=tel].form-control:focus,[contenteditable].form-control:focus{-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3}textarea[disabled],textarea.form-control[disabled],input.form-control[disabled],input[type=text][disabled],input[type=password][disabled],input[type=email][disabled],input[type=number][disabled],[type=text].form-control[disabled],[type=password].form-control[disabled],[type=email].form-control[disabled],[type=tel].form-control[disabled],[contenteditable].form-control[disabled],textarea[readonly],textarea.form-control[readonly],input.form-control[readonly],input[type=text][readonly],input[type=password][readonly],input[type=email][readonly],input[type=number][readonly],[type=text].form-control[readonly],[type=password].form-control[readonly],[type=email].form-control[readonly],[type=tel].form-control[readonly],[contenteditable].form-control[readonly]{-webkit-box-shadow:none;box-shadow:none;border-bottom:1px dotted #ddd}textarea.input-sm,textarea.form-control.input-sm,input.form-control.input-sm,input[type=text].input-sm,input[type=password].input-sm,input[type=email].input-sm,input[type=number].input-sm,[type=text].form-control.input-sm,[type=password].form-control.input-sm,[type=email].form-control.input-sm,[type=tel].form-control.input-sm,[contenteditable].form-control.input-sm{font-size:12px}textarea.input-lg,textarea.form-control.input-lg,input.form-control.input-lg,input[type=text].input-lg,input[type=password].input-lg,input[type=email].input-lg,input[type=number].input-lg,[type=text].form-control.input-lg,[type=password].form-control.input-lg,[type=email].form-control.input-lg,[type=tel].form-control.input-lg,[contenteditable].form-control.input-lg{font-size:17px}select,select.form-control{border:0;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-left:0;padding-right:0\9;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEVmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmaP/QSjAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);-webkit-background-size:13px 13px;background-size:13px;background-repeat:no-repeat;background-position:right center;-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd;font-size:16px;line-height:1.5}select::-ms-expand,select.form-control::-ms-expand{display:none}select.input-sm,select.form-control.input-sm{font-size:12px}select.input-lg,select.form-control.input-lg{font-size:17px}select:focus,select.form-control:focus{-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEUhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF8S9ewAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=)}select[multiple],select.form-control[multiple]{background:none}.radio label,.radio-inline label,.checkbox label,.checkbox-inline label{padding-left:25px}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="radio"],.checkbox-inline input[type="radio"],.radio input[type="checkbox"],.radio-inline input[type="checkbox"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{margin-left:-25px}input[type="radio"],.radio input[type="radio"],.radio-inline input[type="radio"]{position:relative;margin-top:6px;margin-right:4px;vertical-align:top;border:none;background-color:transparent;-webkit-appearance:none;appearance:none;cursor:pointer}input[type="radio"]:focus,.radio input[type="radio"]:focus,.radio-inline input[type="radio"]:focus{outline:none}input[type="radio"]:before,.radio input[type="radio"]:before,.radio-inline input[type="radio"]:before,input[type="radio"]:after,.radio input[type="radio"]:after,.radio-inline input[type="radio"]:after{content:"";display:block;width:18px;height:18px;border-radius:50%;-webkit-transition:240ms;-o-transition:240ms;transition:240ms}input[type="radio"]:before,.radio input[type="radio"]:before,.radio-inline input[type="radio"]:before{position:absolute;left:0;top:-3px;background-color:#2196f3;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}input[type="radio"]:after,.radio input[type="radio"]:after,.radio-inline input[type="radio"]:after{position:relative;top:-3px;border:2px solid #666666}input[type="radio"]:checked:before,.radio input[type="radio"]:checked:before,.radio-inline input[type="radio"]:checked:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}input[type="radio"]:disabled:checked:before,.radio input[type="radio"]:disabled:checked:before,.radio-inline input[type="radio"]:disabled:checked:before{background-color:#bbbbbb}input[type="radio"]:checked:after,.radio input[type="radio"]:checked:after,.radio-inline input[type="radio"]:checked:after{border-color:#2196f3}input[type="radio"]:disabled:after,.radio input[type="radio"]:disabled:after,.radio-inline input[type="radio"]:disabled:after,input[type="radio"]:disabled:checked:after,.radio input[type="radio"]:disabled:checked:after,.radio-inline input[type="radio"]:disabled:checked:after{border-color:#bbbbbb}input[type="checkbox"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:relative;border:none;margin-bottom:-4px;-webkit-appearance:none;appearance:none;cursor:pointer}input[type="checkbox"]:focus,.checkbox input[type="checkbox"]:focus,.checkbox-inline input[type="checkbox"]:focus{outline:none}input[type="checkbox"]:focus:after,.checkbox input[type="checkbox"]:focus:after,.checkbox-inline input[type="checkbox"]:focus:after{border-color:#2196f3}input[type="checkbox"]:after,.checkbox input[type="checkbox"]:after,.checkbox-inline input[type="checkbox"]:after{content:"";display:block;width:18px;height:18px;margin-top:-2px;margin-right:5px;border:2px solid #666666;border-radius:2px;-webkit-transition:240ms;-o-transition:240ms;transition:240ms}input[type="checkbox"]:checked:before,.checkbox input[type="checkbox"]:checked:before,.checkbox-inline input[type="checkbox"]:checked:before{content:"";position:absolute;top:0;left:6px;display:table;width:6px;height:12px;border:2px solid #fff;border-top-width:0;border-left-width:0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}input[type="checkbox"]:checked:after,.checkbox input[type="checkbox"]:checked:after,.checkbox-inline input[type="checkbox"]:checked:after{background-color:#2196f3;border-color:#2196f3}input[type="checkbox"]:disabled:after,.checkbox input[type="checkbox"]:disabled:after,.checkbox-inline input[type="checkbox"]:disabled:after{border-color:#bbbbbb}input[type="checkbox"]:disabled:checked:after,.checkbox input[type="checkbox"]:disabled:checked:after,.checkbox-inline input[type="checkbox"]:disabled:checked:after{background-color:#bbbbbb;border-color:transparent}.has-warning input:not([type=checkbox]),.has-warning .form-control,.has-warning input.form-control[readonly],.has-warning input[type=text][readonly],.has-warning [type=text].form-control[readonly],.has-warning input:not([type=checkbox]):focus,.has-warning .form-control:focus{border-bottom:none;-webkit-box-shadow:inset 0 -2px 0 #ff9800;box-shadow:inset 0 -2px 0 #ff9800}.has-error input:not([type=checkbox]),.has-error .form-control,.has-error input.form-control[readonly],.has-error input[type=text][readonly],.has-error [type=text].form-control[readonly],.has-error input:not([type=checkbox]):focus,.has-error .form-control:focus{border-bottom:none;-webkit-box-shadow:inset 0 -2px 0 #e51c23;box-shadow:inset 0 -2px 0 #e51c23}.has-success input:not([type=checkbox]),.has-success .form-control,.has-success input.form-control[readonly],.has-success input[type=text][readonly],.has-success [type=text].form-control[readonly],.has-success input:not([type=checkbox]):focus,.has-success .form-control:focus{border-bottom:none;-webkit-box-shadow:inset 0 -2px 0 #4caf50;box-shadow:inset 0 -2px 0 #4caf50}.has-warning .input-group-addon,.has-error .input-group-addon,.has-success .input-group-addon{color:#666666;border-color:transparent;background-color:transparent}.form-group-lg select,.form-group-lg select.form-control{line-height:1.5}.nav-tabs>li>a,.nav-tabs>li>a:focus{margin-right:0;background-color:transparent;border:none;color:#666666;-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus:hover{background-color:transparent;-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3;color:#2196f3}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus{border:none;-webkit-box-shadow:inset 0 -2px 0 #2196f3;box-shadow:inset 0 -2px 0 #2196f3;color:#2196f3}.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus:hover{border:none;color:#2196f3}.nav-tabs>li.disabled>a{-webkit-box-shadow:inset 0 -1px 0 #ddd;box-shadow:inset 0 -1px 0 #ddd}.nav-tabs.nav-justified>li>a,.nav-tabs.nav-justified>li>a:hover,.nav-tabs.nav-justified>li>a:focus,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:none}.nav-tabs .dropdown-menu{margin-top:0}.dropdown-menu{margin-top:0;border:none;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.3);box-shadow:0 1px 4px rgba(0,0,0,0.3)}.alert{border:none;color:#fff}.alert-success{background-color:#4caf50}.alert-info{background-color:#9c27b0}.alert-warning{background-color:#ff9800}.alert-danger{background-color:#e51c23}.alert a:not(.close):not(.btn),.alert .alert-link{color:#fff;font-weight:bold}.alert .close{color:#fff}.badge{padding:4px 6px 4px}.progress{position:relative;z-index:1;height:6px;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress-bar:last-child{border-radius:0 3px 3px 0}.progress-bar:last-child:before{display:block;content:"";position:absolute;width:100%;height:100%;left:0;right:0;z-index:-1;background-color:#cae6fc}.progress-bar-success:last-child.progress-bar:before{background-color:#c7e7c8}.progress-bar-info:last-child.progress-bar:before{background-color:#edc9f3}.progress-bar-warning:last-child.progress-bar:before{background-color:#ffe0b3}.progress-bar-danger:last-child.progress-bar:before{background-color:#f28e92}.close{font-size:34px;font-weight:300;line-height:24px;opacity:0.6;-webkit-transition:all 0.2s;-o-transition:all 0.2s;transition:all 0.2s}.close:hover{opacity:1}.list-group-item{padding:15px}.list-group-item-text{color:#bbbbbb}.well{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.panel{border:none;border-radius:2px;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.3);box-shadow:0 1px 4px rgba(0,0,0,0.3)}.panel-heading{border-bottom:none}.panel-footer{border-top:none}.popover{border:none;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.3);box-shadow:0 1px 4px rgba(0,0,0,0.3)}.carousel-caption h1,.carousel-caption h2,.carousel-caption h3,.carousel-caption h4,.carousel-caption h5,.carousel-caption h6{color:inherit} \ No newline at end of file diff --git a/assets/css/sandstone.min.css b/assets/css/sandstone.min.css index e2596a712..d84199394 100644 --- a/assets/css/sandstone.min.css +++ b/assets/css/sandstone.min.css @@ -8,4 +8,4 @@ * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#3e3f3a;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#93c54b;text-decoration:none}a:hover,a:focus{color:#79a736;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #f8f5f0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#98978b}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#98978b}.text-primary{color:#325d88}a.text-primary:hover,a.text-primary:focus{color:#244363}.text-success{color:#93c54b}a.text-success:hover,a.text-success:focus{color:#79a736}.text-info{color:#29abe0}a.text-info:hover,a.text-info:focus{color:#1b8dbb}.text-warning{color:#f47c3c}a.text-warning:hover,a.text-warning:focus{color:#ef5c0e}.text-danger{color:#d9534f}a.text-danger:hover,a.text-danger:focus{color:#c9302c}.bg-primary{color:#fff;background-color:#325d88}a.bg-primary:hover,a.bg-primary:focus{background-color:#244363}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #f8f5f0}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #98978b}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #dfd7ca}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#3e3f3a}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dfd7ca;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#8e8c84;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#98978b;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dfd7ca}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dfd7ca}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dfd7ca}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dfd7ca}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dfd7ca}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f8f5f0}.table-hover>tbody>tr:hover{background-color:#f8f5f0}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f8f5f0}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#f0e9df}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dfd7ca}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:inherit;border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:13px;font-size:14px;line-height:1.42857143;color:#3e3f3a}.form-control{display:block;width:100%;height:46px;padding:12px 16px;font-size:14px;line-height:1.42857143;color:#3e3f3a;background-color:#ffffff;background-image:none;border:1px solid #dfd7ca;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:transparent;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6)}.form-control::-moz-placeholder{color:#dfd7ca;opacity:1}.form-control:-ms-input-placeholder{color:#dfd7ca}.form-control::-webkit-input-placeholder{color:#dfd7ca}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#f8f5f0;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:46px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:66px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:13px;padding-bottom:13px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:66px;line-height:66px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:66px;line-height:66px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:66px;min-height:38px;padding:21px 30px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:57.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:46px;height:46px;line-height:46px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:66px;height:66px;line-height:66px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#93c54b}.has-success .form-control{border-color:#93c54b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#79a736;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c1de98;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c1de98}.has-success .input-group-addon{color:#93c54b;border-color:#93c54b;background-color:#dff0d8}.has-success .form-control-feedback{color:#93c54b}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f47c3c}.has-warning .form-control{border-color:#f47c3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#ef5c0e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f9bd9d;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f9bd9d}.has-warning .input-group-addon{color:#f47c3c;border-color:#f47c3c;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#f47c3c}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#d9534f}.has-error .form-control{border-color:#d9534f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#c9302c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3}.has-error .input-group-addon{color:#d9534f;border-color:#d9534f;background-color:#f2dede}.has-error .form-control-feedback{color:#d9534f}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#7f8177}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:13px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:33px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:13px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:21px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:12px 16px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#3e3f3a;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#121210;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#3e3f3a;border-color:transparent}.btn-default .badge{color:#3e3f3a;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#325d88;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1b3249;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#325d88;border-color:transparent}.btn-primary .badge{color:#325d88;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#93c54b;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#658c2d;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#93c54b;border-color:transparent}.btn-success .badge{color:#93c54b;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#29abe0;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#17759c;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#29abe0;border-color:transparent}.btn-info .badge{color:#29abe0;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f47c3c;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#ce4f0c;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f47c3c;border-color:transparent}.btn-warning .badge{color:#f47c3c;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9534f;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#ac2925;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:transparent}.btn-danger .badge{color:#d9534f;background-color:#ffffff}.btn-link{color:#93c54b;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#79a736;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#dfd7ca;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#ffffff;border:1px solid #dfd7ca;border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#f8f5f0}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#98978b;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#98978b;background-color:#f8f5f0}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#98978b;text-decoration:none;outline:0;background-color:#f8f5f0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#dfd7ca}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#dfd7ca;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:66px;line-height:66px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:12px 16px;font-size:14px;font-weight:normal;line-height:1;color:#3e3f3a;text-align:center;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:20px 30px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#f8f5f0}.nav>li.disabled>a{color:#dfd7ca}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#dfd7ca;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#f8f5f0;border-color:#93c54b}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dfd7ca}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#dfd7ca #dfd7ca #dfd7ca}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#98978b;background-color:#ffffff;border:1px solid #dfd7ca;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dfd7ca}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dfd7ca;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#98978b;background-color:#f8f5f0}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dfd7ca}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dfd7ca;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:20px 15px;font-size:18px;line-height:20px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:10px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:20px;padding-bottom:20px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:7px;margin-bottom:7px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7px;margin-bottom:7px}.navbar-btn.btn-sm{margin-top:15px;margin-bottom:15px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:20px;margin-bottom:20px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#3e3f3a;border-color:#3e3f3a}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#8e8c84}.navbar-default .navbar-nav>li>a{color:#98978b}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#393a35}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#393a35}.navbar-default .navbar-toggle .icon-bar{background-color:#98978b}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#3e3f3a}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#393a35;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#98978b}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#393a35}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#98978b}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#98978b}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#93c54b;border-color:#93c54b}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#dfd7ca}.navbar-inverse .navbar-nav>li>a{color:#6b9430}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#89be3d}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#89be3d}.navbar-inverse .navbar-toggle .icon-bar{background-color:#6b9430}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#81b33a}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#89be3d;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#93c54b}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#93c54b}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#6b9430}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#89be3d}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#6b9430}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#6b9430}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f8f5f0;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#dfd7ca}.breadcrumb>.active{color:#98978b}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:12px 16px;line-height:1.42857143;text-decoration:none;color:#98978b;background-color:#f8f5f0;border:1px solid #dfd7ca;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#8e8c84;background-color:#dfd7ca;border-color:#dfd7ca}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#8e8c84;background-color:#dfd7ca;border-color:#dfd7ca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#dfd7ca;background-color:#f8f5f0;border-color:#dfd7ca;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:20px 30px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#dfd7ca}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#dfd7ca;background-color:#f8f5f0;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#3e3f3a}.label-default[href]:hover,.label-default[href]:focus{background-color:#242422}.label-primary{background-color:#325d88}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#244363}.label-success{background-color:#93c54b}.label-success[href]:hover,.label-success[href]:focus{background-color:#79a736}.label-info{background-color:#29abe0}.label-info[href]:hover,.label-info[href]:focus{background-color:#1b8dbb}.label-warning{background-color:#f47c3c}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ef5c0e}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:normal;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#93c54b;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#ffffff;background-color:#93c54b}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f8f5f0}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#e8decd}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#93c54b}.thumbnail .caption{padding:9px;color:#3e3f3a}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#93c54b;border-color:transparent;color:#ffffff}.alert-success hr{border-top-color:rgba(0,0,0,0)}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#29abe0;border-color:transparent;color:#ffffff}.alert-info hr{border-top-color:rgba(0,0,0,0)}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f47c3c;border-color:transparent;color:#ffffff}.alert-warning hr{border-top-color:rgba(0,0,0,0)}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#d9534f;border-color:transparent;color:#ffffff}.alert-danger hr{border-top-color:rgba(0,0,0,0)}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#325d88;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#93c54b}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#29abe0}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f47c3c}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dfd7ca}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#3e3f3a}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:inherit}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#3e3f3a;background-color:#f8f5f0}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#f8f5f0;color:#dfd7ca;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#dfd7ca}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#3e3f3a;background-color:#f8f5f0;border-color:#dfd7ca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#3e3f3a}.list-group-item-success{color:#93c54b;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#93c54b}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#93c54b;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#93c54b;border-color:#93c54b}.list-group-item-info{color:#29abe0;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#29abe0}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#29abe0;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#29abe0;border-color:#29abe0}.list-group-item-warning{color:#f47c3c;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#f47c3c}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#f47c3c;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#f47c3c;border-color:#f47c3c}.list-group-item-danger{color:#d9534f;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#d9534f}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#d9534f;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#d9534f;border-color:#d9534f}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f8f5f0;border-top:1px solid #dfd7ca;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dfd7ca}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dfd7ca}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dfd7ca}.panel-default{border-color:#dfd7ca}.panel-default>.panel-heading{color:#3e3f3a;background-color:#f8f5f0;border-color:#dfd7ca}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dfd7ca}.panel-default>.panel-heading .badge{color:#f8f5f0;background-color:#3e3f3a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dfd7ca}.panel-primary{border-color:#325d88}.panel-primary>.panel-heading{color:#ffffff;background-color:#325d88;border-color:#325d88}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#325d88}.panel-primary>.panel-heading .badge{color:#325d88;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#325d88}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#93c54b;background-color:#93c54b;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#93c54b;background-color:#93c54b}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#29abe0;background-color:#29abe0;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#29abe0;background-color:#29abe0}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#f47c3c;background-color:#f47c3c;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#f47c3c;background-color:#f47c3c}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#d9534f;background-color:#d9534f;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#d9534f;background-color:#d9534f}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f8f5f0;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 0 0 transparent;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #f8f5f0;border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #f8f5f0}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #f8f5f0}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:1;filter:alpha(opacity=100)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#3e3f3a;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#3e3f3a}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#3e3f3a}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #dfd7ca;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f8f5f0;border-bottom:1px solid #f0e9df;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#b9a78a;border-top-color:#dfd7ca;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#b9a78a;border-right-color:#dfd7ca}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#b9a78a;border-bottom-color:#dfd7ca;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#b9a78a;border-left-color:#dfd7ca}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.sandstone{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.navbar .nav>li>a{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.navbar-form input,.navbar-form .form-control{border:none}.btn{border:none;font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.btn:hover{border-color:transparent}.btn-lg{line-height:26px}.btn-default:hover{background-color:#393a35}input,.form-control{-webkit-box-shadow:none;box-shadow:none}input:focus,.form-control:focus{border-color:#dfd7ca;-webkit-box-shadow:none;box-shadow:none}.nav{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:#dfd7ca}.nav-tabs>li>a{background-color:#f8f5f0;border-color:#dfd7ca;color:#98978b}.nav-tabs>li.disabled>a:hover{background-color:#f8f5f0}.nav-pills a{color:#98978b}.nav-pills li>a{border:1px solid transparent}.nav-pills li.active>a,.nav-pills li>a:hover{border-color:#dfd7ca}.nav-pills li.disabled>a{border-color:transparent}.breadcrumb{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase;border:1px solid #dfd7ca}.breadcrumb a{color:#98978b}.pagination{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.pager{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.pager li>a{color:#98978b}.dropdown-menu>li>a{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.alert a,.alert .alert-link{color:#fff}.tooltip{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.progress{border-radius:10px;background-color:#dfd7ca;-webkit-box-shadow:none;box-shadow:none}.progress-bar{-webkit-box-shadow:none;box-shadow:none}.list-group-item{padding:16px 24px}.well{-webkit-box-shadow:none;box-shadow:none}.panel{-webkit-box-shadow:none;box-shadow:none}.panel .panel-heading,.panel .panel-title{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase;color:#fff}.panel .panel-footer{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.panel-default .panel-heading,.panel-default .panel-title,.panel-default .panel-footer{color:#98978b} \ No newline at end of file + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#3e3f3a;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#93c54b;text-decoration:none}a:hover,a:focus{color:#79a736;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #f8f5f0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#98978b}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#98978b}.text-primary{color:#325d88}a.text-primary:hover,a.text-primary:focus{color:#244363}.text-success{color:#537d13}a.text-success:hover,a.text-success:focus{color:#79a736}.text-info{color:#29abe0}a.text-info:hover,a.text-info:focus{color:#1b8dbb}.text-warning{color:#f47c3c}a.text-warning:hover,a.text-warning:focus{color:#ef5c0e}.text-danger{color:#d9534f}a.text-danger:hover,a.text-danger:focus{color:#c9302c}.bg-primary{color:#fff;background-color:#325d88}a.bg-primary:hover,a.bg-primary:focus{background-color:#244363}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #f8f5f0}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #98978b}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #dfd7ca}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#3e3f3a}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dfd7ca;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#8e8c84;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#98978b;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dfd7ca}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dfd7ca}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dfd7ca}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dfd7ca}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dfd7ca}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f8f5f0}.table-hover>tbody>tr:hover{background-color:#f8f5f0}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f8f5f0}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#f0e9df}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dfd7ca}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:inherit;border:0;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:13px;font-size:14px;line-height:1.42857143;color:#3e3f3a}.form-control{display:block;width:100%;height:46px;padding:12px 16px;font-size:14px;line-height:1.42857143;color:#3e3f3a;background-color:#ffffff;background-image:none;border:1px solid #dfd7ca;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:transparent;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6)}.form-control::-moz-placeholder{color:#dfd7ca;opacity:1}.form-control:-ms-input-placeholder{color:#dfd7ca}.form-control::-webkit-input-placeholder{color:#dfd7ca}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#f8f5f0;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:46px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:66px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:13px;padding-bottom:13px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:66px;line-height:66px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:66px;line-height:66px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:66px;min-height:38px;padding:21px 30px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:57.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:46px;height:46px;line-height:46px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:66px;height:66px;line-height:66px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#93c54b}.has-success .form-control{border-color:#93c54b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#79a736;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c1de98;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c1de98}.has-success .input-group-addon{color:#93c54b;border-color:#93c54b;background-color:#dff0d8}.has-success .form-control-feedback{color:#93c54b}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f47c3c}.has-warning .form-control{border-color:#f47c3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#ef5c0e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f9bd9d;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f9bd9d}.has-warning .input-group-addon{color:#f47c3c;border-color:#f47c3c;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#f47c3c}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#d9534f}.has-error .form-control{border-color:#d9534f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#c9302c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #eba5a3}.has-error .input-group-addon{color:#d9534f;border-color:#d9534f;background-color:#f2dede}.has-error .form-control-feedback{color:#d9534f}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#7f8177}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:13px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:33px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:13px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:21px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:12px 16px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#3e3f3a;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#242422;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#121210;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#3e3f3a;border-color:transparent}.btn-default .badge{color:#3e3f3a;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#325d88;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#244363;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#1b3249;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#325d88;border-color:transparent}.btn-primary .badge{color:#325d88;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#93c54b;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#79a736;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#658c2d;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#93c54b;border-color:transparent}.btn-success .badge{color:#93c54b;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#29abe0;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#1b8dbb;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#17759c;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#29abe0;border-color:transparent}.btn-info .badge{color:#29abe0;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f47c3c;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ef5c0e;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#ce4f0c;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f47c3c;border-color:transparent}.btn-warning .badge{color:#f47c3c;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9534f;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#ac2925;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:transparent}.btn-danger .badge{color:#d9534f;background-color:#ffffff}.btn-link{color:#93c54b;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#79a736;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#dfd7ca;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#ffffff;border:1px solid #dfd7ca;border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#f8f5f0}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#98978b;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#98978b;background-color:#f8f5f0}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#98978b;text-decoration:none;outline:0;background-color:#f8f5f0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#dfd7ca}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#dfd7ca;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:66px;padding:20px 30px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:66px;line-height:66px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:12px 16px;font-size:14px;font-weight:normal;line-height:1;color:#3e3f3a;text-align:center;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:20px 30px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#f8f5f0}.nav>li.disabled>a{color:#dfd7ca}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#dfd7ca;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#f8f5f0;border-color:#93c54b}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dfd7ca}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#dfd7ca #dfd7ca #dfd7ca}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#98978b;background-color:#ffffff;border:1px solid #dfd7ca;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dfd7ca}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dfd7ca;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#98978b;background-color:#f8f5f0}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dfd7ca}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dfd7ca;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:60px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:20px 15px;font-size:18px;line-height:20px;height:60px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:13px;margin-bottom:13px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:10px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:20px;padding-bottom:20px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:7px;margin-bottom:7px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:7px;margin-bottom:7px}.navbar-btn.btn-sm{margin-top:15px;margin-bottom:15px}.navbar-btn.btn-xs{margin-top:19px;margin-bottom:19px}.navbar-text{margin-top:20px;margin-bottom:20px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#3e3f3a;border-color:#3e3f3a}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#8e8c84}.navbar-default .navbar-nav>li>a{color:#98978b}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#393a35}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#393a35}.navbar-default .navbar-toggle .icon-bar{background-color:#98978b}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#3e3f3a}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#393a35;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#98978b}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#393a35}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#98978b}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#98978b}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#93c54b;border-color:#93c54b}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#dfd7ca}.navbar-inverse .navbar-nav>li>a{color:#6b9430}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#89be3d}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#89be3d}.navbar-inverse .navbar-toggle .icon-bar{background-color:#6b9430}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#81b33a}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#89be3d;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#93c54b}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#93c54b}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#6b9430}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#89be3d}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#6b9430}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#6b9430}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f8f5f0;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#dfd7ca}.breadcrumb>.active{color:#98978b}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:12px 16px;line-height:1.42857143;text-decoration:none;color:#98978b;background-color:#f8f5f0;border:1px solid #dfd7ca;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#8e8c84;background-color:#dfd7ca;border-color:#dfd7ca}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#8e8c84;background-color:#dfd7ca;border-color:#dfd7ca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#dfd7ca;background-color:#f8f5f0;border-color:#dfd7ca;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:20px 30px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#dfd7ca}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#dfd7ca;background-color:#f8f5f0;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#3e3f3a}.label-default[href]:hover,.label-default[href]:focus{background-color:#242422}.label-primary{background-color:#325d88}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#244363}.label-success{background-color:#93c54b}.label-success[href]:hover,.label-success[href]:focus{background-color:#79a736}.label-info{background-color:#29abe0}.label-info[href]:hover,.label-info[href]:focus{background-color:#1b8dbb}.label-warning{background-color:#f47c3c}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ef5c0e}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:normal;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#93c54b;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#ffffff;background-color:#93c54b}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f8f5f0}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#e8decd}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#f8f5f0;border:1px solid #dfd7ca;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#93c54b}.thumbnail .caption{padding:9px;color:#3e3f3a}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#93c54b;border-color:transparent;color:#ffffff}.alert-success hr{border-top-color:rgba(0,0,0,0)}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#29abe0;border-color:transparent;color:#ffffff}.alert-info hr{border-top-color:rgba(0,0,0,0)}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#f47c3c;border-color:transparent;color:#ffffff}.alert-warning hr{border-top-color:rgba(0,0,0,0)}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#d9534f;border-color:transparent;color:#ffffff}.alert-danger hr{border-top-color:rgba(0,0,0,0)}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#325d88;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#93c54b}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#29abe0}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f47c3c}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dfd7ca}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#3e3f3a}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:inherit}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#3e3f3a;background-color:#f8f5f0}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#f8f5f0;color:#dfd7ca;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#dfd7ca}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#3e3f3a;background-color:#f8f5f0;border-color:#dfd7ca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#3e3f3a}.list-group-item-success{color:#93c54b;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#93c54b}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#93c54b;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#93c54b;border-color:#93c54b}.list-group-item-info{color:#29abe0;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#29abe0}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#29abe0;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#29abe0;border-color:#29abe0}.list-group-item-warning{color:#f47c3c;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#f47c3c}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#f47c3c;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#f47c3c;border-color:#f47c3c}.list-group-item-danger{color:#d9534f;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#d9534f}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#d9534f;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#d9534f;border-color:#d9534f}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f8f5f0;border-top:1px solid #dfd7ca;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dfd7ca}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dfd7ca}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dfd7ca}.panel-default{border-color:#dfd7ca}.panel-default>.panel-heading{color:#3e3f3a;background-color:#f8f5f0;border-color:#dfd7ca}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dfd7ca}.panel-default>.panel-heading .badge{color:#f8f5f0;background-color:#3e3f3a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dfd7ca}.panel-primary{border-color:#325d88}.panel-primary>.panel-heading{color:#ffffff;background-color:#325d88;border-color:#325d88}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#325d88}.panel-primary>.panel-heading .badge{color:#325d88;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#325d88}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#93c54b;background-color:#93c54b;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#93c54b;background-color:#93c54b}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#29abe0;background-color:#29abe0;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#29abe0;background-color:#29abe0}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#f47c3c;background-color:#f47c3c;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#f47c3c;background-color:#f47c3c}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#d9534f;background-color:#d9534f;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#d9534f;background-color:#d9534f}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f8f5f0;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 0 0 transparent;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #f8f5f0;border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #f8f5f0}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #f8f5f0}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:1;filter:alpha(opacity=100)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#3e3f3a;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#3e3f3a}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#3e3f3a}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#3e3f3a}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#3e3f3a}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #dfd7ca;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f8f5f0;border-bottom:1px solid #f0e9df;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#b9a78a;border-top-color:#dfd7ca;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#b9a78a;border-right-color:#dfd7ca}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#b9a78a;border-bottom-color:#dfd7ca;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#b9a78a;border-left-color:#dfd7ca}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.sandstone{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.navbar .nav>li>a{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.navbar-form input,.navbar-form .form-control{border:none}.btn{border:none;font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.btn:hover{border-color:transparent}.btn-lg{line-height:26px}.btn-default:hover{background-color:#393a35}input,.form-control{-webkit-box-shadow:none;box-shadow:none}input:focus,.form-control:focus{border-color:#dfd7ca;-webkit-box-shadow:none;box-shadow:none}.nav{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:#dfd7ca}.nav-tabs>li>a{background-color:#f8f5f0;border-color:#dfd7ca;color:#98978b}.nav-tabs>li.disabled>a:hover{background-color:#f8f5f0}.nav-pills a{color:#98978b}.nav-pills li>a{border:1px solid transparent}.nav-pills li.active>a,.nav-pills li>a:hover{border-color:#dfd7ca}.nav-pills li.disabled>a{border-color:transparent}.breadcrumb{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase;border:1px solid #dfd7ca}.breadcrumb a{color:#98978b}.pagination{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.pager{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.pager li>a{color:#98978b}.dropdown-menu>li>a{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.alert a,.alert .alert-link{color:#fff}.tooltip{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.progress{border-radius:10px;background-color:#dfd7ca;-webkit-box-shadow:none;box-shadow:none}.progress-bar{-webkit-box-shadow:none;box-shadow:none}.list-group-item{padding:16px 24px}.well{-webkit-box-shadow:none;box-shadow:none}.panel{-webkit-box-shadow:none;box-shadow:none}.panel .panel-heading,.panel .panel-title{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase;color:#fff}.panel .panel-footer{font-size:11px;line-height:22px;font-weight:500;text-transform:uppercase}.panel-default .panel-heading,.panel-default .panel-title,.panel-default .panel-footer{color:#98978b} \ No newline at end of file diff --git a/assets/css/simplex.min.css b/assets/css/simplex.min.css index b040e190b..8c686932b 100644 --- a/assets/css/simplex.min.css +++ b/assets/css/simplex.min.css @@ -8,4 +8,4 @@ * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:1.42857143;color:#777777;background-color:#fcfcfc}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#d9230f;text-decoration:none}a:hover,a:focus{color:#91170a;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fcfcfc;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:18px;margin-bottom:18px;border:0;border-top:1px solid #dddddd}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;line-height:1.1;color:#444444}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#808080}h1,.h1,h2,.h2,h3,.h3{margin-top:18px;margin-bottom:9px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:9px;margin-bottom:9px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:33px}h2,.h2{font-size:27px}h3,.h3{font-size:23px}h4,.h4{font-size:17px}h5,.h5{font-size:13px}h6,.h6{font-size:12px}p{margin:0 0 9px}.lead{margin-bottom:18px;font-size:14px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}small,.small{font-size:92%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#808080}.text-primary{color:#d9230f}a.text-primary:hover,a.text-primary:focus{color:#a91b0c}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover,a.text-danger:focus{color:#953b39}.bg-primary{color:#fff;background-color:#d9230f}a.bg-primary:hover,a.bg-primary:focus{background-color:#a91b0c}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:8px;margin:36px 0 18px;border-bottom:1px solid #dddddd}ul,ol{margin-top:0;margin-bottom:9px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:18px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #808080}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:9px 18px;margin:0 0 18px;font-size:16.25px;border-left:5px solid #dddddd}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#808080}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dddddd;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:18px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#444444;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#808080;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:18px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#fcfcfc}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:13.5px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:18px;font-size:19.5px;line-height:inherit;color:#777777;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:13px;line-height:1.42857143;color:#777777}.form-control{display:block;width:100%;height:36px;padding:8px 12px;font-size:13px;line-height:1.42857143;color:#777777;background-color:#ffffff;background-image:none;border:1px solid #dddddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#dddddd;opacity:1}.form-control:-ms-input-placeholder{color:#dddddd}.form-control::-webkit-input-placeholder{color:#dddddd}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#dddddd;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:36px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:53px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:18px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:31px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:30px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:53px;padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}select.input-lg{height:53px;line-height:53px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:53px;padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:53px;line-height:53px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:53px;min-height:35px;padding:15px 16px;font-size:17px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:45px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:36px;height:36px;line-height:36px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:53px;height:53px;line-height:53px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label~.form-control-feedback{top:23px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#b7b7b7}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:17px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:13px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#474949;border-color:#474949}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#2e2f2f;border-color:#080808}.btn-default:hover{color:#ffffff;background-color:#2e2f2f;border-color:#292a2a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#2e2f2f;border-color:#292a2a}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#1c1d1d;border-color:#080808}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#474949;border-color:#474949}.btn-default .badge{color:#474949;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#d9230f;border-color:#d9230f}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#a91b0c;border-color:#621007}.btn-primary:hover{color:#ffffff;background-color:#a91b0c;border-color:#a01a0b}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#a91b0c;border-color:#a01a0b}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#881609;border-color:#621007}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#d9230f;border-color:#d9230f}.btn-primary .badge{color:#d9230f;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#469408;border-color:#469408}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2f6405;border-color:#0d1b01}.btn-success:hover{color:#ffffff;background-color:#2f6405;border-color:#2b5a05}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f6405;border-color:#2b5a05}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#1f4204;border-color:#0d1b01}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#469408;border-color:#469408}.btn-success .badge{color:#469408;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#029acf;border-color:#029acf}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#02749c;border-color:#013c51}.btn-info:hover{color:#ffffff;background-color:#02749c;border-color:#016d92}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#02749c;border-color:#016d92}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#015a79;border-color:#013c51}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#029acf;border-color:#029acf}.btn-info .badge{color:#029acf;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#9b479f;border-color:#9b479f}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#79377c;border-color:#452047}.btn-warning:hover{color:#ffffff;background-color:#79377c;border-color:#723475}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#79377c;border-color:#723475}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#612c63;border-color:#452047}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#9b479f;border-color:#9b479f}.btn-warning .badge{color:#9b479f;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9831f;border-color:#d9831f}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#ac6819;border-color:#69400f}.btn-danger:hover{color:#ffffff;background-color:#ac6819;border-color:#a36317}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#ac6819;border-color:#a36317}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#8d5514;border-color:#69400f}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9831f;border-color:#d9831f}.btn-danger .badge{color:#d9831f;background-color:#ffffff}.btn-link{color:#d9230f;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#91170a;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#808080;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:13px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#444444;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#d9230f}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#d9230f}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#808080}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#808080;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:53px;padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:53px;line-height:53px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:13px;font-weight:normal;line-height:1;color:#777777;text-align:center;background-color:#dddddd;border:1px solid #dddddd;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:17px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#dddddd}.nav>li.disabled>a{color:#808080}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#808080;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#dddddd;border-color:#d9230f}.nav .nav-divider{height:1px;margin:8px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#dddddd #dddddd #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#777777;background-color:#fcfcfc;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fcfcfc}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#d9230f}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fcfcfc}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:18px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:11px 15px;font-size:17px;line-height:18px;height:40px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:18px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:18px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:11px;padding-bottom:11px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:2px;margin-bottom:2px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:2px;margin-bottom:2px}.navbar-btn.btn-sm{margin-top:5px;margin-bottom:5px}.navbar-btn.btn-xs{margin-top:9px;margin-bottom:9px}.navbar-text{margin-top:11px;margin-bottom:11px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:#eeeeee}.navbar-default .navbar-brand{color:#777777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-text{color:#777777}.navbar-default .navbar-nav>li>a{color:#777777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-default .navbar-toggle{border-color:#dddddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#eeeeee}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:transparent;color:#d9230f}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-default .navbar-link{color:#777777}.navbar-default .navbar-link:hover{color:#d9230f}.navbar-default .btn-link{color:#777777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#d9230f}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#444444}.navbar-inverse{background-color:#d9230f;border-color:#a91b0c}.navbar-inverse .navbar-brand{color:#fac0ba}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#fac0ba}.navbar-inverse .navbar-nav>li>a{color:#fac0ba}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#a91b0c}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#a91b0c}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#b81e0d}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#a91b0c}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#a91b0c}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fac0ba}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#fac0ba}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#fac0ba}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:18px;list-style:none;background-color:transparent;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#808080}.pagination{display:inline-block;padding-left:0;margin:18px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#444444;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ffffff;background-color:#d9230f;border-color:#d9230f}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#d9230f;border-color:#d9230f;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#dddddd;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:17px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:18px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#d9230f}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#dddddd;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#474949}.label-default[href]:hover,.label-default[href]:focus{background-color:#2e2f2f}.label-primary{background-color:#d9230f}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#a91b0c}.label-success{background-color:#469408}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f6405}.label-info{background-color:#029acf}.label-info[href]:hover,.label-info[href]:focus{background-color:#02749c}.label-warning{background-color:#9b479f}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#79377c}.label-danger{background-color:#d9831f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#ac6819}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#d9230f;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#d9230f;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f4f4f4}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:20px;font-weight:200}.jumbotron>hr{border-top-color:#dbdbdb}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:59px}}.thumbnail{display:block;padding:4px;margin-bottom:18px;line-height:1.42857143;background-color:#fcfcfc;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#d9230f}.thumbnail .caption{padding:9px;color:#777777}.alert{padding:15px;margin-bottom:18px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:18px;color:#ffffff;text-align:center;background-color:#d9230f;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#469408}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#029acf}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#9b479f}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9831f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#dddddd;color:#808080;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#808080}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#d9230f;border-color:#d9230f}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#fac0ba}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:18px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#fcfcfc;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:18px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#444444;background-color:#fcfcfc;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#fcfcfc;background-color:#444444}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#d9230f}.panel-primary>.panel-heading{color:#ffffff;background-color:#d9230f;border-color:#d9230f}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d9230f}.panel-primary>.panel-heading .badge{color:#d9230f;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d9230f}.panel-success{border-color:#469408}.panel-success>.panel-heading{color:#ffffff;background-color:#469408;border-color:#469408}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#469408}.panel-success>.panel-heading .badge{color:#469408;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#469408}.panel-info{border-color:#029acf}.panel-info>.panel-heading{color:#ffffff;background-color:#029acf;border-color:#029acf}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#029acf}.panel-info>.panel-heading .badge{color:#029acf;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#029acf}.panel-warning{border-color:#9b479f}.panel-warning>.panel-heading{color:#ffffff;background-color:#9b479f;border-color:#9b479f}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#9b479f}.panel-warning>.panel-heading .badge{color:#9b479f;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#9b479f}.panel-danger{border-color:#d9831f}.panel-danger>.panel-heading{color:#ffffff;background-color:#d9831f;border-color:#d9831f}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d9831f}.panel-danger>.panel-heading .badge{color:#d9831f;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d9831f}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f4f4f4;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:19.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:13px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#d9230f}.btn{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.btn-default,.btn-default:hover{background-image:-webkit-linear-gradient(#4f5151, #474949 6%, #3f4141);background-image:-o-linear-gradient(#4f5151, #474949 6%, #3f4141);background-image:-webkit-gradient(linear, left top, left bottom, from(#4f5151), color-stop(6%, #474949), to(#3f4141));background-image:linear-gradient(#4f5151, #474949 6%, #3f4141);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4f5151', endColorstr='#ff3f4141', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #2e2f2f}.btn-primary,.btn-primary:hover{background-image:-webkit-linear-gradient(#e72510, #d9230f 6%, #cb210e);background-image:-o-linear-gradient(#e72510, #d9230f 6%, #cb210e);background-image:-webkit-gradient(linear, left top, left bottom, from(#e72510), color-stop(6%, #d9230f), to(#cb210e));background-image:linear-gradient(#e72510, #d9230f 6%, #cb210e);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe72510', endColorstr='#ffcb210e', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #a91b0c}.btn-success,.btn-success:hover{background-image:-webkit-linear-gradient(#4da309, #469408 6%, #3f8507);background-image:-o-linear-gradient(#4da309, #469408 6%, #3f8507);background-image:-webkit-gradient(linear, left top, left bottom, from(#4da309), color-stop(6%, #469408), to(#3f8507));background-image:linear-gradient(#4da309, #469408 6%, #3f8507);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4da309', endColorstr='#ff3f8507', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #2f6405}.btn-info,.btn-info:hover{background-image:-webkit-linear-gradient(#02a5de, #029acf 6%, #028fc0);background-image:-o-linear-gradient(#02a5de, #029acf 6%, #028fc0);background-image:-webkit-gradient(linear, left top, left bottom, from(#02a5de), color-stop(6%, #029acf), to(#028fc0));background-image:linear-gradient(#02a5de, #029acf 6%, #028fc0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff02a5de', endColorstr='#ff028fc0', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #02749c}.btn-warning,.btn-warning:hover{background-image:-webkit-linear-gradient(#a54caa, #9b479f 6%, #914294);background-image:-o-linear-gradient(#a54caa, #9b479f 6%, #914294);background-image:-webkit-gradient(linear, left top, left bottom, from(#a54caa), color-stop(6%, #9b479f), to(#914294));background-image:linear-gradient(#a54caa, #9b479f 6%, #914294);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa54caa', endColorstr='#ff914294', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #79377c}.btn-danger,.btn-danger:hover{background-image:-webkit-linear-gradient(#e08b27, #d9831f 6%, #cc7b1d);background-image:-o-linear-gradient(#e08b27, #d9831f 6%, #cc7b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#e08b27), color-stop(6%, #d9831f), to(#cc7b1d));background-image:linear-gradient(#e08b27, #d9831f 6%, #cc7b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe08b27', endColorstr='#ffcc7b1d', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #ac6819}body{font-weight:200}th{color:#444444}legend{color:#444444}label{font-weight:normal}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#d9831f}.has-warning .form-control,.has-warning .form-control:focus{border-color:#d9831f}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#d9230f}.has-error .form-control,.has-error .form-control:focus{border-color:#d9230f}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#469408}.has-success .form-control,.has-success .form-control:focus{border-color:#469408}.pager a{color:#444444}.pager a:hover,.pager .active>a{border-color:#d9230f;color:#fff}.pager .disabled>a{border-color:#dddddd} \ No newline at end of file + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:1.42857143;color:#777777;background-color:#fcfcfc}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#d9230f;text-decoration:none}a:hover,a:focus{color:#91170a;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fcfcfc;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:18px;margin-bottom:18px;border:0;border-top:1px solid #dddddd}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;line-height:1.1;color:#444444}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#808080}h1,.h1,h2,.h2,h3,.h3{margin-top:18px;margin-bottom:9px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:9px;margin-bottom:9px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:33px}h2,.h2{font-size:27px}h3,.h3{font-size:23px}h4,.h4{font-size:17px}h5,.h5{font-size:13px}h6,.h6{font-size:12px}p{margin:0 0 9px}.lead{margin-bottom:18px;font-size:14px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}small,.small{font-size:92%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#808080}.text-primary{color:#731106}a.text-primary:hover,a.text-primary:focus{color:#a91b0c}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-danger{color:#b94a48}a.text-danger:hover,a.text-danger:focus{color:#953b39}.bg-primary{color:#fff;background-color:#d9230f}a.bg-primary:hover,a.bg-primary:focus{background-color:#a91b0c}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:8px;margin:36px 0 18px;border-bottom:1px solid #dddddd}ul,ol{margin-top:0;margin-bottom:9px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:18px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #808080}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:9px 18px;margin:0 0 18px;font-size:16.25px;border-left:5px solid #dddddd}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#808080}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dddddd;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:18px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#444444;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#808080;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:18px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#fcfcfc}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:13.5px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:18px;font-size:19.5px;line-height:inherit;color:#777777;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:13px;line-height:1.42857143;color:#777777}.form-control{display:block;width:100%;height:36px;padding:8px 12px;font-size:13px;line-height:1.42857143;color:#777777;background-color:#ffffff;background-image:none;border:1px solid #dddddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#dddddd;opacity:1}.form-control:-ms-input-placeholder{color:#dddddd}.form-control::-webkit-input-placeholder{color:#dddddd}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#dddddd;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:36px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:53px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:18px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:31px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:30px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:53px;padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}select.input-lg{height:53px;line-height:53px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:53px;padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:53px;line-height:53px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:53px;min-height:35px;padding:15px 16px;font-size:17px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:45px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:36px;height:36px;line-height:36px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:53px;height:53px;line-height:53px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;border-color:#468847;background-color:#dff0d8}.has-success .form-control-feedback{color:#468847}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;border-color:#c09853;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#c09853}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;border-color:#b94a48;background-color:#f2dede}.has-error .form-control-feedback{color:#b94a48}.has-feedback label~.form-control-feedback{top:23px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#b7b7b7}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:17px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:13px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#474949;border-color:#474949}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#2e2f2f;border-color:#080808}.btn-default:hover{color:#ffffff;background-color:#2e2f2f;border-color:#292a2a}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#2e2f2f;border-color:#292a2a}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#1c1d1d;border-color:#080808}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#474949;border-color:#474949}.btn-default .badge{color:#474949;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#d9230f;border-color:#d9230f}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#a91b0c;border-color:#621007}.btn-primary:hover{color:#ffffff;background-color:#a91b0c;border-color:#a01a0b}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#a91b0c;border-color:#a01a0b}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#881609;border-color:#621007}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#d9230f;border-color:#d9230f}.btn-primary .badge{color:#d9230f;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#469408;border-color:#469408}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2f6405;border-color:#0d1b01}.btn-success:hover{color:#ffffff;background-color:#2f6405;border-color:#2b5a05}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f6405;border-color:#2b5a05}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#1f4204;border-color:#0d1b01}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#469408;border-color:#469408}.btn-success .badge{color:#469408;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#029acf;border-color:#029acf}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#02749c;border-color:#013c51}.btn-info:hover{color:#ffffff;background-color:#02749c;border-color:#016d92}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#02749c;border-color:#016d92}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#015a79;border-color:#013c51}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#029acf;border-color:#029acf}.btn-info .badge{color:#029acf;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#9b479f;border-color:#9b479f}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#79377c;border-color:#452047}.btn-warning:hover{color:#ffffff;background-color:#79377c;border-color:#723475}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#79377c;border-color:#723475}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#612c63;border-color:#452047}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#9b479f;border-color:#9b479f}.btn-warning .badge{color:#9b479f;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9831f;border-color:#d9831f}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#ac6819;border-color:#69400f}.btn-danger:hover{color:#ffffff;background-color:#ac6819;border-color:#a36317}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#ac6819;border-color:#a36317}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#8d5514;border-color:#69400f}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9831f;border-color:#d9831f}.btn-danger .badge{color:#d9831f;background-color:#ffffff}.btn-link{color:#d9230f;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#91170a;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#808080;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:13px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:8px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#444444;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#d9230f}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#d9230f}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#808080}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#808080;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:53px;padding:14px 16px;font-size:17px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:53px;line-height:53px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:13px;font-weight:normal;line-height:1;color:#777777;text-align:center;background-color:#dddddd;border:1px solid #dddddd;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:14px 16px;font-size:17px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#dddddd}.nav>li.disabled>a{color:#808080}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#808080;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#dddddd;border-color:#d9230f}.nav .nav-divider{height:1px;margin:8px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#dddddd #dddddd #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#777777;background-color:#fcfcfc;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fcfcfc}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#d9230f}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fcfcfc}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:18px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:11px 15px;font-size:17px;line-height:18px;height:40px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:18px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:18px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:11px;padding-bottom:11px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:2px;margin-bottom:2px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:2px;margin-bottom:2px}.navbar-btn.btn-sm{margin-top:5px;margin-bottom:5px}.navbar-btn.btn-xs{margin-top:9px;margin-bottom:9px}.navbar-text{margin-top:11px;margin-bottom:11px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#ffffff;border-color:#eeeeee}.navbar-default .navbar-brand{color:#777777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-text{color:#777777}.navbar-default .navbar-nav>li>a{color:#777777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-default .navbar-toggle{border-color:#dddddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd}.navbar-default .navbar-toggle .icon-bar{background-color:#cccccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#eeeeee}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:transparent;color:#d9230f}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#d9230f;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-default .navbar-link{color:#777777}.navbar-default .navbar-link:hover{color:#d9230f}.navbar-default .btn-link{color:#777777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#d9230f}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#444444}.navbar-inverse{background-color:#d9230f;border-color:#a91b0c}.navbar-inverse .navbar-brand{color:#fac0ba}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#fac0ba}.navbar-inverse .navbar-nav>li>a{color:#fac0ba}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#a91b0c}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#a91b0c}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#b81e0d}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:transparent;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#a91b0c}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#a91b0c}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fac0ba}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-inverse .navbar-link{color:#fac0ba}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#fac0ba}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#cccccc}.breadcrumb{padding:8px 15px;margin-bottom:18px;list-style:none;background-color:transparent;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#808080}.pagination{display:inline-block;padding-left:0;margin:18px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.42857143;text-decoration:none;color:#444444;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ffffff;background-color:#d9230f;border-color:#d9230f}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#d9230f;border-color:#d9230f;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#dddddd;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:14px 16px;font-size:17px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:18px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#d9230f}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#dddddd;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#474949}.label-default[href]:hover,.label-default[href]:focus{background-color:#2e2f2f}.label-primary{background-color:#d9230f}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#a91b0c}.label-success{background-color:#469408}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f6405}.label-info{background-color:#029acf}.label-info[href]:hover,.label-info[href]:focus{background-color:#02749c}.label-warning{background-color:#9b479f}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#79377c}.label-danger{background-color:#d9831f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#ac6819}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#d9230f;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#d9230f;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#f4f4f4}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:20px;font-weight:200}.jumbotron>hr{border-top-color:#dbdbdb}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:59px}}.thumbnail{display:block;padding:4px;margin-bottom:18px;line-height:1.42857143;background-color:#fcfcfc;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#d9230f}.thumbnail .caption{padding:9px;color:#777777}.alert{padding:15px;margin-bottom:18px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{background-color:#fcf8e3;border-color:#fbeed5;color:#c09853}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:18px;color:#ffffff;text-align:center;background-color:#d9230f;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#469408}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#029acf}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#9b479f}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9831f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#dddddd;color:#808080;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#808080}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#d9230f;border-color:#d9230f}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#fac0ba}.list-group-item-success{color:#468847;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#468847}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}.list-group-item-info{color:#3a87ad;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#3a87ad}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}.list-group-item-warning{color:#c09853;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#c09853}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}.list-group-item-danger{color:#b94a48;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#b94a48}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:18px;background-color:#ffffff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:15px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#fcfcfc;border-top:1px solid #dddddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:18px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#444444;background-color:#fcfcfc;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#fcfcfc;background-color:#444444}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#d9230f}.panel-primary>.panel-heading{color:#ffffff;background-color:#d9230f;border-color:#d9230f}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d9230f}.panel-primary>.panel-heading .badge{color:#d9230f;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d9230f}.panel-success{border-color:#469408}.panel-success>.panel-heading{color:#ffffff;background-color:#469408;border-color:#469408}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#469408}.panel-success>.panel-heading .badge{color:#469408;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#469408}.panel-info{border-color:#029acf}.panel-info>.panel-heading{color:#ffffff;background-color:#029acf;border-color:#029acf}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#029acf}.panel-info>.panel-heading .badge{color:#029acf;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#029acf}.panel-warning{border-color:#9b479f}.panel-warning>.panel-heading{color:#ffffff;background-color:#9b479f;border-color:#9b479f}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#9b479f}.panel-warning>.panel-heading .badge{color:#9b479f;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#9b479f}.panel-danger{border-color:#d9831f}.panel-danger>.panel-heading{color:#ffffff;background-color:#d9831f;border-color:#d9831f}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d9831f}.panel-danger>.panel-heading .badge{color:#d9831f;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d9831f}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f4f4f4;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:19.5px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:13px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#d9230f}.btn{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif}.btn-default,.btn-default:hover{background-image:-webkit-linear-gradient(#4f5151, #474949 6%, #3f4141);background-image:-o-linear-gradient(#4f5151, #474949 6%, #3f4141);background-image:-webkit-gradient(linear, left top, left bottom, from(#4f5151), color-stop(6%, #474949), to(#3f4141));background-image:linear-gradient(#4f5151, #474949 6%, #3f4141);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4f5151', endColorstr='#ff3f4141', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #2e2f2f}.btn-primary,.btn-primary:hover{background-image:-webkit-linear-gradient(#e72510, #d9230f 6%, #cb210e);background-image:-o-linear-gradient(#e72510, #d9230f 6%, #cb210e);background-image:-webkit-gradient(linear, left top, left bottom, from(#e72510), color-stop(6%, #d9230f), to(#cb210e));background-image:linear-gradient(#e72510, #d9230f 6%, #cb210e);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe72510', endColorstr='#ffcb210e', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #a91b0c}.btn-success,.btn-success:hover{background-image:-webkit-linear-gradient(#4da309, #469408 6%, #3f8507);background-image:-o-linear-gradient(#4da309, #469408 6%, #3f8507);background-image:-webkit-gradient(linear, left top, left bottom, from(#4da309), color-stop(6%, #469408), to(#3f8507));background-image:linear-gradient(#4da309, #469408 6%, #3f8507);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4da309', endColorstr='#ff3f8507', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #2f6405}.btn-info,.btn-info:hover{background-image:-webkit-linear-gradient(#02a5de, #029acf 6%, #028fc0);background-image:-o-linear-gradient(#02a5de, #029acf 6%, #028fc0);background-image:-webkit-gradient(linear, left top, left bottom, from(#02a5de), color-stop(6%, #029acf), to(#028fc0));background-image:linear-gradient(#02a5de, #029acf 6%, #028fc0);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff02a5de', endColorstr='#ff028fc0', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #02749c}.btn-warning,.btn-warning:hover{background-image:-webkit-linear-gradient(#a54caa, #9b479f 6%, #914294);background-image:-o-linear-gradient(#a54caa, #9b479f 6%, #914294);background-image:-webkit-gradient(linear, left top, left bottom, from(#a54caa), color-stop(6%, #9b479f), to(#914294));background-image:linear-gradient(#a54caa, #9b479f 6%, #914294);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffa54caa', endColorstr='#ff914294', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #79377c}.btn-danger,.btn-danger:hover{background-image:-webkit-linear-gradient(#e08b27, #d9831f 6%, #cc7b1d);background-image:-o-linear-gradient(#e08b27, #d9831f 6%, #cc7b1d);background-image:-webkit-gradient(linear, left top, left bottom, from(#e08b27), color-stop(6%, #d9831f), to(#cc7b1d));background-image:linear-gradient(#e08b27, #d9831f 6%, #cc7b1d);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe08b27', endColorstr='#ffcc7b1d', GradientType=0);-webkit-filter:none;filter:none;border:1px solid #ac6819}body{font-weight:200}th{color:#444444}legend{color:#444444}label{font-weight:normal}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#d9831f}.has-warning .form-control,.has-warning .form-control:focus{border-color:#d9831f}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#d9230f}.has-error .form-control,.has-error .form-control:focus{border-color:#d9230f}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#469408}.has-success .form-control,.has-success .form-control:focus{border-color:#469408}.pager a{color:#444444}.pager a:hover,.pager .active>a{border-color:#d9230f;color:#fff}.pager .disabled>a{border-color:#dddddd} \ No newline at end of file diff --git a/assets/css/sketchy.min.css b/assets/css/sketchy.min.css new file mode 100644 index 000000000..4c2d84e8c --- /dev/null +++ b/assets/css/sketchy.min.css @@ -0,0 +1,6738 @@ +/* +The MIT License (MIT) +Copyright (c) 2011-2015 Twitter, Inc +Copyright (c) 2014-2015 Jan Dittrich + +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. +*/ +/*set path to bootstrap*/ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + } + body { + margin: 0; + } + article, + aside, + details, + figcaption, + figure, + footer, + header, + hgroup, + main, + menu, + nav, + section, + summary { + display: block; + } + audio, + canvas, + progress, + video { + display: inline-block; + vertical-align: baseline; + } + audio:not([controls]) { + display: none; + height: 0; + } + [hidden], + template { + display: none; + } + a { + background-color: transparent; + } + a:active, + a:hover { + outline: 0; + } + abbr[title] { + border-bottom: 1px dotted; + } + b, + strong { + font-weight: bold; + } + dfn { + font-style: italic; + } + h1 { + font-size: 2em; + margin: 0.67em 0; + } + mark { + background: #ff0; + color: #000; + } + small { + font-size: 80%; + } + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + sup { + top: -0.5em; + } + sub { + bottom: -0.25em; + } + img { + border: 0; + } + svg:not(:root) { + overflow: hidden; + } + figure { + margin: 1em 40px; + } + hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; + } + pre { + overflow: auto; + } + code, + kbd, + pre, + samp { + font-family: monospace, monospace; + font-size: 1em; + } + button, + input, + optgroup, + select, + textarea { + color: inherit; + font: inherit; + margin: 0; + } + button { + overflow: visible; + } + button, + select { + text-transform: none; + } + button, + html input[type="button"], + input[type="reset"], + input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; + } + button[disabled], + html input[disabled] { + cursor: default; + } + button::-moz-focus-inner, + input::-moz-focus-inner { + border: 0; + padding: 0; + } + input { + line-height: normal; + } + input[type="checkbox"], + input[type="radio"] { + box-sizing: border-box; + padding: 0; + } + input[type="number"]::-webkit-inner-spin-button, + input[type="number"]::-webkit-outer-spin-button { + height: auto; + } + input[type="search"] { + -webkit-appearance: textfield; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; + } + input[type="search"]::-webkit-search-cancel-button, + input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; + } + fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + } + legend { + border: 0; + padding: 0; + } + textarea { + overflow: auto; + } + optgroup { + font-weight: bold; + } + table { + border-collapse: collapse; + border-spacing: 0; + } + td, + th { + padding: 0; + } + /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ + @media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + box-shadow: none !important; + text-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } + } + @font-face { + font-family: 'Glyphicons Halflings'; + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); + } + .glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + .glyphicon-asterisk:before { + content: "\2a"; + } + .glyphicon-plus:before { + content: "\2b"; + } + .glyphicon-euro:before, + .glyphicon-eur:before { + content: "\20ac"; + } + .glyphicon-minus:before { + content: "\2212"; + } + .glyphicon-cloud:before { + content: "\2601"; + } + .glyphicon-envelope:before { + content: "\2709"; + } + .glyphicon-pencil:before { + content: "\270f"; + } + .glyphicon-glass:before { + content: "\e001"; + } + .glyphicon-music:before { + content: "\e002"; + } + .glyphicon-search:before { + content: "\e003"; + } + .glyphicon-heart:before { + content: "\e005"; + } + .glyphicon-star:before { + content: "\e006"; + } + .glyphicon-star-empty:before { + content: "\e007"; + } + .glyphicon-user:before { + content: "\e008"; + } + .glyphicon-film:before { + content: "\e009"; + } + .glyphicon-th-large:before { + content: "\e010"; + } + .glyphicon-th:before { + content: "\e011"; + } + .glyphicon-th-list:before { + content: "\e012"; + } + .glyphicon-ok:before { + content: "\e013"; + } + .glyphicon-remove:before { + content: "\e014"; + } + .glyphicon-zoom-in:before { + content: "\e015"; + } + .glyphicon-zoom-out:before { + content: "\e016"; + } + .glyphicon-off:before { + content: "\e017"; + } + .glyphicon-signal:before { + content: "\e018"; + } + .glyphicon-cog:before { + content: "\e019"; + } + .glyphicon-trash:before { + content: "\e020"; + } + .glyphicon-home:before { + content: "\e021"; + } + .glyphicon-file:before { + content: "\e022"; + } + .glyphicon-time:before { + content: "\e023"; + } + .glyphicon-road:before { + content: "\e024"; + } + .glyphicon-download-alt:before { + content: "\e025"; + } + .glyphicon-download:before { + content: "\e026"; + } + .glyphicon-upload:before { + content: "\e027"; + } + .glyphicon-inbox:before { + content: "\e028"; + } + .glyphicon-play-circle:before { + content: "\e029"; + } + .glyphicon-repeat:before { + content: "\e030"; + } + .glyphicon-refresh:before { + content: "\e031"; + } + .glyphicon-list-alt:before { + content: "\e032"; + } + .glyphicon-lock:before { + content: "\e033"; + } + .glyphicon-flag:before { + content: "\e034"; + } + .glyphicon-headphones:before { + content: "\e035"; + } + .glyphicon-volume-off:before { + content: "\e036"; + } + .glyphicon-volume-down:before { + content: "\e037"; + } + .glyphicon-volume-up:before { + content: "\e038"; + } + .glyphicon-qrcode:before { + content: "\e039"; + } + .glyphicon-barcode:before { + content: "\e040"; + } + .glyphicon-tag:before { + content: "\e041"; + } + .glyphicon-tags:before { + content: "\e042"; + } + .glyphicon-book:before { + content: "\e043"; + } + .glyphicon-bookmark:before { + content: "\e044"; + } + .glyphicon-print:before { + content: "\e045"; + } + .glyphicon-camera:before { + content: "\e046"; + } + .glyphicon-font:before { + content: "\e047"; + } + .glyphicon-bold:before { + content: "\e048"; + } + .glyphicon-italic:before { + content: "\e049"; + } + .glyphicon-text-height:before { + content: "\e050"; + } + .glyphicon-text-width:before { + content: "\e051"; + } + .glyphicon-align-left:before { + content: "\e052"; + } + .glyphicon-align-center:before { + content: "\e053"; + } + .glyphicon-align-right:before { + content: "\e054"; + } + .glyphicon-align-justify:before { + content: "\e055"; + } + .glyphicon-list:before { + content: "\e056"; + } + .glyphicon-indent-left:before { + content: "\e057"; + } + .glyphicon-indent-right:before { + content: "\e058"; + } + .glyphicon-facetime-video:before { + content: "\e059"; + } + .glyphicon-picture:before { + content: "\e060"; + } + .glyphicon-map-marker:before { + content: "\e062"; + } + .glyphicon-adjust:before { + content: "\e063"; + } + .glyphicon-tint:before { + content: "\e064"; + } + .glyphicon-edit:before { + content: "\e065"; + } + .glyphicon-share:before { + content: "\e066"; + } + .glyphicon-check:before { + content: "\e067"; + } + .glyphicon-move:before { + content: "\e068"; + } + .glyphicon-step-backward:before { + content: "\e069"; + } + .glyphicon-fast-backward:before { + content: "\e070"; + } + .glyphicon-backward:before { + content: "\e071"; + } + .glyphicon-play:before { + content: "\e072"; + } + .glyphicon-pause:before { + content: "\e073"; + } + .glyphicon-stop:before { + content: "\e074"; + } + .glyphicon-forward:before { + content: "\e075"; + } + .glyphicon-fast-forward:before { + content: "\e076"; + } + .glyphicon-step-forward:before { + content: "\e077"; + } + .glyphicon-eject:before { + content: "\e078"; + } + .glyphicon-chevron-left:before { + content: "\e079"; + } + .glyphicon-chevron-right:before { + content: "\e080"; + } + .glyphicon-plus-sign:before { + content: "\e081"; + } + .glyphicon-minus-sign:before { + content: "\e082"; + } + .glyphicon-remove-sign:before { + content: "\e083"; + } + .glyphicon-ok-sign:before { + content: "\e084"; + } + .glyphicon-question-sign:before { + content: "\e085"; + } + .glyphicon-info-sign:before { + content: "\e086"; + } + .glyphicon-screenshot:before { + content: "\e087"; + } + .glyphicon-remove-circle:before { + content: "\e088"; + } + .glyphicon-ok-circle:before { + content: "\e089"; + } + .glyphicon-ban-circle:before { + content: "\e090"; + } + .glyphicon-arrow-left:before { + content: "\e091"; + } + .glyphicon-arrow-right:before { + content: "\e092"; + } + .glyphicon-arrow-up:before { + content: "\e093"; + } + .glyphicon-arrow-down:before { + content: "\e094"; + } + .glyphicon-share-alt:before { + content: "\e095"; + } + .glyphicon-resize-full:before { + content: "\e096"; + } + .glyphicon-resize-small:before { + content: "\e097"; + } + .glyphicon-exclamation-sign:before { + content: "\e101"; + } + .glyphicon-gift:before { + content: "\e102"; + } + .glyphicon-leaf:before { + content: "\e103"; + } + .glyphicon-fire:before { + content: "\e104"; + } + .glyphicon-eye-open:before { + content: "\e105"; + } + .glyphicon-eye-close:before { + content: "\e106"; + } + .glyphicon-warning-sign:before { + content: "\e107"; + } + .glyphicon-plane:before { + content: "\e108"; + } + .glyphicon-calendar:before { + content: "\e109"; + } + .glyphicon-random:before { + content: "\e110"; + } + .glyphicon-comment:before { + content: "\e111"; + } + .glyphicon-magnet:before { + content: "\e112"; + } + .glyphicon-chevron-up:before { + content: "\e113"; + } + .glyphicon-chevron-down:before { + content: "\e114"; + } + .glyphicon-retweet:before { + content: "\e115"; + } + .glyphicon-shopping-cart:before { + content: "\e116"; + } + .glyphicon-folder-close:before { + content: "\e117"; + } + .glyphicon-folder-open:before { + content: "\e118"; + } + .glyphicon-resize-vertical:before { + content: "\e119"; + } + .glyphicon-resize-horizontal:before { + content: "\e120"; + } + .glyphicon-hdd:before { + content: "\e121"; + } + .glyphicon-bullhorn:before { + content: "\e122"; + } + .glyphicon-bell:before { + content: "\e123"; + } + .glyphicon-certificate:before { + content: "\e124"; + } + .glyphicon-thumbs-up:before { + content: "\e125"; + } + .glyphicon-thumbs-down:before { + content: "\e126"; + } + .glyphicon-hand-right:before { + content: "\e127"; + } + .glyphicon-hand-left:before { + content: "\e128"; + } + .glyphicon-hand-up:before { + content: "\e129"; + } + .glyphicon-hand-down:before { + content: "\e130"; + } + .glyphicon-circle-arrow-right:before { + content: "\e131"; + } + .glyphicon-circle-arrow-left:before { + content: "\e132"; + } + .glyphicon-circle-arrow-up:before { + content: "\e133"; + } + .glyphicon-circle-arrow-down:before { + content: "\e134"; + } + .glyphicon-globe:before { + content: "\e135"; + } + .glyphicon-wrench:before { + content: "\e136"; + } + .glyphicon-tasks:before { + content: "\e137"; + } + .glyphicon-filter:before { + content: "\e138"; + } + .glyphicon-briefcase:before { + content: "\e139"; + } + .glyphicon-fullscreen:before { + content: "\e140"; + } + .glyphicon-dashboard:before { + content: "\e141"; + } + .glyphicon-paperclip:before { + content: "\e142"; + } + .glyphicon-heart-empty:before { + content: "\e143"; + } + .glyphicon-link:before { + content: "\e144"; + } + .glyphicon-phone:before { + content: "\e145"; + } + .glyphicon-pushpin:before { + content: "\e146"; + } + .glyphicon-usd:before { + content: "\e148"; + } + .glyphicon-gbp:before { + content: "\e149"; + } + .glyphicon-sort:before { + content: "\e150"; + } + .glyphicon-sort-by-alphabet:before { + content: "\e151"; + } + .glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; + } + .glyphicon-sort-by-order:before { + content: "\e153"; + } + .glyphicon-sort-by-order-alt:before { + content: "\e154"; + } + .glyphicon-sort-by-attributes:before { + content: "\e155"; + } + .glyphicon-sort-by-attributes-alt:before { + content: "\e156"; + } + .glyphicon-unchecked:before { + content: "\e157"; + } + .glyphicon-expand:before { + content: "\e158"; + } + .glyphicon-collapse-down:before { + content: "\e159"; + } + .glyphicon-collapse-up:before { + content: "\e160"; + } + .glyphicon-log-in:before { + content: "\e161"; + } + .glyphicon-flash:before { + content: "\e162"; + } + .glyphicon-log-out:before { + content: "\e163"; + } + .glyphicon-new-window:before { + content: "\e164"; + } + .glyphicon-record:before { + content: "\e165"; + } + .glyphicon-save:before { + content: "\e166"; + } + .glyphicon-open:before { + content: "\e167"; + } + .glyphicon-saved:before { + content: "\e168"; + } + .glyphicon-import:before { + content: "\e169"; + } + .glyphicon-export:before { + content: "\e170"; + } + .glyphicon-send:before { + content: "\e171"; + } + .glyphicon-floppy-disk:before { + content: "\e172"; + } + .glyphicon-floppy-saved:before { + content: "\e173"; + } + .glyphicon-floppy-remove:before { + content: "\e174"; + } + .glyphicon-floppy-save:before { + content: "\e175"; + } + .glyphicon-floppy-open:before { + content: "\e176"; + } + .glyphicon-credit-card:before { + content: "\e177"; + } + .glyphicon-transfer:before { + content: "\e178"; + } + .glyphicon-cutlery:before { + content: "\e179"; + } + .glyphicon-header:before { + content: "\e180"; + } + .glyphicon-compressed:before { + content: "\e181"; + } + .glyphicon-earphone:before { + content: "\e182"; + } + .glyphicon-phone-alt:before { + content: "\e183"; + } + .glyphicon-tower:before { + content: "\e184"; + } + .glyphicon-stats:before { + content: "\e185"; + } + .glyphicon-sd-video:before { + content: "\e186"; + } + .glyphicon-hd-video:before { + content: "\e187"; + } + .glyphicon-subtitles:before { + content: "\e188"; + } + .glyphicon-sound-stereo:before { + content: "\e189"; + } + .glyphicon-sound-dolby:before { + content: "\e190"; + } + .glyphicon-sound-5-1:before { + content: "\e191"; + } + .glyphicon-sound-6-1:before { + content: "\e192"; + } + .glyphicon-sound-7-1:before { + content: "\e193"; + } + .glyphicon-copyright-mark:before { + content: "\e194"; + } + .glyphicon-registration-mark:before { + content: "\e195"; + } + .glyphicon-cloud-download:before { + content: "\e197"; + } + .glyphicon-cloud-upload:before { + content: "\e198"; + } + .glyphicon-tree-conifer:before { + content: "\e199"; + } + .glyphicon-tree-deciduous:before { + content: "\e200"; + } + .glyphicon-cd:before { + content: "\e201"; + } + .glyphicon-save-file:before { + content: "\e202"; + } + .glyphicon-open-file:before { + content: "\e203"; + } + .glyphicon-level-up:before { + content: "\e204"; + } + .glyphicon-copy:before { + content: "\e205"; + } + .glyphicon-paste:before { + content: "\e206"; + } + .glyphicon-alert:before { + content: "\e209"; + } + .glyphicon-equalizer:before { + content: "\e210"; + } + .glyphicon-king:before { + content: "\e211"; + } + .glyphicon-queen:before { + content: "\e212"; + } + .glyphicon-pawn:before { + content: "\e213"; + } + .glyphicon-bishop:before { + content: "\e214"; + } + .glyphicon-knight:before { + content: "\e215"; + } + .glyphicon-baby-formula:before { + content: "\e216"; + } + .glyphicon-tent:before { + content: "\26fa"; + } + .glyphicon-blackboard:before { + content: "\e218"; + } + .glyphicon-bed:before { + content: "\e219"; + } + .glyphicon-apple:before { + content: "\f8ff"; + } + .glyphicon-erase:before { + content: "\e221"; + } + .glyphicon-hourglass:before { + content: "\231b"; + } + .glyphicon-lamp:before { + content: "\e223"; + } + .glyphicon-duplicate:before { + content: "\e224"; + } + .glyphicon-piggy-bank:before { + content: "\e225"; + } + .glyphicon-scissors:before { + content: "\e226"; + } + .glyphicon-bitcoin:before { + content: "\e227"; + } + .glyphicon-btc:before { + content: "\e227"; + } + .glyphicon-xbt:before { + content: "\e227"; + } + .glyphicon-yen:before { + content: "\00a5"; + } + .glyphicon-jpy:before { + content: "\00a5"; + } + .glyphicon-ruble:before { + content: "\20bd"; + } + .glyphicon-rub:before { + content: "\20bd"; + } + .glyphicon-scale:before { + content: "\e230"; + } + .glyphicon-ice-lolly:before { + content: "\e231"; + } + .glyphicon-ice-lolly-tasted:before { + content: "\e232"; + } + .glyphicon-education:before { + content: "\e233"; + } + .glyphicon-option-horizontal:before { + content: "\e234"; + } + .glyphicon-option-vertical:before { + content: "\e235"; + } + .glyphicon-menu-hamburger:before { + content: "\e236"; + } + .glyphicon-modal-window:before { + content: "\e237"; + } + .glyphicon-oil:before { + content: "\e238"; + } + .glyphicon-grain:before { + content: "\e239"; + } + .glyphicon-sunglasses:before { + content: "\e240"; + } + .glyphicon-text-size:before { + content: "\e241"; + } + .glyphicon-text-color:before { + content: "\e242"; + } + .glyphicon-text-background:before { + content: "\e243"; + } + .glyphicon-object-align-top:before { + content: "\e244"; + } + .glyphicon-object-align-bottom:before { + content: "\e245"; + } + .glyphicon-object-align-horizontal:before { + content: "\e246"; + } + .glyphicon-object-align-left:before { + content: "\e247"; + } + .glyphicon-object-align-vertical:before { + content: "\e248"; + } + .glyphicon-object-align-right:before { + content: "\e249"; + } + .glyphicon-triangle-right:before { + content: "\e250"; + } + .glyphicon-triangle-left:before { + content: "\e251"; + } + .glyphicon-triangle-bottom:before { + content: "\e252"; + } + .glyphicon-triangle-top:before { + content: "\e253"; + } + .glyphicon-console:before { + content: "\e254"; + } + .glyphicon-superscript:before { + content: "\e255"; + } + .glyphicon-subscript:before { + content: "\e256"; + } + .glyphicon-menu-left:before { + content: "\e257"; + } + .glyphicon-menu-right:before { + content: "\e258"; + } + .glyphicon-menu-down:before { + content: "\e259"; + } + .glyphicon-menu-up:before { + content: "\e260"; + } + * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + *:before, + *:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + } + body { + font-family: "Comic Neue", "Comic Sans MS", "Comic Sans"; + font-size: 14px; + line-height: 1.42857143; + color: #000000; + background-color: #ffffff; + } + input, + button, + select, + textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; + } + a { + color: #4d7ecb; + text-decoration: none; + } + a:hover, + a:focus { + color: #2e599d; + text-decoration: underline; + } + a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + figure { + margin: 0; + } + img { + vertical-align: middle; + } + .img-responsive, + .thumbnail > img, + .thumbnail a > img, + .carousel-inner > .item > img, + .carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + } + .img-rounded { + border-radius: 3px; + } + .img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 2px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; + } + .img-circle { + border-radius: 50%; + } + hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; + } + .sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + } + .sr-only-focusable:active, + .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } + [role="button"] { + cursor: pointer; + } + h1, + h2, + h3, + h4, + h5, + h6, + .h1, + .h2, + .h3, + .h4, + .h5, + .h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; + } + h1 small, + h2 small, + h3 small, + h4 small, + h5 small, + h6 small, + .h1 small, + .h2 small, + .h3 small, + .h4 small, + .h5 small, + .h6 small, + h1 .small, + h2 .small, + h3 .small, + h4 .small, + h5 .small, + h6 .small, + .h1 .small, + .h2 .small, + .h3 .small, + .h4 .small, + .h5 .small, + .h6 .small { + font-weight: normal; + line-height: 1; + color: #777777; + } + h1, + .h1, + h2, + .h2, + h3, + .h3 { + margin-top: 20px; + margin-bottom: 10px; + } + h1 small, + .h1 small, + h2 small, + .h2 small, + h3 small, + .h3 small, + h1 .small, + .h1 .small, + h2 .small, + .h2 .small, + h3 .small, + .h3 .small { + font-size: 65%; + } + h4, + .h4, + h5, + .h5, + h6, + .h6 { + margin-top: 10px; + margin-bottom: 10px; + } + h4 small, + .h4 small, + h5 small, + .h5 small, + h6 small, + .h6 small, + h4 .small, + .h4 .small, + h5 .small, + .h5 .small, + h6 .small, + .h6 .small { + font-size: 75%; + } + h1, + .h1 { + font-size: 36px; + } + h2, + .h2 { + font-size: 30px; + } + h3, + .h3 { + font-size: 24px; + } + h4, + .h4 { + font-size: 18px; + } + h5, + .h5 { + font-size: 14px; + } + h6, + .h6 { + font-size: 12px; + } + p { + margin: 0 0 10px; + } + .lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; + } + @media (min-width: 768px) { + .lead { + font-size: 21px; + } + } + small, + .small { + font-size: 85%; + } + mark, + .mark { + background-color: #fcf8e3; + padding: .2em; + } + .text-left { + text-align: left; + } + .text-right { + text-align: right; + } + .text-center { + text-align: center; + } + .text-justify { + text-align: justify; + } + .text-nowrap { + white-space: nowrap; + } + .text-lowercase { + text-transform: lowercase; + } + .text-uppercase { + text-transform: uppercase; + } + .text-capitalize { + text-transform: capitalize; + } + .text-muted { + color: #777777; + } + .text-primary { + color: #4d7ecb; + } + a.text-primary:hover { + color: #3465b1; + } + .text-success { + color: #3c763d; + } + a.text-success:hover { + color: #2b542c; + } + .text-info { + color: #31708f; + } + a.text-info:hover { + color: #245269; + } + .text-warning { + color: #8a6d3b; + } + a.text-warning:hover { + color: #66512c; + } + .text-danger { + color: #a94442; + } + a.text-danger:hover { + color: #843534; + } + .bg-primary { + color: #fff; + background-color: #4d7ecb; + } + a.bg-primary:hover { + background-color: #3465b1; + } + .bg-success { + background-color: #dff0d8; + } + a.bg-success:hover { + background-color: #c1e2b3; + } + .bg-info { + background-color: #d9edf7; + } + a.bg-info:hover { + background-color: #afd9ee; + } + .bg-warning { + background-color: #fcf8e3; + } + a.bg-warning:hover { + background-color: #f7ecb5; + } + .bg-danger { + background-color: #f2dede; + } + a.bg-danger:hover { + background-color: #e4b9b9; + } + .page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; + } + ul, + ol { + margin-top: 0; + margin-bottom: 10px; + } + ul ul, + ol ul, + ul ol, + ol ol { + margin-bottom: 0; + } + .list-unstyled { + padding-left: 0; + list-style: none; + } + .list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; + } + .list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; + } + dl { + margin-top: 0; + margin-bottom: 20px; + } + dt, + dd { + line-height: 1.42857143; + } + dt { + font-weight: bold; + } + dd { + margin-left: 0; + } + @media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + } + abbr[title], + abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777777; + } + .initialism { + font-size: 90%; + text-transform: uppercase; + } + blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eeeeee; + } + blockquote p:last-child, + blockquote ul:last-child, + blockquote ol:last-child { + margin-bottom: 0; + } + blockquote footer, + blockquote small, + blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777777; + } + blockquote footer:before, + blockquote small:before, + blockquote .small:before { + content: '\2014 \00A0'; + } + .blockquote-reverse, + blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; + text-align: right; + } + .blockquote-reverse footer:before, + blockquote.pull-right footer:before, + .blockquote-reverse small:before, + blockquote.pull-right small:before, + .blockquote-reverse .small:before, + blockquote.pull-right .small:before { + content: ''; + } + .blockquote-reverse footer:after, + blockquote.pull-right footer:after, + .blockquote-reverse small:after, + blockquote.pull-right small:after, + .blockquote-reverse .small:after, + blockquote.pull-right .small:after { + content: '\00A0 \2014'; + } + address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; + } + code, + kbd, + pre, + samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + } + code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 2px; + } + kbd { + padding: 2px 4px; + font-size: 90%; + color: #ffffff; + background-color: #333333; + border-radius: 1px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + } + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; + } + pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #333333; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 2px; + } + pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } + .pre-scrollable { + max-height: 340px; + overflow-y: scroll; + } + .container { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; + } + @media (min-width: 768px) { + .container { + width: 750px; + } + } + @media (min-width: 992px) { + .container { + width: 970px; + } + } + @media (min-width: 1200px) { + .container { + width: 1170px; + } + } + .container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 15px; + padding-right: 15px; + } + .row { + margin-left: -15px; + margin-right: -15px; + } + .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-left: 15px; + padding-right: 15px; + } + .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; + } + .col-xs-12 { + width: 100%; + } + .col-xs-11 { + width: 91.66666667%; + } + .col-xs-10 { + width: 83.33333333%; + } + .col-xs-9 { + width: 75%; + } + .col-xs-8 { + width: 66.66666667%; + } + .col-xs-7 { + width: 58.33333333%; + } + .col-xs-6 { + width: 50%; + } + .col-xs-5 { + width: 41.66666667%; + } + .col-xs-4 { + width: 33.33333333%; + } + .col-xs-3 { + width: 25%; + } + .col-xs-2 { + width: 16.66666667%; + } + .col-xs-1 { + width: 8.33333333%; + } + .col-xs-pull-12 { + right: 100%; + } + .col-xs-pull-11 { + right: 91.66666667%; + } + .col-xs-pull-10 { + right: 83.33333333%; + } + .col-xs-pull-9 { + right: 75%; + } + .col-xs-pull-8 { + right: 66.66666667%; + } + .col-xs-pull-7 { + right: 58.33333333%; + } + .col-xs-pull-6 { + right: 50%; + } + .col-xs-pull-5 { + right: 41.66666667%; + } + .col-xs-pull-4 { + right: 33.33333333%; + } + .col-xs-pull-3 { + right: 25%; + } + .col-xs-pull-2 { + right: 16.66666667%; + } + .col-xs-pull-1 { + right: 8.33333333%; + } + .col-xs-pull-0 { + right: auto; + } + .col-xs-push-12 { + left: 100%; + } + .col-xs-push-11 { + left: 91.66666667%; + } + .col-xs-push-10 { + left: 83.33333333%; + } + .col-xs-push-9 { + left: 75%; + } + .col-xs-push-8 { + left: 66.66666667%; + } + .col-xs-push-7 { + left: 58.33333333%; + } + .col-xs-push-6 { + left: 50%; + } + .col-xs-push-5 { + left: 41.66666667%; + } + .col-xs-push-4 { + left: 33.33333333%; + } + .col-xs-push-3 { + left: 25%; + } + .col-xs-push-2 { + left: 16.66666667%; + } + .col-xs-push-1 { + left: 8.33333333%; + } + .col-xs-push-0 { + left: auto; + } + .col-xs-offset-12 { + margin-left: 100%; + } + .col-xs-offset-11 { + margin-left: 91.66666667%; + } + .col-xs-offset-10 { + margin-left: 83.33333333%; + } + .col-xs-offset-9 { + margin-left: 75%; + } + .col-xs-offset-8 { + margin-left: 66.66666667%; + } + .col-xs-offset-7 { + margin-left: 58.33333333%; + } + .col-xs-offset-6 { + margin-left: 50%; + } + .col-xs-offset-5 { + margin-left: 41.66666667%; + } + .col-xs-offset-4 { + margin-left: 33.33333333%; + } + .col-xs-offset-3 { + margin-left: 25%; + } + .col-xs-offset-2 { + margin-left: 16.66666667%; + } + .col-xs-offset-1 { + margin-left: 8.33333333%; + } + .col-xs-offset-0 { + margin-left: 0%; + } + @media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0%; + } + } + @media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0%; + } + } + @media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0%; + } + } + table { + background-color: transparent; + } + caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777777; + text-align: left; + } + th { + text-align: left; + } + .table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; + } + .table > thead > tr > th, + .table > tbody > tr > th, + .table > tfoot > tr > th, + .table > thead > tr > td, + .table > tbody > tr > td, + .table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #dddddd; + } + .table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; + } + .table > caption + thead > tr:first-child > th, + .table > colgroup + thead > tr:first-child > th, + .table > thead:first-child > tr:first-child > th, + .table > caption + thead > tr:first-child > td, + .table > colgroup + thead > tr:first-child > td, + .table > thead:first-child > tr:first-child > td { + border-top: 0; + } + .table > tbody + tbody { + border-top: 2px solid #dddddd; + } + .table .table { + background-color: #ffffff; + } + .table-condensed > thead > tr > th, + .table-condensed > tbody > tr > th, + .table-condensed > tfoot > tr > th, + .table-condensed > thead > tr > td, + .table-condensed > tbody > tr > td, + .table-condensed > tfoot > tr > td { + padding: 5px; + } + .table-bordered { + border: 1px solid #dddddd; + } + .table-bordered > thead > tr > th, + .table-bordered > tbody > tr > th, + .table-bordered > tfoot > tr > th, + .table-bordered > thead > tr > td, + .table-bordered > tbody > tr > td, + .table-bordered > tfoot > tr > td { + border: 1px solid #dddddd; + } + .table-bordered > thead > tr > th, + .table-bordered > thead > tr > td { + border-bottom-width: 2px; + } + .table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; + } + .table-hover > tbody > tr:hover { + background-color: #f5f5f5; + } + table col[class*="col-"] { + position: static; + float: none; + display: table-column; + } + table td[class*="col-"], + table th[class*="col-"] { + position: static; + float: none; + display: table-cell; + } + .table > thead > tr > td.active, + .table > tbody > tr > td.active, + .table > tfoot > tr > td.active, + .table > thead > tr > th.active, + .table > tbody > tr > th.active, + .table > tfoot > tr > th.active, + .table > thead > tr.active > td, + .table > tbody > tr.active > td, + .table > tfoot > tr.active > td, + .table > thead > tr.active > th, + .table > tbody > tr.active > th, + .table > tfoot > tr.active > th { + background-color: #f5f5f5; + } + .table-hover > tbody > tr > td.active:hover, + .table-hover > tbody > tr > th.active:hover, + .table-hover > tbody > tr.active:hover > td, + .table-hover > tbody > tr:hover > .active, + .table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; + } + .table > thead > tr > td.success, + .table > tbody > tr > td.success, + .table > tfoot > tr > td.success, + .table > thead > tr > th.success, + .table > tbody > tr > th.success, + .table > tfoot > tr > th.success, + .table > thead > tr.success > td, + .table > tbody > tr.success > td, + .table > tfoot > tr.success > td, + .table > thead > tr.success > th, + .table > tbody > tr.success > th, + .table > tfoot > tr.success > th { + background-color: #dff0d8; + } + .table-hover > tbody > tr > td.success:hover, + .table-hover > tbody > tr > th.success:hover, + .table-hover > tbody > tr.success:hover > td, + .table-hover > tbody > tr:hover > .success, + .table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; + } + .table > thead > tr > td.info, + .table > tbody > tr > td.info, + .table > tfoot > tr > td.info, + .table > thead > tr > th.info, + .table > tbody > tr > th.info, + .table > tfoot > tr > th.info, + .table > thead > tr.info > td, + .table > tbody > tr.info > td, + .table > tfoot > tr.info > td, + .table > thead > tr.info > th, + .table > tbody > tr.info > th, + .table > tfoot > tr.info > th { + background-color: #d9edf7; + } + .table-hover > tbody > tr > td.info:hover, + .table-hover > tbody > tr > th.info:hover, + .table-hover > tbody > tr.info:hover > td, + .table-hover > tbody > tr:hover > .info, + .table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; + } + .table > thead > tr > td.warning, + .table > tbody > tr > td.warning, + .table > tfoot > tr > td.warning, + .table > thead > tr > th.warning, + .table > tbody > tr > th.warning, + .table > tfoot > tr > th.warning, + .table > thead > tr.warning > td, + .table > tbody > tr.warning > td, + .table > tfoot > tr.warning > td, + .table > thead > tr.warning > th, + .table > tbody > tr.warning > th, + .table > tfoot > tr.warning > th { + background-color: #fcf8e3; + } + .table-hover > tbody > tr > td.warning:hover, + .table-hover > tbody > tr > th.warning:hover, + .table-hover > tbody > tr.warning:hover > td, + .table-hover > tbody > tr:hover > .warning, + .table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; + } + .table > thead > tr > td.danger, + .table > tbody > tr > td.danger, + .table > tfoot > tr > td.danger, + .table > thead > tr > th.danger, + .table > tbody > tr > th.danger, + .table > tfoot > tr > th.danger, + .table > thead > tr.danger > td, + .table > tbody > tr.danger > td, + .table > tfoot > tr.danger > td, + .table > thead > tr.danger > th, + .table > tbody > tr.danger > th, + .table > tfoot > tr.danger > th { + background-color: #f2dede; + } + .table-hover > tbody > tr > td.danger:hover, + .table-hover > tbody > tr > th.danger:hover, + .table-hover > tbody > tr.danger:hover > td, + .table-hover > tbody > tr:hover > .danger, + .table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; + } + .table-responsive { + overflow-x: auto; + min-height: 0.01%; + } + @media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } + } + fieldset { + padding: 0; + margin: 0; + border: 0; + min-width: 0; + } + legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; + } + label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; + } + input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + input[type="radio"], + input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; + } + input[type="file"] { + display: block; + } + input[type="range"] { + display: block; + width: 100%; + } + select[multiple], + select[size] { + height: auto; + } + input[type="file"]:focus, + input[type="radio"]:focus, + input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; + } + .form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555555; + background-color: #ffffff; + background-image: none; + border: 1px solid #cccccc; + border-radius: 2px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + } + .form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); + } + .form-control::-moz-placeholder { + color: #777777; + opacity: 1; + } + .form-control:-ms-input-placeholder { + color: #777777; + } + .form-control::-webkit-input-placeholder { + color: #777777; + } + .form-control[disabled], + .form-control[readonly], + fieldset[disabled] .form-control { + background-color: #eeeeee; + opacity: 1; + } + .form-control[disabled], + fieldset[disabled] .form-control { + cursor: not-allowed; + } + textarea.form-control { + height: auto; + } + input[type="search"] { + -webkit-appearance: none; + } + @media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } + } + .form-group { + margin-bottom: 15px; + } + .radio, + .checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + } + .radio label, + .checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } + .radio input[type="radio"], + .radio-inline input[type="radio"], + .checkbox input[type="checkbox"], + .checkbox-inline input[type="checkbox"] { + position: absolute; + margin-left: -20px; + margin-top: 4px \9; + } + .radio + .radio, + .checkbox + .checkbox { + margin-top: -5px; + } + .radio-inline, + .checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; + } + .radio-inline + .radio-inline, + .checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; + } + input[type="radio"][disabled], + input[type="checkbox"][disabled], + input[type="radio"].disabled, + input[type="checkbox"].disabled, + fieldset[disabled] input[type="radio"], + fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; + } + .radio-inline.disabled, + .checkbox-inline.disabled, + fieldset[disabled] .radio-inline, + fieldset[disabled] .checkbox-inline { + cursor: not-allowed; + } + .radio.disabled label, + .checkbox.disabled label, + fieldset[disabled] .radio label, + fieldset[disabled] .checkbox label { + cursor: not-allowed; + } + .form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; + min-height: 34px; + } + .form-control-static.input-lg, + .form-control-static.input-sm { + padding-left: 0; + padding-right: 0; + } + .input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 1px; + } + select.input-sm { + height: 30px; + line-height: 30px; + } + textarea.input-sm, + select[multiple].input-sm { + height: auto; + } + .form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 1px; + } + select.form-group-sm .form-control { + height: 30px; + line-height: 30px; + } + textarea.form-group-sm .form-control, + select[multiple].form-group-sm .form-control { + height: auto; + } + .form-group-sm .form-control-static { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + min-height: 32px; + } + .input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 3px; + } + select.input-lg { + height: 46px; + line-height: 46px; + } + textarea.input-lg, + select[multiple].input-lg { + height: auto; + } + .form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 3px; + } + select.form-group-lg .form-control { + height: 46px; + line-height: 46px; + } + textarea.form-group-lg .form-control, + select[multiple].form-group-lg .form-control { + height: auto; + } + .form-group-lg .form-control-static { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + min-height: 38px; + } + .has-feedback { + position: relative; + } + .has-feedback .form-control { + padding-right: 42.5px; + } + .form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; + } + .input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; + } + .input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; + } + .has-success .help-block, + .has-success .control-label, + .has-success .radio, + .has-success .checkbox, + .has-success .radio-inline, + .has-success .checkbox-inline, + .has-success.radio label, + .has-success.checkbox label, + .has-success.radio-inline label, + .has-success.checkbox-inline label { + color: #3c763d; + } + .has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + } + .has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; + } + .has-success .input-group-addon { + color: #3c763d; + border-color: #3c763d; + background-color: #dff0d8; + } + .has-success .form-control-feedback { + color: #3c763d; + } + .has-warning .help-block, + .has-warning .control-label, + .has-warning .radio, + .has-warning .checkbox, + .has-warning .radio-inline, + .has-warning .checkbox-inline, + .has-warning.radio label, + .has-warning.checkbox label, + .has-warning.radio-inline label, + .has-warning.checkbox-inline label { + color: #8a6d3b; + } + .has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + } + .has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b; + } + .has-warning .input-group-addon { + color: #8a6d3b; + border-color: #8a6d3b; + background-color: #fcf8e3; + } + .has-warning .form-control-feedback { + color: #8a6d3b; + } + .has-error .help-block, + .has-error .control-label, + .has-error .radio, + .has-error .checkbox, + .has-error .radio-inline, + .has-error .checkbox-inline, + .has-error.radio label, + .has-error.checkbox label, + .has-error.radio-inline label, + .has-error.checkbox-inline label { + color: #a94442; + } + .has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + } + .has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483; + } + .has-error .input-group-addon { + color: #a94442; + border-color: #a94442; + background-color: #f2dede; + } + .has-error .form-control-feedback { + color: #a94442; + } + .has-feedback label ~ .form-control-feedback { + top: 25px; + } + .has-feedback label.sr-only ~ .form-control-feedback { + top: 0; + } + .help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #404040; + } + @media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } + } + .form-horizontal .radio, + .form-horizontal .checkbox, + .form-horizontal .radio-inline, + .form-horizontal .checkbox-inline { + margin-top: 0; + margin-bottom: 0; + padding-top: 7px; + } + .form-horizontal .radio, + .form-horizontal .checkbox { + min-height: 27px; + } + .form-horizontal .form-group { + margin-left: -15px; + margin-right: -15px; + } + @media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 7px; + } + } + .form-horizontal .has-feedback .form-control-feedback { + right: 15px; + } + @media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.3px; + } + } + @media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } + } + .btn { + display: inline-block; + margin-bottom: 0; + font-weight: normal; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + border-radius: 2px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + .btn:focus, + .btn:active:focus, + .btn.active:focus, + .btn.focus, + .btn:active.focus, + .btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + .btn:hover, + .btn:focus, + .btn.focus { + color: #333333; + text-decoration: none; + } + .btn:active, + .btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + } + .btn.disabled, + .btn[disabled], + fieldset[disabled] .btn { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + } + .btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; + } + .btn-default:hover, + .btn-default:focus, + .btn-default.focus, + .btn-default:active, + .btn-default.active, + .open > .dropdown-toggle.btn-default { + color: #333333; + background-color: #e6e6e6; + border-color: #adadad; + } + .btn-default:active, + .btn-default.active, + .open > .dropdown-toggle.btn-default { + background-image: none; + } + .btn-default.disabled, + .btn-default[disabled], + fieldset[disabled] .btn-default, + .btn-default.disabled:hover, + .btn-default[disabled]:hover, + fieldset[disabled] .btn-default:hover, + .btn-default.disabled:focus, + .btn-default[disabled]:focus, + fieldset[disabled] .btn-default:focus, + .btn-default.disabled.focus, + .btn-default[disabled].focus, + fieldset[disabled] .btn-default.focus, + .btn-default.disabled:active, + .btn-default[disabled]:active, + fieldset[disabled] .btn-default:active, + .btn-default.disabled.active, + .btn-default[disabled].active, + fieldset[disabled] .btn-default.active { + background-color: #ffffff; + border-color: #cccccc; + } + .btn-default .badge { + color: #ffffff; + background-color: #333333; + } + .btn-primary { + color: #ffffff; + background-color: #4d7ecb; + border-color: #3a70c5; + } + .btn-primary:hover, + .btn-primary:focus, + .btn-primary.focus, + .btn-primary:active, + .btn-primary.active, + .open > .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #3465b1; + border-color: #2c5596; + } + .btn-primary:active, + .btn-primary.active, + .open > .dropdown-toggle.btn-primary { + background-image: none; + } + .btn-primary.disabled, + .btn-primary[disabled], + fieldset[disabled] .btn-primary, + .btn-primary.disabled:hover, + .btn-primary[disabled]:hover, + fieldset[disabled] .btn-primary:hover, + .btn-primary.disabled:focus, + .btn-primary[disabled]:focus, + fieldset[disabled] .btn-primary:focus, + .btn-primary.disabled.focus, + .btn-primary[disabled].focus, + fieldset[disabled] .btn-primary.focus, + .btn-primary.disabled:active, + .btn-primary[disabled]:active, + fieldset[disabled] .btn-primary:active, + .btn-primary.disabled.active, + .btn-primary[disabled].active, + fieldset[disabled] .btn-primary.active { + background-color: #4d7ecb; + border-color: #3a70c5; + } + .btn-primary .badge { + color: #4d7ecb; + background-color: #ffffff; + } + .btn-success { + color: #ffffff; + background-color: #d5e0a7; + border-color: #ccd994; + } + .btn-success:hover, + .btn-success:focus, + .btn-success.focus, + .btn-success:active, + .btn-success.active, + .open > .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #c3d381; + border-color: #b6c967; + } + .btn-success:active, + .btn-success.active, + .open > .dropdown-toggle.btn-success { + background-image: none; + } + .btn-success.disabled, + .btn-success[disabled], + fieldset[disabled] .btn-success, + .btn-success.disabled:hover, + .btn-success[disabled]:hover, + fieldset[disabled] .btn-success:hover, + .btn-success.disabled:focus, + .btn-success[disabled]:focus, + fieldset[disabled] .btn-success:focus, + .btn-success.disabled.focus, + .btn-success[disabled].focus, + fieldset[disabled] .btn-success.focus, + .btn-success.disabled:active, + .btn-success[disabled]:active, + fieldset[disabled] .btn-success:active, + .btn-success.disabled.active, + .btn-success[disabled].active, + fieldset[disabled] .btn-success.active { + background-color: #d5e0a7; + border-color: #ccd994; + } + .btn-success .badge { + color: #d5e0a7; + background-color: #ffffff; + } + .btn-info { + color: #ffffff; + background-color: #c6c6c6; + border-color: #b9b9b9; + } + .btn-info:hover, + .btn-info:focus, + .btn-info.focus, + .btn-info:active, + .btn-info.active, + .open > .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #adadad; + border-color: #9b9b9b; + } + .btn-info:active, + .btn-info.active, + .open > .dropdown-toggle.btn-info { + background-image: none; + } + .btn-info.disabled, + .btn-info[disabled], + fieldset[disabled] .btn-info, + .btn-info.disabled:hover, + .btn-info[disabled]:hover, + fieldset[disabled] .btn-info:hover, + .btn-info.disabled:focus, + .btn-info[disabled]:focus, + fieldset[disabled] .btn-info:focus, + .btn-info.disabled.focus, + .btn-info[disabled].focus, + fieldset[disabled] .btn-info.focus, + .btn-info.disabled:active, + .btn-info[disabled]:active, + fieldset[disabled] .btn-info:active, + .btn-info.disabled.active, + .btn-info[disabled].active, + fieldset[disabled] .btn-info.active { + background-color: #c6c6c6; + border-color: #b9b9b9; + } + .btn-info .badge { + color: #c6c6c6; + background-color: #ffffff; + } + .btn-warning { + color: #ffffff; + background-color: #f2edac; + border-color: #efe896; + } + .btn-warning:hover, + .btn-warning:focus, + .btn-warning.focus, + .btn-warning:active, + .btn-warning.active, + .open > .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ebe380; + border-color: #e6dd61; + } + .btn-warning:active, + .btn-warning.active, + .open > .dropdown-toggle.btn-warning { + background-image: none; + } + .btn-warning.disabled, + .btn-warning[disabled], + fieldset[disabled] .btn-warning, + .btn-warning.disabled:hover, + .btn-warning[disabled]:hover, + fieldset[disabled] .btn-warning:hover, + .btn-warning.disabled:focus, + .btn-warning[disabled]:focus, + fieldset[disabled] .btn-warning:focus, + .btn-warning.disabled.focus, + .btn-warning[disabled].focus, + fieldset[disabled] .btn-warning.focus, + .btn-warning.disabled:active, + .btn-warning[disabled]:active, + fieldset[disabled] .btn-warning:active, + .btn-warning.disabled.active, + .btn-warning[disabled].active, + fieldset[disabled] .btn-warning.active { + background-color: #f2edac; + border-color: #efe896; + } + .btn-warning .badge { + color: #f2edac; + background-color: #ffffff; + } + .btn-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; + } + .btn-danger:hover, + .btn-danger:focus, + .btn-danger.focus, + .btn-danger:active, + .btn-danger.active, + .open > .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #c9302c; + border-color: #ac2925; + } + .btn-danger:active, + .btn-danger.active, + .open > .dropdown-toggle.btn-danger { + background-image: none; + } + .btn-danger.disabled, + .btn-danger[disabled], + fieldset[disabled] .btn-danger, + .btn-danger.disabled:hover, + .btn-danger[disabled]:hover, + fieldset[disabled] .btn-danger:hover, + .btn-danger.disabled:focus, + .btn-danger[disabled]:focus, + fieldset[disabled] .btn-danger:focus, + .btn-danger.disabled.focus, + .btn-danger[disabled].focus, + fieldset[disabled] .btn-danger.focus, + .btn-danger.disabled:active, + .btn-danger[disabled]:active, + fieldset[disabled] .btn-danger:active, + .btn-danger.disabled.active, + .btn-danger[disabled].active, + fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; + } + .btn-danger .badge { + color: #d9534f; + background-color: #ffffff; + } + .btn-link { + color: #4d7ecb; + font-weight: normal; + border-radius: 0; + } + .btn-link, + .btn-link:active, + .btn-link.active, + .btn-link[disabled], + fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + } + .btn-link, + .btn-link:hover, + .btn-link:focus, + .btn-link:active { + border-color: transparent; + } + .btn-link:hover, + .btn-link:focus { + color: #2e599d; + text-decoration: underline; + background-color: transparent; + } + .btn-link[disabled]:hover, + fieldset[disabled] .btn-link:hover, + .btn-link[disabled]:focus, + fieldset[disabled] .btn-link:focus { + color: #777777; + text-decoration: none; + } + .btn-lg, + .btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 3px; + } + .btn-sm, + .btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 1px; + } + .btn-xs, + .btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 1px; + } + .btn-block { + display: block; + width: 100%; + } + .btn-block + .btn-block { + margin-top: 5px; + } + input[type="submit"].btn-block, + input[type="reset"].btn-block, + input[type="button"].btn-block { + width: 100%; + } + .fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + } + .fade.in { + opacity: 1; + } + .collapse { + display: none; + } + .collapse.in { + display: block; + } + tr.collapse.in { + display: table-row; + } + tbody.collapse.in { + display: table-row-group; + } + .collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-property: height, visibility; + transition-property: height, visibility; + -webkit-transition-duration: 0.35s; + transition-duration: 0.35s; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; + } + .caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } + .dropup, + .dropdown { + position: relative; + } + .dropdown-toggle:focus { + outline: 0; + } + .dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 2px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; + } + .dropdown-menu.pull-right { + right: 0; + left: auto; + } + .dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } + .dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333333; + white-space: nowrap; + } + .dropdown-menu > li > a:hover, + .dropdown-menu > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; + } + .dropdown-menu > .active > a, + .dropdown-menu > .active > a:hover, + .dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #4d7ecb; + } + .dropdown-menu > .disabled > a, + .dropdown-menu > .disabled > a:hover, + .dropdown-menu > .disabled > a:focus { + color: #777777; + } + .dropdown-menu > .disabled > a:hover, + .dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; + } + .open > .dropdown-menu { + display: block; + } + .open > a { + outline: 0; + } + .dropdown-menu-right { + left: auto; + right: 0; + } + .dropdown-menu-left { + left: 0; + right: auto; + } + .dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777777; + white-space: nowrap; + } + .dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; + } + .pull-right > .dropdown-menu { + right: 0; + left: auto; + } + .dropup .caret, + .navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid; + content: ""; + } + .dropup .dropdown-menu, + .navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } + @media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } + } + .btn-group, + .btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; + } + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + float: left; + } + .btn-group > .btn:hover, + .btn-group-vertical > .btn:hover, + .btn-group > .btn:focus, + .btn-group-vertical > .btn:focus, + .btn-group > .btn:active, + .btn-group-vertical > .btn:active, + .btn-group > .btn.active, + .btn-group-vertical > .btn.active { + z-index: 2; + } + .btn-group .btn + .btn, + .btn-group .btn + .btn-group, + .btn-group .btn-group + .btn, + .btn-group .btn-group + .btn-group { + margin-left: -1px; + } + .btn-toolbar { + margin-left: -5px; + } + .btn-toolbar .btn-group, + .btn-toolbar .input-group { + float: left; + } + .btn-toolbar > .btn, + .btn-toolbar > .btn-group, + .btn-toolbar > .input-group { + margin-left: 5px; + } + .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; + } + .btn-group > .btn:first-child { + margin-left: 0; + } + .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + .btn-group > .btn:last-child:not(:first-child), + .btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + .btn-group > .btn-group { + float: left; + } + .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } + .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, + .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + .btn-group .dropdown-toggle:active, + .btn-group.open .dropdown-toggle { + outline: 0; + } + .btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + } + .btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; + } + .btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + } + .btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; + } + .btn .caret { + margin-left: 0; + } + .btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; + } + .dropup .btn-lg .caret { + border-width: 0 5px 5px; + } + .btn-group-vertical > .btn, + .btn-group-vertical > .btn-group, + .btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + .btn-group-vertical > .btn-group > .btn { + float: none; + } + .btn-group-vertical > .btn + .btn, + .btn-group-vertical > .btn + .btn-group, + .btn-group-vertical > .btn-group + .btn, + .btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } + .btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; + } + .btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 2px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group-vertical > .btn:last-child:not(:first-child) { + border-bottom-left-radius: 2px; + border-top-right-radius: 0; + border-top-left-radius: 0; + } + .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } + .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, + .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; + } + .btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + } + .btn-group-justified > .btn, + .btn-group-justified > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + .btn-group-justified > .btn-group .btn { + width: 100%; + } + .btn-group-justified > .btn-group .dropdown-menu { + left: auto; + } + [data-toggle="buttons"] > .btn input[type="radio"], + [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], + [data-toggle="buttons"] > .btn input[type="checkbox"], + [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; + } + .input-group { + position: relative; + display: table; + border-collapse: separate; + } + .input-group[class*="col-"] { + float: none; + padding-left: 0; + padding-right: 0; + } + .input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; + } + .input-group-lg > .form-control, + .input-group-lg > .input-group-addon, + .input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 3px; + } + select.input-group-lg > .form-control, + select.input-group-lg > .input-group-addon, + select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; + } + textarea.input-group-lg > .form-control, + textarea.input-group-lg > .input-group-addon, + textarea.input-group-lg > .input-group-btn > .btn, + select[multiple].input-group-lg > .form-control, + select[multiple].input-group-lg > .input-group-addon, + select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; + } + .input-group-sm > .form-control, + .input-group-sm > .input-group-addon, + .input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 1px; + } + select.input-group-sm > .form-control, + select.input-group-sm > .input-group-addon, + select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; + } + textarea.input-group-sm > .form-control, + textarea.input-group-sm > .input-group-addon, + textarea.input-group-sm > .input-group-btn > .btn, + select[multiple].input-group-sm > .form-control, + select[multiple].input-group-sm > .input-group-addon, + select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; + } + .input-group-addon, + .input-group-btn, + .input-group .form-control { + display: table-cell; + } + .input-group-addon:not(:first-child):not(:last-child), + .input-group-btn:not(:first-child):not(:last-child), + .input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; + } + .input-group-addon, + .input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; + } + .input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555555; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + border-radius: 2px; + } + .input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 1px; + } + .input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 3px; + } + .input-group-addon input[type="radio"], + .input-group-addon input[type="checkbox"] { + margin-top: 0; + } + .input-group .form-control:first-child, + .input-group-addon:first-child, + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group > .btn, + .input-group-btn:first-child > .dropdown-toggle, + .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), + .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + .input-group-addon:first-child { + border-right: 0; + } + .input-group .form-control:last-child, + .input-group-addon:last-child, + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group > .btn, + .input-group-btn:last-child > .dropdown-toggle, + .input-group-btn:first-child > .btn:not(:first-child), + .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + .input-group-addon:last-child { + border-left: 0; + } + .input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; + } + .input-group-btn > .btn { + position: relative; + } + .input-group-btn > .btn + .btn { + margin-left: -1px; + } + .input-group-btn > .btn:hover, + .input-group-btn > .btn:focus, + .input-group-btn > .btn:active { + z-index: 2; + } + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group { + margin-right: -1px; + } + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group { + margin-left: -1px; + } + .nav { + margin-bottom: 0; + padding-left: 0; + list-style: none; + } + .nav > li { + position: relative; + display: block; + } + .nav > li > a { + position: relative; + display: block; + padding: 10px 15px; + } + .nav > li > a:hover, + .nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; + } + .nav > li.disabled > a { + color: #777777; + } + .nav > li.disabled > a:hover, + .nav > li.disabled > a:focus { + color: #777777; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; + } + .nav .open > a, + .nav .open > a:hover, + .nav .open > a:focus { + background-color: #eeeeee; + border-color: #4d7ecb; + } + .nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } + .nav > li > a > img { + max-width: none; + } + .nav-tabs { + border-bottom: 1px solid #dddddd; + } + .nav-tabs > li { + float: left; + margin-bottom: -1px; + } + .nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 2px 2px 0 0; + } + .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; + } + .nav-tabs > li.active > a, + .nav-tabs > li.active > a:hover, + .nav-tabs > li.active > a:focus { + color: #555555; + background-color: #ffffff; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; + } + .nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; + } + .nav-tabs.nav-justified > li { + float: none; + } + .nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; + } + .nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + @media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } + } + .nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 2px; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #dddddd; + } + @media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 2px 2px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #ffffff; + } + } + .nav-pills > li { + float: left; + } + .nav-pills > li > a { + border-radius: 2px; + } + .nav-pills > li + li { + margin-left: 2px; + } + .nav-pills > li.active > a, + .nav-pills > li.active > a:hover, + .nav-pills > li.active > a:focus { + color: #ffffff; + background-color: #4d7ecb; + } + .nav-stacked > li { + float: none; + } + .nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; + } + .nav-justified { + width: 100%; + } + .nav-justified > li { + float: none; + } + .nav-justified > li > a { + text-align: center; + margin-bottom: 5px; + } + .nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + @media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } + } + .nav-tabs-justified { + border-bottom: 0; + } + .nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 2px; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border: 1px solid #dddddd; + } + @media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #dddddd; + border-radius: 2px 2px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #ffffff; + } + } + .tab-content > .tab-pane { + display: none; + } + .tab-content > .active { + display: block; + } + .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; + } + .navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; + } + @media (min-width: 768px) { + .navbar { + border-radius: 2px; + } + } + @media (min-width: 768px) { + .navbar-header { + float: left; + } + } + .navbar-collapse { + overflow-x: visible; + padding-right: 15px; + padding-left: 15px; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; + } + .navbar-collapse.in { + overflow-y: auto; + } + @media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 0; + } + } + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 340px; + } + @media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } + } + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; + } + @media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } + } + .navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; + } + @media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + } + @media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } + } + .navbar-fixed-top { + top: 0; + border-width: 0 0 1px; + } + .navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; + } + .navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; + height: 50px; + } + .navbar-brand:hover, + .navbar-brand:focus { + text-decoration: none; + } + .navbar-brand > img { + display: block; + } + @media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } + } + .navbar-toggle { + position: relative; + float: right; + margin-right: 15px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 2px; + } + .navbar-toggle:focus { + outline: 0; + } + .navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } + .navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; + } + @media (min-width: 768px) { + .navbar-toggle { + display: none; + } + } + .navbar-nav { + margin: 7.5px -15px; + } + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; + } + @media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } + } + @media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } + } + .navbar-form { + margin-left: -15px; + margin-right: -15px; + padding: 10px 15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 8px; + margin-bottom: 8px; + } + @media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } + } + @media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } + } + @media (min-width: 768px) { + .navbar-form { + width: auto; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + } + .navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; + } + .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-right-radius: 2px; + border-top-left-radius: 2px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .navbar-btn { + margin-top: 8px; + margin-bottom: 8px; + } + .navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; + } + .navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; + } + .navbar-text { + margin-top: 15px; + margin-bottom: 15px; + } + @media (min-width: 768px) { + .navbar-text { + float: left; + margin-left: 15px; + margin-right: 15px; + } + } + @media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } + } + .navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; + } + .navbar-default .navbar-brand { + color: #777777; + } + .navbar-default .navbar-brand:hover, + .navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; + } + .navbar-default .navbar-text { + color: #777777; + } + .navbar-default .navbar-nav > li > a { + color: #777777; + } + .navbar-default .navbar-nav > li > a:hover, + .navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; + } + .navbar-default .navbar-nav > .active > a, + .navbar-default .navbar-nav > .active > a:hover, + .navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav > .disabled > a, + .navbar-default .navbar-nav > .disabled > a:hover, + .navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } + .navbar-default .navbar-toggle { + border-color: #dddddd; + } + .navbar-default .navbar-toggle:hover, + .navbar-default .navbar-toggle:focus { + background-color: #dddddd; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #888888; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + border-color: #e7e7e7; + } + .navbar-default .navbar-nav > .open > a, + .navbar-default .navbar-nav > .open > a:hover, + .navbar-default .navbar-nav > .open > a:focus { + background-color: #e7e7e7; + color: #555555; + } + @media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } + } + .navbar-default .navbar-link { + color: #777777; + } + .navbar-default .navbar-link:hover { + color: #333333; + } + .navbar-default .btn-link { + color: #777777; + } + .navbar-default .btn-link:hover, + .navbar-default .btn-link:focus { + color: #333333; + } + .navbar-default .btn-link[disabled]:hover, + fieldset[disabled] .navbar-default .btn-link:hover, + .navbar-default .btn-link[disabled]:focus, + fieldset[disabled] .navbar-default .btn-link:focus { + color: #cccccc; + } + .navbar-inverse { + background-color: #222222; + border-color: #080808; + } + .navbar-inverse .navbar-brand { + color: #777777; + } + .navbar-inverse .navbar-brand:hover, + .navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-text { + color: #777777; + } + .navbar-inverse .navbar-nav > li > a { + color: #777777; + } + .navbar-inverse .navbar-nav > li > a:hover, + .navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav > .active > a, + .navbar-inverse .navbar-nav > .active > a:hover, + .navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .navbar-inverse .navbar-nav > .disabled > a, + .navbar-inverse .navbar-nav > .disabled > a:hover, + .navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; + } + .navbar-inverse .navbar-toggle { + border-color: #333333; + } + .navbar-inverse .navbar-toggle:hover, + .navbar-inverse .navbar-toggle:focus { + background-color: #333333; + } + .navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; + } + .navbar-inverse .navbar-collapse, + .navbar-inverse .navbar-form { + border-color: #101010; + } + .navbar-inverse .navbar-nav > .open > a, + .navbar-inverse .navbar-nav > .open > a:hover, + .navbar-inverse .navbar-nav > .open > a:focus { + background-color: #080808; + color: #ffffff; + } + @media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444444; + background-color: transparent; + } + } + .navbar-inverse .navbar-link { + color: #777777; + } + .navbar-inverse .navbar-link:hover { + color: #ffffff; + } + .navbar-inverse .btn-link { + color: #777777; + } + .navbar-inverse .btn-link:hover, + .navbar-inverse .btn-link:focus { + color: #ffffff; + } + .navbar-inverse .btn-link[disabled]:hover, + fieldset[disabled] .navbar-inverse .btn-link:hover, + .navbar-inverse .btn-link[disabled]:focus, + fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444444; + } + .breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 2px; + } + .breadcrumb > li { + display: inline-block; + } + .breadcrumb > li + li:before { + content: "/\00a0"; + padding: 0 5px; + color: #cccccc; + } + .breadcrumb > .active { + color: #777777; + } + .pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 2px; + } + .pagination > li { + display: inline; + } + .pagination > li > a, + .pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + line-height: 1.42857143; + text-decoration: none; + color: #4d7ecb; + background-color: #ffffff; + border: 1px solid #dddddd; + margin-left: -1px; + } + .pagination > li:first-child > a, + .pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 2px; + border-top-left-radius: 2px; + } + .pagination > li:last-child > a, + .pagination > li:last-child > span { + border-bottom-right-radius: 2px; + border-top-right-radius: 2px; + } + .pagination > li > a:hover, + .pagination > li > span:hover, + .pagination > li > a:focus, + .pagination > li > span:focus { + color: #2e599d; + background-color: #eeeeee; + border-color: #dddddd; + } + .pagination > .active > a, + .pagination > .active > span, + .pagination > .active > a:hover, + .pagination > .active > span:hover, + .pagination > .active > a:focus, + .pagination > .active > span:focus { + z-index: 2; + color: #ffffff; + background-color: #4d7ecb; + border-color: #4d7ecb; + cursor: default; + } + .pagination > .disabled > span, + .pagination > .disabled > span:hover, + .pagination > .disabled > span:focus, + .pagination > .disabled > a, + .pagination > .disabled > a:hover, + .pagination > .disabled > a:focus { + color: #777777; + background-color: #ffffff; + border-color: #dddddd; + cursor: not-allowed; + } + .pagination-lg > li > a, + .pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + } + .pagination-lg > li:first-child > a, + .pagination-lg > li:first-child > span { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; + } + .pagination-lg > li:last-child > a, + .pagination-lg > li:last-child > span { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; + } + .pagination-sm > li > a, + .pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + } + .pagination-sm > li:first-child > a, + .pagination-sm > li:first-child > span { + border-bottom-left-radius: 1px; + border-top-left-radius: 1px; + } + .pagination-sm > li:last-child > a, + .pagination-sm > li:last-child > span { + border-bottom-right-radius: 1px; + border-top-right-radius: 1px; + } + .pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; + } + .pager li { + display: inline; + } + .pager li > a, + .pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; + } + .pager li > a:hover, + .pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; + } + .pager .next > a, + .pager .next > span { + float: right; + } + .pager .previous > a, + .pager .previous > span { + float: left; + } + .pager .disabled > a, + .pager .disabled > a:hover, + .pager .disabled > a:focus, + .pager .disabled > span { + color: #777777; + background-color: #ffffff; + cursor: not-allowed; + } + .label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + } + a.label:hover, + a.label:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; + } + .label:empty { + display: none; + } + .btn .label { + position: relative; + top: -1px; + } + .label-default { + background-color: #777777; + } + .label-default[href]:hover, + .label-default[href]:focus { + background-color: #5e5e5e; + } + .label-primary { + background-color: #4d7ecb; + } + .label-primary[href]:hover, + .label-primary[href]:focus { + background-color: #3465b1; + } + .label-success { + background-color: #d5e0a7; + } + .label-success[href]:hover, + .label-success[href]:focus { + background-color: #c3d381; + } + .label-info { + background-color: #c6c6c6; + } + .label-info[href]:hover, + .label-info[href]:focus { + background-color: #adadad; + } + .label-warning { + background-color: #f2edac; + } + .label-warning[href]:hover, + .label-warning[href]:focus { + background-color: #ebe380; + } + .label-danger { + background-color: #d9534f; + } + .label-danger[href]:hover, + .label-danger[href]:focus { + background-color: #c9302c; + } + .badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + color: #ffffff; + line-height: 1; + vertical-align: baseline; + white-space: nowrap; + text-align: center; + background-color: #777777; + border-radius: 10px; + } + .badge:empty { + display: none; + } + .btn .badge { + position: relative; + top: -1px; + } + .btn-xs .badge, + .btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; + } + a.badge:hover, + a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; + } + .list-group-item.active > .badge, + .nav-pills > .active > a > .badge { + color: #4d7ecb; + background-color: #ffffff; + } + .list-group-item > .badge { + float: right; + } + .list-group-item > .badge + .badge { + margin-right: 5px; + } + .nav-pills > li > a > .badge { + margin-left: 3px; + } + .jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eeeeee; + } + .jumbotron h1, + .jumbotron .h1 { + color: inherit; + } + .jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; + } + .jumbotron > hr { + border-top-color: #d5d5d5; + } + .container .jumbotron, + .container-fluid .jumbotron { + border-radius: 3px; + } + .jumbotron .container { + max-width: 100%; + } + @media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } + } + .thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 2px; + -webkit-transition: border 0.2s ease-in-out; + -o-transition: border 0.2s ease-in-out; + transition: border 0.2s ease-in-out; + } + .thumbnail > img, + .thumbnail a > img { + margin-left: auto; + margin-right: auto; + } + a.thumbnail:hover, + a.thumbnail:focus, + a.thumbnail.active { + border-color: #4d7ecb; + } + .thumbnail .caption { + padding: 9px; + color: #000000; + } + .alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 2px; + } + .alert h4 { + margin-top: 0; + color: inherit; + } + .alert .alert-link { + font-weight: bold; + } + .alert > p, + .alert > ul { + margin-bottom: 0; + } + .alert > p + p { + margin-top: 5px; + } + .alert-dismissable, + .alert-dismissible { + padding-right: 35px; + } + .alert-dismissable .close, + .alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } + .alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; + color: #3c763d; + } + .alert-success hr { + border-top-color: #c9e2b3; + } + .alert-success .alert-link { + color: #2b542c; + } + .alert-info { + background-color: #d9edf7; + border-color: #bce8f1; + color: #31708f; + } + .alert-info hr { + border-top-color: #a6e1ec; + } + .alert-info .alert-link { + color: #245269; + } + .alert-warning { + background-color: #fcf8e3; + border-color: #faebcc; + color: #8a6d3b; + } + .alert-warning hr { + border-top-color: #f7e1b5; + } + .alert-warning .alert-link { + color: #66512c; + } + .alert-danger { + background-color: #f2dede; + border-color: #ebccd1; + color: #a94442; + } + .alert-danger hr { + border-top-color: #e4b9c0; + } + .alert-danger .alert-link { + color: #843534; + } + @-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } + @keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } + .progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 2px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + } + .progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #4d7ecb; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; + } + .progress-striped .progress-bar, + .progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; + } + .progress.active .progress-bar, + .progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; + } + .progress-bar-success { + background-color: #d5e0a7; + } + .progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + } + .progress-bar-info { + background-color: #c6c6c6; + } + .progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + } + .progress-bar-warning { + background-color: #f2edac; + } + .progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + } + .progress-bar-danger { + background-color: #d9534f; + } + .progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + } + .media { + margin-top: 15px; + } + .media:first-child { + margin-top: 0; + } + .media, + .media-body { + zoom: 1; + overflow: hidden; + } + .media-body { + width: 10000px; + } + .media-object { + display: block; + } + .media-right, + .media > .pull-right { + padding-left: 10px; + } + .media-left, + .media > .pull-left { + padding-right: 10px; + } + .media-left, + .media-right, + .media-body { + display: table-cell; + vertical-align: top; + } + .media-middle { + vertical-align: middle; + } + .media-bottom { + vertical-align: bottom; + } + .media-heading { + margin-top: 0; + margin-bottom: 5px; + } + .media-list { + padding-left: 0; + list-style: none; + } + .list-group { + margin-bottom: 20px; + padding-left: 0; + } + .list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #ffffff; + border: 1px solid #dddddd; + } + .list-group-item:first-child { + border-top-right-radius: 2px; + border-top-left-radius: 2px; + } + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; + } + a.list-group-item { + color: #555555; + } + a.list-group-item .list-group-item-heading { + color: #333333; + } + a.list-group-item:hover, + a.list-group-item:focus { + text-decoration: none; + color: #555555; + background-color: #f5f5f5; + } + .list-group-item.disabled, + .list-group-item.disabled:hover, + .list-group-item.disabled:focus { + background-color: #eeeeee; + color: #777777; + cursor: not-allowed; + } + .list-group-item.disabled .list-group-item-heading, + .list-group-item.disabled:hover .list-group-item-heading, + .list-group-item.disabled:focus .list-group-item-heading { + color: inherit; + } + .list-group-item.disabled .list-group-item-text, + .list-group-item.disabled:hover .list-group-item-text, + .list-group-item.disabled:focus .list-group-item-text { + color: #777777; + } + .list-group-item.active, + .list-group-item.active:hover, + .list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #4d7ecb; + border-color: #4d7ecb; + } + .list-group-item.active .list-group-item-heading, + .list-group-item.active:hover .list-group-item-heading, + .list-group-item.active:focus .list-group-item-heading, + .list-group-item.active .list-group-item-heading > small, + .list-group-item.active:hover .list-group-item-heading > small, + .list-group-item.active:focus .list-group-item-heading > small, + .list-group-item.active .list-group-item-heading > .small, + .list-group-item.active:hover .list-group-item-heading > .small, + .list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; + } + .list-group-item.active .list-group-item-text, + .list-group-item.active:hover .list-group-item-text, + .list-group-item.active:focus .list-group-item-text { + color: #ebf0f9; + } + .list-group-item-success { + color: #3c763d; + background-color: #dff0d8; + } + a.list-group-item-success { + color: #3c763d; + } + a.list-group-item-success .list-group-item-heading { + color: inherit; + } + a.list-group-item-success:hover, + a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; + } + a.list-group-item-success.active, + a.list-group-item-success.active:hover, + a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; + } + .list-group-item-info { + color: #31708f; + background-color: #d9edf7; + } + a.list-group-item-info { + color: #31708f; + } + a.list-group-item-info .list-group-item-heading { + color: inherit; + } + a.list-group-item-info:hover, + a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; + } + a.list-group-item-info.active, + a.list-group-item-info.active:hover, + a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; + } + .list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; + } + a.list-group-item-warning { + color: #8a6d3b; + } + a.list-group-item-warning .list-group-item-heading { + color: inherit; + } + a.list-group-item-warning:hover, + a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; + } + a.list-group-item-warning.active, + a.list-group-item-warning.active:hover, + a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; + } + .list-group-item-danger { + color: #a94442; + background-color: #f2dede; + } + a.list-group-item-danger { + color: #a94442; + } + a.list-group-item-danger .list-group-item-heading { + color: inherit; + } + a.list-group-item-danger:hover, + a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; + } + a.list-group-item-danger.active, + a.list-group-item-danger.active:hover, + a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; + } + .list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; + } + .list-group-item-text { + margin-bottom: 0; + line-height: 1.3; + } + .panel { + margin-bottom: 20px; + background-color: #ffffff; + border: 1px solid transparent; + border-radius: 2px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + } + .panel-body { + padding: 15px; + } + .panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .panel-heading > .dropdown .dropdown-toggle { + color: inherit; + } + .panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; + } + .panel-title > a, + .panel-title > small, + .panel-title > .small, + .panel-title > small > a, + .panel-title > .small > a { + color: inherit; + } + .panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .panel > .list-group, + .panel > .panel-collapse > .list-group { + margin-bottom: 0; + } + .panel > .list-group .list-group-item, + .panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; + } + .panel > .list-group:first-child .list-group-item:first-child, + .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .panel > .list-group:last-child .list-group-item:last-child, + .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; + } + .list-group + .panel-footer { + border-top-width: 0; + } + .panel > .table, + .panel > .table-responsive > .table, + .panel > .panel-collapse > .table { + margin-bottom: 0; + } + .panel > .table caption, + .panel > .table-responsive > .table caption, + .panel > .panel-collapse > .table caption { + padding-left: 15px; + padding-right: 15px; + } + .panel > .table:first-child, + .panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 1px; + border-top-left-radius: 1px; + } + .panel > .table:first-child > thead:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 1px; + border-top-right-radius: 1px; + } + .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 1px; + } + .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 1px; + } + .panel > .table:last-child, + .panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; + } + .panel > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-left-radius: 1px; + border-bottom-right-radius: 1px; + } + .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 1px; + } + .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 1px; + } + .panel > .panel-body + .table, + .panel > .panel-body + .table-responsive, + .panel > .table + .panel-body, + .panel > .table-responsive + .panel-body { + border-top: 1px solid #dddddd; + } + .panel > .table > tbody:first-child > tr:first-child th, + .panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; + } + .panel > .table-bordered, + .panel > .table-responsive > .table-bordered { + border: 0; + } + .panel > .table-bordered > thead > tr > th:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, + .panel > .table-bordered > tbody > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, + .panel > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-bordered > thead > tr > td:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, + .panel > .table-bordered > tbody > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, + .panel > .table-bordered > tfoot > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .panel > .table-bordered > thead > tr > th:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, + .panel > .table-bordered > tbody > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, + .panel > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-bordered > thead > tr > td:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, + .panel > .table-bordered > tbody > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, + .panel > .table-bordered > tfoot > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .panel > .table-bordered > thead > tr:first-child > td, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, + .panel > .table-bordered > tbody > tr:first-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, + .panel > .table-bordered > thead > tr:first-child > th, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, + .panel > .table-bordered > tbody > tr:first-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; + } + .panel > .table-bordered > tbody > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, + .panel > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-bordered > tbody > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, + .panel > .table-bordered > tfoot > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; + } + .panel > .table-responsive { + border: 0; + margin-bottom: 0; + } + .panel-group { + margin-bottom: 20px; + } + .panel-group .panel { + margin-bottom: 0; + border-radius: 2px; + } + .panel-group .panel + .panel { + margin-top: 5px; + } + .panel-group .panel-heading { + border-bottom: 0; + } + .panel-group .panel-heading + .panel-collapse > .panel-body, + .panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #dddddd; + } + .panel-group .panel-footer { + border-top: 0; + } + .panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; + } + .panel-default { + border-color: #dddddd; + } + .panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; + } + .panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #dddddd; + } + .panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333333; + } + .panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #dddddd; + } + .panel-primary { + border-color: #4d7ecb; + } + .panel-primary > .panel-heading { + color: #ffffff; + background-color: #4d7ecb; + border-color: #4d7ecb; + } + .panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #4d7ecb; + } + .panel-primary > .panel-heading .badge { + color: #4d7ecb; + background-color: #ffffff; + } + .panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #4d7ecb; + } + .panel-success { + border-color: #d6e9c6; + } + .panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; + } + .panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; + } + .panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; + } + .panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; + } + .panel-info { + border-color: #bce8f1; + } + .panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; + } + .panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; + } + .panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; + } + .panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; + } + .panel-warning { + border-color: #faebcc; + } + .panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; + } + .panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; + } + .panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; + } + .panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; + } + .panel-danger { + border-color: #ebccd1; + } + .panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; + } + .panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; + } + .panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; + } + .panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; + } + .embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; + } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + left: 0; + bottom: 0; + height: 100%; + width: 100%; + border: 0; + } + .embed-responsive-16by9 { + padding-bottom: 56.25%; + } + .embed-responsive-4by3 { + padding-bottom: 75%; + } + .well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 2px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + } + .well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); + } + .well-lg { + padding: 24px; + border-radius: 3px; + } + .well-sm { + padding: 9px; + border-radius: 1px; + } + .close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); + } + .close:hover, + .close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); + } + button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + } + .modal-open { + overflow: hidden; + } + .modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; + } + .modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + } + .modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); + } + .modal-open .modal { + overflow-x: hidden; + overflow-y: auto; + } + .modal-dialog { + position: relative; + width: auto; + margin: 10px; + } + .modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 3px; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: 0; + } + .modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; + } + .modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); + } + .modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); + } + .modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + min-height: 16.42857143px; + } + .modal-header .close { + margin-top: -2px; + } + .modal-title { + margin: 0; + line-height: 1.42857143; + } + .modal-body { + position: relative; + padding: 15px; + } + .modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; + } + .modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; + } + .modal-footer .btn-group .btn + .btn { + margin-left: -1px; + } + .modal-footer .btn-block + .btn-block { + margin-left: 0; + } + .modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; + } + @media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } + .modal-sm { + width: 300px; + } + } + @media (min-width: 992px) { + .modal-lg { + width: 900px; + } + } + .tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Comic Neue", "Comic Sans MS", "Comic Sans"; + font-size: 12px; + font-weight: normal; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + } + .tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); + } + .tooltip.top { + margin-top: -3px; + padding: 5px 0; + } + .tooltip.right { + margin-left: 3px; + padding: 0 5px; + } + .tooltip.bottom { + margin-top: 3px; + padding: 5px 0; + } + .tooltip.left { + margin-left: -3px; + padding: 0 5px; + } + .tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + border-radius: 2px; + } + .tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } + .tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; + } + .tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; + } + .tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; + } + .tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; + } + .tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; + } + .tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; + } + .tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; + } + .tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; + } + .popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Comic Neue", "Comic Sans MS", "Comic Sans"; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + background-color: #ffffff; + background-clip: padding-box; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 3px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + white-space: normal; + } + .popover.top { + margin-top: -10px; + } + .popover.right { + margin-left: 10px; + } + .popover.bottom { + margin-top: 10px; + } + .popover.left { + margin-left: -10px; + } + .popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 2px 2px 0 0; + } + .popover-content { + padding: 9px 14px; + } + .popover > .arrow, + .popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } + .popover > .arrow { + border-width: 11px; + } + .popover > .arrow:after { + border-width: 10px; + content: ""; + } + .popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; + } + .popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; + } + .popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); + } + .popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; + } + .popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; + } + .popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; + } + .popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); + } + .popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; + } + .carousel { + position: relative; + } + .carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + } + .carousel-inner > .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; + } + .carousel-inner > .item > img, + .carousel-inner > .item > a > img { + line-height: 1; + } + @media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform 0.6s ease-in-out; + -moz-transition: -moz-transform 0.6s ease-in-out; + -o-transition: -o-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + -moz-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + left: 0; + } + } + .carousel-inner > .active, + .carousel-inner > .next, + .carousel-inner > .prev { + display: block; + } + .carousel-inner > .active { + left: 0; + } + .carousel-inner > .next, + .carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; + } + .carousel-inner > .next { + left: 100%; + } + .carousel-inner > .prev { + left: -100%; + } + .carousel-inner > .next.left, + .carousel-inner > .prev.right { + left: 0; + } + .carousel-inner > .active.left { + left: -100%; + } + .carousel-inner > .active.right { + left: 100%; + } + .carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + } + .carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + } + .carousel-control.right { + left: auto; + right: 0; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + } + .carousel-control:hover, + .carousel-control:focus { + outline: 0; + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); + } + .carousel-control .icon-prev, + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + } + .carousel-control .icon-prev, + .carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + line-height: 1; + font-family: serif; + } + .carousel-control .icon-prev:before { + content: '\2039'; + } + .carousel-control .icon-next:before { + content: '\203a'; + } + .carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; + } + .carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #ffffff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + } + .carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #ffffff; + } + .carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + } + .carousel-caption .btn { + text-shadow: none; + } + @media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } + } + .clearfix:before, + .clearfix:after, + .dl-horizontal dd:before, + .dl-horizontal dd:after, + .container:before, + .container:after, + .container-fluid:before, + .container-fluid:after, + .row:before, + .row:after, + .form-horizontal .form-group:before, + .form-horizontal .form-group:after, + .btn-toolbar:before, + .btn-toolbar:after, + .btn-group-vertical > .btn-group:before, + .btn-group-vertical > .btn-group:after, + .nav:before, + .nav:after, + .navbar:before, + .navbar:after, + .navbar-header:before, + .navbar-header:after, + .navbar-collapse:before, + .navbar-collapse:after, + .pager:before, + .pager:after, + .panel-body:before, + .panel-body:after, + .modal-footer:before, + .modal-footer:after { + content: " "; + display: table; + } + .clearfix:after, + .dl-horizontal dd:after, + .container:after, + .container-fluid:after, + .row:after, + .form-horizontal .form-group:after, + .btn-toolbar:after, + .btn-group-vertical > .btn-group:after, + .nav:after, + .navbar:after, + .navbar-header:after, + .navbar-collapse:after, + .pager:after, + .panel-body:after, + .modal-footer:after { + clear: both; + } + .center-block { + display: block; + margin-left: auto; + margin-right: auto; + } + .pull-right { + float: right !important; + } + .pull-left { + float: left !important; + } + .hide { + display: none !important; + } + .show { + display: block !important; + } + .invisible { + visibility: hidden; + } + .text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; + } + .hidden { + display: none !important; + } + .affix { + position: fixed; + } + @-ms-viewport { + width: device-width; + } + .visible-xs, + .visible-sm, + .visible-md, + .visible-lg { + display: none !important; + } + .visible-xs-block, + .visible-xs-inline, + .visible-xs-inline-block, + .visible-sm-block, + .visible-sm-inline, + .visible-sm-inline-block, + .visible-md-block, + .visible-md-inline, + .visible-md-inline-block, + .visible-lg-block, + .visible-lg-inline, + .visible-lg-inline-block { + display: none !important; + } + @media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } + } + @media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } + } + @media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } + } + @media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } + } + @media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } + } + @media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } + } + @media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } + } + @media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } + } + @media (max-width: 767px) { + .hidden-xs { + display: none !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } + } + @media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } + } + .visible-print { + display: none !important; + } + @media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + } + .visible-print-block { + display: none !important; + } + @media print { + .visible-print-block { + display: block !important; + } + } + .visible-print-inline { + display: none !important; + } + @media print { + .visible-print-inline { + display: inline !important; + } + } + .visible-print-inline-block { + display: none !important; + } + @media print { + .visible-print-inline-block { + display: inline-block !important; + } + } + @media print { + .hidden-print { + display: none !important; + } + } + /*our custom variable*/ + /*our customizations beyond variables*/ + /*fonts*/ + @font-face { + font-family: 'Redacted Script'; + src: url('../fonts/redacted-script-bold.woff2') format('woff2'), url('../fonts/redacted-script-bold.woff') format('woff'); + font-weight: 700; + font-style: normal; + } + @font-face { + font-family: 'Redacted Script'; + src: url('../fonts/redacted-script-light.woff2') format('woff2'), url('../fonts/redacted-script-light.woff') format('woff'); + font-weight: 200; + font-style: normal; + } + @font-face { + font-family: 'Redacted Script'; + src: url('../fonts/redacted-script-regular.woff2') format('woff2'), url('../fonts/redacted-script-regular.woff') format('woff'); + font-weight: 400; + font-style: normal; + } + @font-face { + font-family: 'Comic Neue'; + src: url('../fonts/ComicNeue-Regular.woff2') format('woff2'), url('../fonts/ComicNeue-Regular.woff') format('woff'); + font-weight: 400; + font-style: normal; + } + @font-face { + font-family: 'Comic Neue'; + src: url('../fonts/ComicNeue-Bold.woff2') format('woff2'), url('../fonts/ComicNeue-Bold.woff') format('woff'); + font-weight: 700; + font-style: normal; + } + @font-face { + font-family: 'Comic Neue'; + src: url('../fonts/ComicNeue-Regular-Oblique.woff2') format('woff2'), url('../fonts/ComicNeue-Regular-Oblique.woff') format('woff'); + font-weight: 400; + font-style: italic; + } + @font-face { + font-family: 'Comic Neue'; + src: url('../fonts/ComicNeue-Bold-Oblique.woff2') format('woff2'), url('../fonts/ComicNeue-Bold-Oblique.woff') format('woff'); + font-weight: 700; + font-style: italic; + } + /*mixins*/ + .borderMixin { + border-width: 2px; + border-style: solid; + border-radius: 2px; + border-color: black; + } + .blackWhiteMixin { + background-color: white; + color: black; + } + .radiusNormMixin { + border-radius: 2px; + } + /*use redacted for paragraphs...*/ + p { + font-family: "Redacted Script", "Comic Neue", "Comic Sans MS", "Comic Sans"; + } + /*...but not for buttons, and not for inputs and nav (which should be in divs anyway)*/ + p .btn, + p .input-group, + p .nav { + font-family: "Comic Neue", "Comic Sans MS", "Comic Sans"; + } + .btn { + border-width: 2px; + border-style: solid; + border-radius: 2px; + border-color: black; + box-shadow: 4px 4px rgba(0, 0, 0, 0.5); + font-weight: bold; + } + .btn.active { + box-shadow: none; + background-color: #2e599d; + border-top: 4px solid black; + border-left: 4px solid black; + border-bottom: none; + border-right: none; + } + .lable { + border-radius: 2px; + } + .img-thumbnail, + .list-group-item, + list-group-item.active, + .panel { + border-width: 2px; + border-style: solid; + border-radius: 2px; + border-color: black; + background-color: white; + color: black; + } + .well, + .jumbotron, + .list-group-item.active { + border-width: 2px; + border-style: solid; + border-radius: 2px; + border-color: black; + } + .page-header { + border-bottom: 2px #000; + } + .nav-tabs { + border-bottom: 2px solid #000; + } + .nav-tabs > li { + margin-bottom: -2px; + } + .nav-tabs > li.active > a, + .nav-tabs > li.active > a:hover, + .nav-tabs > li.active > a:focus { + border-color: #000 #000; + border-image: none; + border-style: solid; + border-width: 1px; + color: #000; + cursor: default; + } + .navbar-default, + .pager li > a, + .pager li > span { + border-width: 2px; + border-style: solid; + border-radius: 2px; + border-color: black; + } + .progress { + box-shadow: none; + } + .btn-success, + .btn-info, + .btn-warning, + .btn-danger, + .panel-success, + .panel-warning, + .panel-info, + .panel-danger, + .lable-success, + .lable-info, + .lable-warning, + .lable-danger { + color: black; + } + .navbar-default .navbar-nav > .active > a, + .navbar-default .navbar-nav > .active > a:hover, + .navbar-default .navbar-nav > .active > a:focus { + background-color: gray; + color: white; + } + /*when using comic neue, bold font wight should be used for controls */ + .navbar, + .nav, + .btn, + .dropdown, + form { + font-weight: bold; + } + /*set path to bootstrap*/ + \ No newline at end of file diff --git a/assets/css/superhero.min.css b/assets/css/superhero.min.css index ceac7d5cc..a12b5f24b 100644 --- a/assets/css/superhero.min.css +++ b/assets/css/superhero.min.css @@ -8,4 +8,4 @@ * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#ebebeb;background-color:#2b3e50}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#df691a;text-decoration:none}a:hover,a:focus{color:#df691a;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#2b3e50;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #596a7b}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#ebebeb}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:80%}mark,.mark{background-color:#f0ad4e;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#4e5d6c}.text-primary{color:#df691a}a.text-primary:hover,a.text-primary:focus{color:#b15315}.text-success{color:#ebebeb}a.text-success:hover,a.text-success:focus{color:#d2d2d2}.text-info{color:#ebebeb}a.text-info:hover,a.text-info:focus{color:#d2d2d2}.text-warning{color:#ebebeb}a.text-warning:hover,a.text-warning:focus{color:#d2d2d2}.text-danger{color:#ebebeb}a.text-danger:hover,a.text-danger:focus{color:#d2d2d2}.bg-primary{color:#fff;background-color:#df691a}a.bg-primary:hover,a.bg-primary:focus{background-color:#b15315}.bg-success{background-color:#5cb85c}a.bg-success:hover,a.bg-success:focus{background-color:#449d44}.bg-info{background-color:#5bc0de}a.bg-info:hover,a.bg-info:focus{background-color:#31b0d5}.bg-warning{background-color:#f0ad4e}a.bg-warning:hover,a.bg-warning:focus{background-color:#ec971f}.bg-danger{background-color:#d9534f}a.bg-danger:hover,a.bg-danger:focus{background-color:#c9302c}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #ebebeb}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #4e5d6c}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #4e5d6c}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#ebebeb}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #4e5d6c;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:6px;padding-bottom:6px;color:#4e5d6c;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:6px;line-height:1.42857143;vertical-align:top;border-top:1px solid #4e5d6c}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #4e5d6c}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #4e5d6c}.table .table{background-color:#2b3e50}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:3px}.table-bordered{border:1px solid #4e5d6c}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #4e5d6c}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#4e5d6c}.table-hover>tbody>tr:hover{background-color:#485563}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#485563}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#3d4954}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#5cb85c}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#4cae4c}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#5bc0de}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#46b8da}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f0ad4e}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#eea236}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#d9534f}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#d43f3a}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #4e5d6c}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#ebebeb;border:0;border-bottom:1px solid #4e5d6c}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:15px;line-height:1.42857143;color:#2b3e50}.form-control{display:block;width:100%;height:39px;padding:8px 16px;font-size:15px;line-height:1.42857143;color:#2b3e50;background-color:#ffffff;background-image:none;border:1px solid transparent;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:transparent;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6)}.form-control::-moz-placeholder{color:#cccccc;opacity:1}.form-control:-ms-input-placeholder{color:#cccccc}.form-control::-webkit-input-placeholder{color:#cccccc}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#ebebeb;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:39px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:52px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:33px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:52px;padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:52px;line-height:52px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:52px;padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:52px;line-height:52px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:52px;min-height:40px;padding:13px 24px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:48.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:39px;height:39px;line-height:39px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:52px;height:52px;line-height:52px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ebebeb}.has-success .form-control{border-color:#ebebeb;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#d2d2d2;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ebebeb;border-color:#ebebeb;background-color:#5cb85c}.has-success .form-control-feedback{color:#ebebeb}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ebebeb}.has-warning .form-control{border-color:#ebebeb;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#d2d2d2;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ebebeb;border-color:#ebebeb;background-color:#f0ad4e}.has-warning .form-control-feedback{color:#ebebeb}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ebebeb}.has-error .form-control{border-color:#ebebeb;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#d2d2d2;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ebebeb;border-color:#ebebeb;background-color:#d9534f}.has-error .form-control-feedback{color:#ebebeb}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#ffffff}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:13px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 16px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#4e5d6c;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#39444e;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#ffffff;background-color:#39444e;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#39444e;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#2a323a;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#4e5d6c;border-color:transparent}.btn-default .badge{color:#4e5d6c;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#df691a;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#b15315;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#b15315;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#b15315;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#914411;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#df691a;border-color:transparent}.btn-primary .badge{color:#df691a;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#5cb85c;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#449d44;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#449d44;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#449d44;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#398439;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:transparent}.btn-success .badge{color:#5cb85c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#5bc0de;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#31b0d5;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#31b0d5;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#31b0d5;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#269abc;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:transparent}.btn-info .badge{color:#5bc0de;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f0ad4e;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ec971f;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#ec971f;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ec971f;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#d58512;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:transparent}.btn-warning .badge{color:#f0ad4e;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9534f;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#ac2925;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:transparent}.btn-danger .badge{color:#d9534f;background-color:#ffffff}.btn-link{color:#df691a;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#df691a;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#4e5d6c;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#2b3e50}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#ebebeb;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ebebeb;background-color:#485563}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#df691a}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#2b3e50}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#2b3e50;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:52px;padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:52px;line-height:52px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 16px;font-size:15px;font-weight:normal;line-height:1;color:#2b3e50;text-align:center;background-color:#4e5d6c;border:1px solid transparent;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:0}.input-group-addon.input-lg{padding:12px 24px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#4e5d6c}.nav>li.disabled>a{color:#4e5d6c}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#4e5d6c;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#4e5d6c;border-color:#df691a}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid transparent}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#4e5d6c #4e5d6c transparent}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#ebebeb;background-color:#2b3e50;border:1px solid #4e5d6c;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #4e5d6c}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #4e5d6c;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#4e5d6c}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#df691a}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #4e5d6c}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #4e5d6c;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#4e5d6c}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:9.5px 15px;font-size:19px;line-height:21px;height:40px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:4.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:9.5px;padding-bottom:9.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:0.5px;margin-bottom:0.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:0.5px;margin-bottom:0.5px}.navbar-btn.btn-sm{margin-top:5px;margin-bottom:5px}.navbar-btn.btn-xs{margin-top:9px;margin-bottom:9px}.navbar-text{margin-top:9.5px;margin-bottom:9.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#4e5d6c;border-color:transparent}.navbar-default .navbar-brand{color:#ebebeb}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ebebeb;background-color:transparent}.navbar-default .navbar-text{color:#ebebeb}.navbar-default .navbar-nav>li>a{color:#ebebeb}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#485563}.navbar-default .navbar-toggle .icon-bar{background-color:#ebebeb}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#485563;color:#ebebeb}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ebebeb}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ebebeb}.navbar-default .navbar-link:hover{color:#ebebeb}.navbar-default .btn-link{color:#ebebeb}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ebebeb}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#df691a;border-color:transparent}.navbar-inverse .navbar-brand{color:#ebebeb}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ebebeb;background-color:transparent}.navbar-inverse .navbar-text{color:#ebebeb}.navbar-inverse .navbar-nav>li>a{color:#ebebeb}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#c85e17}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ebebeb}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#bf5a16}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#c85e17;color:#ebebeb}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ebebeb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ebebeb}.navbar-inverse .navbar-link:hover{color:#ebebeb}.navbar-inverse .btn-link{color:#ebebeb}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ebebeb}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#4e5d6c;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ebebeb}.breadcrumb>.active{color:#ebebeb}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 16px;line-height:1.42857143;text-decoration:none;color:#ebebeb;background-color:#4e5d6c;border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ebebeb;background-color:#485563;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ebebeb;background-color:#df691a;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#323c46;background-color:#4e5d6c;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:12px 24px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#4e5d6c;border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#485563}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#323c46;background-color:#4e5d6c;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#4e5d6c}.label-default[href]:hover,.label-default[href]:focus{background-color:#39444e}.label-primary{background-color:#df691a}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#b15315}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:300;color:#ebebeb;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#4e5d6c;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#df691a;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#4e5d6c}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#39444e}.container .jumbotron,.container-fluid .jumbotron{border-radius:0;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#2b3e50;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#df691a}.thumbnail .caption{padding:9px;color:#ebebeb}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#5cb85c;border-color:transparent;color:#ebebeb}.alert-success hr{border-top-color:rgba(0,0,0,0)}.alert-success .alert-link{color:#d2d2d2}.alert-info{background-color:#5bc0de;border-color:transparent;color:#ebebeb}.alert-info hr{border-top-color:rgba(0,0,0,0)}.alert-info .alert-link{color:#d2d2d2}.alert-warning{background-color:#f0ad4e;border-color:transparent;color:#ebebeb}.alert-warning hr{border-top-color:rgba(0,0,0,0)}.alert-warning .alert-link{color:#d2d2d2}.alert-danger{background-color:#d9534f;border-color:transparent;color:#ebebeb}.alert-danger hr{border-top-color:rgba(0,0,0,0)}.alert-danger .alert-link{color:#d2d2d2}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#4e5d6c;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:21px;color:#ffffff;text-align:center;background-color:#df691a;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#4e5d6c;border:1px solid transparent}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#ebebeb}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#ebebeb}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#ebebeb;background-color:#485563}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#ebebeb;color:#4e5d6c;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#4e5d6c}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#df691a;border-color:#df691a}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#f9decc}.list-group-item-success{color:#ebebeb;background-color:#5cb85c}a.list-group-item-success,button.list-group-item-success{color:#ebebeb}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ebebeb;background-color:#4cae4c}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-info{color:#ebebeb;background-color:#5bc0de}a.list-group-item-info,button.list-group-item-info{color:#ebebeb}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ebebeb;background-color:#46b8da}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-warning{color:#ebebeb;background-color:#f0ad4e}a.list-group-item-warning,button.list-group-item-warning{color:#ebebeb}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ebebeb;background-color:#eea236}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-danger{color:#ebebeb;background-color:#d9534f}a.list-group-item-danger,button.list-group-item-danger{color:#ebebeb}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ebebeb;background-color:#d43f3a}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#485563;border-top:1px solid transparent;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #4e5d6c}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid transparent}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid transparent}.panel-default{border-color:transparent}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:transparent}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-primary{border-color:transparent}.panel-primary>.panel-heading{color:#ffffff;background-color:#df691a;border-color:transparent}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-primary>.panel-heading .badge{color:#df691a;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-success{border-color:transparent}.panel-success>.panel-heading{color:#ebebeb;background-color:#5cb85c;border-color:transparent}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-success>.panel-heading .badge{color:#5cb85c;background-color:#ebebeb}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-info{border-color:transparent}.panel-info>.panel-heading{color:#ebebeb;background-color:#5bc0de;border-color:transparent}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-info>.panel-heading .badge{color:#5bc0de;background-color:#ebebeb}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-warning{border-color:transparent}.panel-warning>.panel-heading{color:#ebebeb;background-color:#f0ad4e;border-color:transparent}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-warning>.panel-heading .badge{color:#f0ad4e;background-color:#ebebeb}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-danger{border-color:transparent}.panel-danger>.panel-heading{color:#ebebeb;background-color:#d9534f;border-color:transparent}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-danger>.panel-heading .badge{color:#d9534f;background-color:#ebebeb}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ebebeb;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ebebeb;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #2b3e50}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #2b3e50}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#4e5d6c;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#485563;border-bottom:1px solid #3d4954;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:transparent;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#4e5d6c}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:transparent}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#4e5d6c}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:transparent;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#4e5d6c}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:transparent}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#4e5d6c;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{-webkit-box-shadow:none;box-shadow:none;border:none;font-size:12px}.navbar-default .badge{background-color:#fff;color:#4e5d6c}.navbar-inverse .badge{background-color:#fff;color:#df691a}.btn-default:hover{background-color:#485563}.btn-sm,.btn-xs{font-size:12px}.text-primary,.text-primary:hover{color:#df691a}.text-success,.text-success:hover{color:#5cb85c}.text-danger,.text-danger:hover{color:#d9534f}.text-warning,.text-warning:hover{color:#f0ad4e}.text-info,.text-info:hover{color:#5bc0de}.page-header{border-bottom-color:#4e5d6c}.dropdown-menu{border:none;margin:0;-webkit-box-shadow:none;box-shadow:none}.dropdown-menu>li>a{font-size:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.dropdown-header{font-size:12px}table,.table{font-size:12px}table a:not(.btn),.table a:not(.btn){color:#fff;text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .text-muted,.table .text-muted{color:#4e5d6c}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border-color:transparent}input,textarea{color:#2b3e50}label,.radio label,.checkbox label,.help-block{font-size:12px}.input-addon,.input-group-addon{color:#ebebeb}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f0ad4e}.has-warning .form-control,.has-warning .form-control:focus{border:4px solid #f0ad4e}.has-warning .input-group-addon{border:none}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#d9534f}.has-error .form-control,.has-error .form-control:focus{border:4px solid #d9534f}.has-error .input-group-addon{border:none}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#5cb85c}.has-success .form-control,.has-success .form-control:focus{border:4px solid #5cb85c}.has-success .input-group-addon{border:none}.form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .form-control:focus,.has-error .form-control:focus,.has-success .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.nav-tabs>li>a{color:#ebebeb}.nav-pills>li>a{color:#ebebeb}.pager a{color:#ebebeb}.alert{color:#fff}.alert a,.alert .alert-link{color:#fff}.close{opacity:0.4}.close:hover,.close:focus{opacity:1}.well{-webkit-box-shadow:none;box-shadow:none}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border:none}a.list-group-item-success.active{background-color:#5cb85c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#4cae4c}a.list-group-item-warning.active{background-color:#f0ad4e}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#eea236}a.list-group-item-danger.active{background-color:#d9534f}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#d43f3a}.panel{border:none}.panel-default>.panel-heading{background-color:#485563;color:#ebebeb}.thumbnail{background-color:#4e5d6c;border:none}.modal{padding:0}.modal-header,.modal-footer{background-color:#485563;border:none;border-radius:0}.popover-title{border:none} \ No newline at end of file + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#ebebeb;background-color:#2b3e50}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#df691a;text-decoration:none}a:hover,a:focus{color:#df691a;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#2b3e50;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #596a7b}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#ebebeb}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:80%}mark,.mark{background-color:#f0ad4e;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#4e5d6c}.text-primary{color:#df691a}a.text-primary:hover,a.text-primary:focus{color:#b15315}.text-success{color:#ebebeb}a.text-success:hover,a.text-success:focus{color:#d2d2d2}.text-info{color:#ebebeb}a.text-info:hover,a.text-info:focus{color:#d2d2d2}.text-warning{color:#ebebeb}a.text-warning:hover,a.text-warning:focus{color:#d2d2d2}.text-danger{color:#ebebeb}a.text-danger:hover,a.text-danger:focus{color:#d2d2d2}.bg-primary{color:#fff;background-color:#df691a}a.bg-primary:hover,a.bg-primary:focus{background-color:#b15315}.bg-success{background-color:#5cb85c}a.bg-success:hover,a.bg-success:focus{background-color:#449d44}.bg-info{background-color:#5bc0de}a.bg-info:hover,a.bg-info:focus{background-color:#31b0d5}.bg-warning{background-color:#f0ad4e}a.bg-warning:hover,a.bg-warning:focus{background-color:#ec971f}.bg-danger{background-color:#d9534f}a.bg-danger:hover,a.bg-danger:focus{background-color:#c9302c}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #ebebeb}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #4e5d6c}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #4e5d6c}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#ebebeb}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #4e5d6c;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:6px;padding-bottom:6px;color:#4e5d6c;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:6px;line-height:1.42857143;vertical-align:top;border-top:1px solid #4e5d6c}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #4e5d6c}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #4e5d6c}.table .table{background-color:#2b3e50}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:3px}.table-bordered{border:1px solid #4e5d6c}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #4e5d6c}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#4e5d6c}.table-hover>tbody>tr:hover{background-color:#485563}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#485563}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#3d4954}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#5cb85c}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#4cae4c}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#5bc0de}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#46b8da}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#f0ad4e}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#eea236}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#d9534f}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#d43f3a}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #4e5d6c}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#ebebeb;border:0;border-bottom:1px solid #4e5d6c}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:15px;line-height:1.42857143;color:#2b3e50}.form-control{display:block;width:100%;height:39px;padding:8px 16px;font-size:15px;line-height:1.42857143;color:#2b3e50;background-color:#ffffff;background-image:none;border:1px solid transparent;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:transparent;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(0,0,0,0.6)}.form-control::-moz-placeholder{color:#cccccc;opacity:1}.form-control:-ms-input-placeholder{color:#cccccc}.form-control::-webkit-input-placeholder{color:#cccccc}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#ebebeb;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:39px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:52px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:33px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:52px;padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:52px;line-height:52px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:52px;padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:52px;line-height:52px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:52px;min-height:40px;padding:13px 24px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:48.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:39px;height:39px;line-height:39px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:52px;height:52px;line-height:52px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ebebeb}.has-success .form-control{border-color:#ebebeb;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#d2d2d2;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ebebeb;border-color:#ebebeb;background-color:#5cb85c}.has-success .form-control-feedback{color:#ebebeb}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ebebeb}.has-warning .form-control{border-color:#ebebeb;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#d2d2d2;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ebebeb;border-color:#ebebeb;background-color:#f0ad4e}.has-warning .form-control-feedback{color:#ebebeb}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ebebeb}.has-error .form-control{border-color:#ebebeb;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#d2d2d2;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ebebeb;border-color:#ebebeb;background-color:#d9534f}.has-error .form-control-feedback{color:#ebebeb}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#ffffff}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:13px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 16px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#4e5d6c;border-color:transparent}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#39444e;border-color:rgba(0,0,0,0)}.btn-default:hover{color:#ffffff;background-color:#39444e;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#39444e;border-color:rgba(0,0,0,0)}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#2a323a;border-color:rgba(0,0,0,0)}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#4e5d6c;border-color:transparent}.btn-default .badge{color:#4e5d6c;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#df691a;border-color:transparent}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#b15315;border-color:rgba(0,0,0,0)}.btn-primary:hover{color:#ffffff;background-color:#b15315;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#b15315;border-color:rgba(0,0,0,0)}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#914411;border-color:rgba(0,0,0,0)}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#df691a;border-color:transparent}.btn-primary .badge{color:#df691a;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#5cb85c;border-color:transparent}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#449d44;border-color:rgba(0,0,0,0)}.btn-success:hover{color:#ffffff;background-color:#449d44;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#449d44;border-color:rgba(0,0,0,0)}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#398439;border-color:rgba(0,0,0,0)}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:transparent}.btn-success .badge{color:#5cb85c;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#5bc0de;border-color:transparent}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#31b0d5;border-color:rgba(0,0,0,0)}.btn-info:hover{color:#ffffff;background-color:#31b0d5;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#31b0d5;border-color:rgba(0,0,0,0)}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#269abc;border-color:rgba(0,0,0,0)}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:transparent}.btn-info .badge{color:#5bc0de;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#f0ad4e;border-color:transparent}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#ec971f;border-color:rgba(0,0,0,0)}.btn-warning:hover{color:#ffffff;background-color:#ec971f;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#ec971f;border-color:rgba(0,0,0,0)}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#d58512;border-color:rgba(0,0,0,0)}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:transparent}.btn-warning .badge{color:#f0ad4e;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#d9534f;border-color:transparent}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:hover{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#c9302c;border-color:rgba(0,0,0,0)}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#ac2925;border-color:rgba(0,0,0,0)}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:transparent}.btn-danger .badge{color:#d9534f;background-color:#ffffff}.btn-link{color:#df691a;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#df691a;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#4e5d6c;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#2b3e50}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#ebebeb;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ebebeb;background-color:#485563}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#df691a}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#2b3e50}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#2b3e50;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:52px;padding:12px 24px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:52px;line-height:52px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 16px;font-size:15px;font-weight:normal;line-height:1;color:#2b3e50;text-align:center;background-color:#4e5d6c;border:1px solid transparent;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:0}.input-group-addon.input-lg{padding:12px 24px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#4e5d6c}.nav>li.disabled>a{color:#4e5d6c}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#4e5d6c;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#4e5d6c;border-color:#df691a}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid transparent}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#4e5d6c #4e5d6c transparent}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#ebebeb;background-color:#2b3e50;border:1px solid #4e5d6c;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #4e5d6c}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #4e5d6c;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#4e5d6c}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#df691a}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #4e5d6c}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #4e5d6c;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#4e5d6c}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:9.5px 15px;font-size:19px;line-height:21px;height:40px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:4.75px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:9.5px;padding-bottom:9.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:0.5px;margin-bottom:0.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:0.5px;margin-bottom:0.5px}.navbar-btn.btn-sm{margin-top:5px;margin-bottom:5px}.navbar-btn.btn-xs{margin-top:9px;margin-bottom:9px}.navbar-text{margin-top:9.5px;margin-bottom:9.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#4e5d6c;border-color:transparent}.navbar-default .navbar-brand{color:#ebebeb}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ebebeb;background-color:transparent}.navbar-default .navbar-text{color:#ebebeb}.navbar-default .navbar-nav>li>a{color:#ebebeb}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#485563}.navbar-default .navbar-toggle .icon-bar{background-color:#ebebeb}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#485563;color:#ebebeb}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ebebeb}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ebebeb;background-color:#485563}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ebebeb}.navbar-default .navbar-link:hover{color:#ebebeb}.navbar-default .btn-link{color:#ebebeb}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ebebeb}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#df691a;border-color:transparent}.navbar-inverse .navbar-brand{color:#ebebeb}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ebebeb;background-color:transparent}.navbar-inverse .navbar-text{color:#ebebeb}.navbar-inverse .navbar-nav>li>a{color:#ebebeb}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#c85e17}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ebebeb}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#bf5a16}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#c85e17;color:#ebebeb}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ebebeb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ebebeb;background-color:#c85e17}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ebebeb}.navbar-inverse .navbar-link:hover{color:#ebebeb}.navbar-inverse .btn-link{color:#ebebeb}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ebebeb}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#4e5d6c;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ebebeb}.breadcrumb>.active{color:#ebebeb}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 16px;line-height:1.42857143;text-decoration:none;color:#ebebeb;background-color:#4e5d6c;border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#ebebeb;background-color:#485563;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ebebeb;background-color:#df691a;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#323c46;background-color:#4e5d6c;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:12px 24px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#4e5d6c;border:1px solid transparent;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#485563}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#323c46;background-color:#4e5d6c;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#4e5d6c}.label-default[href]:hover,.label-default[href]:focus{background-color:#39444e}.label-primary{background-color:#df691a}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#b15315}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:300;color:#ebebeb;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#4e5d6c;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#df691a;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#4e5d6c}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#39444e}.container .jumbotron,.container-fluid .jumbotron{border-radius:0;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#2b3e50;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#df691a}.thumbnail .caption{padding:9px;color:#ebebeb}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#5cb85c;border-color:transparent;color:#ebebeb}.alert-success hr{border-top-color:rgba(0,0,0,0)}.alert-success .alert-link{color:#d2d2d2}.alert-info{background-color:#5bc0de;border-color:transparent;color:#ebebeb}.alert-info hr{border-top-color:rgba(0,0,0,0)}.alert-info .alert-link{color:#d2d2d2}.alert-warning{background-color:#f0ad4e;border-color:transparent;color:#ebebeb}.alert-warning hr{border-top-color:rgba(0,0,0,0)}.alert-warning .alert-link{color:#d2d2d2}.alert-danger{background-color:#d9534f;border-color:transparent;color:#ebebeb}.alert-danger hr{border-top-color:rgba(0,0,0,0)}.alert-danger .alert-link{color:#d2d2d2}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#4e5d6c;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:21px;color:#ffffff;text-align:center;background-color:#df691a;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#4e5d6c;border:1px solid transparent}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#ebebeb}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#ebebeb}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#ebebeb;background-color:#485563}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#ebebeb;color:#4e5d6c;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#4e5d6c}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#df691a;border-color:#df691a}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#f9decc}.list-group-item-success{color:#ebebeb;background-color:#5cb85c}a.list-group-item-success,button.list-group-item-success{color:#ebebeb}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ebebeb;background-color:#4cae4c}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-info{color:#ebebeb;background-color:#5bc0de}a.list-group-item-info,button.list-group-item-info{color:#ebebeb}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ebebeb;background-color:#46b8da}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-warning{color:#ebebeb;background-color:#f0ad4e}a.list-group-item-warning,button.list-group-item-warning{color:#ebebeb}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ebebeb;background-color:#eea236}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-danger{color:#ebebeb;background-color:#d9534f}a.list-group-item-danger,button.list-group-item-danger{color:#ebebeb}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ebebeb;background-color:#d43f3a}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ebebeb;border-color:#ebebeb}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#485563;border-top:1px solid transparent;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #4e5d6c}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid transparent}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid transparent}.panel-default{border-color:transparent}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:transparent}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-primary{border-color:transparent}.panel-primary>.panel-heading{color:#ffffff;background-color:#df691a;border-color:transparent}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-primary>.panel-heading .badge{color:#df691a;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-success{border-color:transparent}.panel-success>.panel-heading{color:#ebebeb;background-color:#5cb85c;border-color:transparent}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-success>.panel-heading .badge{color:#5cb85c;background-color:#ebebeb}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-info{border-color:transparent}.panel-info>.panel-heading{color:#ebebeb;background-color:#5bc0de;border-color:transparent}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-info>.panel-heading .badge{color:#5bc0de;background-color:#ebebeb}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-warning{border-color:transparent}.panel-warning>.panel-heading{color:#ebebeb;background-color:#f0ad4e;border-color:transparent}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-warning>.panel-heading .badge{color:#f0ad4e;background-color:#ebebeb}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.panel-danger{border-color:transparent}.panel-danger>.panel-heading{color:#ebebeb;background-color:#d9534f;border-color:transparent}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:transparent}.panel-danger>.panel-heading .badge{color:#d9534f;background-color:#ebebeb}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:transparent}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ebebeb;text-shadow:none;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ebebeb;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#4e5d6c;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #2b3e50}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #2b3e50}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Lato","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#4e5d6c;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#485563;border-bottom:1px solid #3d4954;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:transparent;bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#4e5d6c}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:transparent}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#4e5d6c}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:transparent;top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#4e5d6c}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:transparent}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#4e5d6c;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{-webkit-box-shadow:none;box-shadow:none;border:none;font-size:12px}.navbar-default .badge{background-color:#fff;color:#4e5d6c}.navbar-inverse .badge{background-color:#fff;color:#df691a}.btn-default:hover{background-color:#485563}.btn-sm,.btn-xs{font-size:12px}.text-primary,.text-primary:hover{color:#833805}.text-success,.text-success:hover{color:#5cb85c}.text-danger,.text-danger:hover{color:#d9534f}.text-warning,.text-warning:hover{color:#f0ad4e}.text-info,.text-info:hover{color:#5bc0de}.page-header{border-bottom-color:#4e5d6c}.dropdown-menu{border:none;margin:0;-webkit-box-shadow:none;box-shadow:none}.dropdown-menu>li>a{font-size:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:none;box-shadow:none}.dropdown-header{font-size:12px}table,.table{font-size:12px}table a:not(.btn),.table a:not(.btn){color:#fff;text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .text-muted,.table .text-muted{color:#4e5d6c}table>thead>tr>th,.table>thead>tr>th,table>tbody>tr>th,.table>tbody>tr>th,table>tfoot>tr>th,.table>tfoot>tr>th,table>thead>tr>td,.table>thead>tr>td,table>tbody>tr>td,.table>tbody>tr>td,table>tfoot>tr>td,.table>tfoot>tr>td{border-color:transparent}input,textarea{color:#2b3e50}label,.radio label,.checkbox label,.help-block{font-size:12px}.input-addon,.input-group-addon{color:#ebebeb}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#f0ad4e}.has-warning .form-control,.has-warning .form-control:focus{border:4px solid #f0ad4e}.has-warning .input-group-addon{border:none}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#d9534f}.has-error .form-control,.has-error .form-control:focus{border:4px solid #d9534f}.has-error .input-group-addon{border:none}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#5cb85c}.has-success .form-control,.has-success .form-control:focus{border:4px solid #5cb85c}.has-success .input-group-addon{border:none}.form-control:focus{-webkit-box-shadow:none;box-shadow:none}.has-warning .form-control:focus,.has-error .form-control:focus,.has-success .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.nav-tabs>li>a{color:#ebebeb}.nav-pills>li>a{color:#ebebeb}.pager a{color:#ebebeb}.alert{color:#fff}.alert a,.alert .alert-link{color:#fff}.close{opacity:0.4}.close:hover,.close:focus{opacity:1}.well{-webkit-box-shadow:none;box-shadow:none}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{border:none}a.list-group-item-success.active{background-color:#5cb85c}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#4cae4c}a.list-group-item-warning.active{background-color:#f0ad4e}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#eea236}a.list-group-item-danger.active{background-color:#d9534f}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#d43f3a}.panel{border:none}.panel-default>.panel-heading{background-color:#485563;color:#ebebeb}.thumbnail{background-color:#4e5d6c;border:none}.modal{padding:0}.modal-header,.modal-footer{background-color:#485563;border:none;border-radius:0}.popover-title{border:none} \ No newline at end of file diff --git a/assets/css/yeti.min.css b/assets/css/yeti.min.css index cda7d4a2c..df63021ba 100644 --- a/assets/css/yeti.min.css +++ b/assets/css/yeti.min.css @@ -8,4 +8,4 @@ * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#222222;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#008cba;text-decoration:none}a:hover,a:focus{color:#008cba;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.4;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #dddddd}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:80%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#008cba}a.text-primary:hover,a.text-primary:focus{color:#006687}.text-success{color:#43ac6a}a.text-success:hover,a.text-success:focus{color:#358753}.text-info{color:#5bc0de}a.text-info:hover,a.text-info:focus{color:#31b0d5}.text-warning{color:#e99002}a.text-warning:hover,a.text-warning:focus{color:#b67102}.text-danger{color:#f04124}a.text-danger:hover,a.text-danger:focus{color:#d32a0e}.bg-primary{color:#fff;background-color:#008cba}a.bg-primary:hover,a.bg-primary:focus{background-color:#006687}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #dddddd}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.4}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #dddddd}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.4;color:#6f6f6f}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dddddd;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.4}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.4;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.4;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:15px;line-height:1.4;color:#6f6f6f}.form-control{display:block;width:100%;height:39px;padding:8px 12px;font-size:15px;line-height:1.4;color:#6f6f6f;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:39px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:36px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:60px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:36px;padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}select.input-sm{height:36px;line-height:36px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:36px;padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:36px;line-height:36px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:36px;min-height:33px;padding:9px 12px;font-size:12px;line-height:1.5}.input-lg{height:60px;padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:60px;line-height:60px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:60px;padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:60px;line-height:60px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:60px;min-height:40px;padding:17px 20px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:48.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:39px;height:39px;line-height:39px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:60px;height:60px;line-height:60px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:36px;height:36px;line-height:36px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#43ac6a}.has-success .form-control{border-color:#43ac6a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#358753;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #85d0a1;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #85d0a1}.has-success .input-group-addon{color:#43ac6a;border-color:#43ac6a;background-color:#dff0d8}.has-success .form-control-feedback{color:#43ac6a}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#e99002}.has-warning .form-control{border-color:#e99002;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#b67102;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #febc53;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #febc53}.has-warning .input-group-addon{color:#e99002;border-color:#e99002;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#e99002}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#f04124}.has-error .form-control{border-color:#f04124;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#d32a0e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f79483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f79483}.has-error .input-group-addon{color:#f04124;border-color:#f04124;background-color:#f2dede}.has-error .form-control-feedback{color:#f04124}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#626262}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:17px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:9px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:15px;line-height:1.4;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333333;background-color:#e7e7e7;border-color:#cccccc}.btn-default:focus,.btn-default.focus{color:#333333;background-color:#cecece;border-color:#8c8c8c}.btn-default:hover{color:#333333;background-color:#cecece;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333333;background-color:#cecece;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333333;background-color:#bcbcbc;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#e7e7e7;border-color:#cccccc}.btn-default .badge{color:#e7e7e7;background-color:#333333}.btn-primary{color:#ffffff;background-color:#008cba;border-color:#0079a1}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#006687;border-color:#001921}.btn-primary:hover{color:#ffffff;background-color:#006687;border-color:#004b63}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#006687;border-color:#004b63}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#004b63;border-color:#001921}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#008cba;border-color:#0079a1}.btn-primary .badge{color:#008cba;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#43ac6a;border-color:#3c9a5f}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#358753;border-color:#183e26}.btn-success:hover{color:#ffffff;background-color:#358753;border-color:#2b6e44}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#358753;border-color:#2b6e44}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#2b6e44;border-color:#183e26}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#43ac6a;border-color:#3c9a5f}.btn-success .badge{color:#43ac6a;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#ffffff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#e99002;border-color:#d08002}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#b67102;border-color:#513201}.btn-warning:hover{color:#ffffff;background-color:#b67102;border-color:#935b01}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#b67102;border-color:#935b01}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#935b01;border-color:#513201}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#e99002;border-color:#d08002}.btn-warning .badge{color:#e99002;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#f04124;border-color:#ea2f10}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#d32a0e;border-color:#731708}.btn-danger:hover{color:#ffffff;background-color:#d32a0e;border-color:#b1240c}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d32a0e;border-color:#b1240c}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#b1240c;border-color:#731708}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#f04124;border-color:#ea2f10}.btn-danger .badge{color:#f04124;background-color:#ffffff}.btn-link{color:#008cba;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#008cba;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:4px 6px;font-size:12px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:rgba(0,0,0,0.2)}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.4;color:#555555;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#eeeeee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#008cba}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.4;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:60px;padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:60px;line-height:60px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:36px;padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:36px;line-height:36px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:15px;font-weight:normal;line-height:1;color:#6f6f6f;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:8px 12px;font-size:12px;border-radius:0}.input-group-addon.input-lg{padding:16px 20px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#008cba}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.4;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#6f6f6f;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#008cba}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:45px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:12px 15px;font-size:19px;line-height:21px;height:45px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:5.5px;margin-bottom:5.5px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:6px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:12px;padding-bottom:12px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3px;margin-bottom:3px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3px;margin-bottom:3px}.navbar-btn.btn-sm{margin-top:4.5px;margin-bottom:4.5px}.navbar-btn.btn-xs{margin-top:11.5px;margin-bottom:11.5px}.navbar-text{margin-top:12px;margin-bottom:12px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#333333;border-color:#222222}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:transparent}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#222222}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#272727;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#008cba;border-color:#006687}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:transparent}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#007196}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#006687;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#999999}.breadcrumb>.active{color:#333333}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.4;text-decoration:none;color:#008cba;background-color:transparent;border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#008cba;background-color:#eeeeee;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#008cba;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:16px 20px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:8px 12px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:transparent;border:1px solid transparent;border-radius:3px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:transparent;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#008cba}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#006687}.label-success{background-color:#43ac6a}.label-success[href]:hover,.label-success[href]:focus{background-color:#358753}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#e99002}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#b67102}.label-danger{background-color:#f04124}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d32a0e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#008cba;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#008cba;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#fafafa}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#e1e1e1}.container .jumbotron,.container-fluid .jumbotron{border-radius:0;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.4;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#008cba}.thumbnail .caption{padding:9px;color:#222222}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#43ac6a;border-color:#3c9a5f;color:#ffffff}.alert-success hr{border-top-color:#358753}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#5bc0de;border-color:#3db5d8;color:#ffffff}.alert-info hr{border-top-color:#2aabd2}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#e99002;border-color:#d08002;color:#ffffff}.alert-warning hr{border-top-color:#b67102}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#f04124;border-color:#ea2f10;color:#ffffff}.alert-danger hr{border-top-color:#d32a0e}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#f5f5f5;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:21px;color:#ffffff;text-align:center;background-color:#008cba;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#43ac6a}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#e99002}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#f04124}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#008cba;border-color:#008cba}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#87e1ff}.list-group-item-success{color:#43ac6a;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#43ac6a}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#43ac6a;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#43ac6a;border-color:#43ac6a}.list-group-item-info{color:#5bc0de;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#5bc0de}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#5bc0de;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.list-group-item-warning{color:#e99002;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#e99002}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#e99002;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#e99002;border-color:#e99002}.list-group-item-danger{color:#f04124;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#f04124}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#f04124;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#f04124;border-color:#f04124}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#008cba}.panel-primary>.panel-heading{color:#ffffff;background-color:#008cba;border-color:#008cba}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#008cba}.panel-primary>.panel-heading .badge{color:#008cba;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#008cba}.panel-success{border-color:#3c9a5f}.panel-success>.panel-heading{color:#ffffff;background-color:#43ac6a;border-color:#3c9a5f}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3c9a5f}.panel-success>.panel-heading .badge{color:#43ac6a;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3c9a5f}.panel-info{border-color:#3db5d8}.panel-info>.panel-heading{color:#ffffff;background-color:#5bc0de;border-color:#3db5d8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3db5d8}.panel-info>.panel-heading .badge{color:#5bc0de;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3db5d8}.panel-warning{border-color:#d08002}.panel-warning>.panel-heading{color:#ffffff;background-color:#e99002;border-color:#d08002}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d08002}.panel-warning>.panel-heading .badge{color:#e99002;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d08002}.panel-danger{border-color:#ea2f10}.panel-danger>.panel-heading{color:#ffffff;background-color:#f04124;border-color:#ea2f10}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ea2f10}.panel-danger>.panel-heading .badge{color:#f04124;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ea2f10}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#fafafa;border:1px solid #e8e8e8;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.4}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#333333;border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#333333}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#333333}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#333333}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#333333}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#333333}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#333333}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#333333}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#333333}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#333333;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #333333;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#333333;border-bottom:1px solid #262626;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#000000;border-top-color:rgba(0,0,0,0.05);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#333333}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#000000;border-right-color:rgba(0,0,0,0.05)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#333333}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#000000;border-bottom-color:rgba(0,0,0,0.05);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#333333}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#000000;border-left-color:rgba(0,0,0,0.05)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#333333;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border:none;font-size:13px;font-weight:300}.navbar .navbar-toggle:hover .icon-bar{background-color:#b3b3b3}.navbar-collapse{border-top-color:rgba(0,0,0,0.2);-webkit-box-shadow:none;box-shadow:none}.navbar .btn{padding-top:6px;padding-bottom:6px}.navbar-form{margin-top:7px;margin-bottom:5px}.navbar-form .form-control{height:auto;padding:4px 6px}.navbar-text{margin:12px 15px;line-height:21px}.navbar .dropdown-menu{border:none}.navbar .dropdown-menu>li>a,.navbar .dropdown-menu>li>a:focus{background-color:transparent;font-size:13px;font-weight:300}.navbar .dropdown-header{color:rgba(255,255,255,0.5)}.navbar-default .dropdown-menu{background-color:#333333}.navbar-default .dropdown-menu>li>a,.navbar-default .dropdown-menu>li>a:focus{color:#ffffff}.navbar-default .dropdown-menu>li>a:hover,.navbar-default .dropdown-menu>.active>a,.navbar-default .dropdown-menu>.active>a:hover{background-color:#272727}.navbar-inverse .dropdown-menu{background-color:#008cba}.navbar-inverse .dropdown-menu>li>a,.navbar-inverse .dropdown-menu>li>a:focus{color:#ffffff}.navbar-inverse .dropdown-menu>li>a:hover,.navbar-inverse .dropdown-menu>.active>a,.navbar-inverse .dropdown-menu>.active>a:hover{background-color:#006687}.btn{padding:8px 12px}.btn-lg{padding:16px 20px}.btn-sm{padding:8px 12px}.btn-xs{padding:4px 6px}.btn-group .btn~.dropdown-toggle{padding-left:16px;padding-right:16px}.btn-group .dropdown-menu{border-top-width:0}.btn-group.dropup .dropdown-menu{border-top-width:1px;border-bottom-width:0;margin-bottom:0}.btn-group .dropdown-toggle.btn-default~.dropdown-menu{background-color:#e7e7e7;border-color:#cccccc}.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a{color:#333333}.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a:hover{background-color:#d3d3d3}.btn-group .dropdown-toggle.btn-primary~.dropdown-menu{background-color:#008cba;border-color:#0079a1}.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a:hover{background-color:#006d91}.btn-group .dropdown-toggle.btn-success~.dropdown-menu{background-color:#43ac6a;border-color:#3c9a5f}.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a:hover{background-color:#388f58}.btn-group .dropdown-toggle.btn-info~.dropdown-menu{background-color:#5bc0de;border-color:#46b8da}.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a:hover{background-color:#39b3d7}.btn-group .dropdown-toggle.btn-warning~.dropdown-menu{background-color:#e99002;border-color:#d08002}.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a:hover{background-color:#c17702}.btn-group .dropdown-toggle.btn-danger~.dropdown-menu{background-color:#f04124;border-color:#ea2f10}.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a:hover{background-color:#dc2c0f}.lead{color:#6f6f6f}cite{font-style:italic}blockquote{border-left-width:1px;color:#6f6f6f}blockquote.pull-right{border-right-width:1px}blockquote small{font-size:12px;font-weight:300}table{font-size:12px}label,.control-label,.help-block,.checkbox,.radio{font-size:12px;font-weight:normal}input[type="radio"],input[type="checkbox"]{margin-top:1px}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.nav-tabs>li>a{background-color:#e7e7e7;color:#222222}.nav-tabs .caret{border-top-color:#222222;border-bottom-color:#222222}.nav-pills{font-weight:300}.breadcrumb{border:1px solid #dddddd;border-radius:3px;font-size:10px;font-weight:300;text-transform:uppercase}.pagination{font-size:12px;font-weight:300;color:#999999}.pagination>li>a,.pagination>li>span{margin-left:4px;color:#999999}.pagination>.active>a,.pagination>.active>span{color:#fff}.pagination>li>a,.pagination>li:first-child>a,.pagination>li:last-child>a,.pagination>li>span,.pagination>li:first-child>span,.pagination>li:last-child>span{border-radius:3px}.pagination-lg>li>a,.pagination-lg>li>span{padding-left:22px;padding-right:22px}.pagination-sm>li>a,.pagination-sm>li>span{padding:0 5px}.pager{font-size:12px;font-weight:300;color:#999999}.list-group{font-size:12px;font-weight:300}.close{opacity:0.4;text-decoration:none;text-shadow:none}.close:hover,.close:focus{opacity:1}.alert{font-size:12px;font-weight:300}.alert .alert-link{font-weight:normal;color:#fff;text-decoration:underline}.label{padding-left:1em;padding-right:1em;border-radius:0;font-weight:300}.label-default{background-color:#e7e7e7;color:#333333}.badge{font-weight:300}.progress{height:22px;padding:2px;background-color:#f6f6f6;border:1px solid #ccc;-webkit-box-shadow:none;box-shadow:none}.dropdown-menu{padding:0;margin-top:0;font-size:12px}.dropdown-menu>li>a{padding:12px 15px}.dropdown-header{padding-left:15px;padding-right:15px;font-size:9px;text-transform:uppercase}.popover{color:#fff;font-size:12px;font-weight:300}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#222222}.modal .close{color:#222222} \ No newline at end of file + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:1.4;color:#222222;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#008cba;text-decoration:none}a:hover,a:focus{color:#008cba;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.4;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #dddddd}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:80%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#004157}a.text-primary:hover,a.text-primary:focus{color:#006687}.text-success{color:#43ac6a}a.text-success:hover,a.text-success:focus{color:#358753}.text-info{color:#5bc0de}a.text-info:hover,a.text-info:focus{color:#31b0d5}.text-warning{color:#e99002}a.text-warning:hover,a.text-warning:focus{color:#b67102}.text-danger{color:#f04124}a.text-danger:hover,a.text-danger:focus{color:#d32a0e}.bg-primary{color:#fff;background-color:#008cba}a.bg-primary:hover,a.bg-primary:focus{background-color:#006687}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #dddddd}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.4}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #dddddd}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.4;color:#6f6f6f}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #dddddd;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.4}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.4;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.4;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:9px;font-size:15px;line-height:1.4;color:#6f6f6f}.form-control{display:block;width:100%;height:39px;padding:8px 12px;font-size:15px;line-height:1.4;color:#6f6f6f;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:39px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:36px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:60px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:9px;padding-bottom:9px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:36px;padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}select.input-sm{height:36px;line-height:36px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:36px;padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:36px;line-height:36px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:36px;min-height:33px;padding:9px 12px;font-size:12px;line-height:1.5}.input-lg{height:60px;padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:60px;line-height:60px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:60px;padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:60px;line-height:60px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:60px;min-height:40px;padding:17px 20px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:48.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:39px;height:39px;line-height:39px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:60px;height:60px;line-height:60px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:36px;height:36px;line-height:36px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#43ac6a}.has-success .form-control{border-color:#43ac6a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#358753;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #85d0a1;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #85d0a1}.has-success .input-group-addon{color:#43ac6a;border-color:#43ac6a;background-color:#dff0d8}.has-success .form-control-feedback{color:#43ac6a}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#e99002}.has-warning .form-control{border-color:#e99002;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#b67102;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #febc53;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #febc53}.has-warning .input-group-addon{color:#e99002;border-color:#e99002;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#e99002}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#f04124}.has-error .form-control{border-color:#f04124;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#d32a0e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f79483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f79483}.has-error .input-group-addon{color:#f04124;border-color:#f04124;background-color:#f2dede}.has-error .form-control-feedback{color:#f04124}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#626262}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:9px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:30px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:9px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:17px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:9px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 12px;font-size:15px;line-height:1.4;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333333;background-color:#e7e7e7;border-color:#cccccc}.btn-default:focus,.btn-default.focus{color:#333333;background-color:#cecece;border-color:#8c8c8c}.btn-default:hover{color:#333333;background-color:#cecece;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333333;background-color:#cecece;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333333;background-color:#bcbcbc;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#e7e7e7;border-color:#cccccc}.btn-default .badge{color:#e7e7e7;background-color:#333333}.btn-primary{color:#ffffff;background-color:#008cba;border-color:#0079a1}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#006687;border-color:#001921}.btn-primary:hover{color:#ffffff;background-color:#006687;border-color:#004b63}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#006687;border-color:#004b63}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#004b63;border-color:#001921}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#008cba;border-color:#0079a1}.btn-primary .badge{color:#008cba;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#43ac6a;border-color:#3c9a5f}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#358753;border-color:#183e26}.btn-success:hover{color:#ffffff;background-color:#358753;border-color:#2b6e44}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#358753;border-color:#2b6e44}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#2b6e44;border-color:#183e26}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#43ac6a;border-color:#3c9a5f}.btn-success .badge{color:#43ac6a;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#ffffff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#e99002;border-color:#d08002}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#b67102;border-color:#513201}.btn-warning:hover{color:#ffffff;background-color:#b67102;border-color:#935b01}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#b67102;border-color:#935b01}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#935b01;border-color:#513201}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#e99002;border-color:#d08002}.btn-warning .badge{color:#e99002;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#f04124;border-color:#ea2f10}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#d32a0e;border-color:#731708}.btn-danger:hover{color:#ffffff;background-color:#d32a0e;border-color:#b1240c}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#d32a0e;border-color:#b1240c}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#b1240c;border-color:#731708}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#f04124;border-color:#ea2f10}.btn-danger .badge{color:#f04124;background-color:#ffffff}.btn-link{color:#008cba;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#008cba;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:4px 6px;font-size:12px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:rgba(0,0,0,0.2)}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.4;color:#555555;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#eeeeee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#008cba}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.4;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:60px;padding:16px 20px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:60px;line-height:60px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:36px;padding:8px 12px;font-size:12px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:36px;line-height:36px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:8px 12px;font-size:15px;font-weight:normal;line-height:1;color:#6f6f6f;text-align:center;background-color:#eeeeee;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:8px 12px;font-size:12px;border-radius:0}.input-group-addon.input-lg{padding:16px 20px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eeeeee}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eeeeee;border-color:#008cba}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.4;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#6f6f6f;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#008cba}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:45px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:12px 15px;font-size:19px;line-height:21px;height:45px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:5.5px;margin-bottom:5.5px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:6px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:12px;padding-bottom:12px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3px;margin-bottom:3px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3px;margin-bottom:3px}.navbar-btn.btn-sm{margin-top:4.5px;margin-bottom:4.5px}.navbar-btn.btn-xs{margin-top:11.5px;margin-bottom:11.5px}.navbar-text{margin-top:12px;margin-bottom:12px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#333333;border-color:#222222}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:transparent}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#222222}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#272727;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#272727}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#008cba;border-color:#006687}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:transparent}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#007196}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#006687;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#006687}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#999999}.breadcrumb>.active{color:#333333}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:8px 12px;line-height:1.4;text-decoration:none;color:#008cba;background-color:transparent;border:1px solid transparent;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#008cba;background-color:#eeeeee;border-color:transparent}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#ffffff;background-color:#008cba;border-color:transparent;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:transparent;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:16px 20px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:8px 12px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:transparent;border:1px solid transparent;border-radius:3px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eeeeee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:transparent;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#008cba}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#006687}.label-success{background-color:#43ac6a}.label-success[href]:hover,.label-success[href]:focus{background-color:#358753}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#e99002}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#b67102}.label-danger{background-color:#f04124}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d32a0e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#008cba;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#008cba;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#fafafa}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#e1e1e1}.container .jumbotron,.container-fluid .jumbotron{border-radius:0;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.4;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#008cba}.thumbnail .caption{padding:9px;color:#222222}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#43ac6a;border-color:#3c9a5f;color:#ffffff}.alert-success hr{border-top-color:#358753}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#5bc0de;border-color:#3db5d8;color:#ffffff}.alert-info hr{border-top-color:#2aabd2}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#e99002;border-color:#d08002;color:#ffffff}.alert-warning hr{border-top-color:#b67102}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#f04124;border-color:#ea2f10;color:#ffffff}.alert-danger hr{border-top-color:#d32a0e}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#f5f5f5;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:21px;color:#ffffff;text-align:center;background-color:#008cba;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#43ac6a}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#e99002}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#f04124}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#008cba;border-color:#008cba}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#87e1ff}.list-group-item-success{color:#43ac6a;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#43ac6a}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#43ac6a;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#43ac6a;border-color:#43ac6a}.list-group-item-info{color:#5bc0de;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#5bc0de}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#5bc0de;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.list-group-item-warning{color:#e99002;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#e99002}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#e99002;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#e99002;border-color:#e99002}.list-group-item-danger{color:#f04124;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#f04124}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#f04124;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#f04124;border-color:#f04124}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#008cba}.panel-primary>.panel-heading{color:#ffffff;background-color:#008cba;border-color:#008cba}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#008cba}.panel-primary>.panel-heading .badge{color:#008cba;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#008cba}.panel-success{border-color:#3c9a5f}.panel-success>.panel-heading{color:#ffffff;background-color:#43ac6a;border-color:#3c9a5f}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3c9a5f}.panel-success>.panel-heading .badge{color:#43ac6a;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3c9a5f}.panel-info{border-color:#3db5d8}.panel-info>.panel-heading{color:#ffffff;background-color:#5bc0de;border-color:#3db5d8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3db5d8}.panel-info>.panel-heading .badge{color:#5bc0de;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3db5d8}.panel-warning{border-color:#d08002}.panel-warning>.panel-heading{color:#ffffff;background-color:#e99002;border-color:#d08002}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d08002}.panel-warning>.panel-heading .badge{color:#e99002;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d08002}.panel-danger{border-color:#ea2f10}.panel-danger>.panel-heading{color:#ffffff;background-color:#f04124;border-color:#ea2f10}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ea2f10}.panel-danger>.panel-heading .badge{color:#f04124;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ea2f10}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#fafafa;border:1px solid #e8e8e8;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.4}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#333333;border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#333333}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#333333}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#333333}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#333333}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#333333}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#333333}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#333333}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#333333}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.4;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#333333;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #333333;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#333333;border-bottom:1px solid #262626;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#000000;border-top-color:rgba(0,0,0,0.05);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#333333}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#000000;border-right-color:rgba(0,0,0,0.05)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#333333}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#000000;border-bottom-color:rgba(0,0,0,0.05);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#333333}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#000000;border-left-color:rgba(0,0,0,0.05)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#333333;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar{border:none;font-size:13px;font-weight:300}.navbar .navbar-toggle:hover .icon-bar{background-color:#b3b3b3}.navbar-collapse{border-top-color:rgba(0,0,0,0.2);-webkit-box-shadow:none;box-shadow:none}.navbar .btn{padding-top:6px;padding-bottom:6px}.navbar-form{margin-top:7px;margin-bottom:5px}.navbar-form .form-control{height:auto;padding:4px 6px}.navbar-text{margin:12px 15px;line-height:21px}.navbar .dropdown-menu{border:none}.navbar .dropdown-menu>li>a,.navbar .dropdown-menu>li>a:focus{background-color:transparent;font-size:13px;font-weight:300}.navbar .dropdown-header{color:rgba(255,255,255,0.5)}.navbar-default .dropdown-menu{background-color:#333333}.navbar-default .dropdown-menu>li>a,.navbar-default .dropdown-menu>li>a:focus{color:#ffffff}.navbar-default .dropdown-menu>li>a:hover,.navbar-default .dropdown-menu>.active>a,.navbar-default .dropdown-menu>.active>a:hover{background-color:#272727}.navbar-inverse .dropdown-menu{background-color:#008cba}.navbar-inverse .dropdown-menu>li>a,.navbar-inverse .dropdown-menu>li>a:focus{color:#ffffff}.navbar-inverse .dropdown-menu>li>a:hover,.navbar-inverse .dropdown-menu>.active>a,.navbar-inverse .dropdown-menu>.active>a:hover{background-color:#006687}.btn{padding:8px 12px}.btn-lg{padding:16px 20px}.btn-sm{padding:8px 12px}.btn-xs{padding:4px 6px}.btn-group .btn~.dropdown-toggle{padding-left:16px;padding-right:16px}.btn-group .dropdown-menu{border-top-width:0}.btn-group.dropup .dropdown-menu{border-top-width:1px;border-bottom-width:0;margin-bottom:0}.btn-group .dropdown-toggle.btn-default~.dropdown-menu{background-color:#e7e7e7;border-color:#cccccc}.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a{color:#333333}.btn-group .dropdown-toggle.btn-default~.dropdown-menu>li>a:hover{background-color:#d3d3d3}.btn-group .dropdown-toggle.btn-primary~.dropdown-menu{background-color:#008cba;border-color:#0079a1}.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-primary~.dropdown-menu>li>a:hover{background-color:#006d91}.btn-group .dropdown-toggle.btn-success~.dropdown-menu{background-color:#43ac6a;border-color:#3c9a5f}.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-success~.dropdown-menu>li>a:hover{background-color:#388f58}.btn-group .dropdown-toggle.btn-info~.dropdown-menu{background-color:#5bc0de;border-color:#46b8da}.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-info~.dropdown-menu>li>a:hover{background-color:#39b3d7}.btn-group .dropdown-toggle.btn-warning~.dropdown-menu{background-color:#e99002;border-color:#d08002}.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-warning~.dropdown-menu>li>a:hover{background-color:#c17702}.btn-group .dropdown-toggle.btn-danger~.dropdown-menu{background-color:#f04124;border-color:#ea2f10}.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a{color:#ffffff}.btn-group .dropdown-toggle.btn-danger~.dropdown-menu>li>a:hover{background-color:#dc2c0f}.lead{color:#6f6f6f}cite{font-style:italic}blockquote{border-left-width:1px;color:#6f6f6f}blockquote.pull-right{border-right-width:1px}blockquote small{font-size:12px;font-weight:300}table{font-size:12px}label,.control-label,.help-block,.checkbox,.radio{font-size:12px;font-weight:normal}input[type="radio"],input[type="checkbox"]{margin-top:1px}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{border-color:transparent}.nav-tabs>li>a{background-color:#e7e7e7;color:#222222}.nav-tabs .caret{border-top-color:#222222;border-bottom-color:#222222}.nav-pills{font-weight:300}.breadcrumb{border:1px solid #dddddd;border-radius:3px;font-size:10px;font-weight:300;text-transform:uppercase}.pagination{font-size:12px;font-weight:300;color:#999999}.pagination>li>a,.pagination>li>span{margin-left:4px;color:#999999}.pagination>.active>a,.pagination>.active>span{color:#fff}.pagination>li>a,.pagination>li:first-child>a,.pagination>li:last-child>a,.pagination>li>span,.pagination>li:first-child>span,.pagination>li:last-child>span{border-radius:3px}.pagination-lg>li>a,.pagination-lg>li>span{padding-left:22px;padding-right:22px}.pagination-sm>li>a,.pagination-sm>li>span{padding:0 5px}.pager{font-size:12px;font-weight:300;color:#999999}.list-group{font-size:12px;font-weight:300}.close{opacity:0.4;text-decoration:none;text-shadow:none}.close:hover,.close:focus{opacity:1}.alert{font-size:12px;font-weight:300}.alert .alert-link{font-weight:normal;color:#fff;text-decoration:underline}.label{padding-left:1em;padding-right:1em;border-radius:0;font-weight:300}.label-default{background-color:#e7e7e7;color:#333333}.badge{font-weight:300}.progress{height:22px;padding:2px;background-color:#f6f6f6;border:1px solid #ccc;-webkit-box-shadow:none;box-shadow:none}.dropdown-menu{padding:0;margin-top:0;font-size:12px}.dropdown-menu>li>a{padding:12px 15px}.dropdown-header{padding-left:15px;padding-right:15px;font-size:9px;text-transform:uppercase}.popover{color:#fff;font-size:12px;font-weight:300}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#222222}.modal .close{color:#222222} \ No newline at end of file diff --git a/assets/fonts/ComicNeue-Bold.ttf b/assets/fonts/ComicNeue-Bold.ttf new file mode 100644 index 000000000..dc9a6d552 Binary files /dev/null and b/assets/fonts/ComicNeue-Bold.ttf differ diff --git a/assets/fonts/ComicNeue-BoldItalic.ttf b/assets/fonts/ComicNeue-BoldItalic.ttf new file mode 100644 index 000000000..882ef3bdb Binary files /dev/null and b/assets/fonts/ComicNeue-BoldItalic.ttf differ diff --git a/assets/fonts/ComicNeue-Italic.ttf b/assets/fonts/ComicNeue-Italic.ttf new file mode 100644 index 000000000..9626d8f57 Binary files /dev/null and b/assets/fonts/ComicNeue-Italic.ttf differ diff --git a/assets/fonts/ComicNeue-Light.ttf b/assets/fonts/ComicNeue-Light.ttf new file mode 100644 index 000000000..85c82bbdd Binary files /dev/null and b/assets/fonts/ComicNeue-Light.ttf differ diff --git a/assets/fonts/ComicNeue-LightItalic.ttf b/assets/fonts/ComicNeue-LightItalic.ttf new file mode 100644 index 000000000..8329c4fc4 Binary files /dev/null and b/assets/fonts/ComicNeue-LightItalic.ttf differ diff --git a/assets/fonts/ComicNeue-Regular.ttf b/assets/fonts/ComicNeue-Regular.ttf new file mode 100644 index 000000000..d454f4693 Binary files /dev/null and b/assets/fonts/ComicNeue-Regular.ttf differ diff --git a/assets/fonts/RedactedScript-Bold.woff2 b/assets/fonts/RedactedScript-Bold.woff2 new file mode 100644 index 000000000..d9f894154 Binary files /dev/null and b/assets/fonts/RedactedScript-Bold.woff2 differ diff --git a/assets/fonts/RedactedScript-Light.woff2 b/assets/fonts/RedactedScript-Light.woff2 new file mode 100644 index 000000000..51df0f4ad Binary files /dev/null and b/assets/fonts/RedactedScript-Light.woff2 differ diff --git a/assets/fonts/RedactedScript-Regular.woff2 b/assets/fonts/RedactedScript-Regular.woff2 new file mode 100644 index 000000000..27e57dc42 Binary files /dev/null and b/assets/fonts/RedactedScript-Regular.woff2 differ diff --git a/assets/img/ataaka.png b/assets/img/ataaka.png index d223d6cf2..1ef1c347b 100644 Binary files a/assets/img/ataaka.png and b/assets/img/ataaka.png differ diff --git a/assets/img/atilamedika.png b/assets/img/atilamedika.png new file mode 100644 index 000000000..7a4f9db9f Binary files /dev/null and b/assets/img/atilamedika.png differ diff --git a/assets/img/bootstrap.png b/assets/img/bootstrap.png index da9344f70..92a22950f 100644 Binary files a/assets/img/bootstrap.png and b/assets/img/bootstrap.png differ diff --git a/assets/img/cerulean.png b/assets/img/cerulean.png index 15100fc65..f6a4fff7f 100644 Binary files a/assets/img/cerulean.png and b/assets/img/cerulean.png differ diff --git a/assets/img/cosmo.png b/assets/img/cosmo.png index c71d7a65e..265c5b11a 100644 Binary files a/assets/img/cosmo.png and b/assets/img/cosmo.png differ diff --git a/assets/img/cyborg.png b/assets/img/cyborg.png index cd89625b7..7f03c8840 100644 Binary files a/assets/img/cyborg.png and b/assets/img/cyborg.png differ diff --git a/assets/img/darkly.png b/assets/img/darkly.png index 5a411f3e4..6c33ffcd6 100644 Binary files a/assets/img/darkly.png and b/assets/img/darkly.png differ diff --git a/assets/img/flatly.png b/assets/img/flatly.png index 2c64a0db3..e4816e01f 100644 Binary files a/assets/img/flatly.png and b/assets/img/flatly.png differ diff --git a/assets/img/journal.png b/assets/img/journal.png index 530ad3bdc..c4a2a1444 100644 Binary files a/assets/img/journal.png and b/assets/img/journal.png differ diff --git a/assets/img/lokalis.jpeg b/assets/img/lokalis.jpeg new file mode 100644 index 000000000..48c7920e3 Binary files /dev/null and b/assets/img/lokalis.jpeg differ diff --git a/assets/img/lumen.png b/assets/img/lumen.png index ad0745add..1582e1f92 100644 Binary files a/assets/img/lumen.png and b/assets/img/lumen.png differ diff --git a/assets/img/mlite.png b/assets/img/mlite.png index 5f1d29f0f..7a4f9db9f 100644 Binary files a/assets/img/mlite.png and b/assets/img/mlite.png differ diff --git a/assets/img/paper.png b/assets/img/paper.png index 070d6d813..1d0402dcf 100644 Binary files a/assets/img/paper.png and b/assets/img/paper.png differ diff --git a/assets/img/readable.png b/assets/img/readable.png index 24a6d9f7b..06d20b1a0 100644 Binary files a/assets/img/readable.png and b/assets/img/readable.png differ diff --git a/assets/img/sandstone.png b/assets/img/sandstone.png index fccee55d7..cb99702d7 100644 Binary files a/assets/img/sandstone.png and b/assets/img/sandstone.png differ diff --git a/assets/img/simplex.png b/assets/img/simplex.png index 754e8c540..f98c0daf3 100644 Binary files a/assets/img/simplex.png and b/assets/img/simplex.png differ diff --git a/assets/img/sketchy.png b/assets/img/sketchy.png new file mode 100644 index 000000000..8ac8f74da Binary files /dev/null and b/assets/img/sketchy.png differ diff --git a/assets/img/slate.png b/assets/img/slate.png index b6cc60893..859756a40 100644 Binary files a/assets/img/slate.png and b/assets/img/slate.png differ diff --git a/assets/img/spacelab.png b/assets/img/spacelab.png index cba6be2e9..347c9bba6 100644 Binary files a/assets/img/spacelab.png and b/assets/img/spacelab.png differ diff --git a/assets/img/superhero.png b/assets/img/superhero.png index 0432902ff..d4b658062 100644 Binary files a/assets/img/superhero.png and b/assets/img/superhero.png differ diff --git a/assets/img/united.png b/assets/img/united.png index 9e0ebac8a..b7aa043a7 100644 Binary files a/assets/img/united.png and b/assets/img/united.png differ diff --git a/assets/img/yeti.png b/assets/img/yeti.png index 97bb7bad8..aa0a73b8a 100644 Binary files a/assets/img/yeti.png and b/assets/img/yeti.png differ diff --git a/assets/jscripts/chart.js b/assets/jscripts/chart.js new file mode 100644 index 000000000..c0f9743ee --- /dev/null +++ b/assets/jscripts/chart.js @@ -0,0 +1,20 @@ +/** + * Skipped minification because the original files appears to be already minified. + * Original file: /npm/chart.js@4.4.3/dist/chart.umd.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +/*! + * Chart.js v4.4.3 + * https://www.chartjs.org + * (c) 2024 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return Go},get Decimation(){return Qo},get Filler(){return ma},get Legend(){return ya},get SubTitle(){return ka},get Title(){return Ma},get Tooltip(){return Ba}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)t-e)).pop(),e}function N(t){return!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return nt[s][e]et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=J(Math.min(it(r,l,h).lo,i?s:it(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?J(Math.max(it(r,a.axis,c,!0).hi+1,i?0:it(e,l,a.getPixelForValue(c),!0).hi+1),n,s)-n:s-n}return{start:n,count:o}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class xt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var bt=new xt; +/*! + * @kurkle/color v0.3.2 + * https://github.com/kurkle/color#readme + * (c) 2023 Jukka Kurkela + * Released under the MIT License + */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Zt{constructor(t){if(t instanceof Zt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Zt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Jt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Jt(t)?t:new Zt(t)}function te(t){return Jt(t)?t:new Zt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;hi.length){for(h=0;h0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;ct[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Je(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Je(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Je(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Ze(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Je(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Ze(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r{t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Xi={evaluateInteractionItems:Hi,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?ji(t,n,o,s,a):Yi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?ji(t,n,o,s,a):Yi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;tji(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Yi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>Ui(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>Ui(t,ve(e,t),"y",i.intersect,s)}};const qi=["left","top","right","bottom"];function Ki(t,e){return t.filter((t=>t.pos===e))}function Gi(t,e){return t.filter((t=>-1===qi.indexOf(t.pos)&&t.box.axis===e))}function Zi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Ji(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!qi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function ss(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Zi(Ki(e,"left"),!0),n=Zi(Ki(e,"right")),o=Zi(Ki(e,"top"),!0),a=Zi(Ki(e,"bottom")),r=Gi(e,"x"),l=Gi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ki(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);ts(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=Ji(l.concat(h),d);ss(r.fullSize,g,d,p),ss(l,g,d,p),ss(h,g,d,p)&&ss(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),os(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,os(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class rs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class ls extends rs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const hs="$chartjs",cs={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},ds=t=>null===t||""===t;const us=!!Se&&{passive:!0};function fs(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,us)}function gs(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function ps(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||gs(i.addedNodes,s),e=e&&!gs(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function ms(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||gs(i.removedNodes,s),e=e&&!gs(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const xs=new Map;let bs=0;function _s(){const t=window.devicePixelRatio;t!==bs&&(bs=t,xs.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function ys(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){xs.size||window.addEventListener("resize",_s),xs.set(t,e)}(t,o),a}function vs(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){xs.delete(t),xs.size||window.removeEventListener("resize",_s)}(t)}function Ms(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=cs[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,us)}(s,e,n),n}class ws extends rs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[hs]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",ds(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(ds(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[hs])return!1;const i=e[hs].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[hs],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:ps,detach:ms,resize:ys}[e]||Ms;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:vs,detach:vs,resize:vs}[e]||fs)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function ks(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?ls:ws}var Ss=Object.freeze({__proto__:null,BasePlatform:rs,BasicPlatform:ls,DomPlatform:ws,_detectPlatform:ks});const Ps="transparent",Ds={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Ps),n=s.valid&&Qt(e||Ps);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class Cs{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Ds[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new Cs(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(bt.add(this._chart,i),!0):void 0}}function As(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Ts(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function zs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Vs(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Bs=t=>"reset"===t||"none"===t,Ws=(t,e)=>e?t:Object.assign({},t);class Ns{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Es(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Vs(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Fs(t,"x")),o=e.yAxisID=l(i.yAxisID,Fs(t,"y")),a=e.rAxisID=l(i.rAxisID,Fs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Vs(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n="x"===i.axis?"x":"y",o="x"===s.axis?"x":"y",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]t&&!e.hidden&&e._stacked&&{keys:Ts(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Ws(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Os(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Bs(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Bs(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Bs(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function js(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;io)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for($s(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t"top"===e||"left"===e?t[e]+i:t[e]-i,Us=(t,e)=>Math.min(e||t,t);function Xs(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Ks(t){return t.drawTicks?t.tickLength:0}function Gs(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Zs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class Js extends Hs{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=J(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Ks(t.grid)-e.padding-Gs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(J((h.highest.height+6)/o,-1,1)),Math.asin(J(a/r,-1,1))-Math.asin(J(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Gs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Ks(n)+o):(t.height=this.maxHeight,t.width=Ks(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Ks(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,x=function(t){return Ae(i,t,p)};let b,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)b=x(this.bottom),w=this.bottom-u,S=b-m,D=x(t.top)+m,O=t.bottom;else if("bottom"===a)b=x(this.top),D=t.top,O=x(t.bottom)-m,w=b+m,S=this.top+u;else if("left"===a)b=x(this.right),M=this.right-u,k=b-m,P=x(t.left)+m,C=t.right;else if("right"===a)b=x(this.left),P=t.left,C=x(t.right)-m,M=b+m,k=this.left+u;else if("x"===e){if("center"===a)b=x((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=b+m,S=w+u}else if("y"===e){if("center"===a)b=x((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}M=b-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}x.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return x}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class tn{constructor(){this.controllers=new Qs(Ns,"datasets",!0),this.elements=new Qs(Hs,"elements"),this.plugins=new Qs(Object,"plugins"),this.scales=new Qs(Js,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function nn(t,e){return e||!1!==t?!0===t?{}:t:null}function on(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function an(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function rn(t){if("x"===t||"y"===t||"r"===t)return t}function ln(t,...e){if(rn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&rn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function hn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function cn(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=an(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=ln(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return hn(t,"x",i[0])||hn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=b(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||an(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),b(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];b(e,[ue.scales[e.type],ue.scale])})),a}function dn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=cn(t,e)}function un(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const fn=new Map,gn=new Set;function pn(t,e){let i=fn.get(t);return i||(i=e(),fn.set(t,i),gn.add(i)),i}const mn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class xn{constructor(t){this._config=function(t){return(t=t||{}).data=un(t.data),dn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=un(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),dn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return pn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return pn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return pn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return pn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>mn(r,t,e)))),e.forEach((t=>mn(r,s,t))),e.forEach((t=>mn(r,re[n]||{},t))),e.forEach((t=>mn(r,ue,t))),e.forEach((t=>mn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),gn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=bn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||_n(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=bn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function bn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const _n=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const yn=["top","bottom","left","right","chartArea"];function vn(t,e){return"top"===t||"bottom"===t||-1===yn.indexOf(t)&&"x"===e}function Mn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function wn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function kn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Sn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Pn={},Dn=t=>{const e=Sn(t);return Object.values(Pn).filter((t=>t.canvas===e)).pop()};function Cn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}function On(t,e,i){return t.options.clip?t[i]:e[i]}class An{static defaults=ue;static instances=Pn;static overrides=re;static registry=en;static version="4.4.3";static getChart=Dn;static register(...t){en.add(...t),Tn()}static unregister(...t){en.remove(...t),Tn()}constructor(t,e){const s=this.config=new xn(e),n=Sn(t),o=Dn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||ks(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new sn,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Pn[this.id]=this,r&&l?(bt.listen(this,"complete",wn),bt.listen(this,"progress",kn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return en}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return bt.stop(this),this}resize(t,e){bt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=ln(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=ln(o,n),r=l(n.type,e.dtype);void 0!==n.position&&vn(n.position,a)===vn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(en.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{as.configure(this,t,t.options),as.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Mn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{as.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){Cn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;as.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=function(t,e){const{xScale:i,yScale:s}=t;return i&&s?{left:On(i,e,"left"),right:On(i,e,"right"),top:On(s,e,"top"),bottom:On(s,e,"bottom")}:e}(t,this.chartArea),o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Ie(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&ze(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Xi.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),bt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Tn(){return u(An.instances,(t=>t._plugins.invalidate()))}function Ln(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class En{static override(t){Object.assign(En.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return Ln()}parse(){return Ln()}format(){return Ln()}add(){return Ln()}diff(){return Ln()}startOf(){return Ln()}endOf(){return Ln()}}var Rn={_date:En};function In(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Fn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;nZ(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Z(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),x=g(C,h,d),b=g(C+E,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),x=(i.width-o)/f,b=(i.height-o)/g,_=Math.max(Math.min(x,b)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Yn=Object.freeze({__proto__:null,BarController:class extends Ns{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Fn(t,e,i,s)}parseArrayData(t,e,i,s){return Fn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;dt.controller.options.grouped)),o=i.options.stacked,a=[],r=t=>{const i=t.controller.getParsed(e),n=i&&i[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!r(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n=i?1:-1)}(u,e,r)*a,f===r&&(x-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);x=Math.max(Math.min(x,h),o),d=x+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(x))}if(x===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;x+=t,u-=t}return{size:u,base:x,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,l="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=x?g:{};if(i=b){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),x||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends jn{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:$n,RadarController:class extends Ns{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a0&&this.getParsed(e-1);for(let c=e;c0&&Math.abs(i[f]-_[f])>x,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),b||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Un(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return J(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:J(n.innerStart,0,a),innerEnd:J(n.innerEnd,0,a)}}function Xn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function qn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,x=n-p-f,{outerStart:b,outerEnd:_,innerStart:y,innerEnd:v}=Un(e,u,d,x-m),M=d-b,w=d-_,k=m+b/M,S=x-_/w,P=u+y,D=u+v,O=m+y/P,A=x-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=Xn(w,S,a,r);t.arc(e.x,e.y,_,S,x+E)}const i=Xn(D,x,a,r);if(t.lineTo(i.x,i.y),v>0){const e=Xn(D,A,a,r);t.arc(e.x,e.y,v,x+E,A+Math.PI)}const s=(x-v/u+(m+y/u))/2;if(t.arc(a,r,u,x-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=Xn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=Xn(M,m,a,r);if(t.lineTo(n.x,n.y),b>0){const e=Xn(M,k,a,r);t.arc(e.x,e.y,b,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Kn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u}=l,f="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,f?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let g=e.endAngle;if(o){qn(t,e,i,s,g,n);for(let e=0;en?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,g),o||(qn(t,e,i,s,g,n),t.stroke())}function Gn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Zn(t,e,i){t.lineTo(i.x,i.y)}function Jn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=nr&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function eo(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?to:Qn}const io="function"==typeof Path2D;function so(t,e,i,s){io&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Gn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=eo(e);for(const r of n)Gn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class no extends Hs{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a)>=O||Z(n,a,r),g=tt(o,h+u,c+u);return f&&g}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){qn(t,e,i,s,l,n);for(let e=0;e("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function po(t){const e=this.getLabels();return t>=0&&ts=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,x=!s(a),b=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!x&&!b)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),x&&b&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=x?a:M,w=b?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(x&&(u&&M!==a?(i.push({value:a}),Mr)break;i.push({value:t})}return b&&u&&w!==r?i.length&&V(i[i.length-1].value,r,mo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):b&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class bo extends xo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const _o=t=>Math.floor(z(t)),yo=(t,e)=>Math.pow(10,_o(t)+e);function vo(t){return 1===t/Math.pow(10,_o(t))}function Mo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function wo(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=_o(e);let o=function(t,e){let i=_o(e-t);for(;Mo(t,e,i)>10;)i++;for(;Mo(t,e,i)<10;)i--;return Math.min(i,_o(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:vo(g),significand:u}),s}class ko extends Js{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=xo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===yo(this.min,0)?yo(this.min,-1):yo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(yo(i,-1)),o(yo(s,1)))),i<=0&&n(yo(s,-1)),s<=0&&o(yo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=wo({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function So(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Po(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:tn?{start:e-i,end:e}:{start:e,end:e+i}}function Do(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Oo(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function Ao(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function To(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Lo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(So(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/So(this.options))}generateTickLabels(t){xo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Do(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));To(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash),o.lineDashOffset=n.dashOffset,o.beginPath(),Lo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Ro={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Io=Object.keys(Ro);function zo(t,e){return t-e}function Fo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Vo(t,e,i,s){const n=Io.length;for(let o=Io.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function Wo(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class No extends Js{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new Rn._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Fo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Vo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=Io.length-1;o>=Io.indexOf(i);o--){const i=Io[o];if(Ro[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return Io[i?Io.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=Io.indexOf(t)+1,i=Io.length;e+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=J(s,0,o),n=J(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Vo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var jo=Object.freeze({__proto__:null,CategoryScale:class extends Js{static id="category";static defaults={ticks:{callback:po}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:J(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:go(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return po.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:bo,LogarithmicScale:ko,RadialLinearScale:Eo,TimeScale:No,TimeSeriesScale:class extends No{static id="timeseries";static defaults=No.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Ho(e,this.min),this._tableRange=Ho(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;ot-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(Ho(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return Ho(this._table,i*this._tableRange+this._minPos,!0)}}});const $o=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Yo=$o.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Uo(t){return $o[t%$o.length]}function Xo(t){return Yo[t%Yo.length]}function qo(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof jn?e=function(t,e){return t.backgroundColor=t.data.map((()=>Uo(e++))),e}(i,e):n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Uo(e),t.backgroundColor=Xo(e),++e}(i,e))}}function Ko(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Go={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n;if(!i.forceOverride&&(Ko(s)||(a=n)&&(a.borderColor||a.backgroundColor)||o&&Ko(o)))return;var a;const r=qo(t);s.forEach(r)}};function Zo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Jo(t){t.data.datasets.forEach((t=>{Zo(t)}))}var Qo={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Jo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=J(it(e,o.axis,a).lo,0,i-1)),s=h?J(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Zo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const x=[],b=e+i-1,_=t[e].x,y=t[b].x-_;for(o=e;og&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&x.push({...t[e],x:p}),s!==u&&s!==i&&x.push({...t[s],x:p})}o>0&&i!==u&&x.push(t[i]),x.push(a),h=e,m=0,f=g=l,c=d=u=o}}return x}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Jo(t)}};function ta(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ea(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function ia(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function sa(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ea(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new no({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function na(t){return t&&!1!==t.fill}function oa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function aa(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function ra(t,e,i){const s=[];for(let n=0;n=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&da(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;na(i)&&da(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;na(s)&&"beforeDatasetDraw"===i.drawTime&&da(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const xa=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class ba extends Hs{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=xa(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=_a(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=xa(o,d),x=this.isHorizontal(),b=this._computeTitleHeight();f=x?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+b,line:0}:{x:this.left+c,y:ft(n,this.top+b+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),x?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+b+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,x?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),x)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=_a(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class va extends Hs{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var Ma={id:"title",_element:va,start(t,e,i){!function(t,e){const i=new va({ctx:t.ctx,options:e,chart:t});as.configure(t,i,e),as.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;as.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;as.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const wa=new WeakMap;var ka={id:"subtitle",start(t,e,i){const s=new va({ctx:t.ctx,options:i,chart:t});as.configure(t,s,i),as.addBox(t,s),wa.set(t,s)},stop(t){as.removeBox(t,wa.get(t)),wa.delete(t)},beforeUpdate(t,e,i){const s=wa.get(t);as.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Sa={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;et+e))/s.size,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i-1?t.split("\n"):t}function Ca(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Oa(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function Aa(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function Ta(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Aa(t,e,i,s),yAlign:s}}function La(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Ea(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ra(t){return Pa([],Da(t))}function Ia(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const za={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{const e={before:[],lines:[],after:[]},n=Ia(i,t);Pa(e.before,Da(Fa(n,"beforeLabel",this,t))),Pa(e.lines,Fa(n,"label",this,t)),Pa(e.after,Da(Fa(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return Ra(Fa(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Fa(i,"beforeFooter",this,t),n=Fa(i,"footer",this,t),o=Fa(i,"afterFooter",this,t);let a=[];return a=Pa(a,Da(s)),a=Pa(a,Da(n)),a=Pa(a,Da(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Ia(t.callbacks,e);s.push(Fa(i,"labelColor",this,e)),n.push(Fa(i,"labelPointStyle",this,e)),o.push(Fa(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Sa[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Oa(this,i),a=Object.assign({},t,e),r=Ta(this.chart,i,a),l=La(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ea(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let x,b,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ea(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Sa[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Oa(this,t),a=Object.assign({},i,this._size),r=Ta(e,t,a),l=La(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Sa[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Ba={id:"tooltip",_element:Va,positioners:Sa,afterInit(t,e,i){i&&(t.tooltip=new Va({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:za},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return An.register(Yn,jo,fo,t),An.helpers={...Wi},An._adapters=Rn,An.Animation=Cs,An.Animations=Os,An.animator=bt,An.controllers=en.controllers.items,An.DatasetController=Ns,An.Element=Hs,An.elements=fo,An.Interaction=Xi,An.layouts=as,An.platforms=Ss,An.Scale=Js,An.Ticks=ae,Object.assign(An,Yn,jo,fo,t,Ss),An.Chart=An,"undefined"!=typeof window&&(window.Chart=An),An})); +//# sourceMappingURL=chart.umd.js.map diff --git a/assets/jscripts/dataTables-id.json b/assets/jscripts/dataTables-id.json new file mode 100644 index 000000000..0977513d4 --- /dev/null +++ b/assets/jscripts/dataTables-id.json @@ -0,0 +1,248 @@ +{ + "aria": { + "paginate": { + "first": "Pertama", + "last": "Terakhir", + "next": "Selanjutnya", + "previous": "Sebelumnya" + } + }, + "autoFill": { + "cancel": "Batal", + "fill": "Isi semua sel dengan %d<\/i>", + "fillHorizontal": "Isi sel secara horizontal", + "fillVertical": "Isi sel secara vertikal", + "info": "" + }, + "buttons": { + "collection": "Kumpulan ", + "colvis": "Visibilitas Kolom", + "colvisRestore": "Kembalikan visibilitas", + "copy": "Salin", + "copyKeys": "Tekan ctrl atau u2318 + C untuk menyalin tabel ke papan klip.

Untuk membatalkan, klik pesan ini atau tekan esc.", + "copySuccess": { + "_": "%d baris disalin ke papan klip", + "1": "satu baris disalin ke papan klip" + }, + "copyTitle": "Salin ke Papan klip", + "createState": "Tambahkan Data", + "csv": "CSV", + "excel": "Excel", + "pageLength": { + "_": "Tampilkan %d baris", + "-1": "Tampilkan semua baris" + }, + "pdf": "PDF", + "print": "Cetak", + "removeAllStates": "Hapus Semua Data", + "removeState": "Hapus Data", + "renameState": "Rubah Nama", + "savedStates": "SImpan Data", + "stateRestore": "Publihkan Data", + "updateState": "Perbaharui data" + }, + "datetime": { + "amPm": { + "0": "am", + "1": "pm" + }, + "hours": "Jam", + "minutes": "Menit", + "months": { + "0": "Januari", + "1": "Februari", + "10": "November", + "11": "Desember", + "2": "Maret", + "3": "April", + "4": "Mei", + "5": "Juni", + "6": "Juli", + "7": "Agustus", + "8": "September", + "9": "Oktober" + }, + "next": "Selanjutnya", + "previous": "Sebelumnya", + "seconds": "Detik", + "unknown": "-", + "weekdays": { + "0": "Min", + "1": "Sen", + "2": "Sel", + "3": "Rab", + "4": "Kam", + "5": "Jum", + "6": "Sab" + } + }, + "decimal": "", + "editor": { + "close": "Tutup", + "create": { + "button": "Tambah", + "submit": "Tambah", + "title": "Tambah inputan baru" + }, + "edit": { + "button": "Edit", + "submit": "Edit", + "title": "Edit inputan" + }, + "error": { + "system": "Terjadi kesalahan pada system. (Informasi Selebihnya<\/a>)." + }, + "multi": { + "info": "Item yang dipilih berisi nilai yang berbeda untuk input ini. Untuk mengedit dan mengatur semua item untuk input ini ke nilai yang sama, klik atau tekan di sini, jika tidak maka akan mempertahankan nilai masing-masing.", + "noMulti": "Masukan ini dapat diubah satu per satu, tetapi bukan bagian dari grup.", + "restore": "Batalkan Perubahan", + "title": "Beberapa Nilai" + }, + "remove": { + "button": "Hapus", + "confirm": { + "_": "Apakah Anda yakin untuk menghapus %d baris?", + "1": "Apakah Anda yakin untuk menghapus 1 baris?" + }, + "submit": "Hapus", + "title": "Hapus inputan" + } + }, + "emptyTable": "Tidak ada data yang tersedia pada tabel ini", + "info": "Menampilkan _START_ sampai _END_ dari _TOTAL_ entri", + "infoEmpty": "Menampilkan 0 sampai 0 dari 0 entri", + "infoFiltered": "(disaring dari _MAX_ entri keseluruhan)", + "infoPostFix": "", + "infoThousands": ",", + "lengthMenu": "Tampilkan _MENU_ entri", + "loadingRecords": "Sedang memuat...", + "processing": "Sedang memproses...", + "search": "Cari:", + "searchBuilder": { + "add": "Tambah Kondisi", + "button": { + "_": "Cari Builder (%d)", + "0": "Cari Builder" + }, + "clearAll": "Bersihkan Semua", + "condition": "Kondisi", + "conditions": { + "array": { + "contains": "Berisi", + "empty": "Kosong", + "equals": "Sama dengan", + "not": "Tidak", + "notEmpty": "Tidak kosong", + "without": "Tanpa" + }, + "date": { + "after": "Setelah", + "before": "Sebelum", + "between": "Diantara", + "empty": "Kosong", + "equals": "Sama dengan", + "not": "Tidak sama", + "notBetween": "Tidak diantara", + "notEmpty": "Tidak kosong" + }, + "number": { + "between": "Di antara", + "empty": "Kosong", + "equals": "Sama dengan", + "gt": "Lebih besar dari", + "gte": "Lebih besar atau sama dengan", + "lt": "Lebih kecil dari", + "lte": "Lebih kecil atau sama dengan", + "not": "Tidak sama", + "notBetween": "Tidak di antara", + "notEmpty": "Tidak kosong" + }, + "string": { + "contains": "Berisi", + "empty": "Kosong", + "endsWith": "Diakhiri dengan", + "equals": "Sama dengan", + "not": "Tidak sama", + "notContains": "Tidak Berisi", + "notEmpty": "Tidak kosong", + "notEndsWith": "Tidak diakhiri Dengan", + "notStartsWith": "Tidak diawali Dengan", + "startsWith": "Diawali dengan" + } + }, + "data": "Data", + "deleteTitle": "Hapus filter", + "leftTitle": "Ke Kiri", + "logicAnd": "Dan", + "logicOr": "Atau", + "rightTitle": "Ke Kanan", + "title": { + "_": "Cari Builder (%d)", + "0": "Cari Builder" + }, + "value": "Nilai" + }, + "searchPanes": { + "clearMessage": "Bersihkan", + "collapse": { + "_": "Panel Pencarian (%d)", + "0": "Panel Pencarian" + }, + "collapseMessage": "Ciutkan", + "count": "{total}", + "countFiltered": "{shown} ({total})", + "emptyPanes": "Tidak Ada Panel Pencarian", + "loadMessage": "Memuat Panel Pencarian", + "showMessage": "Tampilkan", + "title": "Saringan Aktif - %d" + }, + "searchPlaceholder": "", + "select": { + "cells": { + "_": "%d sel dipilih", + "0": "", + "1": "1 sel dipilih" + }, + "columns": { + "_": "%d kolom dipilih", + "0": "", + "1": "1 kolom dirpilih" + }, + "rows": { + "_": "%d baris dipilih", + "0": "", + "1": "1 baris dipilih" + } + }, + "stateRestore": { + "creationModal": { + "button": "Buat", + "columns": { + "search": "Pencarian Kolom", + "visible": "Visibilitas Kolom" + }, + "name": "Nama:", + "order": "Penyortiran", + "paging": "Nomor Halaman", + "scroller": "Posisi Skrol", + "search": "Pencarian", + "searchBuilder": "Cari Builder", + "select": "Pemilihan", + "title": "Buat State Baru", + "toggleLabel": "Termasuk:" + }, + "duplicateError": "Nama State ini sudah ada.", + "emptyError": "Nama tidak boleh kosong.", + "emptyStates": "Tidak ada State yang disimpan.", + "removeConfirm": "Apakah Anda yakin ingin menghapus %s?", + "removeError": "Gagal menghapus State.", + "removeJoiner": "dan", + "removeSubmit": "Hapus", + "removeTitle": "Penghapusan State", + "renameButton": "Ganti Nama", + "renameLabel": "Nama Baru untuk %s:", + "renameTitle": "Ganti nama State" + }, + "thousands": ".", + "zeroRecords": "Tidak ditemukan data yang sesuai" +} \ No newline at end of file diff --git a/assets/jscripts/dataTables.fixedColumns.min.js b/assets/jscripts/dataTables.fixedColumns.min.js new file mode 100644 index 000000000..f8202b8ee --- /dev/null +++ b/assets/jscripts/dataTables.fixedColumns.min.js @@ -0,0 +1,4 @@ +/*! FixedColumns 4.3.0 + * © SpryMedia Ltd - datatables.net/license + */ +!function(e){var i,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return e(t,window,document)}):"object"==typeof exports?(i=require("jquery"),o=function(t,s){s.fn.dataTable||require("datatables.net")(t,s)},"undefined"==typeof window?module.exports=function(t,s){return t=t||window,s=s||i(t),o(t,s),e(s,0,t.document)}:(o(window,i),module.exports=e(i,window,window.document))):e(jQuery,window,document)}(function(o,t,s,F){"use strict";var A,i,e,l,d=o.fn.dataTable;function r(t,s){var e=this;if(i&&i.versionCheck&&i.versionCheck("1.10.0"))return t=new i.Api(t),this.classes=A.extend(!0,{},r.classes),this.c=A.extend(!0,{},r.defaults,s),s&&s.left!==F||this.c.leftColumns===F||(this.c.left=this.c.leftColumns),s&&s.right!==F||this.c.rightColumns===F||(this.c.right=this.c.rightColumns),this.s={barWidth:0,dt:t,rtl:"rtl"===A("body").css("direction")},s={bottom:"0px",display:"block",position:"absolute",width:this.s.barWidth+1+"px"},this.dom={leftBottomBlocker:A("
").css(s).css("left",0).addClass(this.classes.leftBottomBlocker),leftTopBlocker:A("
").css(s).css({left:0,top:0}).addClass(this.classes.leftTopBlocker),rightBottomBlocker:A("
").css(s).css("right",0).addClass(this.classes.rightBottomBlocker),rightTopBlocker:A("
").css(s).css({right:0,top:0}).addClass(this.classes.rightTopBlocker)},this.s.dt.settings()[0]._bInitComplete?(this._addStyles(),this._setKeyTableListener()):t.one("init.dt.dtfc",function(){e._addStyles(),e._setKeyTableListener()}),t.on("column-sizing.dt.dtfc",function(){return e._addStyles()}),t.settings()[0]._fixedColumns=this,t.on("destroy",function(){return e._destroy()}),this;throw new Error("FixedColumns requires DataTables 1.10 or newer")}function h(t,s){void 0===s&&(s=null);t=new d.Api(t),s=s||t.init().fixedColumns||d.defaults.fixedColumns;new e(t,s)}return r.prototype.left=function(t){return t!==F?(0<=t&&t<=this.s.dt.columns().count()&&(this.c.left=t,this._addStyles()),this):this.c.left},r.prototype.right=function(t){return t!==F?(0<=t&&t<=this.s.dt.columns().count()&&(this.c.right=t,this._addStyles()),this):this.c.right},r.prototype._addStyles=function(){this.s.dt.settings()[0].oScroll.sY&&(s=A(this.s.dt.table().node()).closest("div.dataTables_scrollBody")[0],e=this.s.dt.settings()[0].oBrowser.barWidth,s.offsetWidth-s.clientWidth>=e?this.s.barWidth=e:this.s.barWidth=0,this.dom.rightTopBlocker.css("width",this.s.barWidth+1),this.dom.leftTopBlocker.css("width",this.s.barWidth+1),this.dom.rightBottomBlocker.css("width",this.s.barWidth+1),this.dom.leftBottomBlocker.css("width",this.s.barWidth+1));for(var t=null,s=this.s.dt.column(0).header(),e=null,i=(null!==s&&(e=(s=A(s)).outerHeight()+1,t=A(s.closest("div.dataTables_scroll")).css("position","relative")),this.s.dt.column(0).footer()),o=null,l=(null!==i&&(o=(i=A(i)).outerHeight(),null===t)&&(t=A(i.closest("div.dataTables_scroll")).css("position","relative")),this.s.dt.columns().data().toArray().length),d=0,r=0,h=A(this.s.dt.table().node()).children("tbody").children("tr"),n=0,a=new Map,c=0;c=l-this.c.right){if(A(this.s.dt.table().node()).addClass(this.classes.tableFixedRight),t.addClass(this.classes.tableFixedRight),c+1+ye.left)&&(l=r.scrollLeft(),r.scrollLeft(l-(e.left-(d.left+o))))}),this.s.dt.on("draw.dt.dtfc",function(){h._addStyles()}),this.s.dt.on("column-reorder.dt.dtfc",function(){h._addStyles()}),this.s.dt.on("column-visibility.dt.dtfc",function(t,s,e,i,o){o&&!s.bDestroying&&setTimeout(function(){h._addStyles()},50)})},r.version="4.3.0",r.classes={fixedLeft:"dtfc-fixed-left",fixedRight:"dtfc-fixed-right",leftBottomBlocker:"dtfc-left-bottom-blocker",leftTopBlocker:"dtfc-left-top-blocker",rightBottomBlocker:"dtfc-right-bottom-blocker",rightTopBlocker:"dtfc-right-top-blocker",tableFixedLeft:"dtfc-has-left",tableFixedRight:"dtfc-has-right"},r.defaults={i18n:{button:"FixedColumns"},left:1,right:0},e=r,i=(A=o).fn.dataTable,o.fn.dataTable.FixedColumns=e,o.fn.DataTable.FixedColumns=e,(l=d.Api.register)("fixedColumns()",function(){return this}),l("fixedColumns().left()",function(t){var s=this.context[0];return t!==F?(s._fixedColumns.left(t),this):s._fixedColumns.left()}),l("fixedColumns().right()",function(t){var s=this.context[0];return t!==F?(s._fixedColumns.right(t),this):s._fixedColumns.right()}),d.ext.buttons.fixedColumns={action:function(t,s,e,i){o(e).attr("active")?(o(e).removeAttr("active").removeClass("active"),s.fixedColumns().left(0),s.fixedColumns().right(0)):(o(e).attr("active","true").addClass("active"),s.fixedColumns().left(i.config.left),s.fixedColumns().right(i.config.right))},config:{left:1,right:0},init:function(t,s,e){t.settings()[0]._fixedColumns===F&&h(t.settings(),e),o(s).attr("active","true").addClass("active"),t.button(s).text(e.text||t.i18n("buttons.fixedColumns",t.settings()[0]._fixedColumns.c.i18n.button))},text:null},o(s).on("plugin-init.dt",function(t,s){"dt"!==t.namespace||!s.oInit.fixedColumns&&!d.defaults.fixedColumns||s._fixedColumns||h(s,null)}),d}); \ No newline at end of file diff --git a/assets/jscripts/jquery.contextMenu.min.js b/assets/jscripts/jquery.contextMenu.min.js new file mode 100644 index 000000000..d9a3516e2 --- /dev/null +++ b/assets/jscripts/jquery.contextMenu.min.js @@ -0,0 +1,2 @@ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?e(require("jquery")):e(jQuery)}(function(m){"use strict";var a;m.support.htmlMenuitem="HTMLMenuItemElement"in window,m.support.htmlCommand="HTMLCommandElement"in window,m.support.eventSelectstart="onselectstart"in document.documentElement,m.ui&&m.widget||(m.cleanData=(a=m.cleanData,function(e){var t,n,o;for(o=0;null!=e[o];o++){n=e[o];try{(t=m._data(n,"events"))&&t.remove&&m(n).triggerHandler("remove")}catch(e){}}a(e)}));var c=null,d=!1,p=m(window),f=0,h={},x={},v={},g={selector:null,appendTo:null,trigger:"right",autoHide:!1,delay:200,reposition:!0,hideOnSecondTrigger:!1,selectableSubMenu:!1,classNames:{hover:"context-menu-hover",disabled:"context-menu-disabled",visible:"context-menu-visible",notSelectable:"context-menu-not-selectable",icon:"context-menu-icon",iconEdit:"context-menu-icon-edit",iconCut:"context-menu-icon-cut",iconCopy:"context-menu-icon-copy",iconPaste:"context-menu-icon-paste",iconDelete:"context-menu-icon-delete",iconAdd:"context-menu-icon-add",iconQuit:"context-menu-icon-quit",iconLoadingClass:"context-menu-icon-loading"},determinePosition:function(e){if(m.ui&&m.ui.position)e.css("display","block").position({my:"center top",at:"center bottom",of:this,offset:"0 5",collision:"fit"}).css("display","none");else{var t=this.offset();t.top+=this.outerHeight(),t.left+=this.outerWidth()/2-e.outerWidth()/2,e.css(t)}},position:function(e,t,n){var o;if(t||n){if("maintain"===t&&"maintain"===n)o=e.$menu.position();else{var a=e.$menu.offsetParent().offset();o={top:n-a.top,left:t-a.left}}var s=p.scrollTop()+p.height(),i=p.scrollLeft()+p.width(),c=e.$menu.outerHeight(),l=e.$menu.outerWidth();o.top+c>s&&(o.top-=c),o.top<0&&(o.top=0),o.left+l>i&&(o.left-=l),o.left<0&&(o.left=0),e.$menu.css(o)}else e.determinePosition.call(this,e.$menu)},positionSubmenu:function(e){if(void 0!==e)if(m.ui&&m.ui.position)e.css("display","block").position({my:"left top-5",at:"right top",of:this,collision:"flipfit fit"}).css("display","");else{var t={top:-9,left:this.outerWidth()-5};e.css(t)}},zIndex:1,animation:{duration:50,show:"slideDown",hide:"slideUp"},events:{preShow:m.noop,show:m.noop,hide:m.noop,activated:m.noop},callback:null,items:{}},s={timer:null,pageX:null,pageY:null},b={abortevent:function(e){e.preventDefault(),e.stopImmediatePropagation()},contextmenu:function(e){var t=m(this);if(!1!==e.data.events.preShow(t,e)&&("right"===e.data.trigger&&(e.preventDefault(),e.stopImmediatePropagation()),!("right"!==e.data.trigger&&"demand"!==e.data.trigger&&e.originalEvent||!(void 0===e.mouseButton||!e.data||"left"===e.data.trigger&&0===e.mouseButton||"right"===e.data.trigger&&2===e.mouseButton)||t.hasClass("context-menu-active")||t.hasClass("context-menu-disabled")))){if(c=t,e.data.build){var n=e.data.build(c,e);if(!1===n)return;if(e.data=m.extend(!0,{},g,e.data,n||{}),!e.data.items||m.isEmptyObject(e.data.items))throw window.console&&(console.error||console.log).call(console,"No items specified to show in contextMenu"),new Error("No Items specified");e.data.$trigger=c,$.create(e.data)}$.show.call(t,e.data,e.pageX,e.pageY)}},click:function(e){e.preventDefault(),e.stopImmediatePropagation(),m(this).trigger(m.Event("contextmenu",{data:e.data,pageX:e.pageX,pageY:e.pageY}))},mousedown:function(e){var t=m(this);c&&c.length&&!c.is(t)&&c.data("contextMenu").$menu.trigger("contextmenu:hide"),2===e.button&&(c=t.data("contextMenuActive",!0))},mouseup:function(e){var t=m(this);t.data("contextMenuActive")&&c&&c.length&&c.is(t)&&!t.hasClass("context-menu-disabled")&&(e.preventDefault(),e.stopImmediatePropagation(),(c=t).trigger(m.Event("contextmenu",{data:e.data,pageX:e.pageX,pageY:e.pageY}))),t.removeData("contextMenuActive")},mouseenter:function(e){var t=m(this),n=m(e.relatedTarget),o=m(document);n.is(".context-menu-list")||n.closest(".context-menu-list").length||c&&c.length||(s.pageX=e.pageX,s.pageY=e.pageY,s.data=e.data,o.on("mousemove.contextMenuShow",b.mousemove),s.timer=setTimeout(function(){s.timer=null,o.off("mousemove.contextMenuShow"),(c=t).trigger(m.Event("contextmenu",{data:s.data,pageX:s.pageX,pageY:s.pageY}))},e.data.delay))},mousemove:function(e){s.pageX=e.pageX,s.pageY=e.pageY},mouseleave:function(e){var t=m(e.relatedTarget);if(!t.is(".context-menu-list")&&!t.closest(".context-menu-list").length){try{clearTimeout(s.timer)}catch(e){}s.timer=null}},layerClick:function(a){var s,i,c=m(this).data("contextMenuRoot"),l=a.button,r=a.pageX,u=a.pageY,d=void 0===r;a.preventDefault(),setTimeout(function(){if(d)null!=c&&null!==c.$menu&&void 0!==c.$menu&&c.$menu.trigger("contextmenu:hide");else{var e,t="left"===c.trigger&&0===l||"right"===c.trigger&&2===l;if(document.elementFromPoint&&c.$layer){if(c.$layer.hide(),null!==(s=document.elementFromPoint(r-p.scrollLeft(),u-p.scrollTop()))&&s.isContentEditable){var n=document.createRange(),o=window.getSelection();n.selectNode(s),n.collapse(!0),o.removeAllRanges(),o.addRange(n)}m(s).trigger(a),c.$layer.show()}if(c.hideOnSecondTrigger&&t&&null!==c.$menu&&void 0!==c.$menu)c.$menu.trigger("contextmenu:hide");else{if(c.reposition&&t)if(document.elementFromPoint){if(c.$trigger.is(s))return void c.position.call(c.$trigger,c,r,u)}else if(i=c.$trigger.offset(),e=m(window),i.top+=e.scrollTop(),i.top<=a.pageY&&(i.left+=e.scrollLeft(),i.left<=a.pageX&&(i.bottom=i.top+c.$trigger.outerHeight(),i.bottom>=a.pageY&&(i.right=i.left+c.$trigger.outerWidth(),i.right>=a.pageX))))return void c.position.call(c.$trigger,c,r,u);s&&t&&c.$trigger.one("contextmenu:hidden",function(){m(s).contextMenu({x:r,y:u,button:l})}),null!=c&&null!==c.$menu&&void 0!==c.$menu&&c.$menu.trigger("contextmenu:hide")}}},50)},keyStop:function(e,t){t.isInput||e.preventDefault(),e.stopPropagation()},key:function(e){var t={};c&&(t=c.data("contextMenu")||{}),void 0===t.zIndex&&(t.zIndex=0);var n=0,o=function(e){""!==e.style.zIndex?n=e.style.zIndex:null!==e.offsetParent&&void 0!==e.offsetParent?o(e.offsetParent):null!==e.parentElement&&void 0!==e.parentElement&&o(e.parentElement)};if(o(e.target),!(t.$menu&&parseInt(n,10)>parseInt(t.$menu.css("zIndex"),10))){switch(e.keyCode){case 9:case 38:if(b.keyStop(e,t),t.isInput){if(9===e.keyCode&&e.shiftKey)return e.preventDefault(),t.$selected&&t.$selected.find("input, textarea, select").blur(),void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("prevcommand"));if(38===e.keyCode&&"checkbox"===t.$selected.find("input, textarea, select").prop("type"))return void e.preventDefault()}else if(9!==e.keyCode||e.shiftKey)return void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("prevcommand"));break;case 40:if(b.keyStop(e,t),!t.isInput)return void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("nextcommand"));if(9===e.keyCode)return e.preventDefault(),t.$selected&&t.$selected.find("input, textarea, select").blur(),void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("nextcommand"));if(40===e.keyCode&&"checkbox"===t.$selected.find("input, textarea, select").prop("type"))return void e.preventDefault();break;case 37:if(b.keyStop(e,t),t.isInput||!t.$selected||!t.$selected.length)break;if(t.$selected.parent().hasClass("context-menu-root"))break;var a=t.$selected.parent().parent();return t.$selected.trigger("contextmenu:blur"),void(t.$selected=a);case 39:if(b.keyStop(e,t),t.isInput||!t.$selected||!t.$selected.length)break;var s=t.$selected.data("contextMenu")||{};if(s.$menu&&t.$selected.hasClass("context-menu-submenu"))return t.$selected=null,s.$selected=null,void s.$menu.trigger("nextcommand");break;case 35:case 36:return t.$selected&&t.$selected.find("input, textarea, select").length?void 0:((t.$selected&&t.$selected.parent()||t.$menu).children(":not(."+t.classNames.disabled+", ."+t.classNames.notSelectable+")")[36===e.keyCode?"first":"last"]().trigger("contextmenu:focus"),void e.preventDefault());case 13:if(b.keyStop(e,t),t.isInput){if(t.$selected&&!t.$selected.is("textarea, select"))return void e.preventDefault();break}return void(void 0!==t.$selected&&null!==t.$selected&&t.$selected.trigger("mouseup"));case 32:case 33:case 34:return void b.keyStop(e,t);case 27:return b.keyStop(e,t),void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("contextmenu:hide"));default:var i=String.fromCharCode(e.keyCode).toUpperCase();if(t.accesskeys&&t.accesskeys[i])return void t.accesskeys[i].$node.trigger(t.accesskeys[i].$menu?"contextmenu:focus":"mouseup")}e.stopPropagation(),void 0!==t.$selected&&null!==t.$selected&&t.$selected.trigger(e)}},prevItem:function(e){e.stopPropagation();var t=m(this).data("contextMenu")||{},n=m(this).data("contextMenuRoot")||{};if(t.$selected){var o=t.$selected;(t=t.$selected.parent().data("contextMenu")||{}).$selected=o}for(var a=t.$menu.children(),s=t.$selected&&t.$selected.prev().length?t.$selected.prev():a.last(),i=s;s.hasClass(n.classNames.disabled)||s.hasClass(n.classNames.notSelectable)||s.is(":hidden");)if((s=s.prev().length?s.prev():a.last()).is(i))return;t.$selected&&b.itemMouseleave.call(t.$selected.get(0),e),b.itemMouseenter.call(s.get(0),e);var c=s.find("input, textarea, select");c.length&&c.focus()},nextItem:function(e){e.stopPropagation();var t=m(this).data("contextMenu")||{},n=m(this).data("contextMenuRoot")||{};if(t.$selected){var o=t.$selected;(t=t.$selected.parent().data("contextMenu")||{}).$selected=o}for(var a=t.$menu.children(),s=t.$selected&&t.$selected.next().length?t.$selected.next():a.first(),i=s;s.hasClass(n.classNames.disabled)||s.hasClass(n.classNames.notSelectable)||s.is(":hidden");)if((s=s.next().length?s.next():a.first()).is(i))return;t.$selected&&b.itemMouseleave.call(t.$selected.get(0),e),b.itemMouseenter.call(s.get(0),e);var c=s.find("input, textarea, select");c.length&&c.focus()},focusInput:function(){var e=m(this).closest(".context-menu-item"),t=e.data(),n=t.contextMenu,o=t.contextMenuRoot;o.$selected=n.$selected=e,o.isInput=n.isInput=!0},blurInput:function(){var e=m(this).closest(".context-menu-item").data(),t=e.contextMenu;e.contextMenuRoot.isInput=t.isInput=!1},menuMouseenter:function(){m(this).data().contextMenuRoot.hovering=!0},menuMouseleave:function(e){var t=m(this).data().contextMenuRoot;t.$layer&&t.$layer.is(e.relatedTarget)&&(t.hovering=!1)},itemMouseenter:function(e){var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;a.hovering=!0,e&&a.$layer&&a.$layer.is(e.relatedTarget)&&(e.preventDefault(),e.stopImmediatePropagation()),(o.$menu?o:a).$menu.children("."+a.classNames.hover).trigger("contextmenu:blur").children(".hover").trigger("contextmenu:blur"),t.hasClass(a.classNames.disabled)||t.hasClass(a.classNames.notSelectable)?o.$selected=null:t.trigger("contextmenu:focus")},itemMouseleave:function(e){var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;if(a!==o&&a.$layer&&a.$layer.is(e.relatedTarget))return void 0!==a.$selected&&null!==a.$selected&&a.$selected.trigger("contextmenu:blur"),e.preventDefault(),e.stopImmediatePropagation(),void(a.$selected=o.$selected=o.$node);o&&o.$menu&&o.$menu.hasClass("context-menu-visible")||t.trigger("contextmenu:blur")},itemClick:function(e){var t,n=m(this),o=n.data(),a=o.contextMenu,s=o.contextMenuRoot,i=o.contextMenuKey;if(!(!a.items[i]||n.is("."+s.classNames.disabled+", .context-menu-separator, ."+s.classNames.notSelectable)||n.is(".context-menu-submenu")&&!1===s.selectableSubMenu)){if(e.preventDefault(),e.stopImmediatePropagation(),m.isFunction(a.callbacks[i])&&Object.prototype.hasOwnProperty.call(a.callbacks,i))t=a.callbacks[i];else{if(!m.isFunction(s.callback))return;t=s.callback}!1!==t.call(s.$trigger,i,s,e)?s.$menu.trigger("contextmenu:hide"):s.$menu.parent().length&&$.update.call(s.$trigger,s)}},inputClick:function(e){e.stopImmediatePropagation()},hideMenu:function(e,t){var n=m(this).data("contextMenuRoot");$.hide.call(n.$trigger,n,t&&t.force)},focusItem:function(e){e.stopPropagation();var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;t.hasClass(a.classNames.disabled)||t.hasClass(a.classNames.notSelectable)||(t.addClass([a.classNames.hover,a.classNames.visible].join(" ")).parent().find(".context-menu-item").not(t).removeClass(a.classNames.visible).filter("."+a.classNames.hover).trigger("contextmenu:blur"),o.$selected=a.$selected=t,o&&o.$node&&o.$node.hasClass("context-menu-submenu")&&o.$node.addClass(a.classNames.hover),o.$node&&a.positionSubmenu.call(o.$node,o.$menu))},blurItem:function(e){e.stopPropagation();var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;o.autoHide&&t.removeClass(a.classNames.visible),t.removeClass(a.classNames.hover),o.$selected=null}},$={show:function(n,e,t){var o=m(this),a={};if(m("#context-menu-layer").trigger("mousedown"),n.$trigger=o,!1!==n.events.show.call(o,n))if(!1!==$.update.call(o,n)){if(n.position.call(o,n,e,t),n.zIndex){var s=n.zIndex;"function"==typeof n.zIndex&&(s=n.zIndex.call(o,n)),a.zIndex=function(e){for(var t=0,n=e;t=Math.max(t,parseInt(n.css("z-index"),10)||0),(n=n.parent())&&n.length&&!(-1<"html body".indexOf(n.prop("nodeName").toLowerCase())););return t}(o)+s}$.layer.call(n.$menu,n,a.zIndex),n.$menu.find("ul").css("zIndex",a.zIndex+1),n.$menu.css(a)[n.animation.show](n.animation.duration,function(){o.trigger("contextmenu:visible"),$.activated(n),n.events.activated(n)}),o.data("contextMenu",n).addClass("context-menu-active"),m(document).off("keydown.contextMenu").on("keydown.contextMenu",b.key),n.autoHide&&m(document).on("mousemove.contextMenuAutoHide",function(e){var t=o.offset();t.right=t.left+o.outerWidth(),t.bottom=t.top+o.outerHeight(),!n.$layer||n.hovering||e.pageX>=t.left&&e.pageX<=t.right&&e.pageY>=t.top&&e.pageY<=t.bottom||setTimeout(function(){n.hovering||null===n.$menu||void 0===n.$menu||n.$menu.trigger("contextmenu:hide")},50)})}else c=null;else c=null},hide:function(t,e){var n=m(this);if(t=t||(n.data("contextMenu")||{}),e||!t.events||!1!==t.events.hide.call(n,t)){if(n.removeData("contextMenu").removeClass("context-menu-active"),t.$layer){setTimeout((o=t.$layer,function(){o.remove()}),10);try{delete t.$layer}catch(e){t.$layer=null}}var o;c=null,t.$menu.find("."+t.classNames.hover).trigger("contextmenu:blur"),t.$selected=null,t.$menu.find("."+t.classNames.visible).removeClass(t.classNames.visible),m(document).off(".contextMenuAutoHide").off("keydown.contextMenu"),t.$menu&&t.$menu[t.animation.hide](t.animation.duration,function(){t.build&&(t.$menu.remove(),m.each(t,function(e){switch(e){case"ns":case"selector":case"build":case"trigger":return!0;default:t[e]=void 0;try{delete t[e]}catch(e){}return!0}})),setTimeout(function(){n.trigger("contextmenu:hidden")},10)})}},create:function(r,u){function d(e){var t=m("");if(e._accesskey)e._beforeAccesskey&&t.append(document.createTextNode(e._beforeAccesskey)),m("").addClass("context-menu-accesskey").text(e._accesskey).appendTo(t),e._afterAccesskey&&t.append(document.createTextNode(e._afterAccesskey));else if(e.isHtmlName){if(void 0!==e.accesskey)throw new Error("accesskeys are not compatible with HTML names and cannot be used together in the same item");t.html(e.name)}else t.text(e.name);return t}void 0===u&&(u=r),r.$menu=m('
    ').addClass(r.className||"").data({contextMenu:r,contextMenuRoot:u}),r.dataAttr&&m.each(r.dataAttr,function(e,t){r.$menu.attr("data-"+r.key,t)}),m.each(["callbacks","commands","inputs"],function(e,t){r[t]={},u[t]||(u[t]={})}),u.accesskeys||(u.accesskeys={}),m.each(r.items,function(n,o){var e=m('
  • ').addClass(o.className||""),t=null,a=null;if(e.on("click",m.noop),"string"!=typeof o&&"cm_separator"!==o.type||(o={type:"cm_seperator"}),o.$node=e.data({contextMenu:r,contextMenuRoot:u,contextMenuKey:n}),void 0!==o.accesskey)for(var s,i=function(e){for(var t,n=e.split(/\s+/),o=[],a=0;t=n[a];a++)t=t.charAt(0).toUpperCase(),o.push(t);return o}(o.accesskey),c=0;s=i[c];c++)if(!u.accesskeys[s]){var l=(u.accesskeys[s]=o).name.match(new RegExp("^(.*?)("+s+")(.*)$","i"));l&&(o._beforeAccesskey=l[1],o._accesskey=l[2],o._afterAccesskey=l[3]);break}if(o.type&&v[o.type])v[o.type].call(e,o,r,u),m.each([r,u],function(e,t){t.commands[n]=o,!m.isFunction(o.callback)||void 0!==t.callbacks[n]&&void 0!==r.type||(t.callbacks[n]=o.callback)});else{switch("cm_seperator"===o.type?e.addClass("context-menu-separator "+u.classNames.notSelectable):"html"===o.type?e.addClass("context-menu-html "+u.classNames.notSelectable):"sub"!==o.type&&o.type?(t=m("").appendTo(e),d(o).appendTo(t),e.addClass("context-menu-input"),r.hasTypes=!0,m.each([r,u],function(e,t){t.commands[n]=o,t.inputs[n]=o})):o.items&&(o.type="sub"),o.type){case"cm_seperator":break;case"text":a=m('').attr("name","context-menu-input-"+n).val(o.value||"").appendTo(t);break;case"textarea":a=m('').attr("name","context-menu-input-"+n).val(o.value||"").appendTo(t),o.height&&a.height(o.height);break;case"checkbox":a=m('').attr("name","context-menu-input-"+n).val(o.value||"").prop("checked",!!o.selected).prependTo(t);break;case"radio":a=m('').attr("name","context-menu-input-"+o.radio).val(o.value||"").prop("checked",!!o.selected).prependTo(t);break;case"select":a=m('').attr("name","context-menu-input-"+n).appendTo(t),o.options&&(m.each(o.options,function(e,t){m("").val(e).text(t).appendTo(a)}),a.val(o.selected));break;case"sub":d(o).appendTo(e),o.appendTo=o.$node,e.data("contextMenu",o).addClass("context-menu-submenu"),o.callback=null,"function"==typeof o.items.then?$.processPromises(o,u,o.items):$.create(o,u);break;case"html":m(o.html).appendTo(e);break;default:m.each([r,u],function(e,t){t.commands[n]=o,!m.isFunction(o.callback)||void 0!==t.callbacks[n]&&void 0!==r.type||(t.callbacks[n]=o.callback)}),d(o).appendTo(e)}o.type&&"sub"!==o.type&&"html"!==o.type&&"cm_seperator"!==o.type&&(a.on("focus",b.focusInput).on("blur",b.blurInput),o.events&&a.on(o.events,r)),o.icon&&(m.isFunction(o.icon)?o._icon=o.icon.call(this,this,e,n,o):"string"!=typeof o.icon||"fab "!==o.icon.substring(0,4)&&"fas "!==o.icon.substring(0,4)&&"fad "!==o.icon.substring(0,4)&&"far "!==o.icon.substring(0,4)&&"fal "!==o.icon.substring(0,4)?"string"==typeof o.icon&&"fa-"===o.icon.substring(0,3)?o._icon=u.classNames.icon+" "+u.classNames.icon+"--fa fa "+o.icon:o._icon=u.classNames.icon+" "+u.classNames.icon+"-"+o.icon:(e.addClass(u.classNames.icon+" "+u.classNames.icon+"--fa5"),o._icon=m('')),"string"==typeof o._icon?e.addClass(o._icon):e.prepend(o._icon))}o.$input=a,o.$label=t,e.appendTo(r.$menu),!r.hasTypes&&m.support.eventSelectstart&&e.on("selectstart.disableTextSelect",b.abortevent)}),r.$node||r.$menu.css("display","none").addClass("context-menu-root"),r.$menu.appendTo(r.appendTo||document.body)},resize:function(e,t){var n;e.css({position:"absolute",display:"block"}),e.data("width",(n=e.get(0)).getBoundingClientRect?Math.ceil(n.getBoundingClientRect().width):e.outerWidth()+1),e.css({position:"static",minWidth:"0px",maxWidth:"100000px"}),e.find("> li > ul").each(function(){$.resize(m(this),!0)}),t||e.find("ul").addBack().css({position:"",display:"",minWidth:"",maxWidth:""}).outerWidth(function(){return m(this).data("width")})},update:function(i,c){var l=this;void 0===c&&(c=i,$.resize(i.$menu));var r=!1;return i.$menu.children().each(function(){var e,t=m(this),n=t.data("contextMenuKey"),o=i.items[n],a=m.isFunction(o.disabled)&&o.disabled.call(l,n,c)||!0===o.disabled;if((e=m.isFunction(o.visible)?o.visible.call(l,n,c):void 0===o.visible||!0===o.visible)&&(r=!0),t[e?"show":"hide"](),t[a?"addClass":"removeClass"](c.classNames.disabled),m.isFunction(o.icon)){t.removeClass(o._icon);var s=o.icon.call(this,l,t,n,o);"string"==typeof s?t.addClass(s):t.prepend(s)}if(o.type)switch(t.find("input, select, textarea").prop("disabled",a),o.type){case"text":case"textarea":o.$input.val(o.value||"");break;case"checkbox":case"radio":o.$input.val(o.value||"").prop("checked",!!o.selected);break;case"select":o.$input.val((0===o.selected?"0":o.selected)||"")}o.$menu&&$.update.call(l,o,c)&&(r=!0)}),r},layer:function(e,t){var n=e.$layer=m('
    ').css({height:p.height(),width:p.width(),display:"block",position:"fixed","z-index":t-1,top:0,left:0,opacity:0,filter:"alpha(opacity=0)","background-color":"#000"}).data("contextMenuRoot",e).appendTo(document.body).on("contextmenu",b.abortevent).on("mousedown",b.layerClick);return void 0===document.body.style.maxWidth&&n.css({position:"absolute",height:m(document).height()}),n},processPromises:function(e,t,n){function o(e,t,n){void 0===n?(n={error:{name:"No items and no error item",icon:"context-menu-icon context-menu-icon-quit"}},window.console&&(console.error||console.log).call(console,'When you reject a promise, provide an "items" object, equal to normal sub-menu items')):"string"==typeof n&&(n={error:{name:n}}),a(e,t,n)}function a(e,t,n){void 0!==t.$menu&&t.$menu.is(":visible")&&(e.$node.removeClass(t.classNames.iconLoadingClass),e.items=n,$.create(e,t,!0),$.update(e,t),t.positionSubmenu.call(e.$node,e.$menu))}e.$node.addClass(t.classNames.iconLoadingClass),n.then(function(e,t,n){void 0===n&&o(void 0),a(e,t,n)}.bind(this,e,t),o.bind(this,e,t))},activated:function(e){var t=e.$menu,n=t.offset(),o=m(window).height(),a=m(window).scrollTop(),s=t.height();oa+o)&&t.css({top:a+"px"})}};function l(e){return e.id&&m('label[for="'+e.id+'"]').val()||e.name}m.fn.contextMenu=function(e){var t=this,n=e;if(0', + submitButtonText: 'ok', + deleteButtonText: 'del', + submitButtonClass: 'submit', + deleteButtonClass: 'delete' + }; + $.fn[pluginName] = function(options) { + options = $.extend(true, {}, defaults, options); + + return this.each(function() { + var elem = this, + $elem = $(elem), + $input = jQuery.type(options.inputField) == 'string' ? $(options.inputField) : options.inputField, + $form = $input.parents('form').length ? $($input.parents('form')[0]) : $elem; + + var numbers = Array.apply(null, Array(9)).map(function (_, i) { + return $(options.buttonTemplate).html(i+1).addClass('number'); + }); + numbers.push($(options.buttonTemplate).html(options.deleteButtonText).addClass(options.deleteButtonClass)); + numbers.push($(options.buttonTemplate).html("0").addClass('number')); + numbers.push($(options.buttonTemplate).html(options.submitButtonText).addClass(options.submitButtonClass)); + $elem.html(numbers).addClass('keypad'); + + $elem.find('.number').click(function(e) { + $input.val($input.val() + $(e.target).text()); + $input.trigger('change'); + }); + $elem.find('.' + options.deleteButtonClass).click(function(e) { + $input.val($input.val().slice(0, -1)); + $input.trigger('change'); + }); + $elem.find('.' + options.submitButtonClass).click(function(e) { + $form.submit(); + }); + }); + }; + $.fn[pluginName].defaults = defaults; + })('keypad'); +})(jQuery); \ No newline at end of file diff --git a/assets/sound/alarm.mp3 b/assets/sound/alarm.mp3 new file mode 100644 index 000000000..f4ed1b3fd Binary files /dev/null and b/assets/sound/alarm.mp3 differ diff --git a/assets/sound/error.mp3 b/assets/sound/error.mp3 index 41bc0d70e..6ceb53457 100644 Binary files a/assets/sound/error.mp3 and b/assets/sound/error.mp3 differ diff --git a/assets/sound/success.mp3 b/assets/sound/success.mp3 new file mode 100644 index 000000000..c3c847ce8 Binary files /dev/null and b/assets/sound/success.mp3 differ diff --git a/assets/svg/doc.svg b/assets/svg/doc.svg new file mode 100644 index 000000000..cc3ea3350 --- /dev/null +++ b/assets/svg/doc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/docx.svg b/assets/svg/docx.svg new file mode 100644 index 000000000..cc3ea3350 --- /dev/null +++ b/assets/svg/docx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/gif.svg b/assets/svg/gif.svg new file mode 100644 index 000000000..c48a546cb --- /dev/null +++ b/assets/svg/gif.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/jpeg.svg b/assets/svg/jpeg.svg new file mode 100644 index 000000000..0d4a447e9 --- /dev/null +++ b/assets/svg/jpeg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/jpg.svg b/assets/svg/jpg.svg new file mode 100644 index 000000000..0d4a447e9 --- /dev/null +++ b/assets/svg/jpg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/pdf.svg b/assets/svg/pdf.svg new file mode 100644 index 000000000..9faf9521d --- /dev/null +++ b/assets/svg/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/png.svg b/assets/svg/png.svg new file mode 100644 index 000000000..ab4654d6e --- /dev/null +++ b/assets/svg/png.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/xls.svg b/assets/svg/xls.svg new file mode 100644 index 000000000..19890cba5 --- /dev/null +++ b/assets/svg/xls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/xlsx.svg b/assets/svg/xlsx.svg new file mode 100644 index 000000000..19890cba5 --- /dev/null +++ b/assets/svg/xlsx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/composer.json b/composer.json index ee7a86f87..d3d4e3ef1 100644 --- a/composer.json +++ b/composer.json @@ -2,12 +2,20 @@ "name": "basoro/mlite", "description": "SIM Kesehatan Aman, Ringan & Modular. Jalan di sisi server sebagai aplikasi web (PWA Ready) dan bersifat mobile first (responsive).", "type": "project", + "autoload": { + "psr-4": { + "SatuSehat\\": "plugins/satu_sehat/" + } + }, "require": { + "php": ">=8.0", "nullpunkt/lz-string-php": "^1.3", "phpseclib/phpseclib": "~3.0.36", "phpmailer/phpmailer": "^6.9.1", - "mpdf/mpdf": "^8.2.2", - "workerman/workerman": "^4.0" + "mpdf/mpdf": "^8.2", + "workerman/workerman": "^4.0", + "mpdf/qrcode": "^1.2", + "halaxa/json-machine": "^1.2" }, "license": "MIT", "authors": [ diff --git a/composer.lock b/composer.lock deleted file mode 100644 index e2213577e..000000000 --- a/composer.lock +++ /dev/null @@ -1,845 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "20c2f07f7c77adf3ce0889ec9d1e47bf", - "packages": [ - { - "name": "mpdf/mpdf", - "version": "v8.2.4", - "source": { - "type": "git", - "url": "https://github.com/mpdf/mpdf.git", - "reference": "9e3ff91606fed11cd58a130eabaaf60e56fdda88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mpdf/mpdf/zipball/9e3ff91606fed11cd58a130eabaaf60e56fdda88", - "reference": "9e3ff91606fed11cd58a130eabaaf60e56fdda88", - "shasum": "" - }, - "require": { - "ext-gd": "*", - "ext-mbstring": "*", - "mpdf/psr-http-message-shim": "^1.0 || ^2.0", - "mpdf/psr-log-aware-trait": "^2.0 || ^3.0", - "myclabs/deep-copy": "^1.7", - "paragonie/random_compat": "^1.4|^2.0|^9.99.99", - "php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "psr/http-message": "^1.0 || ^2.0", - "psr/log": "^1.0 || ^2.0 || ^3.0", - "setasign/fpdi": "^2.1" - }, - "require-dev": { - "mockery/mockery": "^1.3.0", - "mpdf/qrcode": "^1.1.0", - "squizlabs/php_codesniffer": "^3.5.0", - "tracy/tracy": "~2.5", - "yoast/phpunit-polyfills": "^1.0" - }, - "suggest": { - "ext-bcmath": "Needed for generation of some types of barcodes", - "ext-xml": "Needed mainly for SVG manipulation", - "ext-zlib": "Needed for compression of embedded resources, such as fonts" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Mpdf\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-only" - ], - "authors": [ - { - "name": "Matěj Humpál", - "role": "Developer, maintainer" - }, - { - "name": "Ian Back", - "role": "Developer (retired)" - } - ], - "description": "PHP library generating PDF files from UTF-8 encoded HTML", - "homepage": "https://mpdf.github.io", - "keywords": [ - "pdf", - "php", - "utf-8" - ], - "support": { - "docs": "http://mpdf.github.io", - "issues": "https://github.com/mpdf/mpdf/issues", - "source": "https://github.com/mpdf/mpdf" - }, - "funding": [ - { - "url": "https://www.paypal.me/mpdf", - "type": "custom" - } - ], - "time": "2024-06-14T16:06:41+00:00" - }, - { - "name": "mpdf/psr-http-message-shim", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/mpdf/psr-http-message-shim.git", - "reference": "f25a0153d645e234f9db42e5433b16d9b113920f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mpdf/psr-http-message-shim/zipball/f25a0153d645e234f9db42e5433b16d9b113920f", - "reference": "f25a0153d645e234f9db42e5433b16d9b113920f", - "shasum": "" - }, - "require": { - "psr/http-message": "^2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Mpdf\\PsrHttpMessageShim\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mark Dorison", - "email": "mark@chromatichq.com" - }, - { - "name": "Kristofer Widholm", - "email": "kristofer@chromatichq.com" - }, - { - "name": "Nigel Cunningham", - "email": "nigel.cunningham@technocrat.com.au" - } - ], - "description": "Shim to allow support of different psr/message versions.", - "support": { - "issues": "https://github.com/mpdf/psr-http-message-shim/issues", - "source": "https://github.com/mpdf/psr-http-message-shim/tree/v2.0.1" - }, - "time": "2023-10-02T14:34:03+00:00" - }, - { - "name": "mpdf/psr-log-aware-trait", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/mpdf/psr-log-aware-trait.git", - "reference": "a633da6065e946cc491e1c962850344bb0bf3e78" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mpdf/psr-log-aware-trait/zipball/a633da6065e946cc491e1c962850344bb0bf3e78", - "reference": "a633da6065e946cc491e1c962850344bb0bf3e78", - "shasum": "" - }, - "require": { - "psr/log": "^3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Mpdf\\PsrLogAwareTrait\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mark Dorison", - "email": "mark@chromatichq.com" - }, - { - "name": "Kristofer Widholm", - "email": "kristofer@chromatichq.com" - } - ], - "description": "Trait to allow support of different psr/log versions.", - "support": { - "issues": "https://github.com/mpdf/psr-log-aware-trait/issues", - "source": "https://github.com/mpdf/psr-log-aware-trait/tree/v3.0.0" - }, - "time": "2023-05-03T06:19:36+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.12.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2024-06-12T14:39:25+00:00" - }, - { - "name": "nullpunkt/lz-string-php", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/nullpunkt/lz-string-php.git", - "reference": "bf4ae48f8a164bc6e95f5e7a2c6da45907ac3ba9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nullpunkt/lz-string-php/zipball/bf4ae48f8a164bc6e95f5e7a2c6da45907ac3ba9", - "reference": "bf4ae48f8a164bc6e95f5e7a2c6da45907ac3ba9", - "shasum": "" - }, - "require": { - "php": ">=5.4" - }, - "require-dev": { - "monolog/monolog": "^1.17", - "phpunit/phpunit": "~9.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "LZCompressor\\": "src/LZCompressor" - } - }, - "notification-url": "https://packagist.org/downloads/", - "authors": [ - { - "name": "Tobias Seipke", - "email": "tobias.seipke@gmail.com", - "homepage": "https://github.com/nullpunkt" - }, - { - "name": "Juhász Ádám", - "email": "juhasz.adam@virgo.hu", - "homepage": "https://github.com/JuhaszAdam" - } - ], - "description": "PHP Class implementation of LZ-String javascript.", - "support": { - "issues": "https://github.com/nullpunkt/lz-string-php/issues", - "source": "https://github.com/nullpunkt/lz-string-php/tree/1.3.0" - }, - "time": "2021-06-17T07:52:00+00:00" - }, - { - "name": "paragonie/constant_time_encoding", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512", - "shasum": "" - }, - "require": { - "php": "^8" - }, - "require-dev": { - "phpunit/phpunit": "^9", - "vimeo/psalm": "^4|^5" - }, - "type": "library", - "autoload": { - "psr-4": { - "ParagonIE\\ConstantTime\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com", - "role": "Maintainer" - }, - { - "name": "Steve 'Sc00bz' Thomas", - "email": "steve@tobtu.com", - "homepage": "https://www.tobtu.com", - "role": "Original Developer" - } - ], - "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", - "keywords": [ - "base16", - "base32", - "base32_decode", - "base32_encode", - "base64", - "base64_decode", - "base64_encode", - "bin2hex", - "encoding", - "hex", - "hex2bin", - "rfc4648" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/constant_time_encoding/issues", - "source": "https://github.com/paragonie/constant_time_encoding" - }, - "time": "2024-05-08T12:36:18+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.100", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" - }, - "require": { - "php": ">= 7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" - }, - "time": "2020-10-15T08:29:30+00:00" - }, - { - "name": "phpmailer/phpmailer", - "version": "v6.9.1", - "source": { - "type": "git", - "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "039de174cd9c17a8389754d3b877a2ed22743e18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/039de174cd9c17a8389754d3b877a2ed22743e18", - "reference": "039de174cd9c17a8389754d3b877a2ed22743e18", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-filter": "*", - "ext-hash": "*", - "php": ">=5.5.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "doctrine/annotations": "^1.2.6 || ^1.13.3", - "php-parallel-lint/php-console-highlighter": "^1.0.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcompatibility/php-compatibility": "^9.3.5", - "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.7.2", - "yoast/phpunit-polyfills": "^1.0.4" - }, - "suggest": { - "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", - "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", - "ext-openssl": "Needed for secure SMTP sending and DKIM signing", - "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", - "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", - "league/oauth2-google": "Needed for Google XOAUTH2 authentication", - "psr/log": "For optional PSR-3 debug logging", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", - "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPMailer\\PHPMailer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-only" - ], - "authors": [ - { - "name": "Marcus Bointon", - "email": "phpmailer@synchromedia.co.uk" - }, - { - "name": "Jim Jagielski", - "email": "jimjag@gmail.com" - }, - { - "name": "Andy Prevost", - "email": "codeworxtech@users.sourceforge.net" - }, - { - "name": "Brent R. Matzelle" - } - ], - "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "support": { - "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.1" - }, - "funding": [ - { - "url": "https://github.com/Synchro", - "type": "github" - } - ], - "time": "2023-11-25T22:23:28+00:00" - }, - { - "name": "phpseclib/phpseclib", - "version": "3.0.39", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "211ebc399c6e73c225a018435fe5ae209d1d1485" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/211ebc399c6e73c225a018435fe5ae209d1d1485", - "reference": "211ebc399c6e73c225a018435fe5ae209d1d1485", - "shasum": "" - }, - "require": { - "paragonie/constant_time_encoding": "^1|^2|^3", - "paragonie/random_compat": "^1.4|^2.0|^9.99.99", - "php": ">=5.6.1" - }, - "require-dev": { - "phpunit/phpunit": "*" - }, - "suggest": { - "ext-dom": "Install the DOM extension to load XML formatted public keys.", - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "type": "library", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib3\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" - } - ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", - "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" - ], - "support": { - "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.39" - }, - "funding": [ - { - "url": "https://github.com/terrafrost", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpseclib", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", - "type": "tidelift" - } - ], - "time": "2024-06-24T06:27:33+00:00" - }, - { - "name": "psr/http-message", - "version": "2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" - }, - "time": "2023-04-04T09:54:51+00:00" - }, - { - "name": "psr/log", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" - }, - { - "name": "setasign/fpdi", - "version": "v2.6.0", - "source": { - "type": "git", - "url": "https://github.com/Setasign/FPDI.git", - "reference": "a6db878129ec6c7e141316ee71872923e7f1b7ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/a6db878129ec6c7e141316ee71872923e7f1b7ad", - "reference": "a6db878129ec6c7e141316ee71872923e7f1b7ad", - "shasum": "" - }, - "require": { - "ext-zlib": "*", - "php": "^5.6 || ^7.0 || ^8.0" - }, - "conflict": { - "setasign/tfpdf": "<1.31" - }, - "require-dev": { - "phpunit/phpunit": "~5.7", - "setasign/fpdf": "~1.8.6", - "setasign/tfpdf": "~1.33", - "squizlabs/php_codesniffer": "^3.5", - "tecnickcom/tcpdf": "~6.2" - }, - "suggest": { - "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured." - }, - "type": "library", - "autoload": { - "psr-4": { - "setasign\\Fpdi\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Slabon", - "email": "jan.slabon@setasign.com", - "homepage": "https://www.setasign.com" - }, - { - "name": "Maximilian Kresse", - "email": "maximilian.kresse@setasign.com", - "homepage": "https://www.setasign.com" - } - ], - "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.", - "homepage": "https://www.setasign.com/fpdi", - "keywords": [ - "fpdf", - "fpdi", - "pdf" - ], - "support": { - "issues": "https://github.com/Setasign/FPDI/issues", - "source": "https://github.com/Setasign/FPDI/tree/v2.6.0" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/setasign/fpdi", - "type": "tidelift" - } - ], - "time": "2023-12-11T16:03:32+00:00" - }, - { - "name": "workerman/workerman", - "version": "v4.1.15", - "source": { - "type": "git", - "url": "https://github.com/walkor/workerman.git", - "reference": "afc8242fc769ab7cf22eb4ac22b97cb59d465e4e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/walkor/workerman/zipball/afc8242fc769ab7cf22eb4ac22b97cb59d465e4e", - "reference": "afc8242fc769ab7cf22eb4ac22b97cb59d465e4e", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "suggest": { - "ext-event": "For better performance. " - }, - "type": "library", - "autoload": { - "psr-4": { - "Workerman\\": "./" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "walkor", - "email": "walkor@workerman.net", - "homepage": "http://www.workerman.net", - "role": "Developer" - } - ], - "description": "An asynchronous event driven PHP framework for easily building fast, scalable network applications.", - "homepage": "http://www.workerman.net", - "keywords": [ - "asynchronous", - "event-loop" - ], - "support": { - "email": "walkor@workerman.net", - "forum": "http://wenda.workerman.net/", - "issues": "https://github.com/walkor/workerman/issues", - "source": "https://github.com/walkor/workerman", - "wiki": "http://doc.workerman.net/" - }, - "funding": [ - { - "url": "https://opencollective.com/workerman", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/walkor", - "type": "patreon" - } - ], - "time": "2024-02-19T02:10:39+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.6.0" -} diff --git a/config.php b/config.php index a66023fd5..bb344fe37 100644 --- a/config.php +++ b/config.php @@ -1,21 +1,75 @@ =')) { - exit("mLITE requires at least PHP 7.0"); +// mLITE - Kompatibel dengan PHP 7.4 - 8.3+ +if (!version_compare(PHP_VERSION, '8.0.0', '>=')) { + exit("mLITE requires at least PHP 8.0.0 (Current: " . PHP_VERSION . ")"); } -define('DBHOST', 'localhost'); -define('DBPORT', '3306'); -define('DBUSER', 'root'); -define('DBPASS', ''); -define('DBNAME', 'mlite'); +function env(string $key, $default = null) +{ + return $_ENV[$key] ?? $_SERVER[$key] ?? $default; +} + +// Simple .env loader (PHP 8.3 safe, no putenv) +if (file_exists(BASE_DIR . '/.env')) { + $lines = file(BASE_DIR . '/.env', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); + + foreach ($lines as $line) { + $line = trim($line); + + // Skip komentar & baris kosong + if ($line === '' || str_starts_with($line, '#')) { + continue; + } + + if (!str_contains($line, '=')) { + continue; + } + + [$name, $value] = explode('=', $line, 2); + $name = trim($name); + $value = trim($value); + + // Hapus tanda kutip jika ada + $value = trim($value, "\"'"); + + if (!isset($_ENV[$name]) && !isset($_SERVER[$name])) { + $_ENV[$name] = $value; + $_SERVER[$name] = $value; + } + } +} + + +// Database Driver: 'mysql' or 'sqlite' +define('DBDRIVER', env('DBDRIVER') ?: ''); + +if (DBDRIVER == 'sqlite') { + $db_host = ''; + $db_user = ''; + $db_pass = ''; + $db_name = BASE_DIR . '/systems/data/mlite.sdb'; + $db_port = ''; +} else { + $db_host = env('MYSQLHOST') ?: 'localhost'; + $db_user = env('MYSQLUSER') ?: 'root'; + $db_pass = env('MYSQLPASSWORD') ?: ''; + $db_name = env('MYSQLDATABASE') ?: 'mlite'; + $db_port = env('MYSQLPORT') ?: '3306'; +} + +define('DBHOST', $db_host); +define('DBPORT', $db_port); +define('DBUSER', $db_user); +define('DBPASS', $db_pass); +define('DBNAME', $db_name); // URL Webapps -define('WEBAPPS_URL', 'http://localhost/mlite/uploads'); +define('WEBAPPS_URL', env('APPURL') ?: 'http://localhost:8000/uploads'); // Sesuaikan http://mlite.loc dengan domain atau IP Address server define('WEBAPPS_PATH', BASE_DIR . '/uploads'); // Multi APP -define('MULTI_APP', false); -#define('MULTI_APP_REDIRECT', 'dokter_ulun'); +define('MULTI_APP', env('MULTIAPP') ?: 'false'); +define('MULTI_APP_REDIRECT', env('MULTIAPP_REDIRECT') ?: ''); // Admin cat name define('ADMIN', 'admin'); @@ -33,7 +87,7 @@ define('FILE_LOCK', false); // Basic modules -define('BASIC_MODULES', serialize([ +define('BASIC_MODULES', json_encode([ 9 => 'settings', 0 => 'dashboard', 1 => 'master', @@ -44,10 +98,12 @@ 6 => 'farmasi', 8 => 'users', 7 => 'modules', - 10 => 'wagateway' + 10 => 'wagateway' ])); -// Developer mode -define('DEV_MODE', false); +// Developer mode, mendukung `DEV_MODE` dan key lama `DEVMODE` di .env +define('DEV_MODE', filter_var(env('DEV_MODE', env('DEVMODE', true)), FILTER_VALIDATE_BOOLEAN)); + +define('JWT_SECRET', 'mlite_secret_key_change_me'); ?> diff --git a/docker/.env b/docker/.env new file mode 100644 index 000000000..2518c38e0 --- /dev/null +++ b/docker/.env @@ -0,0 +1,22 @@ +# Database Configuration +DB_DRIVER=mysql +DB_HOST=mysql +DB_PORT=3306 +DB_ROOT_PASSWORD=rootpassword123 +DB_DATABASE=mlite_db +DB_USERNAME=mlite +DB_PASSWORD=mlite +# Application Configuration +# APP_PORT=8080 # gunakan jika ingin mengakses nginx dari luar container +# DB_EXTERNAL_PORT=3308 # gunakan jika ingin mengakses mysql dari luar container + +APPURL=http://localhost:8000/uploads +MULTIAPP= +MULTIAPP_REDIRECT= +DEVMODE= + + + +# Docker Compose Profiles +# Biarkan kosong jika menggunakan SQLite. Isi dengan 'mysql_enabled' jika ingin menggunakan container MySQL +COMPOSE_PROFILES=mysql_enabled diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 000000000..4e50311c3 --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,73 @@ +version: "3" +services: + nginx: + build: + context: . + dockerfile: nginx.Dockerfile + image: nginx:alpine + # ports: + # - ${APP_PORT}:80 # gunakan jika ingin mengakses nginx dari luar container + networks: + - internal + volumes: + - ../:/var/www/html/ + - php_backups:/var/www/html/backups + - php_uploads:/var/www/html/uploads + - php_systems_data:/var/www/html/systems/data + - ./logs/nginx:/var/log/nginx/ + depends_on: + - php + + php: + image: php:8.3-fpm-alpine + user: root + build: + context: . + dockerfile: php.Dockerfile + networks: + - internal + environment: + - DBDRIVER=${DB_DRIVER} + - MYSQLHOST=${DB_HOST} + - MYSQLPORT=${DB_PORT} + - MYSQLUSER=${DB_USERNAME} + - MYSQLPASSWORD=${DB_PASSWORD} + - MYSQLDATABASE=${DB_DATABASE} + volumes: + - ../:/var/www/html/ + - php_backups:/var/www/html/backups + - php_uploads:/var/www/html/uploads + - php_systems_data:/var/www/html/systems/data + command: sh -c "composer install && mkdir -p /var/www/html/backups /var/www/html/uploads /var/www/html/systems/data /var/www/html/tmp /var/www/html/admin/tmp && chmod -R 777 /var/www/html/backups /var/www/html/uploads /var/www/html/systems/data /var/www/html/tmp /var/www/html/admin/tmp && php-fpm" + + mysql: + image: mysql:8.0 + command: --sql-mode="" + restart: always + profiles: + - mysql_enabled + environment: + MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} + MYSQL_DATABASE: ${DB_DATABASE} + MYSQL_USER: ${DB_USERNAME} + MYSQL_PASSWORD: ${DB_PASSWORD} + # ports: + # - ${DB_EXTERNAL_PORT}:3306 #gunakan jika ingin mengakses mysql dari luar container + expose: + - 3306 + networks: + - internal + volumes: + - mysql_data:/var/lib/mysql + - ../mlite_db.sql:/docker-entrypoint-initdb.d/init.sql + +networks: + internal: + driver: bridge + +volumes: + php_backups: + php_uploads: + php_systems_data: + php_plugins: + mysql_data: \ No newline at end of file diff --git a/docker/nginx.Dockerfile b/docker/nginx.Dockerfile new file mode 100644 index 000000000..eb39f7ed3 --- /dev/null +++ b/docker/nginx.Dockerfile @@ -0,0 +1,6 @@ +FROM nginx:alpine + +COPY nginx/default.conf /etc/nginx/conf.d + +# COPY . /var/www/html + diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf new file mode 100644 index 000000000..1272754b6 --- /dev/null +++ b/docker/nginx/default.conf @@ -0,0 +1,33 @@ +server { + listen 0.0.0.0:80; + + root /var/www/html; + client_max_body_size 100M; + + + location / { + index index.php; + if (!-e $request_filename) { + rewrite / /index.php last; + } + } + + location ^~ /systems/data/ { + deny all; + return 403; + } + + location /admin { + index index.php; + try_files $uri $uri/ /admin/index.php?$args; + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_pass php:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; + } + + +} \ No newline at end of file diff --git a/docker/php.Dockerfile b/docker/php.Dockerfile new file mode 100644 index 000000000..fbcd38f29 --- /dev/null +++ b/docker/php.Dockerfile @@ -0,0 +1,37 @@ +FROM php:8.1-fpm-alpine + +RUN apk update +RUN apk upgrade +RUN apk add ca-certificates wget +RUN update-ca-certificates +RUN apk add libpng-dev + +RUN apk add --no-cache mysql-client msmtp perl wget procps shadow libzip libpng libjpeg-turbo libwebp freetype icu + +# Install dcmtk from edge testing repository for mini_pacs support +RUN apk add --no-cache dcmtk --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing/ + + +RUN apk add --no-cache --virtual build-essentials \ + icu-dev icu-libs zlib-dev g++ make automake autoconf libzip-dev \ + libpng-dev libwebp-dev libjpeg-turbo-dev freetype-dev oniguruma-dev linux-headers && \ + docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg --with-webp && \ + docker-php-ext-install gd && \ + docker-php-ext-install mysqli && \ + docker-php-ext-install pdo_mysql && \ + apk add --no-cache sqlite-dev && \ + docker-php-ext-install pdo_sqlite && \ + docker-php-ext-install intl && \ + docker-php-ext-install opcache && \ + docker-php-ext-install exif && \ + docker-php-ext-install zip && \ + docker-php-ext-install bcmath && \ + docker-php-ext-install mbstring && \ + docker-php-ext-install pcntl && \ + apk del build-essentials && rm -rf /usr/src/php* + +# Install Composer +COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer + +WORKDIR /var/www/html + diff --git a/docs/index.md b/docs/index.md index 061326bb7..4e5df0a1b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,7 +1,7 @@ Instruksi Umum ============== -mLITE adalah sistem manajemen kesehatan yang sederhana, ringan dan cepat. Pertama kali dirilis pada Mei 2019. Versi gratis dari aplikasi ini dibagikan di bawah [lisensi](/lisensi) yang mengharuskan meninggalkan informasi tentang penulis dan tautan balik. Dengan dokumentasi ini Anda akan belajar cara menginstal, mengkonfigurasi, dan membuat modul dan tema Anda sendiri. +mLITE adalah sistem manajemen kesehatan yang sederhana, ringan dan cepat. Pertama kali dirilis pada Mei 2019. Versi gratis dari aplikasi ini dibagikan di bawah [https://github.com/basoro/mlite?tab=GPL-3.0-1-ov-file](/lisensi) yang mengharuskan meninggalkan informasi tentang penulis dan tautan balik. Dengan dokumentasi ini Anda akan belajar cara menginstal, mengkonfigurasi, dan membuat modul dan tema Anda sendiri. Dokumentasi dibagi menjadi beberapa bagian. Yang pertama adalah untuk instruksi umum, yang kedua untuk pengembang forntend dan yang terakhir untuk pengembang backend. @@ -12,7 +12,7 @@ Persyaratan Persyaratan sistem untuk mLITE sangat sederhana, jadi setiap server modern sudah mencukupi. + Apache 2.2+ or Nginx dengan `mod_rewrite` -+ PHP version 7.0+ ++ PHP version 7.4+ + MySQL Server 5.5+ + Akses ke MySQL dan SQLite @@ -290,7 +290,8 @@ File paling penting untuk setiap modul. Ini berisi informasi dasar dan instruksi 'description' => 'Lorem ipsum....', 'author' => 'Basoro', 'version' => '1.0', - 'compatibility' => '2022*', // Kesesuaian dengan versi mLITE + 'category' => 'main', + 'compatibility' => '6.0.0*', // Kesesuaian dengan versi mLITE 'icon' => 'bolt', 'pages' => ['Contoh' => 'contoh'], // Berfungsi sebagai halaman (opsional) 'install' => function() use($core) // Perintah install diff --git a/index.php b/index.php index 4ba2c10f8..07f1553e6 100644 --- a/index.php +++ b/index.php @@ -1,21 +1,65 @@ getMessage()); + http_response_code(500); + $message = 'System Error. Please contact administrator.'; + + // Auto-rescue untuk lingkungan PaaS (Papuyu/Docker) jika .env terbuat tapi database belum di-import + $errMsg = $e->getMessage(); + if (strpos($errMsg, 'Base table or view not found') !== false || strpos($errMsg, 'no such table') !== false || strpos($errMsg, 'Unknown database') !== false) { + header('Location: /install.php'); + exit; + } + + $response = ['status' => 'error', 'message' => $message]; + + if (DEV_MODE) { + $devMessage = preg_replace('/`[^`]+`\./', '', $e->getMessage()); + $response['message'] .= ' Detail: ' . $devMessage; + $response['debug'] = [ + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'trace' => explode("\n", $e->getTraceAsString()) + ]; + } + + echo json_encode($response); + exit; +} ob_end_flush(); diff --git a/install.php b/install.php index 109e352a8..e14593820 100644 --- a/install.php +++ b/install.php @@ -1,156 +1,584 @@ setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + @chmod($outputFile, 0666); + + $pdo->exec("PRAGMA synchronous = OFF"); + $pdo->exec("PRAGMA journal_mode = MEMORY"); + $pdo->exec("PRAGMA strict = OFF"); + + $sqlContent = file_get_contents($inputFile); + + $sqlContent = preg_replace('/^--.*$/m', '', $sqlContent); + $sqlContent = preg_replace('/^\/\*.*\*\/$/m', '', $sqlContent); + $sqlContent = preg_replace('/^SET .*$/m', '', $sqlContent); + + $statements = preg_split('/;\s*\n/', $sqlContent); + + foreach ($statements as $statement) { + $statement = trim($statement); + if (empty($statement)) + continue; + + if (stripos($statement, 'CREATE TABLE') === 0) { + processCreateTable($pdo, $statement); + } elseif (stripos($statement, 'INSERT INTO') === 0) { + processInsert($pdo, $statement); + } + } + + // Create .env + $envData = "DBDRIVER=sqlite\n"; + file_put_contents($envFile, $envData); + + $success = "SQLite Database successfully generated!"; + // header('Location: /'); + // exit; + + + } catch (Exception $e) { + $error = $e->getMessage(); + } + } elseif ($driver === 'mysql') { + $host = $_POST['db_host'] ?? 'localhost'; + $port = $_POST['db_port'] ?? '3306'; + $dbName = $_POST['db_name'] ?? 'mlite'; + $user = $_POST['db_user'] ?? 'root'; + $pass = $_POST['db_pass'] ?? ''; + + try { + ini_set('memory_limit', '1G'); + + // Connect to MySQL server without DB first + $dsnServer = "mysql:host=$host;port=$port;charset=utf8mb4"; + $pdoServer = new PDO($dsnServer, $user, $pass); + $pdoServer->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + // Create database if not exists + $pdoServer->exec("CREATE DATABASE IF NOT EXISTS `$dbName` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"); + + // Connect to the specific database + $dsn = "mysql:host=$host;port=$port;dbname=$dbName;charset=utf8mb4"; + $pdo = new PDO($dsn, $user, $pass); + $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + // Check if tables exist + $stmt = $pdo->query("SHOW TABLES"); + if ($stmt->rowCount() > 0) { + throw new Exception("Database sudah ada datanya. Silakan gunakan database yang kosong atau hapus tabel terlebih dahulu."); + } + + // Execute SQL Dump + $inputFile = $baseDir . '/mlite_db.sql'; + $sqlContent = file_get_contents($inputFile); + + // Turn off foreign key checks for import + $pdo->exec("SET foreign_key_checks = 0;"); + + // Clean up to basic statements + $sqlContent = preg_replace('/^--.*$/m', '', $sqlContent); + $sqlContent = preg_replace('/^\/\*.*\*\/$/m', '', $sqlContent); + + // Multi statement queries can be heavy, splitting by ; + $statements = preg_split('/;\s*\n/', $sqlContent); + foreach ($statements as $statement) { + $statement = trim($statement); + if (empty($statement)) + continue; + $pdo->exec($statement); + } + + $pdo->exec("SET foreign_key_checks = 1;"); + + // Create .env + $envData = "DBDRIVER=mysql\n"; + $envData .= "MYSQLHOST=$host\n"; + $envData .= "MYSQLPORT=$port\n"; + $envData .= "MYSQLDATABASE=$dbName\n"; + $envData .= "MYSQLUSER=$user\n"; + $envData .= "MYSQLPASSWORD=$pass\n"; + + file_put_contents($envFile, $envData); + + $success = "MySQL Database successfully installed!"; + // header('Location: /'); + // exit; + } catch (Exception $e) { + $error = $e->getMessage(); + } + } +} + +// Helper Functions for SQLite parsing +function processCreateTable($pdo, $sql) +{ + if (!preg_match('/CREATE TABLE `?(\w+)`?/i', $sql, $matches)) + return; + $tableName = $matches[1]; + + if (!preg_match('/\((.*)\)[^\)]*$/s', $sql, $matches)) + return; + $body = $matches[1]; + + $pkColumn = null; + if (preg_match('/PRIMARY KEY\s*\(`?([^`\)]+)`?\)/', $body, $matches)) { + $pkColumn = $matches[1]; + if (strpos($pkColumn, ',') !== false) { + $pkColumn = null; + } + } + + $lines = explode("\n", $body); + $columnDefs = []; + $constraints = []; + $indexes = []; + + foreach ($lines as $line) { + $line = trim($line); + if ($line === '' || $line === ')') + continue; + if (substr($line, -1) === ',') + $line = substr($line, 0, -1); + + if (preg_match('/^(?:UNIQUE )?KEY `?(\w+)`?\s*\((.*)\)/i', $line, $m)) { + $isUnique = (stripos($line, 'UNIQUE') === 0); + $indexName = $m[1]; + $cols = str_replace('`', '', $m[2]); + $cols = preg_replace('/\(\d+\)/', '', $cols); + $indexes[] = "CREATE " . ($isUnique ? "UNIQUE " : "") . "INDEX IF NOT EXISTS `idx_{$tableName}_{$indexName}` ON `$tableName` ($cols)"; + continue; + } + + if (stripos($line, 'PRIMARY KEY') === 0) { + if (!$pkColumn) { + $line = preg_replace('/\s+USING\s+\w+/i', '', $line); + $constraints[] = $line; + } + continue; + } + + if (stripos($line, 'CONSTRAINT') === 0) { + $line = preg_replace('/CONSTRAINT `\w+`/', '', $line); + $line = preg_replace('/ON UPDATE CURRENT_TIMESTAMP/i', '', $line); + $constraints[] = $line; + continue; + } + + if (preg_match('/^`?(\w+)`?\s+(.*)$/', $line, $m)) { + $colName = $m[1]; + $def = $m[2]; + + $def = preg_replace('/int\(\d+\)/i', 'INTEGER', $def); + $def = preg_replace('/tinyint\(\d+\)/i', 'INTEGER', $def); + $def = preg_replace('/smallint\(\d+\)/i', 'INTEGER', $def); + $def = preg_replace('/bigint\(\d+\)/i', 'INTEGER', $def); + $def = preg_replace('/double(\(.*\))?/i', 'REAL', $def); + $def = preg_replace('/float(\(.*\))?/i', 'REAL', $def); + $def = preg_replace('/decimal(\(.*\))?/i', 'REAL', $def); + $def = preg_replace('/varchar\(\d+\)/i', 'TEXT', $def); + $def = preg_replace('/char\(\d+\)/i', 'TEXT', $def); + $def = preg_replace('/text/i', 'TEXT', $def); + $def = preg_replace('/longtext/i', 'TEXT', $def); + $def = preg_replace('/mediumtext/i', 'TEXT', $def); + $def = preg_replace('/enum\(.*\)/i', 'TEXT', $def); + $def = preg_replace('/set\(.*\)/i', 'TEXT', $def); + $def = preg_replace('/date/i', 'TEXT', $def); + $def = preg_replace('/datetime/i', 'TEXT', $def); + $def = preg_replace('/time/i', 'TEXT', $def); + $def = preg_replace('/timestamp/i', 'TEXT', $def); + $def = preg_replace('/blob/i', 'BLOB', $def); + $def = preg_replace('/longblob/i', 'BLOB', $def); + + if (stripos($def, 'AUTO_INCREMENT') !== false) { + $def = str_ireplace('AUTO_INCREMENT', '', $def); + if ($colName === $pkColumn) { + $def = preg_replace('/(int|integer)\s+(not\s+null)?/i', 'INTEGER PRIMARY KEY AUTOINCREMENT', $def); + } + } + + $def = str_ireplace('UNSIGNED', '', $def); + $def = str_ireplace('ZEROFILL', '', $def); + $def = preg_replace('/ON\s+UPDATE\s+CURRENT_TIMESTAMP/i', '', $def); + $def = str_ireplace('CURRENT_TIMESTAMP', 'CURRENT_TIMESTAMP', $def); + + if ($colName === $pkColumn && stripos($def, 'PRIMARY KEY') === false) { + $def .= ' PRIMARY KEY'; + } + + $columnDefs[] = "`$colName` $def"; + } + } + + $createSql = "CREATE TABLE `$tableName` (\n" . implode(",\n", array_merge($columnDefs, $constraints)) . "\n)"; + + try { + $pdo->exec($createSql); + } catch (PDOException $e) { + } + + foreach ($indexes as $idxSql) { + try { + $pdo->exec($idxSql); + } catch (PDOException $e) { + } + } +} + +function processInsert($pdo, $sql) +{ + $sql = str_replace('\\"', '##DQ##', $sql); + $sql = str_replace("'", "''", $sql); + $sql = str_replace('"', "'", $sql); + $sql = str_replace('##DQ##', '"', $sql); + $sql = str_replace('\\\\', '\\', $sql); + + try { + $pdo->exec($sql); + } catch (PDOException $e) { + } +} + ?> - + - - mLITE Setup - - - - - - - - + + + mLITE Installer + - -
    -
    -
    -

    mLITE Indonesia

    -
    Pemasangan awal
    + + +
    +
    +

    Instalasi database sedang berjalan... +

    +
    + +
    + +
    + mLITE Logo +
    + +
    +

    mLITE Setup

    +

    Silakan atur konfigurasi database utama Anda

    +
    + + +
    + Error:
    - query("SHOW TABLES LIKE 'mlite_settings'")->num_rows == 1) { - header("Location: ./"); - } - $action = isset($_GET['action'])?$_GET['action']:null; - if(!$action) { - ?> -
    -
    - Anda ada dihalaman instalasi awal
    - SIMKES mLITE Indonesia.
    - Jika anda sudah pernah menginstall sebelumnya, silahkan hapus file install.php di sistem anda. -
    -
    -
    - -
    -
    -
    - -
    -
    Silahkan isikan konfirgurasi database anda
    -
    + +
    + const driverSelect = document.getElementById('db_driver'); + const mysqlFields = document.getElementById('mysql_fields'); + const form = document.getElementById('installForm'); + const loading = document.getElementById('loading'); + + function toggleFields() { + if (driverSelect.value === 'mysql') { + mysqlFields.classList.add('active'); + } else { + mysqlFields.classList.remove('active'); + } + } + + driverSelect.addEventListener('change', toggleFields); + toggleFields(); // Initial call + form.addEventListener('submit', function () { + loading.classList.add('active'); + }); + - + + \ No newline at end of file diff --git a/mlite_db.sql b/mlite_db.sql index 739c29bf7..c90693977 100644 --- a/mlite_db.sql +++ b/mlite_db.sql @@ -1,21 +1,14 @@ -# ************************************************************ -# Host: localhost (MySQL 5.7.44) -# Database: mlite_db -# Generation Time: 2024-02-10 15:04:12 +0000 -# ************************************************************ +-- CREATE DATABASE IF NOT EXISTS `mlite`; -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -SET NAMES utf8mb4; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE='NO_AUTO_VALUE_ON_ZERO', SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; +-- USE `mlite`; -# Dump of table aturan_pakai -# ------------------------------------------------------------ +SET sql_mode = ''; + + +SET foreign_key_checks = 0; + CREATE TABLE `aturan_pakai` ( `tgl_perawatan` date NOT NULL DEFAULT '0000-00-00', @@ -28,34 +21,20 @@ CREATE TABLE `aturan_pakai` ( KEY `kode_brng` (`kode_brng`), CONSTRAINT `aturan_pakai_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `aturan_pakai_ibfk_2` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table bahasa_pasien -# ------------------------------------------------------------ CREATE TABLE `bahasa_pasien` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `nama_bahasa` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `nama_bahasa` (`nama_bahasa`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT; - -LOCK TABLES `bahasa_pasien` WRITE; -/*!40000 ALTER TABLE `bahasa_pasien` DISABLE KEYS */; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -INSERT INTO `bahasa_pasien` (`id`, `nama_bahasa`) -VALUES - (1,'-'); -/*!40000 ALTER TABLE `bahasa_pasien` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `bahasa_pasien` VALUES ("1","-"); -# Dump of table bangsal -# ------------------------------------------------------------ - CREATE TABLE `bangsal` ( `kd_bangsal` char(5) NOT NULL, `nm_bangsal` varchar(30) DEFAULT NULL, @@ -63,57 +42,33 @@ CREATE TABLE `bangsal` ( PRIMARY KEY (`kd_bangsal`), KEY `nm_bangsal` (`nm_bangsal`), KEY `status` (`status`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `bangsal` WRITE; -/*!40000 ALTER TABLE `bangsal` DISABLE KEYS */; - -INSERT INTO `bangsal` (`kd_bangsal`, `nm_bangsal`, `status`) -VALUES - ('-','-','1'), - ('ANG','Anggrek','1'), - ('APT','Apotek','1'), - ('GF','Gudang Farmasi','1'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `bangsal` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `bangsal` VALUES ("-","-","1"), +("ANG","Anggrek","1"), +("APT","Apotek","1"), +("GF","Gudang Farmasi","1"); -# Dump of table bank -# ------------------------------------------------------------ CREATE TABLE `bank` ( `namabank` varchar(50) NOT NULL, PRIMARY KEY (`namabank`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `bank` WRITE; -/*!40000 ALTER TABLE `bank` DISABLE KEYS */; - -INSERT INTO `bank` (`namabank`) -VALUES - ('-'), - ('T'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `bank` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `bank` VALUES ("-"), +("T"); -# Dump of table barcode -# ------------------------------------------------------------ CREATE TABLE `barcode` ( - `id` int(11) NOT NULL, + `id` int NOT NULL, `barcode` varchar(25) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `barcode` (`barcode`), CONSTRAINT `barcode_ibfk_1` FOREIGN KEY (`id`) REFERENCES `pegawai` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table beri_obat_operasi -# ------------------------------------------------------------ CREATE TABLE `beri_obat_operasi` ( `no_rawat` varchar(17) NOT NULL, @@ -128,12 +83,8 @@ CREATE TABLE `beri_obat_operasi` ( KEY `jumlah` (`jumlah`), CONSTRAINT `beri_obat_operasi_ibfk_2` FOREIGN KEY (`kd_obat`) REFERENCES `obatbhp_ok` (`kd_obat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `beri_obat_operasi_ibfk_3` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table berkas_digital_perawatan -# ------------------------------------------------------------ CREATE TABLE `berkas_digital_perawatan` ( `no_rawat` varchar(17) NOT NULL, @@ -143,31 +94,17 @@ CREATE TABLE `berkas_digital_perawatan` ( KEY `kode` (`kode`), CONSTRAINT `berkas_digital_perawatan_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `berkas_digital_perawatan_ibfk_2` FOREIGN KEY (`kode`) REFERENCES `master_berkas_digital` (`kode`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table bidang -# ------------------------------------------------------------ CREATE TABLE `bidang` ( `nama` varchar(15) NOT NULL, PRIMARY KEY (`nama`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `bidang` WRITE; -/*!40000 ALTER TABLE `bidang` DISABLE KEYS */; - -INSERT INTO `bidang` (`nama`) -VALUES - ('-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `bidang` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `bidang` VALUES ("-"); -# Dump of table booking_operasi -# ------------------------------------------------------------ CREATE TABLE `booking_operasi` ( `no_rawat` varchar(17) DEFAULT NULL, @@ -186,12 +123,8 @@ CREATE TABLE `booking_operasi` ( CONSTRAINT `booking_operasi_ibfk_2` FOREIGN KEY (`kode_paket`) REFERENCES `paket_operasi` (`kode_paket`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `booking_operasi_ibfk_3` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `booking_operasi_ibfk_4` FOREIGN KEY (`kd_ruang_ok`) REFERENCES `ruang_ok` (`kd_ruang_ok`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table booking_periksa -# ------------------------------------------------------------ CREATE TABLE `booking_periksa` ( `no_booking` varchar(17) NOT NULL, @@ -208,24 +141,16 @@ CREATE TABLE `booking_periksa` ( UNIQUE KEY `tanggal` (`tanggal`,`no_telp`), KEY `kd_poli` (`kd_poli`), CONSTRAINT `booking_periksa_ibfk_1` FOREIGN KEY (`kd_poli`) REFERENCES `poliklinik` (`kd_poli`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table booking_periksa_balasan -# ------------------------------------------------------------ CREATE TABLE `booking_periksa_balasan` ( `no_booking` varchar(17) NOT NULL, `balasan` varchar(200) DEFAULT NULL, PRIMARY KEY (`no_booking`), CONSTRAINT `booking_periksa_balasan_ibfk_1` FOREIGN KEY (`no_booking`) REFERENCES `booking_periksa` (`no_booking`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table booking_periksa_diterima -# ------------------------------------------------------------ CREATE TABLE `booking_periksa_diterima` ( `no_booking` varchar(17) NOT NULL, @@ -234,12 +159,8 @@ CREATE TABLE `booking_periksa_diterima` ( KEY `no_rkm_medis` (`no_rkm_medis`), CONSTRAINT `booking_periksa_diterima_ibfk_1` FOREIGN KEY (`no_booking`) REFERENCES `booking_periksa` (`no_booking`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `booking_periksa_diterima_ibfk_2` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table booking_registrasi -# ------------------------------------------------------------ CREATE TABLE `booking_registrasi` ( `tanggal_booking` date DEFAULT NULL, @@ -250,7 +171,7 @@ CREATE TABLE `booking_registrasi` ( `kd_poli` varchar(5) DEFAULT NULL, `no_reg` varchar(8) DEFAULT NULL, `kd_pj` char(3) DEFAULT NULL, - `limit_reg` int(1) DEFAULT NULL, + `limit_reg` int DEFAULT NULL, `waktu_kunjungan` datetime DEFAULT NULL, `status` enum('Terdaftar','Belum','Batal','Dokter Berhalangan') DEFAULT NULL, PRIMARY KEY (`no_rkm_medis`,`tanggal_periksa`), @@ -262,24 +183,16 @@ CREATE TABLE `booking_registrasi` ( CONSTRAINT `booking_registrasi_ibfk_2` FOREIGN KEY (`kd_poli`) REFERENCES `poliklinik` (`kd_poli`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `booking_registrasi_ibfk_3` FOREIGN KEY (`kd_pj`) REFERENCES `penjab` (`kd_pj`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `booking_registrasi_ibfk_4` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table bpjs_prb -# ------------------------------------------------------------ CREATE TABLE `bpjs_prb` ( `no_sep` varchar(40) NOT NULL, `prb` varchar(50) DEFAULT NULL, PRIMARY KEY (`no_sep`), CONSTRAINT `bpjs_prb_ibfk_1` FOREIGN KEY (`no_sep`) REFERENCES `bridging_sep` (`no_sep`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table bridging_rujukan_bpjs -# ------------------------------------------------------------ CREATE TABLE `bridging_rujukan_bpjs` ( `no_sep` varchar(40) NOT NULL, @@ -299,12 +212,8 @@ CREATE TABLE `bridging_rujukan_bpjs` ( PRIMARY KEY (`no_rujukan`), KEY `no_sep` (`no_sep`), CONSTRAINT `bridging_rujukan_bpjs_ibfk_1` FOREIGN KEY (`no_sep`) REFERENCES `bridging_sep` (`no_sep`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table bridging_sep -# ------------------------------------------------------------ CREATE TABLE `bridging_sep` ( `no_sep` varchar(40) NOT NULL DEFAULT '', @@ -362,12 +271,8 @@ CREATE TABLE `bridging_sep` ( PRIMARY KEY (`no_sep`), KEY `no_rawat` (`no_rawat`), CONSTRAINT `bridging_sep_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table bridging_sep_internal -# ------------------------------------------------------------ CREATE TABLE `bridging_sep_internal` ( `no_sep` varchar(40) NOT NULL DEFAULT '', @@ -426,12 +331,8 @@ CREATE TABLE `bridging_sep_internal` ( KEY `no_sep` (`no_sep`), CONSTRAINT `bridging_sep_internal_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `bridging_sep_internal_ibfk_2` FOREIGN KEY (`no_sep`) REFERENCES `bridging_sep` (`no_sep`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table bridging_srb_bpjs -# ------------------------------------------------------------ CREATE TABLE `bridging_srb_bpjs` ( `no_sep` varchar(40) NOT NULL, @@ -448,12 +349,8 @@ CREATE TABLE `bridging_srb_bpjs` ( `saran` varchar(100) DEFAULT NULL, PRIMARY KEY (`no_sep`,`no_srb`), CONSTRAINT `bridging_srb_bpjs_ibfk_1` FOREIGN KEY (`no_sep`) REFERENCES `bridging_sep` (`no_sep`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table bridging_surat_kontrol_bpjs -# ------------------------------------------------------------ CREATE TABLE `bridging_surat_kontrol_bpjs` ( `no_sep` varchar(40) DEFAULT NULL, @@ -467,12 +364,8 @@ CREATE TABLE `bridging_surat_kontrol_bpjs` ( PRIMARY KEY (`no_surat`), KEY `bridging_surat_kontrol_bpjs_ibfk_1` (`no_sep`), CONSTRAINT `bridging_surat_kontrol_bpjs_ibfk_1` FOREIGN KEY (`no_sep`) REFERENCES `bridging_sep` (`no_sep`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table bridging_surat_pri_bpjs -# ------------------------------------------------------------ CREATE TABLE `bridging_surat_pri_bpjs` ( `no_rawat` varchar(17) DEFAULT NULL, @@ -489,33 +382,36 @@ CREATE TABLE `bridging_surat_pri_bpjs` ( PRIMARY KEY (`no_surat`), KEY `no_rawat` (`no_rawat`), CONSTRAINT `bridging_surat_pri_bpjs_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table cacat_fisik -# ------------------------------------------------------------ CREATE TABLE `cacat_fisik` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `nama_cacat` varchar(30) NOT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `nama_cacat` (`nama_cacat`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -LOCK TABLES `cacat_fisik` WRITE; -/*!40000 ALTER TABLE `cacat_fisik` DISABLE KEYS */; -INSERT INTO `cacat_fisik` (`id`, `nama_cacat`) -VALUES - (1,'-'); +INSERT INTO `cacat_fisik` VALUES ("1","-"); -/*!40000 ALTER TABLE `cacat_fisik` ENABLE KEYS */; -UNLOCK TABLES; +CREATE TABLE `catatan_adime_gizi` ( + `no_rawat` varchar(17) NOT NULL, + `tanggal` datetime NOT NULL, + `asesmen` TEXT DEFAULT NULL, + `diagnosis` TEXT DEFAULT NULL, + `intervensi` TEXT DEFAULT NULL, + `monitoring` TEXT DEFAULT NULL, + `evaluasi` TEXT DEFAULT NULL, + `instruksi` TEXT DEFAULT NULL, + `nip` varchar(20) DEFAULT NULL, + PRIMARY KEY (`no_rawat`,`tanggal`) USING BTREE, + KEY `nip` (`nip`) USING BTREE, + CONSTRAINT `catatan_adime_gizi_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `catatan_adime_gizi_ibfk_2` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table catatan_perawatan -# ------------------------------------------------------------ CREATE TABLE `catatan_perawatan` ( `tanggal` date DEFAULT NULL, @@ -527,12 +423,66 @@ CREATE TABLE `catatan_perawatan` ( KEY `kd_dokter` (`kd_dokter`), CONSTRAINT `catatan_perawatan_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `catatan_perawatan_ibfk_2` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `data_tb` ( + `no_rawat` varchar(17) NOT NULL, + `id_tb_03` varchar(30) DEFAULT NULL, + `id_periode_laporan` enum('1=Januari - Maret','2=April - Juni','3=Juli - September','4=Oktober - Desember') DEFAULT NULL, + `tanggal_buat_laporan` datetime DEFAULT NULL, + `tahun_buat_laporan` year DEFAULT NULL, + `kd_wasor` int DEFAULT NULL, + `noregkab` int DEFAULT NULL, + `id_propinsi` varchar(15) DEFAULT NULL, + `kd_kabupaten` varchar(15) DEFAULT NULL, + `id_kecamatan` varchar(15) DEFAULT NULL, + `id_kelurahan` varchar(15) DEFAULT NULL, + `nama_rujukan` enum('Inisiatif pasien/Keluarga','Anggota Masyarakat/Kader','Faskes','Dokter Praktek Mandiri','Poli lain','Lain-lain') DEFAULT NULL, + `sebutkan1` varchar(100) DEFAULT NULL, + `tipe_diagnosis` enum('Terkonfirmasi bakteriologis','Terdiagnosis klinis') DEFAULT NULL, + `klasifikasi_lokasi_anatomi` enum('Paru','Ekstraparu') DEFAULT NULL, + `klasifikasi_riwayat_pengobatan` enum('Baru','Kambuh','Diobati setelah gagal','Diobati Setelah Putus Berobat','Lain-lain','Riwayat Pengobatan Sebelumnya Tidak Diketahui','Pindahan') DEFAULT NULL, + `klasifikasi_status_hiv` enum('Positif','Negatif','Tidak diketahui') DEFAULT NULL, + `total_skoring_anak` enum('1','2','3','4','5','6','7','8','9','10','11','12','13','Tidak dilakukan') DEFAULT NULL, + `konfirmasiSkoring5` enum('Uji Tuberkulin Positif','Ada Kontak TB Paru','Uji Tuberkulin Negatif','Tidak Ada Kontak TB Paru') DEFAULT NULL, + `konfirmasiSkoring6` enum('Ada Kontak TB Paru','Tidak Ada','Tidak Jelas Kontak TB Paru') DEFAULT NULL, + `tanggal_mulai_pengobatan` date DEFAULT NULL, + `paduan_oat` TEXT DEFAULT NULL, + `sumber_obat` enum('Program TB','Bayar Sendiri','Asuransi','Lain-lain') DEFAULT NULL, + `sebutkan` TEXT DEFAULT NULL, + `sebelum_pengobatan_hasil_mikroskopis` enum('Negatif','1-19','1+','2+','3+','Tidak dilakukan') DEFAULT NULL, + `sebelum_pengobatan_hasil_tes_cepat` enum('Rif sensitif','Rif resisten','Negatif','Rif Indeterminated','Invalid','Error','No Result','Tidak dilakukan') DEFAULT NULL, + `sebelum_pengobatan_hasil_biakan` enum('Negatif','1-19 BTA','1+','2+','3+','4+','NTM','Kontaminasi','Tidak dilakukan') DEFAULT NULL, + `noreglab_bulan_2` varchar(15) DEFAULT NULL, + `hasil_mikroskopis_bulan_2` enum('Negatif','1-19','1+','2+','3+','Tidak dilakukan') DEFAULT NULL, + `noreglab_bulan_3` varchar(15) DEFAULT NULL, + `hasil_mikroskopis_bulan_3` enum('Negatif','1-19','1+','2+','3+','Tidak dilakukan') DEFAULT NULL, + `noreglab_bulan_5` varchar(15) DEFAULT NULL, + `hasil_mikroskopis_bulan_5` enum('Negatif','1-19','1+','2+','3+','Tidak dilakukan') DEFAULT NULL, + `akhir_pengobatan_noreglab` varchar(15) DEFAULT NULL, + `akhir_pengobatan_hasil_mikroskopis` enum('Negatif','1-19','1+','2+','3+','Tidak dilakukan') DEFAULT NULL, + `tanggal_hasil_akhir_pengobatan` date DEFAULT NULL, + `hasil_akhir_pengobatan` enum('Belum','Sembuh','Pengobatan Lengkap','Lost To Follow Up','Meninggal','Gagal','Pindah','') DEFAULT NULL, + `tanggal_dianjurkan_tes` date DEFAULT NULL, + `tanggal_tes_hiv` date DEFAULT NULL, + `hasil_tes_hiv` enum('Reaktif','Non Reaktif','Indeterminated') DEFAULT NULL, + `ppk` enum('Ya','Tidak') DEFAULT NULL, + `art` enum('Ya','Tidak') DEFAULT NULL, + `tb_dm` enum('Ya','Tidak') DEFAULT NULL, + `terapi_dm` enum('OHO','Inj. Insulin','') DEFAULT NULL, + `pindah_ro` enum('Ya','Tidak') DEFAULT NULL, + `status_pengobatan` enum('Sesuai Standar','Tidak Sesuai Standar') DEFAULT NULL, + `foto_toraks` enum('Positif','Negatif','Tidak Dilakukan') DEFAULT NULL, + `toraks_tdk_dilakukan` enum('Tidak dilakukan','Setelah terapi antibioka non OAT: tidak ada perbaikan Klinis, ada faktor resiko TB, dan atas pertimbangan dokter','Setelah terapi antibioka non OAT: ada Perbaikan Klinis') DEFAULT NULL, + `keterangan` varchar(100) DEFAULT NULL, + `kode_icd_x` varchar(15) DEFAULT NULL, + PRIMARY KEY (`no_rawat`), + KEY `kode_icd_x` (`kode_icd_x`), + CONSTRAINT `data_tb_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `data_tb_ibfk_2` FOREIGN KEY (`kode_icd_x`) REFERENCES `penyakit` (`kd_penyakit`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table databarang -# ------------------------------------------------------------ CREATE TABLE `databarang` ( `kode_brng` varchar(15) NOT NULL DEFAULT '', @@ -591,42 +541,36 @@ CREATE TABLE `databarang` ( CONSTRAINT `databarang_ibfk_5` FOREIGN KEY (`kode_kategori`) REFERENCES `kategori_barang` (`kode`) ON UPDATE CASCADE, CONSTRAINT `databarang_ibfk_6` FOREIGN KEY (`kode_golongan`) REFERENCES `golongan_barang` (`kode`) ON UPDATE CASCADE, CONSTRAINT `databarang_ibfk_7` FOREIGN KEY (`kode_satbesar`) REFERENCES `kodesatuan` (`kode_sat`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `databarang` WRITE; -/*!40000 ALTER TABLE `databarang` DISABLE KEYS */; - -INSERT INTO `databarang` (`kode_brng`, `nama_brng`, `kode_satbesar`, `kode_sat`, `letak_barang`, `dasar`, `h_beli`, `ralan`, `kelas1`, `kelas2`, `kelas3`, `utama`, `vip`, `vvip`, `beliluar`, `jualbebas`, `karyawan`, `stokminimal`, `kdjns`, `isi`, `kapasitas`, `expire`, `status`, `kode_industri`, `kode_kategori`, `kode_golongan`) -VALUES - ('B00001','Paracetamol 500mg','-','-','-',5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,100,'-',10,500,'2024-06-10','1','-','-','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `databarang` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `databarang` VALUES ("B00001","Paracetamol 500mg","-","-","-","5000","5000","5000","5000","5000","5000","5000","5000","5000","5000","5000","5000","100","-","10","500","2024-06-10","1","-","-","-"); -# Dump of table departemen -# ------------------------------------------------------------ CREATE TABLE `departemen` ( `dep_id` char(4) NOT NULL, `nama` varchar(25) NOT NULL, PRIMARY KEY (`dep_id`), KEY `nama` (`nama`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -LOCK TABLES `departemen` WRITE; -/*!40000 ALTER TABLE `departemen` DISABLE KEYS */; -INSERT INTO `departemen` (`dep_id`, `nama`) -VALUES - ('-','-'); +INSERT INTO `departemen` VALUES ("-","-"); -/*!40000 ALTER TABLE `departemen` ENABLE KEYS */; -UNLOCK TABLES; +CREATE TABLE `detail_obat_racikan` ( + `tgl_perawatan` date NOT NULL, + `jam` time NOT NULL, + `no_rawat` varchar(17) NOT NULL, + `no_racik` varchar(2) NOT NULL, + `kode_brng` varchar(15) NOT NULL, + PRIMARY KEY (`tgl_perawatan`,`jam`,`no_rawat`,`no_racik`,`kode_brng`), + KEY `no_rawat` (`no_rawat`), + KEY `kode_brng` (`kode_brng`), + CONSTRAINT `detail_obat_racikan_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE, + CONSTRAINT `detail_obat_racikan_ibfk_2` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table detail_pemberian_obat -# ------------------------------------------------------------ CREATE TABLE `detail_pemberian_obat` ( `tgl_perawatan` date NOT NULL DEFAULT '0000-00-00', @@ -658,19 +602,15 @@ CREATE TABLE `detail_pemberian_obat` ( CONSTRAINT `detail_pemberian_obat_ibfk_3` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `detail_pemberian_obat_ibfk_4` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `detail_pemberian_obat_ibfk_5` FOREIGN KEY (`kd_bangsal`) REFERENCES `bangsal` (`kd_bangsal`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table detail_periksa_lab -# ------------------------------------------------------------ CREATE TABLE `detail_periksa_lab` ( `no_rawat` varchar(17) NOT NULL, `kd_jenis_prw` varchar(15) NOT NULL, `tgl_periksa` date NOT NULL, `jam` time NOT NULL, - `id_template` int(11) NOT NULL, + `id_template` int NOT NULL, `nilai` varchar(200) NOT NULL, `nilai_rujukan` varchar(30) NOT NULL, `keterangan` varchar(60) NOT NULL, @@ -701,18 +641,14 @@ CREATE TABLE `detail_periksa_lab` ( CONSTRAINT `detail_periksa_lab_ibfk_10` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE, CONSTRAINT `detail_periksa_lab_ibfk_11` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_lab` (`kd_jenis_prw`) ON UPDATE CASCADE, CONSTRAINT `detail_periksa_lab_ibfk_12` FOREIGN KEY (`id_template`) REFERENCES `template_laboratorium` (`id_template`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table diagnosa_pasien -# ------------------------------------------------------------ CREATE TABLE `diagnosa_pasien` ( `no_rawat` varchar(17) NOT NULL, `kd_penyakit` varchar(10) NOT NULL, `status` enum('Ralan','Ranap') NOT NULL, - `prioritas` tinyint(4) NOT NULL, + `prioritas` tinyint NOT NULL, `status_penyakit` enum('Lama','Baru') DEFAULT NULL, PRIMARY KEY (`no_rawat`,`kd_penyakit`,`status`), KEY `kd_penyakit` (`kd_penyakit`), @@ -721,12 +657,8 @@ CREATE TABLE `diagnosa_pasien` ( KEY `no_rawat` (`no_rawat`), CONSTRAINT `diagnosa_pasien_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE, CONSTRAINT `diagnosa_pasien_ibfk_2` FOREIGN KEY (`kd_penyakit`) REFERENCES `penyakit` (`kd_penyakit`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table dokter -# ------------------------------------------------------------ CREATE TABLE `dokter` ( `kd_dokter` varchar(20) NOT NULL, @@ -760,21 +692,11 @@ CREATE TABLE `dokter` ( KEY `status` (`status`), CONSTRAINT `dokter_ibfk_2` FOREIGN KEY (`kd_sps`) REFERENCES `spesialis` (`kd_sps`) ON UPDATE CASCADE, CONSTRAINT `dokter_ibfk_3` FOREIGN KEY (`kd_dokter`) REFERENCES `pegawai` (`nik`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `dokter` WRITE; -/*!40000 ALTER TABLE `dokter` DISABLE KEYS */; - -INSERT INTO `dokter` (`kd_dokter`, `nm_dokter`, `jk`, `tmp_lahir`, `tgl_lahir`, `gol_drh`, `agama`, `almt_tgl`, `no_telp`, `stts_nikah`, `kd_sps`, `alumni`, `no_ijn_praktek`, `status`) -VALUES - ('DR001','dr. Ataaka Muhammad','L','Barabai','2000-09-18','O','Islam','Barabai','-','MENIKAH','UMUM','UI','-','1'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `dokter` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `dokter` VALUES ("DR001","dr. Ataaka Muhammad","L","Barabai","2000-09-18","O","Islam","Barabai","-","MENIKAH","UMUM","UI","-","1"); -# Dump of table dpjp_ranap -# ------------------------------------------------------------ CREATE TABLE `dpjp_ranap` ( `no_rawat` varchar(17) NOT NULL, @@ -783,67 +705,39 @@ CREATE TABLE `dpjp_ranap` ( KEY `dpjp_ranap_ibfk_2` (`kd_dokter`), CONSTRAINT `dpjp_ranap_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE, CONSTRAINT `dpjp_ranap_ibfk_2` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table emergency_index -# ------------------------------------------------------------ CREATE TABLE `emergency_index` ( `kode_emergency` varchar(3) NOT NULL, `nama_emergency` varchar(200) DEFAULT NULL, - `indek` tinyint(4) DEFAULT NULL, + `indek` tinyint DEFAULT NULL, PRIMARY KEY (`kode_emergency`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `emergency_index` WRITE; -/*!40000 ALTER TABLE `emergency_index` DISABLE KEYS */; - -INSERT INTO `emergency_index` (`kode_emergency`, `nama_emergency`, `indek`) -VALUES - ('-','-',1); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `emergency_index` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `emergency_index` VALUES ("-","-","1"); -# Dump of table gambar_radiologi -# ------------------------------------------------------------ CREATE TABLE `gambar_radiologi` ( `no_rawat` varchar(17) NOT NULL, `tgl_periksa` date NOT NULL, `jam` time NOT NULL, - `lokasi_gambar` varchar(500) NOT NULL, + `lokasi_gambar` varchar(255) NOT NULL, PRIMARY KEY (`no_rawat`,`tgl_periksa`,`jam`,`lokasi_gambar`), CONSTRAINT `gambar_radiologi_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table golongan_barang -# ------------------------------------------------------------ CREATE TABLE `golongan_barang` ( `kode` char(4) NOT NULL, `nama` varchar(30) DEFAULT NULL, PRIMARY KEY (`kode`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `golongan_barang` WRITE; -/*!40000 ALTER TABLE `golongan_barang` DISABLE KEYS */; - -INSERT INTO `golongan_barang` (`kode`, `nama`) -VALUES - ('-','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `golongan_barang` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `golongan_barang` VALUES ("-","-"); -# Dump of table gudangbarang -# ------------------------------------------------------------ CREATE TABLE `gudangbarang` ( `kode_brng` varchar(15) NOT NULL, @@ -857,12 +751,8 @@ CREATE TABLE `gudangbarang` ( KEY `kd_bangsal` (`kd_bangsal`) USING BTREE, CONSTRAINT `gudangbarang_ibfk_1` FOREIGN KEY (`kd_bangsal`) REFERENCES `bangsal` (`kd_bangsal`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `gudangbarang_ibfk_2` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table hasil_radiologi -# ------------------------------------------------------------ CREATE TABLE `hasil_radiologi` ( `no_rawat` varchar(17) NOT NULL, @@ -872,24 +762,16 @@ CREATE TABLE `hasil_radiologi` ( PRIMARY KEY (`no_rawat`,`tgl_periksa`,`jam`), KEY `no_rawat` (`no_rawat`), CONSTRAINT `hasil_radiologi_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table icd9 -# ------------------------------------------------------------ CREATE TABLE `icd9` ( `kode` varchar(8) NOT NULL, `deskripsi_panjang` varchar(250) DEFAULT NULL, `deskripsi_pendek` varchar(40) DEFAULT NULL, PRIMARY KEY (`kode`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table industrifarmasi -# ------------------------------------------------------------ CREATE TABLE `industrifarmasi` ( `kode_industri` char(5) NOT NULL DEFAULT '', @@ -902,21 +784,11 @@ CREATE TABLE `industrifarmasi` ( KEY `alamat` (`alamat`), KEY `kota` (`kota`), KEY `no_telp` (`no_telp`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `industrifarmasi` WRITE; -/*!40000 ALTER TABLE `industrifarmasi` DISABLE KEYS */; - -INSERT INTO `industrifarmasi` (`kode_industri`, `nama_industri`, `alamat`, `kota`, `no_telp`) -VALUES - ('-','-','-','-','0'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `industrifarmasi` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `industrifarmasi` VALUES ("-","-","-","-","0"); -# Dump of table inventaris -# ------------------------------------------------------------ CREATE TABLE `inventaris` ( `no_inventaris` varchar(30) NOT NULL, @@ -939,20 +811,16 @@ CREATE TABLE `inventaris` ( KEY `no_box` (`no_box`), CONSTRAINT `inventaris_ibfk_1` FOREIGN KEY (`kode_barang`) REFERENCES `inventaris_barang` (`kode_barang`) ON UPDATE CASCADE, CONSTRAINT `inventaris_ibfk_2` FOREIGN KEY (`id_ruang`) REFERENCES `inventaris_ruang` (`id_ruang`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table inventaris_barang -# ------------------------------------------------------------ CREATE TABLE `inventaris_barang` ( `kode_barang` varchar(20) NOT NULL, `nama_barang` varchar(60) DEFAULT NULL, - `jml_barang` int(11) DEFAULT NULL, + `jml_barang` int DEFAULT NULL, `kode_produsen` varchar(10) DEFAULT NULL, `id_merk` varchar(10) DEFAULT NULL, - `thn_produksi` year(4) DEFAULT NULL, + `thn_produksi` year DEFAULT NULL, `isbn` varchar(20) DEFAULT NULL, `id_kategori` char(10) DEFAULT NULL, `id_jenis` char(10) DEFAULT NULL, @@ -969,48 +837,32 @@ CREATE TABLE `inventaris_barang` ( CONSTRAINT `inventaris_barang_ibfk_6` FOREIGN KEY (`id_merk`) REFERENCES `inventaris_merk` (`id_merk`) ON UPDATE CASCADE, CONSTRAINT `inventaris_barang_ibfk_7` FOREIGN KEY (`id_kategori`) REFERENCES `inventaris_kategori` (`id_kategori`) ON UPDATE CASCADE, CONSTRAINT `inventaris_barang_ibfk_8` FOREIGN KEY (`id_jenis`) REFERENCES `inventaris_jenis` (`id_jenis`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table inventaris_jenis -# ------------------------------------------------------------ CREATE TABLE `inventaris_jenis` ( `id_jenis` char(10) NOT NULL, `nama_jenis` varchar(40) DEFAULT NULL, PRIMARY KEY (`id_jenis`), KEY `nama_jenis` (`nama_jenis`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table inventaris_kategori -# ------------------------------------------------------------ CREATE TABLE `inventaris_kategori` ( `id_kategori` char(10) NOT NULL, `nama_kategori` varchar(40) DEFAULT NULL, PRIMARY KEY (`id_kategori`), KEY `nama_kategori` (`nama_kategori`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table inventaris_merk -# ------------------------------------------------------------ CREATE TABLE `inventaris_merk` ( `id_merk` varchar(10) NOT NULL, `nama_merk` varchar(40) NOT NULL, PRIMARY KEY (`id_merk`), KEY `nama_merk` (`nama_merk`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table inventaris_peminjaman -# ------------------------------------------------------------ CREATE TABLE `inventaris_peminjaman` ( `peminjam` varchar(50) NOT NULL DEFAULT '', @@ -1027,12 +879,8 @@ CREATE TABLE `inventaris_peminjaman` ( KEY `status_pinjam` (`status_pinjam`) USING BTREE, CONSTRAINT `inventaris_peminjaman_ibfk_1` FOREIGN KEY (`no_inventaris`) REFERENCES `inventaris` (`no_inventaris`) ON UPDATE CASCADE, CONSTRAINT `inventaris_peminjaman_ibfk_2` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table inventaris_produsen -# ------------------------------------------------------------ CREATE TABLE `inventaris_produsen` ( `kode_produsen` varchar(10) NOT NULL, @@ -1047,45 +895,27 @@ CREATE TABLE `inventaris_produsen` ( KEY `no_telp` (`no_telp`), KEY `email` (`email`), KEY `website_produsen` (`website_produsen`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table inventaris_ruang -# ------------------------------------------------------------ CREATE TABLE `inventaris_ruang` ( `id_ruang` varchar(5) NOT NULL, `nama_ruang` varchar(40) NOT NULL, PRIMARY KEY (`id_ruang`), KEY `nama_ruang` (`nama_ruang`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table jabatan -# ------------------------------------------------------------ CREATE TABLE `jabatan` ( `kd_jbtn` char(4) NOT NULL DEFAULT '', `nm_jbtn` varchar(25) DEFAULT NULL, PRIMARY KEY (`kd_jbtn`), KEY `nm_jbtn` (`nm_jbtn`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `jabatan` WRITE; -/*!40000 ALTER TABLE `jabatan` DISABLE KEYS */; - -INSERT INTO `jabatan` (`kd_jbtn`, `nm_jbtn`) -VALUES - ('-','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `jabatan` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `jabatan` VALUES ("-","-"); -# Dump of table jadwal -# ------------------------------------------------------------ CREATE TABLE `jadwal` ( `kd_dokter` varchar(20) NOT NULL, @@ -1093,7 +923,7 @@ CREATE TABLE `jadwal` ( `jam_mulai` time NOT NULL DEFAULT '00:00:00', `jam_selesai` time DEFAULT NULL, `kd_poli` char(5) DEFAULT NULL, - `kuota` int(11) DEFAULT NULL, + `kuota` int DEFAULT NULL, PRIMARY KEY (`kd_dokter`,`hari_kerja`,`jam_mulai`), KEY `kd_dokter` (`kd_dokter`), KEY `kd_poli` (`kd_poli`), @@ -1101,16 +931,12 @@ CREATE TABLE `jadwal` ( KEY `jam_selesai` (`jam_selesai`), CONSTRAINT `jadwal_ibfk_1` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `jadwal_ibfk_2` FOREIGN KEY (`kd_poli`) REFERENCES `poliklinik` (`kd_poli`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table jadwal_pegawai -# ------------------------------------------------------------ CREATE TABLE `jadwal_pegawai` ( - `id` int(11) NOT NULL, - `tahun` year(4) NOT NULL, + `id` int NOT NULL, + `tahun` year NOT NULL, `bulan` enum('01','02','03','04','05','06','07','08','09','10','11','12') NOT NULL, `h1` enum('Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10','Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10','Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10','Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10','Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10','Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10','') NOT NULL, `h2` enum('Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10','Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10','Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10','Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10','Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10','Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10','') NOT NULL, @@ -1155,16 +981,12 @@ CREATE TABLE `jadwal_pegawai` ( KEY `h18` (`h18`), KEY `h9` (`h9`), CONSTRAINT `jadwal_pegawai_ibfk_1` FOREIGN KEY (`id`) REFERENCES `pegawai` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table jadwal_tambahan -# ------------------------------------------------------------ CREATE TABLE `jadwal_tambahan` ( - `id` int(11) NOT NULL, - `tahun` year(4) NOT NULL, + `id` int NOT NULL, + `tahun` year NOT NULL, `bulan` enum('01','02','03','04','05','06','07','08','09','10','11','12') NOT NULL, `h1` enum('Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10','Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10','Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10','Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10','Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10','Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10','') NOT NULL, `h2` enum('Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10','Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10','Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10','Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10','Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10','Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10','') NOT NULL, @@ -1199,15 +1021,11 @@ CREATE TABLE `jadwal_tambahan` ( `h31` enum('Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10','Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10','Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10','Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10','Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10','Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10','') NOT NULL, PRIMARY KEY (`id`,`tahun`,`bulan`), CONSTRAINT `jadwal_tambahan_ibfk_1` FOREIGN KEY (`id`) REFERENCES `pegawai` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table jam_jaga -# ------------------------------------------------------------ CREATE TABLE `jam_jaga` ( - `no_id` int(11) NOT NULL AUTO_INCREMENT, + `no_id` int NOT NULL AUTO_INCREMENT, `dep_id` char(4) NOT NULL, `shift` enum('Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10','Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10','Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10','Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10','Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10','Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10') NOT NULL, `jam_masuk` time NOT NULL, @@ -1219,43 +1037,29 @@ CREATE TABLE `jam_jaga` ( KEY `jam_masuk` (`jam_masuk`), KEY `jam_pulang` (`jam_pulang`), CONSTRAINT `jam_jaga_ibfk_1` FOREIGN KEY (`dep_id`) REFERENCES `departemen` (`dep_id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table jam_masuk -# ------------------------------------------------------------ CREATE TABLE `jam_masuk` ( `shift` enum('Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10','Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10','Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10','Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10','Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10','Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10') NOT NULL, `jam_masuk` time NOT NULL, `jam_pulang` time NOT NULL, PRIMARY KEY (`shift`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `jam_masuk` WRITE; -/*!40000 ALTER TABLE `jam_masuk` DISABLE KEYS */; - -INSERT INTO `jam_masuk` (`shift`, `jam_masuk`, `jam_pulang`) -VALUES - ('Pagi','06:00:00','16:00:00'), - ('Pagi2','08:00:00','14:00:00'), - ('Pagi3','10:00:00','17:00:00'), - ('Siang','14:00:00','08:00:00'), - ('Siang2','14:00:00','21:00:00'), - ('Malam','20:00:00','02:00:00'), - ('Midle Siang1','00:00:00','06:00:00'), - ('Midle Siang3','00:00:00','00:00:00'), - ('Midle Siang4','04:00:00','16:00:00'), - ('Midle Malam1','00:00:00','06:00:00'), - ('Midle Malam5','22:00:00','07:00:00'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `jam_masuk` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `jam_masuk` VALUES ("Pagi","06:00:00","16:00:00"), +("Pagi2","08:00:00","14:00:00"), +("Pagi3","10:00:00","17:00:00"), +("Siang","14:00:00","08:00:00"), +("Siang2","14:00:00","21:00:00"), +("Malam","20:00:00","02:00:00"), +("Midle Siang1","00:00:00","06:00:00"), +("Midle Siang3","00:00:00","00:00:00"), +("Midle Siang4","04:00:00","16:00:00"), +("Midle Malam1","00:00:00","06:00:00"), +("Midle Malam5","22:00:00","07:00:00"); -# Dump of table jenis -# ------------------------------------------------------------ CREATE TABLE `jenis` ( `kdjns` char(4) NOT NULL, @@ -1264,45 +1068,25 @@ CREATE TABLE `jenis` ( PRIMARY KEY (`kdjns`), KEY `nama` (`nama`), KEY `keterangan` (`keterangan`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `jenis` WRITE; -/*!40000 ALTER TABLE `jenis` DISABLE KEYS */; - -INSERT INTO `jenis` (`kdjns`, `nama`, `keterangan`) -VALUES - ('-','-','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `jenis` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `jenis` VALUES ("-","-","-"); -# Dump of table jnj_jabatan -# ------------------------------------------------------------ CREATE TABLE `jnj_jabatan` ( `kode` varchar(10) NOT NULL, `nama` varchar(50) NOT NULL, `tnj` double NOT NULL, - `indek` tinyint(4) NOT NULL, + `indek` tinyint NOT NULL, PRIMARY KEY (`kode`), KEY `nama` (`nama`), KEY `tnj` (`tnj`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `jnj_jabatan` WRITE; -/*!40000 ALTER TABLE `jnj_jabatan` DISABLE KEYS */; - -INSERT INTO `jnj_jabatan` (`kode`, `nama`, `tnj`, `indek`) -VALUES - ('-','-',0,1); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `jnj_jabatan` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `jnj_jabatan` VALUES ("-","-","0","1"); -# Dump of table jns_perawatan -# ------------------------------------------------------------ CREATE TABLE `jns_perawatan` ( `kd_jenis_prw` varchar(15) NOT NULL, @@ -1338,21 +1122,11 @@ CREATE TABLE `jns_perawatan` ( CONSTRAINT `jns_perawatan_ibfk_1` FOREIGN KEY (`kd_kategori`) REFERENCES `kategori_perawatan` (`kd_kategori`) ON UPDATE CASCADE, CONSTRAINT `jns_perawatan_ibfk_2` FOREIGN KEY (`kd_pj`) REFERENCES `penjab` (`kd_pj`) ON UPDATE CASCADE, CONSTRAINT `jns_perawatan_ibfk_3` FOREIGN KEY (`kd_poli`) REFERENCES `poliklinik` (`kd_poli`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `jns_perawatan` WRITE; -/*!40000 ALTER TABLE `jns_perawatan` DISABLE KEYS */; - -INSERT INTO `jns_perawatan` (`kd_jenis_prw`, `nm_perawatan`, `kd_kategori`, `material`, `bhp`, `tarif_tindakandr`, `tarif_tindakanpr`, `kso`, `menejemen`, `total_byrdr`, `total_byrpr`, `total_byrdrpr`, `kd_pj`, `kd_poli`, `status`) -VALUES - ('RJ001','Pemeriksaan rutin','-',0,0,50000,0,0,0,50000,0,50000,'-','-','1'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `jns_perawatan` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `jns_perawatan` VALUES ("RJ001","Pemeriksaan rutin","-","0","0","50000","0","0","0","50000","0","50000","-","-","1"); -# Dump of table jns_perawatan_inap -# ------------------------------------------------------------ CREATE TABLE `jns_perawatan_inap` ( `kd_jenis_prw` varchar(15) NOT NULL, @@ -1389,21 +1163,11 @@ CREATE TABLE `jns_perawatan_inap` ( CONSTRAINT `jns_perawatan_inap_ibfk_7` FOREIGN KEY (`kd_kategori`) REFERENCES `kategori_perawatan` (`kd_kategori`) ON UPDATE CASCADE, CONSTRAINT `jns_perawatan_inap_ibfk_8` FOREIGN KEY (`kd_pj`) REFERENCES `penjab` (`kd_pj`) ON UPDATE CASCADE, CONSTRAINT `jns_perawatan_inap_ibfk_9` FOREIGN KEY (`kd_bangsal`) REFERENCES `bangsal` (`kd_bangsal`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `jns_perawatan_inap` WRITE; -/*!40000 ALTER TABLE `jns_perawatan_inap` DISABLE KEYS */; - -INSERT INTO `jns_perawatan_inap` (`kd_jenis_prw`, `nm_perawatan`, `kd_kategori`, `material`, `bhp`, `tarif_tindakandr`, `tarif_tindakanpr`, `kso`, `menejemen`, `total_byrdr`, `total_byrpr`, `total_byrdrpr`, `kd_pj`, `kd_bangsal`, `status`, `kelas`) -VALUES - ('RI001','Pasang Infus','-',0,0,0,25000,0,0,0,25000,25000,'-','-','1','Kelas 1'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `jns_perawatan_inap` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `jns_perawatan_inap` VALUES ("RI001","Pasang Infus","-","0","0","0","25000","0","0","0","25000","25000","-","-","1","Kelas 1"); -# Dump of table jns_perawatan_lab -# ------------------------------------------------------------ CREATE TABLE `jns_perawatan_lab` ( `kd_jenis_prw` varchar(15) NOT NULL, @@ -1433,21 +1197,11 @@ CREATE TABLE `jns_perawatan_lab` ( KEY `menejemen` (`menejemen`), KEY `status` (`status`), CONSTRAINT `jns_perawatan_lab_ibfk_1` FOREIGN KEY (`kd_pj`) REFERENCES `penjab` (`kd_pj`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `jns_perawatan_lab` WRITE; -/*!40000 ALTER TABLE `jns_perawatan_lab` DISABLE KEYS */; - -INSERT INTO `jns_perawatan_lab` (`kd_jenis_prw`, `nm_perawatan`, `bagian_rs`, `bhp`, `tarif_perujuk`, `tarif_tindakan_dokter`, `tarif_tindakan_petugas`, `kso`, `menejemen`, `total_byr`, `kd_pj`, `status`, `kelas`, `kategori`) -VALUES - ('LAB001','Pemeriksaan Darah',0,0,0,100000,0,0,0,100000,'-','1','Kelas 1','PK'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `jns_perawatan_lab` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `jns_perawatan_lab` VALUES ("LAB001","Pemeriksaan Darah","0","0","0","100000","0","0","0","100000","-","1","Kelas 1","PK"); -# Dump of table jns_perawatan_radiologi -# ------------------------------------------------------------ CREATE TABLE `jns_perawatan_radiologi` ( `kd_jenis_prw` varchar(15) NOT NULL, @@ -1476,42 +1230,22 @@ CREATE TABLE `jns_perawatan_radiologi` ( KEY `menejemen` (`menejemen`), KEY `status` (`status`), CONSTRAINT `jns_perawatan_radiologi_ibfk_1` FOREIGN KEY (`kd_pj`) REFERENCES `penjab` (`kd_pj`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `jns_perawatan_radiologi` WRITE; -/*!40000 ALTER TABLE `jns_perawatan_radiologi` DISABLE KEYS */; - -INSERT INTO `jns_perawatan_radiologi` (`kd_jenis_prw`, `nm_perawatan`, `bagian_rs`, `bhp`, `tarif_perujuk`, `tarif_tindakan_dokter`, `tarif_tindakan_petugas`, `kso`, `menejemen`, `total_byr`, `kd_pj`, `status`, `kelas`) -VALUES - ('RAD001','Thorax',0,0,0,150000,0,0,0,150000,'-','1','Kelas 1'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `jns_perawatan_radiologi` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `jns_perawatan_radiologi` VALUES ("RAD001","Thorax","0","0","0","150000","0","0","0","150000","-","1","Kelas 1"); -# Dump of table kabupaten -# ------------------------------------------------------------ CREATE TABLE `kabupaten` ( - `kd_kab` int(11) NOT NULL AUTO_INCREMENT, + `kd_kab` int NOT NULL, `nm_kab` varchar(60) NOT NULL, PRIMARY KEY (`kd_kab`), UNIQUE KEY `nm_kab` (`nm_kab`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `kabupaten` WRITE; -/*!40000 ALTER TABLE `kabupaten` DISABLE KEYS */; - -INSERT INTO `kabupaten` (`kd_kab`, `nm_kab`) -VALUES - (1,'-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `kabupaten` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `kabupaten` VALUES ("1","-"); -# Dump of table kamar -# ------------------------------------------------------------ CREATE TABLE `kamar` ( `kd_kamar` varchar(15) NOT NULL, @@ -1527,22 +1261,12 @@ CREATE TABLE `kamar` ( KEY `kelas` (`kelas`), KEY `statusdata` (`statusdata`), CONSTRAINT `kamar_ibfk_1` FOREIGN KEY (`kd_bangsal`) REFERENCES `bangsal` (`kd_bangsal`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `kamar` WRITE; -/*!40000 ALTER TABLE `kamar` DISABLE KEYS */; - -INSERT INTO `kamar` (`kd_kamar`, `kd_bangsal`, `trf_kamar`, `status`, `kelas`, `statusdata`) -VALUES - ('ANG01','ANG',100000,'KOSONG','Kelas 1','1'), - ('ANG02','ANG',100000,'KOSONG','Kelas 1','1'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `kamar` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `kamar` VALUES ("ANG01","ANG","100000","KOSONG","Kelas 1","1"), +("ANG02","ANG","100000","KOSONG","Kelas 1","1"); -# Dump of table kamar_inap -# ------------------------------------------------------------ CREATE TABLE `kamar_inap` ( `no_rawat` varchar(17) NOT NULL DEFAULT '', @@ -1569,32 +1293,18 @@ CREATE TABLE `kamar_inap` ( KEY `trf_kamar` (`trf_kamar`), CONSTRAINT `kamar_inap_ibfk_2` FOREIGN KEY (`kd_kamar`) REFERENCES `kamar` (`kd_kamar`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `kamar_inap_ibfk_3` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table kategori_barang -# ------------------------------------------------------------ CREATE TABLE `kategori_barang` ( `kode` char(4) NOT NULL, `nama` varchar(30) DEFAULT NULL, PRIMARY KEY (`kode`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `kategori_barang` WRITE; -/*!40000 ALTER TABLE `kategori_barang` DISABLE KEYS */; - -INSERT INTO `kategori_barang` (`kode`, `nama`) -VALUES - ('-','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `kategori_barang` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `kategori_barang` VALUES ("-","-"); -# Dump of table kategori_penyakit -# ------------------------------------------------------------ CREATE TABLE `kategori_penyakit` ( `kd_ktg` varchar(8) NOT NULL, @@ -1603,124 +1313,64 @@ CREATE TABLE `kategori_penyakit` ( PRIMARY KEY (`kd_ktg`), KEY `nm_kategori` (`nm_kategori`), KEY `ciri_umum` (`ciri_umum`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `kategori_penyakit` WRITE; -/*!40000 ALTER TABLE `kategori_penyakit` DISABLE KEYS */; - -INSERT INTO `kategori_penyakit` (`kd_ktg`, `nm_kategori`, `ciri_umum`) -VALUES - ('-','-','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `kategori_penyakit` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `kategori_penyakit` VALUES ("-","-","-"); -# Dump of table kategori_perawatan -# ------------------------------------------------------------ CREATE TABLE `kategori_perawatan` ( `kd_kategori` char(5) NOT NULL, `nm_kategori` varchar(30) DEFAULT NULL, PRIMARY KEY (`kd_kategori`), KEY `nm_kategori` (`nm_kategori`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `kategori_perawatan` WRITE; -/*!40000 ALTER TABLE `kategori_perawatan` DISABLE KEYS */; - -INSERT INTO `kategori_perawatan` (`kd_kategori`, `nm_kategori`) -VALUES - ('-','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `kategori_perawatan` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `kategori_perawatan` VALUES ("-","-"); -# Dump of table kecamatan -# ------------------------------------------------------------ CREATE TABLE `kecamatan` ( - `kd_kec` int(11) NOT NULL AUTO_INCREMENT, + `kd_kec` int NOT NULL, `nm_kec` varchar(60) NOT NULL, PRIMARY KEY (`kd_kec`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `kecamatan` WRITE; -/*!40000 ALTER TABLE `kecamatan` DISABLE KEYS */; - -INSERT INTO `kecamatan` (`kd_kec`, `nm_kec`) -VALUES - (1,'-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `kecamatan` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `kecamatan` VALUES ("1","-"); -# Dump of table kelompok_jabatan -# ------------------------------------------------------------ CREATE TABLE `kelompok_jabatan` ( `kode_kelompok` varchar(3) NOT NULL, `nama_kelompok` varchar(100) DEFAULT NULL, - `indek` tinyint(4) DEFAULT NULL, + `indek` tinyint DEFAULT NULL, PRIMARY KEY (`kode_kelompok`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `kelompok_jabatan` WRITE; -/*!40000 ALTER TABLE `kelompok_jabatan` DISABLE KEYS */; - -INSERT INTO `kelompok_jabatan` (`kode_kelompok`, `nama_kelompok`, `indek`) -VALUES - ('-','-',1); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `kelompok_jabatan` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `kelompok_jabatan` VALUES ("-","-","1"); -# Dump of table kelurahan -# ------------------------------------------------------------ CREATE TABLE `kelurahan` ( `kd_kel` varchar(11) NOT NULL, `nm_kel` varchar(60) NOT NULL, PRIMARY KEY (`kd_kel`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `kelurahan` WRITE; -/*!40000 ALTER TABLE `kelurahan` DISABLE KEYS */; - -INSERT INTO `kelurahan` (`kd_kel`, `nm_kel`) -VALUES - ('1','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `kelurahan` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `kelurahan` VALUES ("1","-"); -# Dump of table kodesatuan -# ------------------------------------------------------------ CREATE TABLE `kodesatuan` ( `kode_sat` char(4) NOT NULL, `satuan` varchar(30) DEFAULT NULL, PRIMARY KEY (`kode_sat`), KEY `satuan` (`satuan`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `kodesatuan` WRITE; -/*!40000 ALTER TABLE `kodesatuan` DISABLE KEYS */; - -INSERT INTO `kodesatuan` (`kode_sat`, `satuan`) -VALUES - ('-','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `kodesatuan` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `kodesatuan` VALUES ("-","-"); -# Dump of table laporan_operasi -# ------------------------------------------------------------ CREATE TABLE `laporan_operasi` ( `no_rawat` varchar(17) NOT NULL, @@ -1733,12 +1383,8 @@ CREATE TABLE `laporan_operasi` ( `laporan_operasi` text NOT NULL, PRIMARY KEY (`no_rawat`,`tanggal`), CONSTRAINT `laporan_operasi_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table maping_dokter_dpjpvclaim -# ------------------------------------------------------------ CREATE TABLE `maping_dokter_dpjpvclaim` ( `kd_dokter` varchar(20) NOT NULL, @@ -1746,12 +1392,17 @@ CREATE TABLE `maping_dokter_dpjpvclaim` ( `nm_dokter_bpjs` varchar(50) DEFAULT NULL, PRIMARY KEY (`kd_dokter`) USING BTREE, CONSTRAINT `maping_dokter_dpjpvclaim_ibfk_1` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `maping_dokter_pcare` ( + `kd_dokter` varchar(20) NOT NULL, + `kd_dokter_pcare` varchar(20) DEFAULT NULL, + `nm_dokter_pcare` varchar(50) DEFAULT NULL, + PRIMARY KEY (`kd_dokter`) USING BTREE, + CONSTRAINT `maping_dokter_pcare_ibfk_1` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table maping_poli_bpjs -# ------------------------------------------------------------ CREATE TABLE `maping_poli_bpjs` ( `kd_poli_rs` varchar(5) NOT NULL, @@ -1760,12 +1411,8 @@ CREATE TABLE `maping_poli_bpjs` ( PRIMARY KEY (`kd_poli_rs`), UNIQUE KEY `kd_poli_bpjs` (`kd_poli_bpjs`) USING BTREE, CONSTRAINT `maping_poli_bpjs_ibfk_1` FOREIGN KEY (`kd_poli_rs`) REFERENCES `poliklinik` (`kd_poli`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table maping_poliklinik_pcare -# ------------------------------------------------------------ CREATE TABLE `maping_poliklinik_pcare` ( `kd_poli_rs` char(5) NOT NULL, @@ -1773,86 +1420,65 @@ CREATE TABLE `maping_poliklinik_pcare` ( `nm_poli_pcare` varchar(50) DEFAULT NULL, PRIMARY KEY (`kd_poli_rs`) USING BTREE, CONSTRAINT `maping_poliklinik_pcare_ibfk_1` FOREIGN KEY (`kd_poli_rs`) REFERENCES `poliklinik` (`kd_poli`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table master_aturan_pakai -# ------------------------------------------------------------ CREATE TABLE `master_aturan_pakai` ( `aturan` varchar(150) NOT NULL, PRIMARY KEY (`aturan`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `master_aturan_pakai` WRITE; -/*!40000 ALTER TABLE `master_aturan_pakai` DISABLE KEYS */; - -INSERT INTO `master_aturan_pakai` (`aturan`) -VALUES - ('3 x 1 Sehari'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `master_aturan_pakai` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `master_aturan_pakai` VALUES ("3 x 1 Sehari"); -# Dump of table master_berkas_digital -# ------------------------------------------------------------ CREATE TABLE `master_berkas_digital` ( `kode` varchar(10) NOT NULL, `nama` varchar(100) DEFAULT NULL, PRIMARY KEY (`kode`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -LOCK TABLES `master_berkas_digital` WRITE; -/*!40000 ALTER TABLE `master_berkas_digital` DISABLE KEYS */; -INSERT INTO `master_berkas_digital` (`kode`, `nama`) -VALUES - ('DIG001','Berkas Digital'); +INSERT INTO `master_berkas_digital` VALUES ("DIG001","Berkas Digital"); -/*!40000 ALTER TABLE `master_berkas_digital` ENABLE KEYS */; -UNLOCK TABLES; +CREATE TABLE `master_masalah_keperawatan` ( + `kode_masalah` varchar(3) NOT NULL, + `nama_masalah` varchar(100) DEFAULT NULL, + PRIMARY KEY (`kode_masalah`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table metode_racik -# ------------------------------------------------------------ CREATE TABLE `metode_racik` ( `kd_racik` varchar(3) NOT NULL, `nm_racik` varchar(30) NOT NULL, PRIMARY KEY (`kd_racik`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `metode_racik` WRITE; -/*!40000 ALTER TABLE `metode_racik` DISABLE KEYS */; - -INSERT INTO `metode_racik` (`kd_racik`, `nm_racik`) -VALUES - ('1','Puyer'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `metode_racik` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `metode_racik` VALUES ("1","Puyer"); -# Dump of table mlite_akun_kegiatan -# ------------------------------------------------------------ CREATE TABLE `mlite_akun_kegiatan` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `kegiatan` varchar(200) DEFAULT NULL, `kd_rek` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +INSERT INTO `mlite_akun_kegiatan` VALUES +(1,'Penerimaan Pasien Rawat Jalan','4101'), +(2,'Penerimaan Pasien Rawat Inap','4102'), +(3,'Penerimaan Penjualan Obat & BHP','4103'), +(4,'Penerimaan Laboratorium','4104'), +(5,'Penerimaan Radiologi','4105'), +(6,'Pembayaran Gaji Karyawan','5101'), +(7,'Pembelian Obat & BHP','5201'), +(8,'Pembayaran Biaya Operasional','5301'); -# Dump of table mlite_antrian_loket -# ------------------------------------------------------------ CREATE TABLE `mlite_antrian_loket` ( - `kd` int(50) NOT NULL AUTO_INCREMENT, + `kd` int NOT NULL AUTO_INCREMENT, `type` varchar(50) NOT NULL, `noantrian` varchar(50) NOT NULL, `no_rkm_medis` varchar(50) DEFAULT NULL, @@ -1862,12 +1488,8 @@ CREATE TABLE `mlite_antrian_loket` ( `status` varchar(10) NOT NULL DEFAULT '0', `loket` varchar(10) NOT NULL DEFAULT '0', PRIMARY KEY (`kd`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_antrian_referensi -# ------------------------------------------------------------ CREATE TABLE `mlite_antrian_referensi` ( `tanggal_periksa` date NOT NULL, @@ -1878,24 +1500,16 @@ CREATE TABLE `mlite_antrian_referensi` ( `jenis_kunjungan` varchar(10) NOT NULL, `status_kirim` varchar(20) DEFAULT NULL, `keterangan` varchar(250) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_antrian_referensi_batal -# ------------------------------------------------------------ CREATE TABLE `mlite_antrian_referensi_batal` ( `tanggal_batal` date NOT NULL, `nomor_referensi` varchar(50) NOT NULL, `kodebooking` varchar(100) NOT NULL, `keterangan` varchar(250) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_antrian_referensi_taskid -# ------------------------------------------------------------ CREATE TABLE `mlite_antrian_referensi_taskid` ( `tanggal_periksa` date NOT NULL, @@ -1904,47 +1518,271 @@ CREATE TABLE `mlite_antrian_referensi_taskid` ( `waktu` varchar(50) NOT NULL, `status` varchar(20) DEFAULT NULL, `keterangan` varchar(250) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_apamregister -# ------------------------------------------------------------ CREATE TABLE `mlite_apamregister` ( `nama_lengkap` varchar(225) NOT NULL, `email` varchar(225) NOT NULL, `nomor_ktp` varchar(225) NOT NULL, `nomor_telepon` varchar(225) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_api_key` ( + `id` int NOT NULL AUTO_INCREMENT, + `api_key` text, + `username` varchar(100) NOT NULL, + `method` varchar(100) NOT NULL, + `ip_range` varchar(100) DEFAULT NULL, + `exp_time` datetime NOT NULL, + PRIMARY KEY (`id`) USING BTREE, + KEY `mlite_api_key_ibfk_1` (`username`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_billing -# ------------------------------------------------------------ -CREATE TABLE `mlite_billing` ( - `id_billing` int(11) NOT NULL AUTO_INCREMENT, - `kd_billing` varchar(100) NOT NULL, +CREATE TABLE `mlite_apotek_online_log` ( + `id` int NOT NULL AUTO_INCREMENT, `no_rawat` varchar(17) NOT NULL, - `jumlah_total` int(100) NOT NULL, - `potongan` int(100) NOT NULL, - `jumlah_harus_bayar` int(100) NOT NULL, - `jumlah_bayar` int(100) NOT NULL, - `tgl_billing` date NOT NULL, - `jam_billing` time NOT NULL, - `id_user` int(11) NOT NULL, - `keterangan` varchar(100) NOT NULL, + `noresep` varchar(50) DEFAULT NULL, + `tanggal_kirim` datetime NOT NULL, + `status` enum('success','error') NOT NULL, + `response_resep` text, + `response_obat` text, + `request` text, + `user` varchar(50) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + KEY `no_rawat` (`no_rawat`) USING BTREE, + KEY `tanggal_kirim` (`tanggal_kirim`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_apotek_online_maping_obat` ( + `kode_brng` varchar(40) NOT NULL, + `kd_obat_bpjs` varchar(20) NOT NULL, + `nama_obat_bpjs` varchar(200) NOT NULL, + PRIMARY KEY (`kode_brng`) USING BTREE, + KEY `kd_obat_bpjs` (`kd_obat_bpjs`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_apotek_online_resep_response_log` ( + `id` int NOT NULL AUTO_INCREMENT, + `no_rawat` varchar(17) DEFAULT NULL, + `no_sep_kunjungan` varchar(50) DEFAULT NULL, + `no_kartu` varchar(20) DEFAULT NULL, + `nama` varchar(100) DEFAULT NULL, + `faskes_asal` varchar(20) DEFAULT NULL, + `no_apotik` varchar(30) DEFAULT NULL, + `no_resep` varchar(20) DEFAULT NULL, + `tgl_resep` date DEFAULT NULL, + `kd_jns_obat` varchar(5) DEFAULT NULL, + `by_tag_rsp` varchar(10) DEFAULT NULL, + `by_ver_rsp` varchar(10) DEFAULT NULL, + `tgl_entry` date DEFAULT NULL, + `meta_code` varchar(10) DEFAULT NULL, + `meta_message` text, + `raw_response` text, + `tanggal_simpan` datetime DEFAULT CURRENT_TIMESTAMP, + `user` varchar(50) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + KEY `idx_no_rawat` (`no_rawat`) USING BTREE, + KEY `idx_no_sep_kunjungan` (`no_sep_kunjungan`) USING BTREE, + KEY `idx_no_resep` (`no_resep`) USING BTREE, + KEY `idx_tanggal_simpan` (`tanggal_simpan`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_apotek_online_sep_data` ( + `id` int NOT NULL AUTO_INCREMENT, + `no_sep` varchar(50) NOT NULL, + `faskes_asal_resep` varchar(20) DEFAULT NULL, + `nm_faskes_asal_resep` varchar(100) DEFAULT NULL, + `no_kartu` varchar(20) DEFAULT NULL, + `nama_peserta` varchar(100) DEFAULT NULL, + `jns_kelamin` char(1) DEFAULT NULL, + `tgl_lahir` date DEFAULT NULL, + `pisat` varchar(10) DEFAULT NULL, + `kd_jenis_peserta` varchar(10) DEFAULT NULL, + `nm_jenis_peserta` varchar(50) DEFAULT NULL, + `kode_bu` varchar(20) DEFAULT NULL, + `nama_bu` varchar(50) DEFAULT NULL, + `tgl_sep` date DEFAULT NULL, + `tgl_plg_sep` date DEFAULT NULL, + `jns_pelayanan` varchar(10) DEFAULT NULL, + `nm_diag` varchar(200) DEFAULT NULL, + `poli` varchar(50) DEFAULT NULL, + `flag_prb` char(1) DEFAULT NULL, + `nama_prb` varchar(100) DEFAULT NULL, + `kode_dokter` varchar(20) DEFAULT NULL, + `nama_dokter` varchar(100) DEFAULT NULL, + `tanggal_simpan` datetime NOT NULL, + `user_simpan` varchar(50) DEFAULT NULL, + `raw_response` text, + `no_rawat` varchar(17) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `no_sep` (`no_sep`) USING BTREE, + KEY `no_kartu` (`no_kartu`) USING BTREE, + KEY `nama_peserta` (`nama_peserta`) USING BTREE, + KEY `tanggal_simpan` (`tanggal_simpan`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_billing` ( + `id_billing` int NOT NULL AUTO_INCREMENT, + `kd_billing` varchar(100) NOT NULL, + `no_rawat` varchar(17) NOT NULL, + `jumlah_total` int NOT NULL, + `potongan` int NOT NULL, + `jumlah_harus_bayar` int NOT NULL, + `jumlah_bayar` int NOT NULL, + `tgl_billing` date NOT NULL, + `jam_billing` time NOT NULL, + `id_user` int NOT NULL, + `keterangan` varchar(100) NOT NULL, PRIMARY KEY (`id_billing`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; +CREATE TABLE `mlite_billing_pembayaran` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `no_rawat` varchar(17) NOT NULL, + `tgl_bayar` date NOT NULL, + `jam_bayar` time NOT NULL, + `metode` varchar(30) NOT NULL DEFAULT 'Tunai', + `jumlah_bayar` double NOT NULL DEFAULT 0, + `id_user` int(11) DEFAULT NULL, + `keterangan` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `idx_billing_pembayaran_rawat` (`no_rawat`), + KEY `idx_billing_pembayaran_tgl` (`tgl_bayar`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_billing_pembayaran_detail` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `pembayaran_id` int(11) NOT NULL, + `kelompok` varchar(30) NOT NULL, + `jumlah_alokasi` double NOT NULL DEFAULT 0, + `ref_modul` varchar(30) DEFAULT NULL, + `kd_jenis_prw` varchar(15) DEFAULT NULL, + `tgl_periksa` date DEFAULT NULL, + `jam` time DEFAULT NULL, + `status_periksa` varchar(10) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `idx_billing_pembayaran_detail_pembayaran` (`pembayaran_id`), + KEY `idx_billing_pembayaran_detail_kelompok` (`kelompok`), + CONSTRAINT `fk_billing_pembayaran_detail_header` FOREIGN KEY (`pembayaran_id`) REFERENCES `mlite_billing_pembayaran` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + +CREATE TABLE `mlite_bpjs_emr_device` ( + `id` INT NOT NULL AUTO_INCREMENT, + `device_id` VARCHAR(50) NOT NULL, + `nama_alkes` VARCHAR(150) NOT NULL, + `kategori` varchar(50) DEFAULT 'tindakan', + `kode_produk` VARCHAR(100) DEFAULT NULL, + `keterangan` TEXT DEFAULT NULL, + `manufacturer` VARCHAR(255) DEFAULT NULL, + `manufacture_date` DATE DEFAULT NULL, + `expiration_date` DATE DEFAULT NULL, + `model` VARCHAR(255) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uq_device_id` (`device_id`), + KEY `idx_nama_alkes` (`nama_alkes`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE `mlite_bpjs_emr_logs` ( + `id` int NOT NULL AUTO_INCREMENT, + `no_sep` varchar(50) DEFAULT NULL, + `no_rawat` varchar(50) DEFAULT NULL, + `payload_json` longtext, + `payload_encrypted` longtext, + `response` longtext, + `status` varchar(20) DEFAULT NULL, + `created_at` datetime DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_bpjs_emr_mapping_lab` ( + `id_template` varchar(20) NOT NULL, + `loinc_code` varchar(20) NOT NULL, + `loinc_display` varchar(255) DEFAULT NULL, + `master_device_id` int DEFAULT NULL, + `focal_device_code` varchar(255) DEFAULT NULL, + `focal_device_display` varchar(255) DEFAULT NULL, + `focal_device_action` varchar(20) DEFAULT NULL, + KEY `idx_mapping_lab_master_device` (`master_device_id`), + PRIMARY KEY (`id_template`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_bpjs_emr_mapping_radiologi` ( + `kd_jenis_prw` varchar(20) NOT NULL, + `standard_code` varchar(20) NOT NULL, + `standard_display` varchar(255) DEFAULT NULL, + `system` varchar(100) DEFAULT NULL, + `master_device_id` int DEFAULT NULL, + `focal_device_code` varchar(255) DEFAULT NULL, + `focal_device_display` varchar(255) DEFAULT NULL, + `focal_device_action` varchar(20) DEFAULT NULL, + KEY `idx_mapping_rad_master_device` (`master_device_id`), + PRIMARY KEY (`kd_jenis_prw`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_bpjs_emr_mapping_prosedur` ( + `kd_jenis_prw` varchar(20) NOT NULL, + `snomed_code` varchar(20) NOT NULL, + `snomed_display` varchar(255) DEFAULT NULL, + `master_device_id` int DEFAULT NULL, + `focal_device_code` varchar(255) DEFAULT NULL, + `focal_device_display` varchar(255) DEFAULT NULL, + `focal_device_action` varchar(20) DEFAULT NULL, + KEY `idx_mapping_proc_master_device` (`master_device_id`), + PRIMARY KEY (`kd_jenis_prw`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_bpjs_emr_mapping_prosedur_ranap` ( + `kd_jenis_prw` varchar(20) NOT NULL, + `snomed_code` varchar(20) NOT NULL, + `snomed_display` varchar(255) DEFAULT NULL, + `master_device_id` int DEFAULT NULL, + `focal_device_code` varchar(255) DEFAULT NULL, + `focal_device_display` varchar(255) DEFAULT NULL, + `focal_device_action` varchar(20) DEFAULT NULL, + KEY `idx_mapping_proc_ranap_master_device` (`master_device_id`), + PRIMARY KEY (`kd_jenis_prw`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_bpjs_emr_mapping_operasi` ( + `kode_paket` varchar(20) NOT NULL, + `snomed_code` varchar(20) NOT NULL, + `snomed_display` varchar(255) DEFAULT NULL, + `master_device_id` int DEFAULT NULL, + `focal_device_code` varchar(255) DEFAULT NULL, + `focal_device_display` varchar(255) DEFAULT NULL, + `focal_device_action` varchar(20) DEFAULT NULL, + KEY `idx_mapping_operasi_master_device` (`master_device_id`), + PRIMARY KEY (`kode_paket`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_bpjs_emr_mapping_obat` ( + `kode_brng` varchar(20) NOT NULL, + `code` varchar(20) NOT NULL, + PRIMARY KEY (`kode_brng`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_bpjs_emr_uuid_condition` ( + `kd_penyakit` varchar(15) NOT NULL, + `uuid` varchar(200) NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_bridging_pcare -# ------------------------------------------------------------ CREATE TABLE `mlite_bridging_pcare` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `no_rawat` text NOT NULL, `no_rkm_medis` text, `tgl_daftar` text, @@ -2000,18 +1838,92 @@ CREATE TABLE `mlite_bridging_pcare` ( `id_user` text NOT NULL, `tgl_input` text NOT NULL, `status_kirim` text NOT NULL, + `kode_alergi_makanan` text, + `nama_alergi_makanan` text, + `kode_alergi_udara` text, + `nama_alergi_udara` text, + `kode_alergi_obat` text, + `nama_alergi_obat` text, + `kode_prognosa` text, + `nama_prognosa` text, + `terapi_obat` text, + `terapi_non_obat` text, PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_crud_permissions` ( + `id` int NOT NULL AUTO_INCREMENT, + `user` varchar(100) NOT NULL, + `module` varchar(100) NOT NULL, + `can_create` varchar(10) NOT NULL DEFAULT 'true', + `can_read` varchar(10) NOT NULL DEFAULT 'true', + `can_update` varchar(10) NOT NULL DEFAULT 'true', + `can_delete` varchar(10) NOT NULL DEFAULT 'true', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `user` (`user`,`module`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_farmasi_pengajuan_obat` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `no_pengajuan` varchar(30) NOT NULL, + `tanggal_pengajuan` date NOT NULL, + `kode_brng` varchar(15) NOT NULL, + `jumlah` int(11) NOT NULL DEFAULT '0', + `status` varchar(20) NOT NULL DEFAULT 'Menunggu', + `catatan` text, + `dibuat_oleh` varchar(100) DEFAULT '-', + `disetujui_oleh` varchar(100) DEFAULT NULL, + `disetujui_at` datetime DEFAULT NULL, + `created_at` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `idx_no_pengajuan` (`no_pengajuan`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_farmasi_pemesanan_obat` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `no_pemesanan` varchar(30) NOT NULL, + `no_pengajuan` varchar(30) NOT NULL, + `pengajuan_id` int(11) NOT NULL, + `kode_brng` varchar(15) NOT NULL, + `tanggal_pemesanan` date NOT NULL, + `supplier_kode` text, + `supplier` varchar(255) NOT NULL, + `jumlah_pengajuan` int(11) NOT NULL DEFAULT '0', + `jumlah_pesan` int(11) NOT NULL DEFAULT '0', + `status_pemesanan` varchar(20) NOT NULL DEFAULT 'Draft', + `catatan` text, + `dibuat_oleh` varchar(100) DEFAULT '-', + `created_at` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `idx_no_pemesanan` (`no_pemesanan`), + KEY `idx_no_pengajuan_pemesanan` (`no_pengajuan`), + KEY `idx_pengajuan_id` (`pengajuan_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_farmasi_penerimaan_obat` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `pemesanan_id` int(11) NOT NULL, + `tanggal_penerimaan` date NOT NULL, + `jumlah_terima` int(11) NOT NULL DEFAULT '0', + `jenis_pembayaran` varchar(10) NOT NULL DEFAULT 'Cash', + `tanggal_jatuh_tempo` date DEFAULT NULL, + `nomor_faktur` varchar(100) DEFAULT NULL, + `catatan` text, + `dibuat_oleh` varchar(100) DEFAULT '-', + `created_at` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `idx_pemesanan_id` (`pemesanan_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_detailjurnal -# ------------------------------------------------------------ CREATE TABLE `mlite_detailjurnal` ( `no_jurnal` varchar(20) DEFAULT NULL, `kd_rek` varchar(15) DEFAULT NULL, - `arus_kas` int(10) NOT NULL, + `arus_kas` int NOT NULL, `debet` double NOT NULL, `kredit` double NOT NULL, KEY `no_jurnal` (`no_jurnal`), @@ -2020,15 +1932,117 @@ CREATE TABLE `mlite_detailjurnal` ( KEY `kredit` (`kredit`), CONSTRAINT `mlite_detailjurnal_ibfk_1` FOREIGN KEY (`no_jurnal`) REFERENCES `mlite_jurnal` (`no_jurnal`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `mlite_detailjurnal_ibfk_2` FOREIGN KEY (`kd_rek`) REFERENCES `mlite_rekening` (`kd_rek`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +-- Detail jurnal 2025 +-- JU-2025-001: Penerimaan Q1 Jan (D=75jt, K=75jt) +INSERT INTO `mlite_detailjurnal` VALUES +('JU-2025-001','1101',0,75000000,0), +('JU-2025-001','4101',0,0,30000000), +('JU-2025-001','4102',0,0,20000000), +('JU-2025-001','4103',0,0,15000000), +('JU-2025-001','4104',0,0,5000000), +('JU-2025-001','4105',0,0,5000000), +-- JU-2025-002: Pembayaran Gaji Jan (D=23jt, K=23jt) +('JU-2025-002','5101',0,10000000,0), +('JU-2025-002','5102',0,8000000,0), +('JU-2025-002','5103',0,5000000,0), +('JU-2025-002','1101',0,0,23000000), +-- JU-2025-003: Penerimaan Q2 Apr (D=90jt, K=90jt) +('JU-2025-003','1101',0,90000000,0), +('JU-2025-003','4101',0,0,35000000), +('JU-2025-003','4102',0,0,25000000), +('JU-2025-003','4103',0,0,20000000), +('JU-2025-003','4104',0,0,5000000), +('JU-2025-003','4105',0,0,5000000), +-- JU-2025-004: Pembayaran Biaya Q2 (D=50jt, K=50jt) +('JU-2025-004','5101',0,10000000,0), +('JU-2025-004','5102',0,8000000,0), +('JU-2025-004','5103',0,5000000,0), +('JU-2025-004','5201',0,25000000,0), +('JU-2025-004','5301',0,2000000,0), +('JU-2025-004','1101',0,0,50000000), +-- JU-2025-005: Penerimaan Q3 Jul (D=85jt, K=85jt) +('JU-2025-005','1101',0,85000000,0), +('JU-2025-005','4101',0,0,30000000), +('JU-2025-005','4102',0,0,25000000), +('JU-2025-005','4103',0,0,18000000), +('JU-2025-005','4104',0,0,7000000), +('JU-2025-005','4105',0,0,5000000), +-- JU-2025-006: Pembayaran Biaya Q3 (D=45jt, K=45jt) +('JU-2025-006','5101',0,10000000,0), +('JU-2025-006','5102',0,8000000,0), +('JU-2025-006','5103',0,5000000,0), +('JU-2025-006','5201',0,20000000,0), +('JU-2025-006','5301',0,2000000,0), +('JU-2025-006','1101',0,0,45000000), +-- JU-2025-007: Penerimaan Q4 Okt (D=95jt, K=95jt) +('JU-2025-007','1101',0,95000000,0), +('JU-2025-007','4101',0,0,35000000), +('JU-2025-007','4102',0,0,30000000), +('JU-2025-007','4103',0,0,18000000), +('JU-2025-007','4104',0,0,7000000), +('JU-2025-007','4105',0,0,5000000), +-- JU-2025-008: Pembayaran Biaya Q4 (D=47jt, K=47jt) +('JU-2025-008','5101',0,10000000,0), +('JU-2025-008','5102',0,8000000,0), +('JU-2025-008','5103',0,5000000,0), +('JU-2025-008','5201',0,22000000,0), +('JU-2025-008','5301',0,2000000,0), +('JU-2025-008','1101',0,0,47000000), +-- JU-2025-009: Penyesuaian Penyusutan Akhir Tahun (D=15jt, K=15jt) +('JU-2025-009','5401',0,15000000,0), +('JU-2025-009','1601',0,0,5000000), +('JU-2025-009','1701',0,0,7000000), +('JU-2025-009','1801',0,0,3000000), +-- Detail jurnal 2026 +-- JU-2026-001: Penerimaan Jan 2026 (D=80jt, K=80jt) +('JU-2026-001','1101',0,80000000,0), +('JU-2026-001','4101',0,0,30000000), +('JU-2026-001','4102',0,0,25000000), +('JU-2026-001','4103',0,0,15000000), +('JU-2026-001','4104',0,0,5000000), +('JU-2026-001','4105',0,0,5000000), +-- JU-2026-002: Pembayaran Biaya Jan 2026 (D=45.5jt, K=45.5jt) +('JU-2026-002','5101',0,10000000,0), +('JU-2026-002','5102',0,8000000,0), +('JU-2026-002','5103',0,5000000,0), +('JU-2026-002','5201',0,20000000,0), +('JU-2026-002','5301',0,2500000,0), +('JU-2026-002','1101',0,0,45500000), +-- JU-2026-003: Penerimaan Feb 2026 (D=75jt, K=75jt) +('JU-2026-003','1101',0,75000000,0), +('JU-2026-003','4101',0,0,28000000), +('JU-2026-003','4102',0,0,22000000), +('JU-2026-003','4103',0,0,14000000), +('JU-2026-003','4104',0,0,6000000), +('JU-2026-003','4105',0,0,5000000), +-- JU-2026-004: Pembayaran Biaya Feb 2026 (D=41.6jt, K=41.6jt) +('JU-2026-004','5101',0,10000000,0), +('JU-2026-004','5102',0,8000000,0), +('JU-2026-004','5103',0,5000000,0), +('JU-2026-004','5201',0,18000000,0), +('JU-2026-004','5302',0,600000,0), +('JU-2026-004','1101',0,0,41600000), +-- JU-2026-005: Penerimaan Mar 2026 (D=85jt, K=85jt) +('JU-2026-005','1101',0,85000000,0), +('JU-2026-005','4101',0,0,32000000), +('JU-2026-005','4102',0,0,27000000), +('JU-2026-005','4103',0,0,16000000), +('JU-2026-005','4104',0,0,5000000), +('JU-2026-005','4105',0,0,5000000), +-- JU-2026-006: Pembayaran Biaya Mar 2026 (D=48.1jt, K=48.1jt) +('JU-2026-006','5101',0,10000000,0), +('JU-2026-006','5102',0,8000000,0), +('JU-2026-006','5103',0,5000000,0), +('JU-2026-006','5201',0,22000000,0), +('JU-2026-006','5301',0,2500000,0), +('JU-2026-006','5302',0,600000,0), +('JU-2026-006','1101',0,0,48100000); -# Dump of table mlite_duitku -# ------------------------------------------------------------ CREATE TABLE `mlite_duitku` ( - `id` int(10) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `tanggal` datetime NOT NULL, `no_rkm_medis` varchar(15) NOT NULL, `paymentUrl` varchar(255) NOT NULL, @@ -2042,26 +2056,77 @@ CREATE TABLE `mlite_duitku` ( KEY `reference` (`reference`), KEY `mlite_duitku_ibfk_1` (`no_rkm_medis`), CONSTRAINT `mlite_duitku_ibfk_1` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_eklaim_logs` ( + `id` int NOT NULL AUTO_INCREMENT, + `nomor_sep` varchar(30) NOT NULL, + `method` varchar(100) DEFAULT NULL, + `request_data` longtext, + `response_data` longtext, + `created_at` datetime DEFAULT CURRENT_TIMESTAMP, + `status` int DEFAULT '1', + `username` varchar(100) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_esignatures` ( + `id` int NOT NULL AUTO_INCREMENT, + `ref_type` varchar(50) NOT NULL, + `ref_id` varchar(50) NOT NULL, + `signer_role` varchar(50) NOT NULL, + `signer_id` varchar(50) NOT NULL, + `signer_name` varchar(255) NOT NULL, + `signature_path` varchar(255) NOT NULL, + `signature_hash` varchar(255) NOT NULL, + `chain_hash` varchar(255) DEFAULT NULL, + `signed_at` datetime NOT NULL, + `ip_address` varchar(45) NOT NULL, + `user_agent` varchar(255) NOT NULL, + `legal_basis` text, + `audit_json` text, + PRIMARY KEY (`id`), + KEY `ref_idx` (`ref_type`,`ref_id`), + KEY `hash_idx` (`signature_hash`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_geolocation_presensi -# ------------------------------------------------------------ CREATE TABLE `mlite_geolocation_presensi` ( - `id` int(11) NOT NULL, + `id` int NOT NULL, `tanggal` date DEFAULT NULL, `latitude` varchar(200) NOT NULL, `longitude` varchar(200) NOT NULL, KEY `mlite_geolocation_presensi_ibfk_1` (`id`), CONSTRAINT `mlite_geolocation_presensi_ibfk_1` FOREIGN KEY (`id`) REFERENCES `pegawai` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_idr_codes` ( + `id` int NOT NULL AUTO_INCREMENT, + `code` varchar(20) NOT NULL, + `code2` varchar(20) NOT NULL, + `description` text, + `system` varchar(50) DEFAULT NULL, + `validcode` tinyint(1) DEFAULT NULL, + `accpdx` char(1) DEFAULT NULL, + `asterisk` tinyint(1) DEFAULT NULL, + `im` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_inacbg_codes` ( + `id` int NOT NULL AUTO_INCREMENT, + `code` varchar(50) NOT NULL, + `code2` varchar(50) NOT NULL, + `description` text, + `system` varchar(100) DEFAULT NULL, + `validcode` tinyint(1) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_jurnal -# ------------------------------------------------------------ CREATE TABLE `mlite_jurnal` ( `no_jurnal` varchar(20) NOT NULL, @@ -2075,95 +2140,457 @@ CREATE TABLE `mlite_jurnal` ( KEY `tgl_jurnal` (`tgl_jurnal`), KEY `jenis` (`jenis`), KEY `keterangan` (`keterangan`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +INSERT INTO `mlite_jurnal` VALUES +('JU-2025-001','BKT-2025-001','2025-01-15','U','Penerimaan Kasir Rawat Jalan','Penerimaan pendapatan layanan Q1 Januari 2025. Diposting oleh Administrator.'), +('JU-2025-002','BKT-2025-002','2025-01-31','U','Pembayaran Gaji Karyawan','Pembayaran gaji seluruh karyawan bulan Januari 2025. Diposting oleh Administrator.'), +('JU-2025-003','BKT-2025-003','2025-04-15','U','Penerimaan Kasir Q2','Penerimaan pendapatan layanan Q2 April 2025. Diposting oleh Administrator.'), +('JU-2025-004','BKT-2025-004','2025-04-30','U','Pembayaran Biaya Operasional Q2','Pembayaran biaya operasional bulan April 2025. Diposting oleh Administrator.'), +('JU-2025-005','BKT-2025-005','2025-07-15','U','Penerimaan Kasir Q3','Penerimaan pendapatan layanan Q3 Juli 2025. Diposting oleh Administrator.'), +('JU-2025-006','BKT-2025-006','2025-07-31','U','Pembayaran Biaya Operasional Q3','Pembayaran biaya operasional bulan Juli 2025. Diposting oleh Administrator.'), +('JU-2025-007','BKT-2025-007','2025-10-15','U','Penerimaan Kasir Q4','Penerimaan pendapatan layanan Q4 Oktober 2025. Diposting oleh Administrator.'), +('JU-2025-008','BKT-2025-008','2025-10-31','U','Pembayaran Biaya Operasional Q4','Pembayaran biaya operasional bulan Oktober 2025. Diposting oleh Administrator.'), +('JU-2025-009','BKT-2025-009','2025-12-31','P','Penyesuaian Akhir Tahun 2025','Jurnal penyesuaian beban penyusutan aset tetap tahun 2025. Diposting oleh Administrator.'), +('JU-2026-001','BKT-2026-001','2026-01-15','U','Penerimaan Kasir Januari 2026','Penerimaan pendapatan layanan bulan Januari 2026. Diposting oleh Administrator.'), +('JU-2026-002','BKT-2026-002','2026-01-31','U','Pembayaran Biaya Januari 2026','Pembayaran biaya operasional bulan Januari 2026. Diposting oleh Administrator.'), +('JU-2026-003','BKT-2026-003','2026-02-15','U','Penerimaan Kasir Februari 2026','Penerimaan pendapatan layanan bulan Februari 2026. Diposting oleh Administrator.'), +('JU-2026-004','BKT-2026-004','2026-02-28','U','Pembayaran Biaya Februari 2026','Pembayaran biaya operasional bulan Februari 2026. Diposting oleh Administrator.'), +('JU-2026-005','BKT-2026-005','2026-03-15','U','Penerimaan Kasir Maret 2026','Penerimaan pendapatan layanan bulan Maret 2026. Diposting oleh Administrator.'), +('JU-2026-006','BKT-2026-006','2026-03-31','U','Pembayaran Biaya Maret 2026','Pembayaran biaya operasional bulan Maret 2026. Diposting oleh Administrator.'); + + +CREATE TABLE `mlite_kasir_shift` ( + `id_shift` int NOT NULL AUTO_INCREMENT, + `user_id` varchar(64) NOT NULL, + `waktu_buka` datetime NOT NULL, + `waktu_tutup` datetime DEFAULT NULL, + `kas_awal` decimal(14,2) DEFAULT '0.00', + `kas_akhir` decimal(14,2) DEFAULT '0.00', + `total_transaksi` decimal(14,2) DEFAULT '0.00', + `selisih` decimal(14,2) DEFAULT '0.00', + `keterangan` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id_shift`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_login_attempts -# ------------------------------------------------------------ CREATE TABLE `mlite_login_attempts` ( `ip` text, - `attempts` int(100) NOT NULL, - `expires` int(100) NOT NULL DEFAULT '0' -) ENGINE=MyISAM DEFAULT CHARSET=utf8; + `attempts` int NOT NULL, + `expires` int NOT NULL DEFAULT '0' +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; + + +INSERT INTO `mlite_login_attempts` VALUES ("127.0.0.1","0","0"); + + +CREATE TABLE `mlite_loinc_lab` ( + `No` int(11) DEFAULT NULL, + `Kategori` text, + `NamaPemeriksaan` text, + `PermintaanHasil` text, + `Spesimen` text, + `TipeHasilPemeriksaan` text, + `Satuan` text, + `MetodeAnalisis` text, + `Code` varchar(20) NOT NULL, + `Display` text, + `Component` text, + `Property` text, + `Timing` text, + `System` text, + `Scale` text, + `Method` text, + `UnitOfMeasure` text, + `CodeSystem` text, + PRIMARY KEY (`Code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_loinc_radiologi` ( + `No` text, + `Kategori` text, + `NamaPemeriksaan` text, + `PermintaanHasil` text, + `Code` varchar(100) NOT NULL, + `Display` text, + `Component` text, + `Property` text, + `Timing` text, + `System` text, + `Scale` text, + `Method` text, + `UnitOfMeasure` text, + `CodeSystem` text, + `BodySiteCode` text, + `BodySiteDisplay` text, + `BodySiteCodeSystem` text, + PRIMARY KEY (`Code`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_kfa` ( + `kode_kfa` varchar(50) NOT NULL, + `nama_kfa` text, + `kode_bahan` varchar(50) DEFAULT NULL, + `nama_bahan` text, + `numerator` varchar(10) DEFAULT NULL, + `satuan_num` varchar(10) DEFAULT NULL, + `denominator` varchar(10) DEFAULT NULL, + `satuan_den` varchar(10) DEFAULT NULL, + `nama_satuan_den` varchar(10) DEFAULT NULL, + `kode_sediaan` varchar(50) DEFAULT NULL, + `nama_sediaan` varchar(100) DEFAULT NULL, + `type` enum('obat','alkes') NOT NULL DEFAULT 'obat', + PRIMARY KEY (`kode_kfa`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_modules -# ------------------------------------------------------------ -CREATE TABLE `mlite_modules` ( +CREATE TABLE `mlite_clinical_pathway` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `kode_cp` varchar(30) NOT NULL, + `nama_cp` varchar(150) NOT NULL, + `jenis_layanan` enum('Ralan','Ranap') NOT NULL DEFAULT 'Ranap', + `target_los` int(11) NOT NULL DEFAULT 0, + `target_tarif` double NOT NULL DEFAULT 0, + `confidence_score` decimal(5,2) NOT NULL DEFAULT 0.00, + `evidence_note` text, + `guideline_note` text, + `aktif` enum('Ya','Tidak') NOT NULL DEFAULT 'Ya', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `kode_cp` (`kode_cp`), + KEY `nama_cp` (`nama_cp`), + KEY `jenis_layanan` (`jenis_layanan`), + KEY `aktif` (`aktif`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_clinical_pathway_diagnosis` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `clinical_pathway_id` int(11) NOT NULL, + `kd_penyakit` varchar(10) NOT NULL, + `prioritas` tinyint(4) NOT NULL DEFAULT 1, + `tipe` enum('Utama','Sekunder') NOT NULL DEFAULT 'Utama', + PRIMARY KEY (`id`), + UNIQUE KEY `cp_diagnosis_unique` (`clinical_pathway_id`,`kd_penyakit`,`tipe`), + KEY `kd_penyakit` (`kd_penyakit`), + CONSTRAINT `fk_cp_diagnosis_cp` FOREIGN KEY (`clinical_pathway_id`) REFERENCES `mlite_clinical_pathway` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_cp_diagnosis_penyakit` FOREIGN KEY (`kd_penyakit`) REFERENCES `penyakit` (`kd_penyakit`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_clinical_pathway_day` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `clinical_pathway_id` int(11) NOT NULL, + `hari_ke` int(11) NOT NULL, + `label_hari` varchar(100) DEFAULT NULL, + `tujuan_harian` text, + PRIMARY KEY (`id`), + UNIQUE KEY `cp_day_unique` (`clinical_pathway_id`,`hari_ke`), + CONSTRAINT `fk_cp_day_cp` FOREIGN KEY (`clinical_pathway_id`) REFERENCES `mlite_clinical_pathway` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_clinical_pathway_activity` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `clinical_pathway_day_id` int(11) NOT NULL, + `kategori` enum('Assessment','Laboratorium','Radiologi','Obat','Tindakan','Nutrisi','Edukasi','Monitoring','Outcome') NOT NULL, + `uraian_kegiatan` varchar(255) DEFAULT NULL, + `sumber_tabel` varchar(50) DEFAULT NULL, + `item_kode` varchar(50) DEFAULT NULL, + `item_nama` varchar(255) NOT NULL, + `keterangan` text, + `evidence_frequency` int(11) NOT NULL DEFAULT 0, + `evidence_percentage` decimal(5,2) NOT NULL DEFAULT 0.00, + `evidence_status` enum('Wajib','Direkomendasikan','Opsional') NOT NULL DEFAULT 'Opsional', + `wajib` enum('Ya','Tidak') NOT NULL DEFAULT 'Ya', + `urutan` int(11) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + KEY `clinical_pathway_day_id` (`clinical_pathway_day_id`), + KEY `kategori` (`kategori`), + KEY `item_kode` (`item_kode`), + CONSTRAINT `fk_cp_activity_day` FOREIGN KEY (`clinical_pathway_day_id`) REFERENCES `mlite_clinical_pathway_day` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_clinical_pathway_patient` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `no_rawat` varchar(17) NOT NULL, + `clinical_pathway_id` int(11) NOT NULL, + `kd_penyakit` varchar(10) DEFAULT NULL, + `tanggal_mulai` datetime NOT NULL, + `tanggal_selesai` datetime DEFAULT NULL, + `status` enum('Draft','Aktif','Selesai','Drop') NOT NULL DEFAULT 'Aktif', + `auto_generated` enum('Ya','Tidak') NOT NULL DEFAULT 'Ya', + PRIMARY KEY (`id`), + UNIQUE KEY `no_rawat` (`no_rawat`), + KEY `clinical_pathway_id` (`clinical_pathway_id`), + KEY `kd_penyakit` (`kd_penyakit`), + KEY `status` (`status`), + CONSTRAINT `fk_cp_patient_reg` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_cp_patient_cp` FOREIGN KEY (`clinical_pathway_id`) REFERENCES `mlite_clinical_pathway` (`id`) ON UPDATE CASCADE, + CONSTRAINT `fk_cp_patient_penyakit` FOREIGN KEY (`kd_penyakit`) REFERENCES `penyakit` (`kd_penyakit`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_clinical_pathway_execution` ( `id` int(11) NOT NULL AUTO_INCREMENT, + `clinical_pathway_patient_id` int(11) NOT NULL, + `clinical_pathway_activity_id` int(11) NOT NULL, + `hari_ke` int(11) NOT NULL, + `tanggal_rencana` date DEFAULT NULL, + `tanggal_realisasi` datetime DEFAULT NULL, + `status` enum('Planned','Completed','Missed','Variance') NOT NULL DEFAULT 'Planned', + `sumber_data` varchar(50) DEFAULT NULL, + `sumber_referensi` varchar(100) DEFAULT NULL, + `petugas` varchar(20) DEFAULT NULL, + `catatan` text, + PRIMARY KEY (`id`), + UNIQUE KEY `cp_exec_unique` (`clinical_pathway_patient_id`,`clinical_pathway_activity_id`,`hari_ke`), + KEY `clinical_pathway_activity_id` (`clinical_pathway_activity_id`), + KEY `status` (`status`), + KEY `tanggal_rencana` (`tanggal_rencana`), + CONSTRAINT `fk_cp_execution_patient` FOREIGN KEY (`clinical_pathway_patient_id`) REFERENCES `mlite_clinical_pathway_patient` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_cp_execution_activity` FOREIGN KEY (`clinical_pathway_activity_id`) REFERENCES `mlite_clinical_pathway_activity` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_clinical_pathway_variance` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `clinical_pathway_patient_id` int(11) NOT NULL, + `clinical_pathway_execution_id` int(11) DEFAULT NULL, + `kategori_variance` enum('Diagnosis','LOS','Obat','Tindakan','Lab','Radiologi','Nutrisi','Edukasi','Outcome','Administrasi') NOT NULL, + `penyebab` varchar(255) DEFAULT NULL, + `deskripsi` text NOT NULL, + `severity` enum('Rendah','Sedang','Tinggi') NOT NULL DEFAULT 'Sedang', + `tanggal_variance` datetime NOT NULL, + `status_tindak_lanjut` enum('Open','Closed') NOT NULL DEFAULT 'Open', + PRIMARY KEY (`id`), + KEY `clinical_pathway_patient_id` (`clinical_pathway_patient_id`), + KEY `clinical_pathway_execution_id` (`clinical_pathway_execution_id`), + KEY `kategori_variance` (`kategori_variance`), + CONSTRAINT `fk_cp_variance_patient` FOREIGN KEY (`clinical_pathway_patient_id`) REFERENCES `mlite_clinical_pathway_patient` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `fk_cp_variance_execution` FOREIGN KEY (`clinical_pathway_execution_id`) REFERENCES `mlite_clinical_pathway_execution` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_clinical_pathway_compliance` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `clinical_pathway_patient_id` int(11) NOT NULL, + `planned_activity` int(11) NOT NULL DEFAULT 0, + `completed_activity` int(11) NOT NULL DEFAULT 0, + `missed_activity` int(11) NOT NULL DEFAULT 0, + `compliance_percentage` decimal(5,2) NOT NULL DEFAULT 0.00, + `kategori_kepatuhan` enum('Sangat Patuh','Patuh','Kurang Patuh','Tidak Patuh') NOT NULL DEFAULT 'Tidak Patuh', + `last_calculated_at` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `clinical_pathway_patient_id` (`clinical_pathway_patient_id`), + CONSTRAINT `fk_cp_compliance_patient` FOREIGN KEY (`clinical_pathway_patient_id`) REFERENCES `mlite_clinical_pathway_patient` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_clinical_pathway_audit` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `clinical_pathway_patient_id` int(11) DEFAULT NULL, + `clinical_pathway_id` int(11) DEFAULT NULL, + `aksi` varchar(100) NOT NULL, + `referensi` varchar(100) DEFAULT NULL, + `deskripsi` text, + `user_aksi` varchar(50) DEFAULT NULL, + `created_at` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `clinical_pathway_patient_id` (`clinical_pathway_patient_id`), + KEY `clinical_pathway_id` (`clinical_pathway_id`), + KEY `aksi` (`aksi`), + CONSTRAINT `fk_cp_audit_patient` FOREIGN KEY (`clinical_pathway_patient_id`) REFERENCES `mlite_clinical_pathway_patient` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `fk_cp_audit_cp` FOREIGN KEY (`clinical_pathway_id`) REFERENCES `mlite_clinical_pathway` (`id`) ON DELETE SET NULL ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_clinical_pathway_cppt_template` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `kd_penyakit` varchar(10) NOT NULL, + `ppra` varchar(100) NOT NULL, + `subjective` text NOT NULL, + `objective` text NOT NULL, + `assessment` text NOT NULL, + `plan` text NOT NULL, + `aktif` enum('Ya','Tidak') NOT NULL DEFAULT 'Ya', + `created_at` datetime DEFAULT CURRENT_TIMESTAMP, + `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `cppt_template_kd_penyakit_ppra` (`kd_penyakit`,`ppra`), + KEY `cppt_template_aktif` (`aktif`), + CONSTRAINT `fk_cppt_template_penyakit` FOREIGN KEY (`kd_penyakit`) REFERENCES `penyakit` (`kd_penyakit`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_mini_pacs_instance` ( + `id` int NOT NULL AUTO_INCREMENT, + `series_id` int NOT NULL, + `sop_instance_uid` varchar(100) NOT NULL, + `file_path` TEXT NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_sop_instance` (`sop_instance_uid`), + KEY `fk_series_id` (`series_id`), + CONSTRAINT `fk_mlite_mini_pacs_instance_series` FOREIGN KEY (`series_id`) REFERENCES `mlite_mini_pacs_series` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_mini_pacs_instance_metadata` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `instance_id` int(11) NOT NULL, + `tag` varchar(20) NOT NULL, + `name` varchar(255) DEFAULT NULL, + `value` text, + PRIMARY KEY (`id`), + KEY `idx_instance_id` (`instance_id`), + KEY `idx_tag` (`tag`), + CONSTRAINT `fk_pacs_instance_metadata` FOREIGN KEY (`instance_id`) REFERENCES `mlite_mini_pacs_instance` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_mini_pacs_series` ( + `id` int NOT NULL AUTO_INCREMENT, + `study_id` int NOT NULL, + `series_instance_uid` varchar(100) NOT NULL, + `series_description` text, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_series_instance` (`series_instance_uid`), + KEY `fk_study_id` (`study_id`), + CONSTRAINT `fk_mlite_mini_pacs_series_study` FOREIGN KEY (`study_id`) REFERENCES `mlite_mini_pacs_study` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_mini_pacs_study` ( + `id` int NOT NULL AUTO_INCREMENT, + `no_rawat` varchar(17) NOT NULL, + `study_instance_uid` varchar(100) NOT NULL, + `study_date` datetime DEFAULT NULL, + `modality` varchar(10) DEFAULT NULL, + `description` text, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_study_instance` (`study_instance_uid`), + KEY `fk_no_rawat` (`no_rawat`), + CONSTRAINT `fk_mlite_mini_pacs_study_no_rawat` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_mini_pacs_worklist_status` ( + `noorder` varchar(20) NOT NULL, + `pulled_at` datetime DEFAULT NULL, + `notified` tinyint(1) DEFAULT 0, + PRIMARY KEY (`noorder`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_modules` ( + `id` int NOT NULL AUTO_INCREMENT, `dir` text, `sequence` text, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -LOCK TABLES `mlite_modules` WRITE; -/*!40000 ALTER TABLE `mlite_modules` DISABLE KEYS */; - -INSERT INTO `mlite_modules` (`id`, `dir`, `sequence`) -VALUES - (1,'settings','9'), - (2,'dashboard','0'), - (3,'master','1'), - (4,'pasien','2'), - (5,'rawat_jalan','3'), - (6,'kasir_rawat_jalan','4'), - (7,'kepegawaian','5'), - (8,'farmasi','6'), - (9,'users','8'), - (10,'modules','7'), - (11,'wagateway','10'), - (12,'apotek_ralan','11'), - (13,'dokter_ralan','12'), - (14,'igd','13'), - (15,'dokter_igd','14'), - (16,'laboratorium','15'), - (17,'radiologi','16'), - (18,'icd','17'), - (19,'rawat_inap','18'), - (20,'apotek_ranap','19'), - (21,'dokter_ranap','20'), - (22,'kasir_rawat_inap','21'), - (23,'operasi','22'), - (24,'anjungan','23'), - (25,'api','24'), - (26,'jkn_mobile','25'), - (27,'vclaim','26'), - (28,'keuangan','27'), - (29,'manajemen','28'), - (30,'presensi','29'), - (31,'vedika','30'), - (32,'profil','31'), - (33,'orthanc','32'), - (34,'veronisa','33'); - -/*!40000 ALTER TABLE `mlite_modules` ENABLE KEYS */; -UNLOCK TABLES; - - -# Dump of table mlite_notifications -# ------------------------------------------------------------ +) ENGINE=MyISAM AUTO_INCREMENT=55 DEFAULT CHARSET=utf8mb4; + + +INSERT INTO `mlite_modules` VALUES ("1","settings","9"), +("2","dashboard","0"), +("3","master","1"), +("4","pasien","2"), +("5","rawat_jalan","3"), +("6","kasir_rawat_jalan","4"), +("7","kepegawaian","5"), +("8","farmasi","6"), +("9","users","8"), +("10","modules","7"), +("11","wagateway","10"), +("12","apotek_ralan","11"), +("36","afm","31"), +("14","igd","13"), +("15","dokter_igd","14"), +("16","laboratorium","15"), +("17","radiologi","16"), +("18","rawat_inap","17"), +("19","apotek_ranap","18"), +("20","dokter_ranap","19"), +("21","kasir_rawat_inap","20"), +("22","operasi","21"), +("23","anjungan","22"), +("24","api","23"), +("25","jkn_mobile","24"), +("26","vclaim","25"), +("27","keuangan","26"), +("28","manajemen","27"), +("29","presensi","28"), +("30","vedika","29"), +("31","profil","30"), +("32","orthanc","31"), +("37","bpjs_emr","32"), +("38","bridging_hfis","33"), +("39","dokter_ralan","34"), +("54","esignature","48"), +("41","icare","36"), +("42","inventaris","37"), +("43","jasa_medis","38"), +("44","laporan","39"), +("45","veronisa","40"), +("46","mlite_api_key","41"), +("47","mlite_logs","42"), +("48","penjualan","43"), +("49","satu_sehat","44"), +("50","sertisign","45"), +("51","surat","46"), +("52","utd","47"); + + +CREATE TABLE `mlite_news` ( + `id` int NOT NULL AUTO_INCREMENT, + `title` varchar(225) NOT NULL, + `slug` varchar(225) NOT NULL, + `user_id` int NOT NULL, + `content` text NOT NULL, + `intro` text, + `cover_photo` text, + `status` int NOT NULL, + `comments` int DEFAULT '1', + `markdown` int DEFAULT '0', + `published_at` int DEFAULT '0', + `updated_at` int NOT NULL, + `created_at` int NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_news_tags` ( + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(225) DEFAULT NULL, + `slug` varchar(225) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_news_tags_relationship` ( + `news_id` int NOT NULL, + `tag_id` int NOT NULL, + KEY `mlite_news_tags_relationship_ibfk_1` (`news_id`) USING BTREE, + KEY `tag_id` (`tag_id`) USING BTREE, + CONSTRAINT `mlite_news_tags_relationship_ibfk_1` FOREIGN KEY (`news_id`) REFERENCES `mlite_news` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT, + CONSTRAINT `mlite_news_tags_relationship_ibfk_2` FOREIGN KEY (`tag_id`) REFERENCES `mlite_news_tags` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + CREATE TABLE `mlite_notifications` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `judul` varchar(250) NOT NULL, `pesan` text NOT NULL, - `tanggal` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `tanggal` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `no_rkm_medis` varchar(255) NOT NULL, `status` varchar(250) NOT NULL DEFAULT 'unread', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_odontogram -# ------------------------------------------------------------ CREATE TABLE `mlite_odontogram` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `no_rkm_medis` text NOT NULL, `pemeriksaan` text, `kondisi` text, @@ -2171,15 +2598,11 @@ CREATE TABLE `mlite_odontogram` ( `id_user` text NOT NULL, `tgl_input` text NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_ohis -# ------------------------------------------------------------ CREATE TABLE `mlite_ohis` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `no_rkm_medis` text NOT NULL, `d_16` text, `d_11` text, @@ -2200,12 +2623,42 @@ CREATE TABLE `mlite_ohis` ( `id_user` text NOT NULL, `tgl_input` text NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_pendaftaran_oral_diagnostic` ( + `no_reg` varchar(8) DEFAULT NULL, + `no_rawat` varchar(17) NOT NULL, + `tgl_registrasi` date DEFAULT NULL, + `jam_reg` time DEFAULT NULL, + `kd_dokter` varchar(20) DEFAULT NULL, + `no_rkm_medis` varchar(15) DEFAULT NULL, + `kd_poli` char(5) DEFAULT NULL, + `p_jawab` varchar(100) DEFAULT NULL, + `almt_pj` varchar(200) DEFAULT NULL, + `hubunganpj` varchar(20) DEFAULT NULL, + `biaya_reg` double DEFAULT NULL, + `stts` enum('Belum','Sudah','Batal','Berkas Diterima','Dirujuk','Meninggal','Dirawat','Pulang Paksa') DEFAULT NULL, + `stts_daftar` enum('-','Lama','Baru') NOT NULL, + `status_lanjut` enum('Ralan','Ranap') NOT NULL, + `kd_pj` char(3) NOT NULL, + `umurdaftar` int DEFAULT NULL, + `sttsumur` enum('Th','Bl','Hr') DEFAULT NULL, + `status_bayar` enum('Sudah Bayar','Belum Bayar') NOT NULL, + `status_poli` enum('Lama','Baru') NOT NULL, + PRIMARY KEY (`no_rawat`), + KEY `no_rkm_medis` (`no_rkm_medis`), + KEY `kd_poli` (`kd_poli`), + KEY `kd_pj` (`kd_pj`), + KEY `status_lanjut` (`status_lanjut`), + KEY `kd_dokter` (`kd_dokter`), + KEY `status_bayar` (`status_bayar`) USING BTREE, + CONSTRAINT `mlite_pendaftaran_oral_diagnostic_ibfk_3` FOREIGN KEY (`kd_poli`) REFERENCES `poliklinik` (`kd_poli`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `mlite_pendaftaran_oral_diagnostic_ibfk_4` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `mlite_pendaftaran_oral_diagnostic_ibfk_6` FOREIGN KEY (`kd_pj`) REFERENCES `penjab` (`kd_pj`) ON UPDATE CASCADE, + CONSTRAINT `mlite_pendaftaran_oral_diagnostic_ibfk_7` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_pengaduan -# ------------------------------------------------------------ CREATE TABLE `mlite_pengaduan` ( `id` varchar(15) NOT NULL, @@ -2215,15 +2668,11 @@ CREATE TABLE `mlite_pengaduan` ( PRIMARY KEY (`id`), KEY `no_rkm_medis` (`no_rkm_medis`), CONSTRAINT `mlite_pengaduan_ibfk_1` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_pengaduan_detail -# ------------------------------------------------------------ CREATE TABLE `mlite_pengaduan_detail` ( - `id` int(10) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `pengaduan_id` varchar(15) NOT NULL, `tanggal` datetime NOT NULL, `no_rkm_medis` varchar(15) NOT NULL, @@ -2231,15 +2680,11 @@ CREATE TABLE `mlite_pengaduan_detail` ( PRIMARY KEY (`id`) USING BTREE, KEY `pengaduan_detail_ibfk_1` (`pengaduan_id`), CONSTRAINT `mlite_pengaduan_detail_ibfk_1` FOREIGN KEY (`pengaduan_id`) REFERENCES `mlite_pengaduan` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_penjualan -# ------------------------------------------------------------ CREATE TABLE `mlite_penjualan` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `nama_pembeli` varchar(100) DEFAULT NULL, `alamat_pembeli` varchar(100) DEFAULT NULL, `nomor_telepon` varchar(50) DEFAULT NULL, @@ -2249,63 +2694,58 @@ CREATE TABLE `mlite_penjualan` ( `id_user` varchar(50) NOT NULL, `keterangan` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; -# Dump of table mlite_penjualan_barang -# ------------------------------------------------------------ - CREATE TABLE `mlite_penjualan_barang` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `nama_barang` varchar(100) DEFAULT NULL, `stok` varchar(100) DEFAULT NULL, `harga` varchar(100) DEFAULT NULL, `keterangan` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_penjualan_billing -# ------------------------------------------------------------ CREATE TABLE `mlite_penjualan_billing` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `id_penjualan` int(11) NOT NULL, - `jumlah_total` int(100) NOT NULL, - `potongan` int(100) DEFAULT NULL, - `jumlah_harus_bayar` int(100) NOT NULL, - `jumlah_bayar` int(100) NOT NULL, + `id` int NOT NULL AUTO_INCREMENT, + `id_penjualan` int NOT NULL, + `jumlah_total` int NOT NULL, + `potongan` int DEFAULT NULL, + `jumlah_harus_bayar` int NOT NULL, + `jumlah_bayar` int NOT NULL, `tanggal` date NOT NULL, `jam` time NOT NULL, `id_user` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - - +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; -# Dump of table mlite_penjualan_detail -# ------------------------------------------------------------ CREATE TABLE `mlite_penjualan_detail` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `id_penjualan` int(11) NOT NULL, - `id_barang` int(11) NOT NULL, + `id` int NOT NULL AUTO_INCREMENT, + `id_penjualan` int NOT NULL, + `id_barang` varchar(100) NOT NULL, `nama_barang` varchar(100) NOT NULL, - `harga` int(11) NOT NULL, - `jumlah` int(100) NOT NULL, - `harga_total` int(11) NOT NULL, + `harga` int NOT NULL, + `jumlah` int NOT NULL, + `harga_total` int NOT NULL, `tanggal` date NOT NULL, `jam` time NOT NULL, `id_user` varchar(50) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; +CREATE TABLE `mlite_query_logs` ( + `id` int NOT NULL AUTO_INCREMENT, + `sql_text` text NOT NULL, + `bindings` text, + `created_at` datetime DEFAULT CURRENT_TIMESTAMP, + `error_message` text, + `username` varchar(100) DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_rekening -# ------------------------------------------------------------ CREATE TABLE `mlite_rekening` ( `kd_rek` varchar(15) NOT NULL DEFAULT '', @@ -2317,41 +2757,118 @@ CREATE TABLE `mlite_rekening` ( KEY `nm_rek` (`nm_rek`), KEY `tipe` (`tipe`), KEY `balance` (`balance`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +INSERT INTO `mlite_rekening` VALUES +-- Aktiva Lancar (tipe N, balance D) +('1101','Kas Umum','N','D','1'), +('1102','Kas Kasir Rawat Jalan','N','D','1'), +('1103','Kas Kasir Rawat Inap','N','D','1'), +('1104','Kas Farmasi','N','D','1'), +('1105','Kas Kecil','N','D','1'), +('1201','Bank BRI','N','D','1'), +('1301','Piutang BPJS','N','D','1'), +('1302','Piutang Pasien Umum','N','D','1'), +('1401','Persediaan Obat & BHP','N','D','1'), +-- Aktiva Tetap (tipe N, balance D) +('1601','Gedung & Bangunan','N','D','1'), +('1701','Peralatan Medis','N','D','1'), +('1801','Kendaraan','N','D','1'), +('1901','Inventaris Kantor','N','D','1'), +-- Hutang Lancar (tipe N, balance K) +('2101','Hutang Usaha','N','K','1'), +('2102','Hutang Gaji','N','K','1'), +-- Hutang Jangka Panjang (tipe N, balance K) +('2201','Hutang Bank','N','K','1'), +-- Modal (tipe M, balance K) +('3101','Modal Disetor','M','K','1'), +('3201','Laba Ditahan','M','K','1'), +-- Pendapatan (tipe R, balance K) +('4101','Pendapatan Rawat Jalan','R','K','1'), +('4102','Pendapatan Rawat Inap','R','K','1'), +('4103','Pendapatan Obat & BHP','R','K','1'), +('4104','Pendapatan Laboratorium','R','K','1'), +('4105','Pendapatan Radiologi','R','K','1'), +('4201','Pendapatan Lain-lain','R','K','1'), +-- Beban (tipe R, balance D) +('5101','Beban Gaji Dokter','R','D','1'), +('5102','Beban Gaji Paramedis','R','D','1'), +('5103','Beban Gaji Karyawan','R','D','1'), +('5201','Beban Obat & BHP','R','D','1'), +('5301','Beban Listrik','R','D','1'), +('5302','Beban Air & Kebersihan','R','D','1'), +('5401','Beban Penyusutan','R','D','1'), +('5501','Beban Administrasi Umum','R','D','1'); -# Dump of table mlite_rekeningtahun -# ------------------------------------------------------------ CREATE TABLE `mlite_rekeningtahun` ( - `thn` year(4) NOT NULL, + `thn` year NOT NULL, `kd_rek` varchar(15) NOT NULL DEFAULT '', `saldo_awal` double NOT NULL, PRIMARY KEY (`thn`,`kd_rek`), KEY `kd_rek` (`kd_rek`), KEY `saldo_awal` (`saldo_awal`), CONSTRAINT `mlite_rekeningtahun_ibfk_1` FOREIGN KEY (`kd_rek`) REFERENCES `mlite_rekening` (`kd_rek`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +-- Saldo awal akun per tahun (N = Neraca, M = Modal) +-- Verifikasi: Total Aktiva 2025 = 1.420.000.000, Total Pasiva 2025 = 1.420.000.000 +INSERT INTO `mlite_rekeningtahun` VALUES +(2025,'1101',50000000), +(2025,'1201',200000000), +(2025,'1301',75000000), +(2025,'1302',15000000), +(2025,'1401',80000000), +(2025,'1601',500000000), +(2025,'1701',300000000), +(2025,'1801',150000000), +(2025,'1901',50000000), +(2025,'2101',25000000), +(2025,'2102',20000000), +(2025,'2201',200000000), +(2025,'3101',800000000), +(2025,'3201',375000000), +-- Verifikasi: Total Aktiva 2026 = 1.585.000.000, Total Pasiva 2026 = 1.585.000.000 +(2026,'1101',230000000), +(2026,'1201',200000000), +(2026,'1301',75000000), +(2026,'1302',15000000), +(2026,'1401',80000000), +(2026,'1601',495000000), +(2026,'1701',293000000), +(2026,'1801',147000000), +(2026,'1901',50000000), +(2026,'2101',25000000), +(2026,'2102',20000000), +(2026,'2201',200000000), +(2026,'3101',800000000), +(2026,'3201',540000000); -# Dump of table mlite_remember_me -# ------------------------------------------------------------ CREATE TABLE `mlite_remember_me` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `token` text, - `user_id` int(10) NOT NULL, - `expiry` int(100) NOT NULL, + `user_id` int NOT NULL, + `expiry` int NOT NULL, PRIMARY KEY (`id`), KEY `mlite_remember_me_ibfk_1` (`user_id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; +CREATE TABLE `mlite_rujukan_internal_poli` ( + `no_rawat` varchar(17) NOT NULL, + `kd_dokter` varchar(20) NOT NULL, + `kd_poli` varchar(5) DEFAULT NULL, + `isi_rujukan` text, + `jawab_rujukan` text, + PRIMARY KEY (`no_rawat`,`kd_dokter`) USING BTREE, + KEY `kd_dokter` (`kd_dokter`) USING BTREE, + KEY `kd_poli` (`kd_poli`) USING BTREE, + CONSTRAINT `mlite_rujukan_internal_poli_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `mlite_rujukan_internal_poli_ibfk_2` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `mlite_rujukan_internal_poli_ibfk_3` FOREIGN KEY (`kd_poli`) REFERENCES `poliklinik` (`kd_poli`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_satu_sehat_departemen -# ------------------------------------------------------------ CREATE TABLE `mlite_satu_sehat_departemen` ( `dep_id` char(4) NOT NULL, @@ -2359,12 +2876,8 @@ CREATE TABLE `mlite_satu_sehat_departemen` ( PRIMARY KEY (`dep_id`), UNIQUE KEY `id_organisasi_satusehat` (`id_organisasi_satusehat`), CONSTRAINT `mlite_satu_sehat_departemen_ibfk_1` FOREIGN KEY (`dep_id`) REFERENCES `departemen` (`dep_id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_satu_sehat_lokasi -# ------------------------------------------------------------ CREATE TABLE `mlite_satu_sehat_lokasi` ( `kode` char(5) NOT NULL, @@ -2378,25 +2891,67 @@ CREATE TABLE `mlite_satu_sehat_lokasi` ( UNIQUE KEY `id_lokasi_satusehat` (`id_lokasi_satusehat`), KEY `id_organisasi_satusehat` (`id_organisasi_satusehat`), CONSTRAINT `mlite_satu_sehat_lokasi_ibfk_2` FOREIGN KEY (`id_organisasi_satusehat`) REFERENCES `mlite_satu_sehat_departemen` (`id_organisasi_satusehat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_satu_sehat_mapping_lab` ( + `id_template` int NOT NULL, + `kd_jenis_prw` varchar(15) DEFAULT NULL, + `code` varchar(15) DEFAULT NULL, + `system` varchar(100) NOT NULL, + `display` varchar(80) DEFAULT NULL, + `sampel_code` varchar(15) NOT NULL, + `sampel_system` varchar(100) NOT NULL, + `sampel_display` varchar(80) NOT NULL, + PRIMARY KEY (`id_template`) USING BTREE, + CONSTRAINT `mlite_satu_sehat_mapping_lab_ibfk_1` FOREIGN KEY (`id_template`) REFERENCES `template_laboratorium` (`id_template`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_satu_sehat_mapping_obat` ( + `kode_brng` varchar(15) NOT NULL DEFAULT '', + `kode_kfa` varchar(50) DEFAULT NULL, + `nama_kfa` varchar(100) DEFAULT NULL, + `kode_bahan` varchar(50) DEFAULT NULL, + `nama_bahan` varchar(100) DEFAULT NULL, + `numerator` varchar(10) DEFAULT NULL, + `satuan_num` varchar(10) DEFAULT NULL, + `denominator` varchar(10) DEFAULT NULL, + `satuan_den` varchar(10) DEFAULT NULL, + `nama_satuan_den` varchar(10) DEFAULT NULL, + `kode_sediaan` varchar(50) DEFAULT NULL, + `nama_sediaan` varchar(100) DEFAULT NULL, + `kode_route` varchar(10) DEFAULT NULL, + `nama_route` varchar(50) DEFAULT NULL, + `type` enum('obat','vaksin') NOT NULL, + `id_medication` varchar(50) DEFAULT NULL, + PRIMARY KEY (`kode_brng`) USING BTREE, + CONSTRAINT `mlite_satu_sehat_mapping_obat_ibfk_1` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_satu_sehat_mapping_praktisi -# ------------------------------------------------------------ CREATE TABLE `mlite_satu_sehat_mapping_praktisi` ( `practitioner_id` varchar(40) NOT NULL, `kd_dokter` varchar(20) NOT NULL, + `jenis_praktisi` varchar(20) NOT NULL, PRIMARY KEY (`practitioner_id`), KEY `kd_dokter` (`kd_dokter`), CONSTRAINT `mlite_satu_sehat_mapping_praktisi_ibfk_1` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_satu_sehat_mapping_rad` ( + `kd_jenis_prw` varchar(15) NOT NULL, + `code` varchar(15) DEFAULT NULL, + `system` varchar(100) NOT NULL, + `display` varchar(80) DEFAULT NULL, + `sampel_code` varchar(15) NOT NULL, + `sampel_system` varchar(100) NOT NULL, + `sampel_display` varchar(80) NOT NULL, + PRIMARY KEY (`kd_jenis_prw`) USING BTREE, + CONSTRAINT `mlite_satu_sehat_mapping_rad_ibfk_1` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_radiologi` (`kd_jenis_prw`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_satu_sehat_response -# ------------------------------------------------------------ CREATE TABLE `mlite_satu_sehat_response` ( `no_rawat` varchar(17) NOT NULL, @@ -2411,188 +2966,305 @@ CREATE TABLE `mlite_satu_sehat_response` ( `id_observation_ttvberat` varchar(50) DEFAULT NULL, `id_observation_ttvperut` varchar(50) DEFAULT NULL, `id_observation_ttvtensi` varchar(50) DEFAULT NULL, - `id_observation_ttvkesadaran` varchar(50) DEFAULT NULL, - `id_procedure` varchar(50) DEFAULT NULL, + `id_observation_ttvkesadaran` varchar(50) DEFAULT NULL, + `id_procedure` varchar(50) DEFAULT NULL, + `id_clinical_impression` varchar(50) DEFAULT NULL, `id_composition` varchar(50) DEFAULT NULL, + `id_immunization` varchar(50) DEFAULT NULL, + `id_medication_request` varchar(50) DEFAULT NULL, + `id_medication_dispense` varchar(50) DEFAULT NULL, + `id_medication_statement` varchar(50) DEFAULT NULL, + `id_rad_request` varchar(50) DEFAULT NULL, + `id_rad_specimen` varchar(50) DEFAULT NULL, + `id_rad_observation` varchar(50) DEFAULT NULL, + `id_rad_diagnostic` varchar(50) DEFAULT NULL, + `id_imaging_study` varchar(50) DEFAULT NULL, + `id_lab_pk_request` varchar(50) DEFAULT NULL, + `id_lab_pk_specimen` varchar(50) DEFAULT NULL, + `id_lab_pk_observation` varchar(50) DEFAULT NULL, + `id_lab_pk_diagnostic` varchar(50) DEFAULT NULL, + `id_lab_pa_request` varchar(50) DEFAULT NULL, + `id_lab_pa_specimen` varchar(50) DEFAULT NULL, + `id_lab_pa_observation` varchar(50) DEFAULT NULL, + `id_lab_pa_diagnostic` varchar(50) DEFAULT NULL, + `id_lab_mb_request` varchar(50) DEFAULT NULL, + `id_lab_mb_specimen` varchar(50) DEFAULT NULL, + `id_lab_mb_observation` varchar(50) DEFAULT NULL, + `id_lab_mb_diagnostic` varchar(50) DEFAULT NULL, + `id_careplan` varchar(50) DEFAULT NULL, + `id_allergy` varchar(50) DEFAULT NULL, + `id_questionnaire` varchar(50) DEFAULT NULL, PRIMARY KEY (`no_rawat`), CONSTRAINT `mlite_satu_sehat_response_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mlite_sertisign_webhook` ( + `id` int NOT NULL AUTO_INCREMENT, + `transaction_id` varchar(100) NOT NULL, + `status` varchar(50) NOT NULL, + `document_url` varchar(255) NOT NULL, + `payload` text NOT NULL, + `received_at` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `transaction_idx` (`transaction_id`), + KEY `status_idx` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + -# Dump of table mlite_settings -# ------------------------------------------------------------ +CREATE TABLE `mlite_mapping_snomed_icd` ( + `id` int NOT NULL AUTO_INCREMENT, + `no_rawat` varchar(20) NOT NULL, + `kd_penyakit` varchar(10) NOT NULL, + `snomed_concept_id` bigint NOT NULL, + `snomed_term` varchar(255) NOT NULL, + `status_penyakit` enum('Baru','Lama') DEFAULT 'Baru', + PRIMARY KEY (`id`), + UNIQUE KEY `uniq_mapping` (`no_rawat`,`kd_penyakit`,`snomed_concept_id`), + KEY `no_rawat` (`no_rawat`), + KEY `kd_penyakit` (`kd_penyakit`), + KEY `snomed_concept_id` (`snomed_concept_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + +CREATE TABLE `mlite_mapping_snomed_icd9` ( + `id` int NOT NULL AUTO_INCREMENT, + `no_rawat` varchar(17) NOT NULL, + `kd_tindakan` varchar(10) NOT NULL, + `snomed_concept_id` varchar(50) NOT NULL, + `snomed_term` text DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uniq_mapping` (`no_rawat`,`kd_tindakan`,`snomed_concept_id`), + KEY `no_rawat` (`no_rawat`), + KEY `kd_tindakan` (`kd_tindakan`), + KEY `snomed_concept_id` (`snomed_concept_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; CREATE TABLE `mlite_settings` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `module` text, - `field` text, - `value` text, - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -LOCK TABLES `mlite_settings` WRITE; -/*!40000 ALTER TABLE `mlite_settings` DISABLE KEYS */; - -INSERT INTO `mlite_settings` (`id`, `module`, `field`, `value`) -VALUES - (1,'settings','logo','uploads/settings/logo.png'), - (2,'settings','nama_instansi','mLITE Indonesia'), - (3,'settings','alamat','Jl. Perintis Kemerdekaan 45'), - (4,'settings','kota','Barabai'), - (5,'settings','propinsi','Kalimantan Selatan'), - (6,'settings','nomor_telepon','0812345678'), - (7,'settings','email','info@mlite.id'), - (8,'settings','website','https://mlite.id'), - (9,'settings','ppk_bpjs','-'), - (10,'settings','footer','Copyright {?=date(\"Y\")?} © by drg. F. Basoro. All rights reserved.'), - (11,'settings','homepage','main'), - (12,'settings','wallpaper','uploads/settings/wallpaper.jpg'), - (13,'settings','text_color','#44813e'), - (14,'settings','igd','IGDK'), - (15,'settings','laboratorium','-'), - (16,'settings','pj_laboratorium','DR001'), - (17,'settings','radiologi','-'), - (18,'settings','pj_radiologi','DR001'), - (19,'settings','dokter_ralan_per_dokter','false'), - (20,'settings','cekstatusbayar','false'), - (21,'settings','ceklimit','false'), - (22,'settings','responsivevoice','false'), - (23,'settings','notif_presensi','true'), - (24,'settings','BpjsApiUrl','https://apijkn-dev.bpjs-kesehatan.go.id/vclaim-rest-dev/'), - (25,'settings','BpjsConsID','-'), - (26,'settings','BpjsSecretKey','-'), - (27,'settings','BpjsUserKey','-'), - (28,'settings','timezone','Asia/Makassar'), - (29,'settings','theme','default'), - (30,'settings','theme_admin','mlite'), - (31,'settings','admin_mode','complex'), - (32,'settings','input_kasir','tidak'), - (33,'settings','editor','wysiwyg'), - (34,'settings','version','4.1.2'), - (35,'settings','update_check','0'), - (36,'settings','update_changelog',''), - (37,'settings','update_version','0'), - (38,'settings','license',''), - (39,'farmasi','deporalan','-'), - (40,'farmasi','igd','-'), - (41,'farmasi','deporanap','-'), - (42,'farmasi','gudang','-'), - (43,'wagateway','server','https://mlite.id'), - (44,'wagateway','token','-'), - (45,'wagateway','phonenumber','-'), - (46,'anjungan','display_poli',''), - (47,'anjungan','carabayar',''), - (48,'anjungan','antrian_loket','1'), - (49,'anjungan','antrian_cs','2'), - (50,'anjungan','antrian_apotek','3'), - (51,'anjungan','panggil_loket','1'), - (52,'anjungan','panggil_loket_nomor','1'), - (53,'anjungan','panggil_cs','1'), - (54,'anjungan','panggil_cs_nomor','1'), - (55,'anjungan','panggil_apotek','1'), - (56,'anjungan','panggil_apotek_nomor','1'), - (57,'anjungan','text_anjungan','Running text anjungan pasien mandiri.....'), - (58,'anjungan','text_loket','Running text display antrian loket.....'), - (59,'anjungan','text_poli','Running text display antrian poliklinik.....'), - (60,'anjungan','text_laboratorium','Running text display antrian laboratorium.....'), - (61,'anjungan','text_apotek','Running text display antrian apotek.....'), - (62,'anjungan','text_farmasi','Running text display antrian farmasi.....'), - (63,'anjungan','vidio','G4im8_n0OoI'), - (64,'api','apam_key','qtbexUAxzqO3M8dCOo2vDMFvgYjdUEdMLVo341'), - (65,'api','apam_status_daftar','Terdaftar'), - (66,'api','apam_status_dilayani','Anda siap dilayani'), - (67,'api','apam_webappsurl','http://localhost/webapps/'), - (68,'api','apam_normpetugas','000001,000002'), - (69,'api','apam_limit','2'), - (70,'api','apam_smtp_host','ssl://smtp.gmail.com'), - (71,'api','apam_smtp_port','465'), - (72,'api','apam_smtp_username',''), - (73,'api','apam_smtp_password',''), - (74,'api','apam_kdpj',''), - (75,'api','apam_kdprop',''), - (76,'api','apam_kdkab',''), - (77,'api','apam_kdkec',''), - (78,'api','duitku_merchantCode',''), - (79,'api','duitku_merchantKey',''), - (80,'api','duitku_paymentAmount',''), - (81,'api','duitku_paymentMethod',''), - (82,'api','duitku_productDetails',''), - (83,'api','duitku_expiryPeriod',''), - (84,'api','duitku_kdpj',''), - (85,'api','berkasdigital_key','qtbexUAxzqO3M8dCOo2vDMFvgYjdUEdMLVo341'), - (86,'jkn_mobile','x_username','jkn'), - (87,'jkn_mobile','x_password','mobile'), - (88,'jkn_mobile','header_token','X-Token'), - (89,'jkn_mobile','header_username','X-Username'), - (90,'jkn_mobile','header_password','X-Password'), - (91,'jkn_mobile','BpjsConsID',''), - (92,'jkn_mobile','BpjsSecretKey',''), - (93,'jkn_mobile','BpjsUserKey',''), - (94,'jkn_mobile','BpjsAntrianUrl','https://apijkn-dev.bpjs-kesehatan.go.id/antreanrs_dev/'), - (95,'jkn_mobile','kd_pj_bpjs',''), - (96,'jkn_mobile','exclude_taskid',''), - (97,'jkn_mobile','display',''), - (98,'jkn_mobile','kdprop','1'), - (99,'jkn_mobile','kdkab','1'), - (100,'jkn_mobile','kdkec','1'), - (101,'jkn_mobile','kdkel','1'), - (102,'jkn_mobile','perusahaan_pasien',''), - (103,'jkn_mobile','suku_bangsa',''), - (104,'jkn_mobile','bahasa_pasien',''), - (105,'jkn_mobile','cacat_fisik',''), - (106,'keuangan','jurnal_kasir','0'), - (107,'keuangan','akun_kredit_pendaftaran',''), - (108,'keuangan','akun_kredit_tindakan',''), - (109,'keuangan','akun_kredit_obat_bhp',''), - (110,'keuangan','akun_kredit_laboratorium',''), - (111,'keuangan','akun_kredit_radiologi',''), - (112,'keuangan','akun_kredit_tambahan_biaya',''), - (113,'manajemen','penjab_umum','UMU'), - (114,'manajemen','penjab_bpjs','BPJ'), - (115,'presensi','lat','-2.58'), - (116,'presensi','lon','115.37'), - (117,'presensi','distance','2'), - (118,'presensi','helloworld','Jangan Lupa Bahagia; \nCara untuk memulai adalah berhenti berbicara dan mulai melakukan; \nWaktu yang hilang tidak akan pernah ditemukan lagi; \nKamu bisa membodohi semua orang, tetapi kamu tidak bisa membohongi pikiranmu; \nIni bukan tentang ide. Ini tentang mewujudkan ide; \nBekerja bukan hanya untuk mencari materi. Bekerja merupakan manfaat bagi banyak orang'), - (119,'vedika','carabayar',''), - (120,'vedika','sep',''), - (121,'vedika','skdp',''), - (122,'vedika','operasi',''), - (123,'vedika','individual',''), - (124,'vedika','billing','mlite'), - (125,'vedika','periode','2023-01'), - (126,'vedika','verifikasi','2023-01'), - (127,'vedika','inacbgs_prosedur_bedah',''), - (128,'vedika','inacbgs_prosedur_non_bedah',''), - (129,'vedika','inacbgs_konsultasi',''), - (130,'vedika','inacbgs_tenaga_ahli',''), - (131,'vedika','inacbgs_keperawatan',''), - (132,'vedika','inacbgs_penunjang',''), - (133,'vedika','inacbgs_pelayanan_darah',''), - (134,'vedika','inacbgs_rehabilitasi',''), - (135,'vedika','inacbgs_rawat_intensif',''), - (136,'vedika','eklaim_url',''), - (137,'vedika','eklaim_key',''), - (138,'vedika','eklaim_kelasrs','CP'), - (139,'vedika','eklaim_payor_id','3'), - (140,'vedika','eklaim_payor_cd','JKN'), - (141,'vedika','eklaim_cob_cd','#'), - (142,'orthanc','server','http://localhost:8042'), - (143,'orthanc','username','orthanc'), - (144,'orthanc','password','orthanc'), - (145,'veronisa','username',''), - (146,'veronisa','password',''), - (147,'veronisa','obat_kronis',''), - (148,'jkn_mobile','kirimantrian','tidak'), - (149,'settings','keamanan','ya'), - (150,'dokter_ralan','set_sudah','tidak'); - -/*!40000 ALTER TABLE `mlite_settings` ENABLE KEYS */; -UNLOCK TABLES; - - -# Dump of table mlite_subrekening -# ------------------------------------------------------------ + `id` int NOT NULL AUTO_INCREMENT, + `module` varchar(100) NOT NULL, + `field` varchar(100) NOT NULL, + `value` TEXT NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `module` (`module`,`field`) +) ENGINE=MyISAM AUTO_INCREMENT=221 DEFAULT CHARSET=utf8mb4; + + +INSERT INTO `mlite_settings` VALUES ("1","settings","logo","uploads/settings/logo.png"), +("2","settings","nama_instansi","mLITE Indonesia"), +("3","settings","alamat","Jl. Perintis Kemerdekaan 45"), +("4","settings","kota","Barabai"), +("5","settings","propinsi","Kalimantan Selatan"), +("6","settings","nomor_telepon","0812345678"), +("7","settings","email","info@mlite.id"), +("8","settings","website","https://mlite.id"), +("9","settings","ppk_bpjs","-"), +("10","settings","footer","Copyright {?=date(\"Y\")?} © by drg. F. Basoro. All rights reserved."), +("11","settings","homepage","main"), +("12","settings","wallpaper","uploads/settings/wallpaper.jpg"), +("13","settings","text_color","#44813e"), +("14","settings","igd","IGDK"), +("15","settings","laboratorium","-"), +("16","settings","pj_laboratorium","DR001"), +("17","settings","radiologi","-"), +("18","settings","pj_radiologi","DR001"), +("19","settings","dokter_ralan_per_dokter","false"), +("20","settings","cekstatusbayar","false"), +("21","settings","ceklimit","false"), +("22","settings","responsivevoice","false"), +("23","settings","notif_presensi","true"), +("24","settings","BpjsApiUrl","https://apijkn-dev.bpjs-kesehatan.go.id/vclaim-rest-dev/"), +("25","settings","BpjsConsID","-"), +("26","settings","BpjsSecretKey","-"), +("27","settings","BpjsUserKey","-"), +("28","settings","timezone","Asia/Makassar"), +("29","settings","theme","default"), +("30","settings","theme_admin","mlite"), +("31","settings","admin_mode","complex"), +("32","settings","input_kasir","tidak"), +("33","settings","editor","wysiwyg"), +("34","settings","version","6.3.4"), +("35","settings","update_check",""), +("36","settings","update_changelog",""), +("37","settings","update_version","0"), +("38","settings","license",""), +("39","farmasi","deporalan","-"), +("40","farmasi","igd","-"), +("41","farmasi","deporanap","-"), +("42","farmasi","gudang","-"), +("43","wagateway","server","https://mlite.id"), +("44","wagateway","token","-"), +("45","wagateway","phonenumber","-"), +("46","anjungan","display_poli",""), +("47","anjungan","carabayar",""), +("48","anjungan","antrian_loket","1"), +("49","anjungan","antrian_cs","2"), +("50","anjungan","antrian_apotek","3"), +("51","anjungan","panggil_loket","1"), +("52","anjungan","panggil_loket_nomor","1"), +("53","anjungan","panggil_cs","1"), +("54","anjungan","panggil_cs_nomor","1"), +("55","anjungan","panggil_apotek","1"), +("56","anjungan","panggil_apotek_nomor","1"), +("57","anjungan","text_anjungan","Running text anjungan pasien mandiri....."), +("58","anjungan","text_loket","Running text display antrian loket....."), +("59","anjungan","text_poli","Running text display antrian poliklinik....."), +("60","anjungan","text_laboratorium","Running text display antrian laboratorium....."), +("61","anjungan","text_apotek","Running text display antrian apotek....."), +("62","anjungan","text_farmasi","Running text display antrian farmasi....."), +("63","anjungan","vidio","PLFtgYUkJmfyx7rESNFuRDUmhtkzSeFPQo"), +("64","api","apam_key","qtbexUAxzqO3M8dCOo2vDMFvgYjdUEdMLVo341"), +("65","api","apam_status_daftar","Terdaftar"), +("66","api","apam_status_dilayani","Anda siap dilayani"), +("67","api","apam_webappsurl","http://localhost/webapps/"), +("68","api","apam_normpetugas","000001,000002"), +("69","api","apam_limit","2"), +("70","api","apam_smtp_host","ssl://smtp.gmail.com"), +("71","api","apam_smtp_port","465"), +("72","api","apam_smtp_username",""), +("73","api","apam_smtp_password",""), +("74","api","apam_kdpj",""), +("75","api","apam_kdprop",""), +("76","api","apam_kdkab",""), +("77","api","apam_kdkec",""), +("78","api","duitku_merchantCode",""), +("79","api","duitku_merchantKey",""), +("80","api","duitku_paymentAmount",""), +("81","api","duitku_paymentMethod",""), +("82","api","duitku_productDetails",""), +("83","api","duitku_expiryPeriod",""), +("84","api","duitku_kdpj",""), +("85","api","berkasdigital_key","qtbexUAxzqO3M8dCOo2vDMFvgYjdUEdMLVo341"), +("86","jkn_mobile","x_username","jkn"), +("87","jkn_mobile","x_password","mobile"), +("88","jkn_mobile","header_token","X-Token"), +("89","jkn_mobile","header_username","X-Username"), +("90","jkn_mobile","header_password","X-Password"), +("91","jkn_mobile","BpjsConsID",""), +("92","jkn_mobile","BpjsSecretKey",""), +("93","jkn_mobile","BpjsUserKey",""), +("94","jkn_mobile","BpjsAntrianUrl","https://apijkn-dev.bpjs-kesehatan.go.id/antreanrs_dev/"), +("95","jkn_mobile","kd_pj_bpjs",""), +("96","jkn_mobile","exclude_taskid",""), +("97","jkn_mobile","display",""), +("98","jkn_mobile","kdprop","1"), +("99","jkn_mobile","kdkab","1"), +("100","jkn_mobile","kdkec","1"), +("101","jkn_mobile","kdkel","1"), +("102","jkn_mobile","perusahaan_pasien",""), +("103","jkn_mobile","suku_bangsa",""), +("104","jkn_mobile","bahasa_pasien",""), +("105","jkn_mobile","cacat_fisik",""), +("106","keuangan","jurnal_kasir","0"), +("107","keuangan","akun_kredit_pendaftaran","4101"), +("108","keuangan","akun_kredit_tindakan","4102"), +("109","keuangan","akun_kredit_obat_bhp","4103"), +("110","keuangan","akun_kredit_laboratorium","4104"), +("111","keuangan","akun_kredit_radiologi","4105"), +("112","keuangan","akun_kredit_tambahan_biaya","4201"), +("113","manajemen","penjab_umum","UMU"), +("114","manajemen","penjab_bpjs","BPJ"), +("115","presensi","lat","-2.58"), +("116","presensi","lon","115.37"), +("117","presensi","distance","2"), +("118","presensi","helloworld","Jangan Lupa Bahagia; \nCara untuk memulai adalah berhenti berbicara dan mulai melakukan; \nWaktu yang hilang tidak akan pernah ditemukan lagi; \nKamu bisa membodohi semua orang, tetapi kamu tidak bisa membohongi pikiranmu; \nIni bukan tentang ide. Ini tentang mewujudkan ide; \nBekerja bukan hanya untuk mencari materi. Bekerja merupakan manfaat bagi banyak orang"), +("119","vedika","carabayar",""), +("120","vedika","sep",""), +("121","vedika","skdp",""), +("122","vedika","operasi",""), +("123","vedika","individual",""), +("124","vedika","billing","mlite"), +("125","vedika","periode","2023-01"), +("126","vedika","verifikasi","2023-01"), +("127","vedika","inacbgs_prosedur_bedah",""), +("128","vedika","inacbgs_prosedur_non_bedah",""), +("129","vedika","inacbgs_konsultasi",""), +("130","vedika","inacbgs_tenaga_ahli",""), +("131","vedika","inacbgs_keperawatan",""), +("132","vedika","inacbgs_penunjang",""), +("133","vedika","inacbgs_pelayanan_darah",""), +("134","vedika","inacbgs_rehabilitasi",""), +("135","vedika","inacbgs_rawat_intensif",""), +("136","vedika","eklaim_url",""), +("137","vedika","eklaim_key",""), +("138","vedika","eklaim_kelasrs","CP"), +("139","vedika","eklaim_payor_id","3"), +("140","vedika","eklaim_payor_cd","JKN"), +("141","vedika","eklaim_cob_cd","#"), +("142","orthanc","server","http://localhost:8042"), +("143","orthanc","username","orthanc"), +("144","orthanc","password","orthanc"), +("166","afm","username_finger",""), +("148","jkn_mobile","kirimantrian","tidak"), +("149","settings","keamanan","tidak"), +("165","afm","afm_token","fc4eba4aa3ea79a7bba3070cba848696"), +("151","settings","websocket","tidak"), +("152","settings","websocket_proxy",""), +("153","settings","username_fp",""), +("154","settings","password_fp",""), +("155","settings","username_frista",""), +("156","settings","password_frista",""), +("157","settings","billing_obat","false"), +("158","settings","prefix_surat","RS"), +("159","farmasi","keterangan_etiket",""), +("160","settings","set_nomor_surat","000"), +("161","settings","password_expire","tidak"), +("162","farmasi","embalase","0"), +("163","farmasi","tuslah","0"), +("164","settings","log_query","tidak"), +("167","afm","password_finger",""), +("168","afm","x_header_token","X-Header-Token"), +("169","bpjs_emr","consid",""), +("170","bpjs_emr","secretkey",""), +("171","bpjs_emr","userkey",""), +("172","bpjs_emr","koders",""), +("173","bpjs_emr","kode_kemkes",""), +("174","bpjs_emr","kodepos",""), +("175","bpjs_emr","baseurl","https://apijkn-dev.bpjs-kesehatan.go.id/erekammedis_dev/"), +("176","dokter_ralan","set_sudah","tidak"), +("177","esignature","kode_berkasdigital",""), +("178","icare","url","https://apijkn.bpjs-kesehatan.go.id/wsihs/api/rs/validate"), +("179","icare","consid",""), +("180","icare","secretkey",""), +("181","icare","userkey",""), +("182","icare","urlPCare","https://apijkn.bpjs-kesehatan.go.id/wsihs/api/pcare/validate"), +("183","icare","usernameICare",""), +("184","icare","passwordICare",""), +("185","satu_sehat","organizationid",""), +("186","satu_sehat","clientid",""), +("187","satu_sehat","secretkey",""), +("188","satu_sehat","authurl","https://api-satusehat-dev.dto.kemkes.go.id/oauth2/v1"), +("189","satu_sehat","fhirurl","https://api-satusehat-dev.dto.kemkes.go.id/fhir-r4/v1"), +("190","satu_sehat","kelurahan",""), +("191","satu_sehat","kecamatan",""), +("192","satu_sehat","kabupaten",""), +("193","satu_sehat","propinsi",""), +("194","satu_sehat","kodepos",""), +("195","satu_sehat","longitude",""), +("196","satu_sehat","latitude",""), +("197","satu_sehat","zonawaktu","WIB"), +("198","satu_sehat","farmasi",""), +("199","satu_sehat","laboratorium",""), +("200","satu_sehat","radiologi",""), +("201","satu_sehat","praktisiapotek",""), +("202","satu_sehat","praktisilab",""), +("203","satu_sehat","praktisirad",""), +("205","sertisign","api_host","https://api-stag.sertisign.id/"), +("206","sertisign","api_key",""), +("207","veronisa","username",""), +("208","veronisa","password",""), +("209","veronisa","obat_kronis",""), +("210","veronisa","cons_id",""), +("211","veronisa","kode_ppk",""), +("212","veronisa","user_key",""), +("213","veronisa","secret_key",""), +("214","veronisa","bpjs_api_url",""), +("215","settings","login_otp", "tidak"), +("216","keuangan","akun_debet_kas","1101"), +("217","bpjs_emr","kecamatan",""), +("218","satu_sehat","imaging",""), +("219","farmasi","pajak_obat_persen","0"), +("220","settings","billing_parsial","false"); + CREATE TABLE `mlite_subrekening` ( `kd_rek` varchar(15) NOT NULL, @@ -2601,12 +3273,85 @@ CREATE TABLE `mlite_subrekening` ( KEY `kd_rek` (`kd_rek`), CONSTRAINT `mlite_subrekening_ibfk_1` FOREIGN KEY (`kd_rek`) REFERENCES `mlite_rekening` (`kd_rek`) ON UPDATE CASCADE, CONSTRAINT `mlite_subrekening_ibfk_2` FOREIGN KEY (`kd_rek2`) REFERENCES `mlite_rekening` (`kd_rek`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + +CREATE TABLE `mlite_snomed` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `kode` varchar(20) NOT NULL, + `istilah` text NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `kode` (`kode`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + +CREATE TABLE `mlite_surat_rujukan` ( + `id` int NOT NULL AUTO_INCREMENT, + `nomor_surat` varchar(100) DEFAULT NULL, + `no_rawat` varchar(100) DEFAULT NULL, + `no_rkm_medis` varchar(100) DEFAULT NULL, + `nm_pasien` varchar(100) DEFAULT NULL, + `tgl_lahir` varchar(100) DEFAULT NULL, + `umur` varchar(100) DEFAULT NULL, + `jk` varchar(100) DEFAULT NULL, + `alamat` TEXT DEFAULT NULL, + `kepada` varchar(250) DEFAULT NULL, + `di` varchar(250) DEFAULT NULL, + `anamnesa` varchar(100) DEFAULT NULL, + `pemeriksaan_fisik` varchar(100) DEFAULT NULL, + `pemeriksaan_penunjang` varchar(100) DEFAULT NULL, + `diagnosa` varchar(100) DEFAULT NULL, + `terapi` varchar(100) DEFAULT NULL, + `alasan_dirujuk` varchar(250) DEFAULT NULL, + `dokter` varchar(100) DEFAULT NULL, + `petugas` varchar(100) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_temporary -# ------------------------------------------------------------ +CREATE TABLE `mlite_surat_sakit` ( + `id` int NOT NULL AUTO_INCREMENT, + `nomor_surat` varchar(100) DEFAULT NULL, + `no_rawat` varchar(100) DEFAULT NULL, + `no_rkm_medis` varchar(100) DEFAULT NULL, + `nm_pasien` varchar(100) DEFAULT NULL, + `tgl_lahir` varchar(100) DEFAULT NULL, + `umur` varchar(100) DEFAULT NULL, + `jk` varchar(100) DEFAULT NULL, + `alamat` TEXT DEFAULT NULL, + `keadaan` varchar(100) DEFAULT NULL, + `diagnosa` varchar(100) DEFAULT NULL, + `lama_angka` varchar(100) DEFAULT NULL, + `lama_huruf` varchar(100) DEFAULT NULL, + `tanggal_mulai` varchar(100) DEFAULT NULL, + `tanggal_selesai` varchar(100) DEFAULT NULL, + `dokter` varchar(100) DEFAULT NULL, + `petugas` varchar(100) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `mlite_surat_sehat` ( + `id` int NOT NULL AUTO_INCREMENT, + `nomor_surat` varchar(100) DEFAULT NULL, + `no_rawat` varchar(100) DEFAULT NULL, + `no_rkm_medis` varchar(100) DEFAULT NULL, + `nm_pasien` varchar(100) DEFAULT NULL, + `tgl_lahir` varchar(100) DEFAULT NULL, + `umur` varchar(100) DEFAULT NULL, + `jk` varchar(100) DEFAULT NULL, + `alamat` TEXT DEFAULT NULL, + `tanggal` varchar(100) DEFAULT NULL, + `berat_badan` varchar(100) DEFAULT NULL, + `tinggi_badan` varchar(100) DEFAULT NULL, + `tensi` varchar(100) DEFAULT NULL, + `gol_darah` varchar(100) DEFAULT NULL, + `riwayat_penyakit` varchar(100) DEFAULT NULL, + `keperluan` varchar(100) DEFAULT NULL, + `dokter` varchar(100) DEFAULT NULL, + `petugas` varchar(100) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + CREATE TABLE `mlite_temporary` ( `temp1` text, @@ -2709,57 +3454,72 @@ CREATE TABLE `mlite_temporary` ( `temp98` text, `temp99` text, `temp100` text -) ENGINE=MyISAM DEFAULT CHARSET=latin1; +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; +CREATE TABLE `mlite_triase_igd` ( + `id_triase` int NOT NULL AUTO_INCREMENT, + `no_rawat` varchar(17) NOT NULL, + `no_rkm_medis` varchar(15) NOT NULL, + `tgl_triase` datetime NOT NULL, + `petugas_id` varchar(20) NOT NULL, + `kesadaran` enum('Compos Mentis','Apatis','Somnolen','Sopor','Koma') NOT NULL, + `airway` enum('Bebas','Sumbatan Parsial','Sumbatan Total') NOT NULL, + `breathing` enum('Spontan','Tak Spontan','Distres Nafas') NOT NULL, + `circulation` enum('Baik','Syok','Perdarahan') NOT NULL, + `tekanan_darah` varchar(10) DEFAULT NULL, + `nadi` int DEFAULT NULL, + `respirasi` int DEFAULT NULL, + `suhu` decimal(4,1) DEFAULT NULL, + `spo2` int DEFAULT NULL, + `gcs_e` tinyint DEFAULT NULL, + `gcs_v` tinyint DEFAULT NULL, + `gcs_m` tinyint DEFAULT NULL, + `kategori` enum('Merah','Kuning','Hijau','Hitam') NOT NULL, + `skala_triase` enum('1','2','3','4','5') DEFAULT NULL, + `keluhan_utama` text, + `diagnosa_awal` text, + `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id_triase`) USING BTREE, + KEY `no_rawat` (`no_rawat`) USING BTREE, + CONSTRAINT `fk_triase_reg_periksa` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_users -# ------------------------------------------------------------ CREATE TABLE `mlite_users` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `username` text, `fullname` text, `description` text, `password` text, + `password_changed_at` datetime DEFAULT NULL, + `otp_code` varchar(10) DEFAULT NULL, + `otp_expires` datetime DEFAULT NULL, `avatar` text, `email` text, `role` varchar(100) NOT NULL DEFAULT 'user', `cap` varchar(100) DEFAULT '', - `access` varchar(500) NOT NULL DEFAULT 'dashboard', + `access` TEXT, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4; -LOCK TABLES `mlite_users` WRITE; -/*!40000 ALTER TABLE `mlite_users` DISABLE KEYS */; -INSERT INTO `mlite_users` (`id`, `username`, `fullname`, `description`, `password`, `avatar`, `email`, `role`, `cap`, `access`) -VALUES - (1,'admin','Administrator','Admin ganteng baik hati, suka menabung dan tidak sombong.','$2y$10$pgRnDiukCbiYVqsamMM3ROWViSRqbyCCL33N8.ykBKZx0dlplXe9i','avatar6422cb573b50c.png','info@mlite.id','admin','','all'), - (2,'DR001','dr. Ataaka Muhammad','-','$2y$10$kuf2BxvViduBpUTn.6Nxsug3AskH/PGvXTSlfCfJqK8Ayb9a0.vqC','avatar643a104444515.png','info@mlite.id','admin','','all'); +INSERT INTO `mlite_users` VALUES ("1","admin","Administrator","Admin ganteng baik hati, suka menabung dan tidak sombong.","$2y$10$pgRnDiukCbiYVqsamMM3ROWViSRqbyCCL33N8.ykBKZx0dlplXe9i",NULL,NULL,NULL,"avatar6422cb573b50c.png","info@mlite.id","admin","","all"), +("2","DR001","dr. Ataaka Muhammad","-","$2y$10$kuf2BxvViduBpUTn.6Nxsug3AskH/PGvXTSlfCfJqK8Ayb9a0.vqC",NULL,NULL,NULL,"avatar643a104444515.png","info@mlite.id","admin","","all"); -/*!40000 ALTER TABLE `mlite_users` ENABLE KEYS */; -UNLOCK TABLES; - - -# Dump of table mlite_users_vedika -# ------------------------------------------------------------ CREATE TABLE `mlite_users_vedika` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `username` text, `password` text, `fullname` text, PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - - +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; -# Dump of table mlite_vedika -# ------------------------------------------------------------ CREATE TABLE `mlite_vedika` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `tanggal` date DEFAULT NULL, `no_rkm_medis` varchar(6) NOT NULL, `no_rawat` varchar(100) NOT NULL, @@ -2768,30 +3528,25 @@ CREATE TABLE `mlite_vedika` ( `jenis` varchar(100) NOT NULL, `status` varchar(100) NOT NULL, `username` varchar(100) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - + PRIMARY KEY (`id`), + KEY `idx_vedika_status_jenis_tgl` (`status`,`jenis`,`tgl_registrasi`), + KEY `idx_vedika_nosep` (`nosep`), + KEY `idx_vedika_no_rkm_medis` (`no_rkm_medis`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_vedika_feedback -# ------------------------------------------------------------ CREATE TABLE `mlite_vedika_feedback` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `nosep` varchar(100) NOT NULL, `tanggal` date DEFAULT NULL, `catatan` text, `username` varchar(100) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_veronisa -# ------------------------------------------------------------ CREATE TABLE `mlite_veronisa` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `tanggal` date DEFAULT NULL, `no_rkm_medis` varchar(6) NOT NULL, `no_rawat` varchar(100) NOT NULL, @@ -2799,27 +3554,22 @@ CREATE TABLE `mlite_veronisa` ( `nosep` varchar(100) NOT NULL, `status` varchar(100) NOT NULL, `username` varchar(100) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - + PRIMARY KEY (`id`), + KEY `idx_no_rawat` (`no_rawat`), + KEY `idx_status` (`status`), + KEY `idx_nosep` (`nosep`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mlite_veronisa_feedback -# ------------------------------------------------------------ CREATE TABLE `mlite_veronisa_feedback` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `nosep` varchar(100) NOT NULL, `tanggal` date DEFAULT NULL, `catatan` text, `username` varchar(100) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table mutasi_berkas -# ------------------------------------------------------------ CREATE TABLE `mutasi_berkas` ( `no_rawat` varchar(17) NOT NULL, @@ -2831,12 +3581,30 @@ CREATE TABLE `mutasi_berkas` ( `ranap` datetime NOT NULL, PRIMARY KEY (`no_rawat`), CONSTRAINT `mutasi_berkas_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `mutasibarang` ( + `kode_brng` varchar(15) NOT NULL, + `jml` double NOT NULL, + `harga` double NOT NULL, + `kd_bangsaldari` char(5) NOT NULL, + `kd_bangsalke` char(5) NOT NULL, + `tanggal` datetime NOT NULL, + `keterangan` varchar(60) NOT NULL, + `no_batch` varchar(20) NOT NULL, + `no_faktur` varchar(20) NOT NULL, + PRIMARY KEY (`kode_brng`,`kd_bangsaldari`,`kd_bangsalke`,`tanggal`,`no_batch`,`no_faktur`) USING BTREE, + KEY `kd_bangsaldari` (`kd_bangsaldari`) USING BTREE, + KEY `kd_bangsalke` (`kd_bangsalke`) USING BTREE, + KEY `jml` (`jml`) USING BTREE, + KEY `keterangan` (`keterangan`) USING BTREE, + KEY `kode_brng` (`kode_brng`) USING BTREE, + CONSTRAINT `mutasibarang_ibfk_1` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `mutasibarang_ibfk_2` FOREIGN KEY (`kd_bangsaldari`) REFERENCES `bangsal` (`kd_bangsal`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `mutasibarang_ibfk_3` FOREIGN KEY (`kd_bangsalke`) REFERENCES `bangsal` (`kd_bangsal`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table obat_racikan -# ------------------------------------------------------------ CREATE TABLE `obat_racikan` ( `tgl_perawatan` date NOT NULL, @@ -2845,7 +3613,7 @@ CREATE TABLE `obat_racikan` ( `no_racik` varchar(2) NOT NULL, `nama_racik` varchar(100) NOT NULL, `kd_racik` varchar(3) NOT NULL, - `jml_dr` int(11) NOT NULL, + `jml_dr` int NOT NULL, `aturan_pakai` varchar(150) NOT NULL, `keterangan` varchar(50) NOT NULL, PRIMARY KEY (`tgl_perawatan`,`jam`,`no_rawat`,`no_racik`), @@ -2854,12 +3622,8 @@ CREATE TABLE `obat_racikan` ( KEY `no_racik` (`no_racik`), CONSTRAINT `obat_racikan_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE, CONSTRAINT `obat_racikan_ibfk_2` FOREIGN KEY (`kd_racik`) REFERENCES `metode_racik` (`kd_racik`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table obatbhp_ok -# ------------------------------------------------------------ CREATE TABLE `obatbhp_ok` ( `kd_obat` varchar(15) NOT NULL, @@ -2871,12 +3635,8 @@ CREATE TABLE `obatbhp_ok` ( KEY `nm_obat` (`nm_obat`), KEY `hargasatuan` (`hargasatuan`), CONSTRAINT `obatbhp_ok_ibfk_1` FOREIGN KEY (`kode_sat`) REFERENCES `kodesatuan` (`kode_sat`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table operasi -# ------------------------------------------------------------ CREATE TABLE `operasi` ( `no_rawat` varchar(17) NOT NULL, @@ -2963,12 +3723,8 @@ CREATE TABLE `operasi` ( CONSTRAINT `operasi_ibfk_42` FOREIGN KEY (`bidan`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `operasi_ibfk_43` FOREIGN KEY (`perawat_luar`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `operasi_ibfk_44` FOREIGN KEY (`kode_paket`) REFERENCES `paket_operasi` (`kode_paket`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table opname -# ------------------------------------------------------------ CREATE TABLE `opname` ( `kode_brng` varchar(15) NOT NULL, @@ -2994,12 +3750,8 @@ CREATE TABLE `opname` ( KEY `kode_brng` (`kode_brng`) USING BTREE, CONSTRAINT `opname_ibfk_1` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `opname_ibfk_2` FOREIGN KEY (`kd_bangsal`) REFERENCES `bangsal` (`kd_bangsal`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table paket_operasi -# ------------------------------------------------------------ CREATE TABLE `paket_operasi` ( `kode_paket` varchar(15) NOT NULL, @@ -3066,13 +3818,9 @@ CREATE TABLE `paket_operasi` ( KEY `bidan2` (`bidan2`), KEY `bidan3` (`bidan3`), KEY `asisten_operator3_2` (`asisten_operator3`), - CONSTRAINT `paket_operasi_ibfk_1` FOREIGN KEY (`kd_pj`) REFERENCES `penjab` (`kd_pj`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - + CONSTRAINT `paket_operasi_ibfk_1` FOREIGN KEY (`kd_pj`) REFERENCES `penjab` (`kd_pj`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table pasien -# ------------------------------------------------------------ CREATE TABLE `pasien` ( `no_rkm_medis` varchar(15) NOT NULL, @@ -3095,21 +3843,21 @@ CREATE TABLE `pasien` ( `namakeluarga` varchar(50) NOT NULL, `kd_pj` char(3) NOT NULL, `no_peserta` varchar(25) DEFAULT NULL, - `kd_kel` int(11) NOT NULL, - `kd_kec` int(11) NOT NULL, - `kd_kab` int(11) NOT NULL, + `kd_kel` varchar(100) NOT NULL, + `kd_kec` int NOT NULL, + `kd_kab` int NOT NULL, `pekerjaanpj` varchar(35) NOT NULL, `alamatpj` varchar(100) NOT NULL, `kelurahanpj` varchar(60) NOT NULL, `kecamatanpj` varchar(60) NOT NULL, `kabupatenpj` varchar(60) NOT NULL, `perusahaan_pasien` varchar(8) NOT NULL, - `suku_bangsa` int(11) NOT NULL, - `bahasa_pasien` int(11) NOT NULL, - `cacat_fisik` int(11) NOT NULL, + `suku_bangsa` int NOT NULL, + `bahasa_pasien` int NOT NULL, + `cacat_fisik` int NOT NULL, `email` varchar(50) NOT NULL, `nip` varchar(30) NOT NULL, - `kd_prop` int(11) NOT NULL, + `kd_prop` int NOT NULL, `propinsipj` varchar(30) NOT NULL, PRIMARY KEY (`no_rkm_medis`), KEY `kd_pj` (`kd_pj`), @@ -3133,15 +3881,11 @@ CREATE TABLE `pasien` ( CONSTRAINT `pasien_ibfk_7` FOREIGN KEY (`bahasa_pasien`) REFERENCES `bahasa_pasien` (`id`) ON UPDATE CASCADE, CONSTRAINT `pasien_ibfk_8` FOREIGN KEY (`cacat_fisik`) REFERENCES `cacat_fisik` (`id`) ON UPDATE CASCADE, CONSTRAINT `pasien_ibfk_9` FOREIGN KEY (`kd_prop`) REFERENCES `propinsi` (`kd_prop`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table pegawai -# ------------------------------------------------------------ CREATE TABLE `pegawai` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `nik` varchar(20) NOT NULL, `nama` varchar(50) NOT NULL, `jk` enum('Pria','Wanita') NOT NULL, @@ -3167,13 +3911,13 @@ CREATE TABLE `pegawai` ( `bpd` varchar(50) NOT NULL, `rekening` varchar(25) NOT NULL, `stts_aktif` enum('AKTIF','CUTI','KELUAR','TENAGA LUAR') NOT NULL, - `wajibmasuk` tinyint(2) NOT NULL, + `wajibmasuk` tinyint NOT NULL, `pengurang` double NOT NULL, - `indek` tinyint(4) NOT NULL, + `indek` tinyint NOT NULL, `mulai_kontrak` date DEFAULT NULL, - `cuti_diambil` int(11) NOT NULL, + `cuti_diambil` int NOT NULL, `dankes` double NOT NULL, - `photo` varchar(500) DEFAULT NULL, + `photo` TEXT DEFAULT NULL, `no_ktp` varchar(20) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `nik_2` (`nik`), @@ -3218,21 +3962,11 @@ CREATE TABLE `pegawai` ( CONSTRAINT `pegawai_ibfk_7` FOREIGN KEY (`indexins`) REFERENCES `departemen` (`dep_id`) ON UPDATE CASCADE, CONSTRAINT `pegawai_ibfk_8` FOREIGN KEY (`bpd`) REFERENCES `bank` (`namabank`) ON UPDATE CASCADE, CONSTRAINT `pegawai_ibfk_9` FOREIGN KEY (`kode_emergency`) REFERENCES `emergency_index` (`kode_emergency`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `pegawai` WRITE; -/*!40000 ALTER TABLE `pegawai` DISABLE KEYS */; - -INSERT INTO `pegawai` (`id`, `nik`, `nama`, `jk`, `jbtn`, `jnj_jabatan`, `kode_kelompok`, `kode_resiko`, `kode_emergency`, `departemen`, `bidang`, `stts_wp`, `stts_kerja`, `npwp`, `pendidikan`, `gapok`, `tmp_lahir`, `tgl_lahir`, `alamat`, `kota`, `mulai_kerja`, `ms_kerja`, `indexins`, `bpd`, `rekening`, `stts_aktif`, `wajibmasuk`, `pengurang`, `indek`, `mulai_kontrak`, `cuti_diambil`, `dankes`, `photo`, `no_ktp`) -VALUES - (1,'DR001','dr. Ataaka Muhammad','Pria','-','-','-','-','-','-','-','-','-','-','-',0,'Barabai','2016-06-10','-','Barabai','2019-09-18','<1','-','-','-','AKTIF',0,0,0,'2019-09-18',1,0,'-','0'); +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `pegawai` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `pegawai` VALUES ("1","DR001","dr. Ataaka Muhammad","Pria","-","-","-","-","-","-","-","-","-","-","-","0","Barabai","2016-06-10","-","Barabai","2019-09-18","<1","-","-","-","AKTIF","0","0","0","2019-09-18","1","0","-","0"); -# Dump of table pemeliharaan_inventaris -# ------------------------------------------------------------ CREATE TABLE `pemeliharaan_inventaris` ( `no_inventaris` varchar(30) NOT NULL, @@ -3246,12 +3980,8 @@ CREATE TABLE `pemeliharaan_inventaris` ( KEY `nip` (`nip`), CONSTRAINT `pemeliharaan_inventaris_ibfk_1` FOREIGN KEY (`no_inventaris`) REFERENCES `inventaris` (`no_inventaris`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `pemeliharaan_inventaris_ibfk_2` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table pemeriksaan_ralan -# ------------------------------------------------------------ CREATE TABLE `pemeriksaan_ralan` ( `no_rawat` varchar(17) NOT NULL, @@ -3266,26 +3996,22 @@ CREATE TABLE `pemeriksaan_ralan` ( `spo2` varchar(3) NOT NULL, `gcs` varchar(10) DEFAULT NULL, `kesadaran` enum('Compos Mentis','Somnolence','Sopor','Coma') NOT NULL, - `keluhan` varchar(2000) DEFAULT NULL, - `pemeriksaan` varchar(2000) DEFAULT NULL, + `keluhan` TEXT DEFAULT NULL, + `pemeriksaan` TEXT DEFAULT NULL, `alergi` varchar(50) DEFAULT NULL, `lingkar_perut` varchar(5) DEFAULT NULL, - `rtl` varchar(2000) NOT NULL, - `penilaian` varchar(2000) NOT NULL, - `instruksi` varchar(2000) NOT NULL, - `evaluasi` varchar(2000) NOT NULL, + `rtl` TEXT NOT NULL, + `penilaian` TEXT NOT NULL, + `instruksi` TEXT NOT NULL, + `evaluasi` TEXT NOT NULL, `nip` varchar(20) NOT NULL, PRIMARY KEY (`no_rawat`,`tgl_perawatan`,`jam_rawat`) USING BTREE, KEY `no_rawat` (`no_rawat`), KEY `nip` (`nip`) USING BTREE, CONSTRAINT `pemeriksaan_ralan_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `pemeriksaan_ralan_ibfk_2` FOREIGN KEY (`nip`) REFERENCES `pegawai` (`nik`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table pemeriksaan_ranap -# ------------------------------------------------------------ CREATE TABLE `pemeriksaan_ranap` ( `no_rawat` varchar(17) NOT NULL, @@ -3300,48 +4026,425 @@ CREATE TABLE `pemeriksaan_ranap` ( `spo2` varchar(3) NOT NULL, `gcs` varchar(10) DEFAULT NULL, `kesadaran` enum('Compos Mentis','Somnolence','Sopor','Coma') NOT NULL, - `keluhan` varchar(2000) DEFAULT NULL, - `pemeriksaan` varchar(2000) DEFAULT NULL, + `keluhan` TEXT DEFAULT NULL, + `pemeriksaan` TEXT DEFAULT NULL, `alergi` varchar(50) DEFAULT NULL, - `penilaian` varchar(2000) NOT NULL, - `rtl` varchar(2000) NOT NULL, - `instruksi` varchar(2000) NOT NULL, - `evaluasi` varchar(2000) NOT NULL, + `penilaian` TEXT NOT NULL, + `rtl` TEXT NOT NULL, + `instruksi` TEXT NOT NULL, + `evaluasi` TEXT NOT NULL, `nip` varchar(20) NOT NULL, PRIMARY KEY (`no_rawat`,`tgl_perawatan`,`jam_rawat`), KEY `no_rawat` (`no_rawat`), KEY `nip` (`nip`), CONSTRAINT `pemeriksaan_ranap_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `pemeriksaan_ranap_ibfk_2` FOREIGN KEY (`nip`) REFERENCES `pegawai` (`nik`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table pendidikan -# ------------------------------------------------------------ CREATE TABLE `pendidikan` ( `tingkat` varchar(80) NOT NULL, - `indek` tinyint(4) NOT NULL, + `indek` tinyint NOT NULL, `gapok1` double NOT NULL, `kenaikan` double NOT NULL, - `maksimal` int(11) NOT NULL, + `maksimal` int NOT NULL, PRIMARY KEY (`tingkat`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +INSERT INTO `pendidikan` VALUES ("-","1","0","0","1"); + + +CREATE TABLE `penilaian_awal_keperawatan_igd` ( + `no_rawat` varchar(17) NOT NULL, + `tanggal` datetime NOT NULL, + `informasi` enum('Autoanamnesis','Alloanamnesis') NOT NULL, + `keluhan_utama` text NOT NULL, + `rpd` text NOT NULL, + `rpo` text NOT NULL, + `status_kehamilan` enum('Tidak Hamil','Hamil') NOT NULL, + `gravida` varchar(20) DEFAULT NULL, + `para` varchar(20) DEFAULT NULL, + `abortus` varchar(20) DEFAULT NULL, + `hpht` varchar(20) DEFAULT NULL, + `tekanan` enum('TAK','Sakit Kepala','Muntah','Pusing','Bingung') NOT NULL, + `pupil` enum('Normal','Miosis','Isokor','Anisokor') NOT NULL, + `neurosensorik` enum('TAK','Spasme Otot','Perubahan Sensorik','Perubahan Motorik','Perubahan Bentuk Ekstremitas','Penurunan Tingkat Kesadaran','Fraktur/Dislokasi','Luksasio','Kerusakan Jaringan/Luka') NOT NULL, + `integumen` enum('TAK','Luka Bakar','Luka Robek','Lecet','Luka Decubitus','Luka Gangren') NOT NULL, + `turgor` enum('Baik','Menurun') NOT NULL, + `edema` enum('Tidak Ada','Ekstremitas','Seluruh Tubuh','Asites','Palpebrae') NOT NULL, + `mukosa` enum('Lembab','Kering') NOT NULL, + `perdarahan` enum('Tidak Ada','Ada') NOT NULL, + `jumlah_perdarahan` char(5) DEFAULT NULL, + `warna_perdarahan` varchar(40) DEFAULT '', + `intoksikasi` enum('Tidak Ada','Ada','Gigitan Binatang','Zat Kimia','Gas','Obat') NOT NULL, + `bab` char(2) DEFAULT NULL, + `xbab` varchar(10) DEFAULT NULL, + `kbab` varchar(40) DEFAULT NULL, + `wbab` varchar(40) DEFAULT NULL, + `bak` char(2) DEFAULT NULL, + `xbak` varchar(10) DEFAULT NULL, + `wbak` varchar(40) DEFAULT '', + `lbak` varchar(40) DEFAULT '', + `psikologis` enum('Tidak Ada Masalah','Marah','Takut','Depresi','Cepat Lelah','Cemas','Gelisah','Lain-lain') NOT NULL, + `jiwa` enum('Ya','Tidak') NOT NULL, + `perilaku` enum('Perilaku Kekerasan','Gangguan Efek','Gangguan Memori','Halusinasi','Kecenderungan Percobaan Bunuh Diri','Lainnya','-') NOT NULL, + `dilaporkan` varchar(50) DEFAULT NULL, + `sebutkan` varchar(50) DEFAULT NULL, + `hubungan` enum('Harmonis','Kurang Harmonis','Tidak Harmonis','Konflik Besar') NOT NULL, + `tinggal_dengan` enum('Sendiri','Orang Tua','Suami / Istri','Lainnya') NOT NULL, + `ket_tinggal` varchar(50) DEFAULT '', + `budaya` enum('Tidak Ada','Ada') NOT NULL, + `ket_budaya` varchar(50) NOT NULL, + `pendidikan_pj` enum('-','TS','TK','SD','SMP','SMA','SLTA/SEDERAJAT','D1','D2','D3','D4','S1','S2','S3') NOT NULL, + `ket_pendidikan_pj` varchar(50) DEFAULT NULL, + `edukasi` enum('Pasien','Keluarga') NOT NULL, + `ket_edukasi` varchar(50) NOT NULL, + `kemampuan` enum('Mandiri','Bantuan Minimal','Bantuan Sebagian','Ketergantungan Total') NOT NULL, + `aktifitas` enum('Tirah Baring','Duduk','Berjalan') NOT NULL, + `alat_bantu` enum('Tidak','Ya') NOT NULL, + `ket_bantu` varchar(50) DEFAULT '', + `nyeri` enum('Tidak Ada Nyeri','Nyeri Akut','Nyeri Kronis') NOT NULL, + `provokes` enum('Proses Penyakit','Benturan','Lain-lain') NOT NULL, + `ket_provokes` varchar(40) NOT NULL, + `quality` enum('Seperti Tertusuk','Berdenyut','Teriris','Tertindih','Tertiban','Lain-lain') NOT NULL, + `ket_quality` varchar(50) NOT NULL, + `lokasi` varchar(50) NOT NULL, + `menyebar` enum('Tidak','Ya') NOT NULL, + `skala_nyeri` enum('0','1','2','3','4','5','6','7','8','9','10') NOT NULL, + `durasi` varchar(25) NOT NULL, + `nyeri_hilang` enum('Istirahat','Medengar Musik','Minum Obat') NOT NULL, + `ket_nyeri` varchar(40) DEFAULT NULL, + `pada_dokter` enum('Tidak','Ya') NOT NULL, + `ket_dokter` varchar(15) DEFAULT NULL, + `berjalan_a` enum('Ya','Tidak') NOT NULL, + `berjalan_b` enum('Ya','Tidak') NOT NULL, + `berjalan_c` enum('Ya','Tidak') NOT NULL, + `hasil` enum('Tidak beresiko (tidak ditemukan a dan b)','Resiko rendah (ditemukan a/b)','Resiko tinggi (ditemukan a dan b)') NOT NULL, + `lapor` enum('Ya','Tidak') NOT NULL, + `ket_lapor` varchar(15) DEFAULT NULL, + `rencana` text NOT NULL, + `nip` varchar(20) NOT NULL, + PRIMARY KEY (`no_rawat`) USING BTREE, + KEY `nip` (`nip`) USING BTREE, + CONSTRAINT `penilaian_awal_keperawatan_igd_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `penilaian_awal_keperawatan_igd_ibfk_2` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `penilaian_awal_keperawatan_ralan` ( + `no_rawat` varchar(17) NOT NULL, + `tanggal` datetime NOT NULL, + `informasi` enum('Autoanamnesis','Alloanamnesis') NOT NULL, + `td` varchar(8) NOT NULL DEFAULT '', + `nadi` varchar(5) NOT NULL DEFAULT '', + `rr` varchar(5) NOT NULL, + `suhu` varchar(5) NOT NULL DEFAULT '', + `gcs` varchar(5) NOT NULL, + `bb` varchar(5) NOT NULL DEFAULT '', + `tb` varchar(5) NOT NULL DEFAULT '', + `bmi` varchar(10) NOT NULL, + `keluhan_utama` varchar(150) NOT NULL DEFAULT '', + `rpd` varchar(100) NOT NULL DEFAULT '', + `rpk` varchar(100) NOT NULL, + `rpo` varchar(100) NOT NULL, + `alergi` varchar(25) NOT NULL DEFAULT '', + `alat_bantu` enum('Tidak','Ya') NOT NULL, + `ket_bantu` varchar(50) NOT NULL DEFAULT '', + `prothesa` enum('Tidak','Ya') NOT NULL, + `ket_pro` varchar(50) NOT NULL, + `adl` enum('Mandiri','Dibantu') NOT NULL, + `status_psiko` enum('Tenang','Takut','Cemas','Depresi','Lain-lain') NOT NULL, + `ket_psiko` varchar(70) NOT NULL, + `hub_keluarga` enum('Baik','Tidak Baik') NOT NULL, + `tinggal_dengan` enum('Sendiri','Orang Tua','Suami / Istri','Lainnya') NOT NULL, + `ket_tinggal` varchar(40) NOT NULL, + `ekonomi` enum('Baik','Cukup','Kurang') NOT NULL, + `budaya` enum('Tidak Ada','Ada') NOT NULL, + `ket_budaya` varchar(50) NOT NULL, + `edukasi` enum('Pasien','Keluarga') NOT NULL, + `ket_edukasi` varchar(50) NOT NULL, + `berjalan_a` enum('Ya','Tidak') NOT NULL, + `berjalan_b` enum('Ya','Tidak') NOT NULL, + `berjalan_c` enum('Ya','Tidak') NOT NULL, + `hasil` enum('Tidak beresiko (tidak ditemukan a dan b)','Resiko rendah (ditemukan a/b)','Resiko tinggi (ditemukan a dan b)') NOT NULL, + `lapor` enum('Ya','Tidak') NOT NULL, + `ket_lapor` varchar(15) NOT NULL, + `sg1` enum('Tidak','Tidak Yakin','Ya, 1-5 Kg','Ya, 6-10 Kg','Ya, 11-15 Kg','Ya, >15 Kg') NOT NULL, + `nilai1` enum('0','1','2','3','4') NOT NULL, + `sg2` enum('Ya','Tidak') NOT NULL, + `nilai2` enum('0','1') NOT NULL, + `total_hasil` tinyint NOT NULL, + `nyeri` enum('Tidak Ada Nyeri','Nyeri Akut','Nyeri Kronis') NOT NULL, + `provokes` enum('Proses Penyakit','Benturan','Lain-lain') NOT NULL, + `ket_provokes` varchar(40) NOT NULL, + `quality` enum('Seperti Tertusuk','Berdenyut','Teriris','Tertindih','Tertiban','Lain-lain') NOT NULL, + `ket_quality` varchar(50) NOT NULL, + `lokasi` varchar(50) NOT NULL, + `menyebar` enum('Tidak','Ya') NOT NULL, + `skala_nyeri` enum('0','1','2','3','4','5','6','7','8','9','10') NOT NULL, + `durasi` varchar(25) NOT NULL, + `nyeri_hilang` enum('Istirahat','Medengar Musik','Minum Obat') NOT NULL, + `ket_nyeri` varchar(40) NOT NULL, + `pada_dokter` enum('Tidak','Ya') NOT NULL, + `ket_dokter` varchar(15) NOT NULL, + `rencana` varchar(200) NOT NULL, + `nip` varchar(20) NOT NULL, + PRIMARY KEY (`no_rawat`) USING BTREE, + KEY `nip` (`nip`) USING BTREE, + CONSTRAINT `penilaian_awal_keperawatan_ralan_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `penilaian_awal_keperawatan_ralan_ibfk_2` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -LOCK TABLES `pendidikan` WRITE; -/*!40000 ALTER TABLE `pendidikan` DISABLE KEYS */; -INSERT INTO `pendidikan` (`tingkat`, `indek`, `gapok1`, `kenaikan`, `maksimal`) -VALUES - ('-',1,0,0,1); +CREATE TABLE `penilaian_awal_keperawatan_ranap` ( + `no_rawat` varchar(17) NOT NULL, + `tanggal` datetime NOT NULL, + `informasi` enum('Autoanamnesis','Alloanamnesis') NOT NULL, + `ket_informasi` varchar(30) NOT NULL, + `tiba_diruang_rawat` enum('Jalan Tanpa Bantuan','Kursi Roda','Brankar') NOT NULL, + `kasus_trauma` enum('Trauma','Non Trauma') DEFAULT NULL, + `cara_masuk` enum('Poli','IGD','Lain-lain') NOT NULL, + `rps` TEXT NOT NULL, + `rpd` TEXT NOT NULL, + `rpk` TEXT NOT NULL, + `rpo` TEXT NOT NULL, + `riwayat_pembedahan` TEXT NOT NULL, + `riwayat_dirawat_dirs` TEXT NOT NULL, + `alat_bantu_dipakai` enum('Kacamata','Prothesa','Alat Bantu Dengar','Lain-lain') NOT NULL, + `riwayat_kehamilan` enum('Tidak','Ya') NOT NULL, + `riwayat_kehamilan_perkiraan` TEXT NOT NULL, + `riwayat_tranfusi` TEXT NOT NULL, + `riwayat_alergi` TEXT NOT NULL, + `riwayat_merokok` enum('Tidak','Ya') NOT NULL, + `riwayat_merokok_jumlah` varchar(5) NOT NULL, + `riwayat_alkohol` enum('Tidak','Ya') NOT NULL, + `riwayat_alkohol_jumlah` varchar(5) NOT NULL, + `riwayat_narkoba` enum('Tidak','Ya') NOT NULL, + `riwayat_olahraga` enum('Tidak','Ya') NOT NULL, + `pemeriksaan_mental` TEXT NOT NULL, + `pemeriksaan_keadaan_umum` enum('Baik','Sedang','Buruk') NOT NULL, + `pemeriksaan_gcs` varchar(10) NOT NULL, + `pemeriksaan_td` varchar(8) NOT NULL, + `pemeriksaan_nadi` varchar(5) NOT NULL, + `pemeriksaan_rr` varchar(5) NOT NULL, + `pemeriksaan_suhu` varchar(5) NOT NULL, + `pemeriksaan_spo2` varchar(5) NOT NULL, + `pemeriksaan_bb` varchar(5) NOT NULL, + `pemeriksaan_tb` varchar(5) NOT NULL, + `pemeriksaan_susunan_kepala` enum('TAK','Hydrocephalus','Hematoma','Lain-lain') NOT NULL, + `pemeriksaan_susunan_kepala_keterangan` TEXT NOT NULL, + `pemeriksaan_susunan_wajah` enum('TAK','Asimetris','Kelainan Kongenital') NOT NULL, + `pemeriksaan_susunan_wajah_keterangan` TEXT NOT NULL, + `pemeriksaan_susunan_leher` enum('TAK','Kaku Kuduk','Pembesaran Thyroid','Pembesaran KGB') NOT NULL, + `pemeriksaan_susunan_kejang` enum('TAK','Kuat','Ada') NOT NULL, + `pemeriksaan_susunan_kejang_keterangan` TEXT NOT NULL, + `pemeriksaan_susunan_sensorik` enum('TAK','Sakit Nyeri','Rasa kebas') NOT NULL, + `pemeriksaan_kardiovaskuler_denyut_nadi` enum('Teratur','Tidak Teratur') NOT NULL, + `pemeriksaan_kardiovaskuler_sirkulasi` enum('Akral Hangat','Akral Dingin','Edema') NOT NULL, + `pemeriksaan_kardiovaskuler_sirkulasi_keterangan` TEXT NOT NULL, + `pemeriksaan_kardiovaskuler_pulsasi` enum('Kuat','Lemah','Lain-lain') NOT NULL, + `pemeriksaan_respirasi_pola_nafas` enum('Normal','Bradipnea','Tachipnea') NOT NULL, + `pemeriksaan_respirasi_retraksi` enum('Tidak Ada','Ringan','Berat') NOT NULL, + `pemeriksaan_respirasi_suara_nafas` enum('Vesikuler','Wheezing','Rhonki') NOT NULL, + `pemeriksaan_respirasi_volume_pernafasan` enum('Normal','Hiperventilasi','Hipoventilasi') NOT NULL, + `pemeriksaan_respirasi_jenis_pernafasan` enum('Pernafasan Dada','Alat Bantu Pernafasaan') NOT NULL, + `pemeriksaan_respirasi_jenis_pernafasan_keterangan` TEXT NOT NULL, + `pemeriksaan_respirasi_irama_nafas` enum('Teratur','Tidak Teratur') NOT NULL, + `pemeriksaan_respirasi_batuk` enum('Tidak','Ya : Produktif','Ya : Non Produktif') NOT NULL, + `pemeriksaan_gastrointestinal_mulut` enum('TAK','Stomatitis','Mukosa Kering','Bibir Pucat','Lain-lain') NOT NULL, + `pemeriksaan_gastrointestinal_mulut_keterangan` TEXT NOT NULL, + `pemeriksaan_gastrointestinal_gigi` enum('TAK','Karies','Goyang','Lain-lain') NOT NULL, + `pemeriksaan_gastrointestinal_gigi_keterangan` TEXT NOT NULL, + `pemeriksaan_gastrointestinal_lidah` enum('TAK','Kotor','Gerak Asimetris','Lain-lain') NOT NULL, + `pemeriksaan_gastrointestinal_lidah_keterangan` TEXT NOT NULL, + `pemeriksaan_gastrointestinal_tenggorokan` enum('TAK','Gangguan Menelan','Sakit Menelan','Lain-lain') NOT NULL, + `pemeriksaan_gastrointestinal_tenggorokan_keterangan` TEXT NOT NULL, + `pemeriksaan_gastrointestinal_abdomen` enum('Supel','Asictes',' Tegang','Nyeri Tekan/Lepas','Lain-lain') NOT NULL, + `pemeriksaan_gastrointestinal_abdomen_keterangan` TEXT NOT NULL, + `pemeriksaan_gastrointestinal_peistatik_usus` enum('TAK','Tidak Ada Bising Usus','Hiperistaltik') NOT NULL, + `pemeriksaan_gastrointestinal_anus` enum('TAK','Atresia Ani') NOT NULL, + `pemeriksaan_neurologi_pengelihatan` enum('TAK','Ada Kelainan') NOT NULL, + `pemeriksaan_neurologi_pengelihatan_keterangan` TEXT NOT NULL, + `pemeriksaan_neurologi_alat_bantu_penglihatan` enum('Tidak','Kacamata','Lensa Kontak') NOT NULL, + `pemeriksaan_neurologi_pendengaran` enum('TAK','Berdengung','Nyeri','Tuli','Keluar Cairan','Lain-lain') NOT NULL, + `pemeriksaan_neurologi_bicara` enum('Jelas','Tidak Jelas') NOT NULL, + `pemeriksaan_neurologi_bicara_keterangan` TEXT NOT NULL, + `pemeriksaan_neurologi_sensorik` enum('TAK','Sakit Nyeri','Rasa Kebas','Lain-lain') NOT NULL, + `pemeriksaan_neurologi_motorik` enum('TAK','Hemiparese','Tetraparese','Tremor','Lain-lain') NOT NULL, + `pemeriksaan_neurologi_kekuatan_otot` enum('Kuat','Lemah') NOT NULL, + `pemeriksaan_integument_warnakulit` enum('Pucat','Sianosis','Normal','Lain-lain') NOT NULL, + `pemeriksaan_integument_turgor` enum('Baik','Sedang','Buruk') NOT NULL, + `pemeriksaan_integument_kulit` enum('Normal','Rash/Kemerahan','Luka','Memar','Ptekie','Bula') NOT NULL, + `pemeriksaan_integument_dekubitas` enum('Tidak Ada','Usia > 65 tahun','Obesitas','Imobilisasi','Paraplegi/Vegetative State','Dirawat Di HCU','Penyakit Kronis (DM, CHF, CKD)','Inkontinentia Uri/Alvi') NOT NULL, + `pemeriksaan_muskuloskletal_pergerakan_sendi` enum('Bebas','Terbatas') NOT NULL, + `pemeriksaan_muskuloskletal_kekauatan_otot` enum('Baik','Lemah','Tremor') NOT NULL, + `pemeriksaan_muskuloskletal_nyeri_sendi` enum('Tidak Ada','Ada') NOT NULL, + `pemeriksaan_muskuloskletal_nyeri_sendi_keterangan` TEXT NOT NULL, + `pemeriksaan_muskuloskletal_oedema` enum('Tidak Ada','Ada') NOT NULL, + `pemeriksaan_muskuloskletal_oedema_keterangan` TEXT NOT NULL, + `pemeriksaan_muskuloskletal_fraktur` enum('Tidak Ada','Ada') NOT NULL, + `pemeriksaan_muskuloskletal_fraktur_keterangan` TEXT NOT NULL, + `pemeriksaan_eliminasi_bab_frekuensi_jumlah` varchar(5) NOT NULL, + `pemeriksaan_eliminasi_bab_frekuensi_durasi` varchar(10) NOT NULL, + `pemeriksaan_eliminasi_bab_konsistensi` varchar(30) NOT NULL, + `pemeriksaan_eliminasi_bab_warna` varchar(30) NOT NULL, + `pemeriksaan_eliminasi_bak_frekuensi_jumlah` varchar(5) NOT NULL, + `pemeriksaan_eliminasi_bak_frekuensi_durasi` varchar(10) NOT NULL, + `pemeriksaan_eliminasi_bak_warna` varchar(30) NOT NULL, + `pemeriksaan_eliminasi_bak_lainlain` varchar(30) NOT NULL, + `pola_aktifitas_makanminum` enum('Mandiri','Bantuan Orang Lain') NOT NULL, + `pola_aktifitas_mandi` enum('Mandiri','Bantuan Orang Lain') NOT NULL, + `pola_aktifitas_eliminasi` enum('Mandiri','Bantuan Orang Lain') NOT NULL, + `pola_aktifitas_berpakaian` enum('Mandiri','Bantuan Orang Lain') NOT NULL, + `pola_aktifitas_berpindah` enum('Mandiri','Bantuan Orang Lain') NOT NULL, + `pola_nutrisi_frekuesi_makan` varchar(3) NOT NULL, + `pola_nutrisi_jenis_makanan` varchar(20) NOT NULL, + `pola_nutrisi_porsi_makan` varchar(3) NOT NULL, + `pola_tidur_lama_tidur` varchar(3) NOT NULL, + `pola_tidur_gangguan` enum('Tidak Ada Gangguan','Insomnia') NOT NULL, + `pengkajian_fungsi_kemampuan_sehari` enum('Mandiri','Bantuan Minimal','Bantuan Sebagian','Ketergantungan Total') NOT NULL, + `pengkajian_fungsi_aktifitas` enum('Tirah Baring','Duduk','Berjalan') NOT NULL, + `pengkajian_fungsi_berjalan` enum('TAK','Penurunan Kekuatan/ROM','Paralisis','Sering Jatuh','Deformitas','Hilang Keseimbangan','Riwayat Patah Tulang','Lain-lain') NOT NULL, + `pengkajian_fungsi_berjalan_keterangan` TEXT NOT NULL, + `pengkajian_fungsi_ambulasi` enum('Walker','Tongkat','Kursi Roda','Tidak Menggunakan') NOT NULL, + `pengkajian_fungsi_ekstrimitas_atas` enum('TAK','Lemah','Oedema','Tidak Simetris','Lain-lain') NOT NULL, + `pengkajian_fungsi_ekstrimitas_atas_keterangan` TEXT NOT NULL, + `pengkajian_fungsi_ekstrimitas_bawah` enum('TAK','Varises','Oedema','Tidak Simetris','Lain-lain') NOT NULL, + `pengkajian_fungsi_ekstrimitas_bawah_keterangan` TEXT NOT NULL, + `pengkajian_fungsi_menggenggam` enum('Tidak Ada Kesulitan','Terakhir','Lain-lain') NOT NULL, + `pengkajian_fungsi_menggenggam_keterangan` TEXT NOT NULL, + `pengkajian_fungsi_koordinasi` enum('Tidak Ada Kesulitan','Ada Masalah') NOT NULL, + `pengkajian_fungsi_koordinasi_keterangan` TEXT NOT NULL, + `pengkajian_fungsi_kesimpulan` enum('Ya (Co DPJP)','Tidak (Tidak Perlu Co DPJP)') NOT NULL, + `riwayat_psiko_kondisi_psiko` enum('Tidak Ada Masalah','Marah','Takut','Depresi','Cepat Lelah','Cemas','Gelisah','Sulit Tidur','Lain-lain') NOT NULL, + `riwayat_psiko_gangguan_jiwa` enum('Ya','Tidak') NOT NULL, + `riwayat_psiko_perilaku` enum('Tidak Ada Masalah','Perilaku Kekerasan','Gangguan Efek','Gangguan Memori','Halusinasi','Kecenderungan Percobaan Bunuh Diri','Lain-lain') NOT NULL, + `riwayat_psiko_perilaku_keterangan` TEXT NOT NULL, + `riwayat_psiko_hubungan_keluarga` enum('Harmonis','Kurang Harmonis','Tidak Harmonis','Konflik Besar') NOT NULL, + `riwayat_psiko_tinggal` enum('Sendiri','Orang Tua','Suami/Istri','Keluarga','Lain-lain') NOT NULL, + `riwayat_psiko_tinggal_keterangan` TEXT NOT NULL, + `riwayat_psiko_nilai_kepercayaan` enum('Tidak Ada','Ada') NOT NULL, + `riwayat_psiko_nilai_kepercayaan_keterangan` TEXT NOT NULL, + `riwayat_psiko_pendidikan_pj` enum('-','TS','TK','SD','SMP','SMA','SLTA/SEDERAJAT','D1','D2','D3','D4','S1','S2','S3') NOT NULL, + `riwayat_psiko_edukasi_diberikan` enum('Pasien','Keluarga') NOT NULL, + `riwayat_psiko_edukasi_diberikan_keterangan` TEXT NOT NULL, + `penilaian_nyeri` enum('Tidak Ada Nyeri','Nyeri Akut','Nyeri Kronis') NOT NULL, + `penilaian_nyeri_penyebab` enum('Proses Penyakit','Benturan','Lain-lain') NOT NULL, + `penilaian_nyeri_ket_penyebab` TEXT NOT NULL, + `penilaian_nyeri_kualitas` enum('Seperti Tertusuk','Berdenyut','Teriris','Tertindih','Tertiban','Lain-lain') NOT NULL, + `penilaian_nyeri_ket_kualitas` TEXT NOT NULL, + `penilaian_nyeri_lokasi` TEXT NOT NULL, + `penilaian_nyeri_menyebar` enum('Tidak','Ya') NOT NULL, + `penilaian_nyeri_skala` enum('0','1','2','3','4','5','6','7','8','9','10') NOT NULL, + `penilaian_nyeri_waktu` varchar(5) NOT NULL, + `penilaian_nyeri_hilang` enum('Istirahat','Medengar Musik','Minum Obat') NOT NULL, + `penilaian_nyeri_ket_hilang` TEXT NOT NULL, + `penilaian_nyeri_diberitahukan_dokter` enum('Tidak','Ya') NOT NULL, + `penilaian_nyeri_jam_diberitahukan_dokter` varchar(10) NOT NULL, + `penilaian_jatuhmorse_skala1` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhmorse_nilai1` tinyint DEFAULT NULL, + `penilaian_jatuhmorse_skala2` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhmorse_nilai2` tinyint DEFAULT NULL, + `penilaian_jatuhmorse_skala3` enum('Tidak Ada/Kursi Roda/Perawat/Tirah Baring','Tongkat/Alat Penopang','Berpegangan Pada Perabot') DEFAULT NULL, + `penilaian_jatuhmorse_nilai3` tinyint DEFAULT NULL, + `penilaian_jatuhmorse_skala4` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhmorse_nilai4` tinyint DEFAULT NULL, + `penilaian_jatuhmorse_skala5` enum('Normal/Tirah Baring/Imobilisasi','Lemah','Terganggu') DEFAULT NULL, + `penilaian_jatuhmorse_nilai5` tinyint DEFAULT NULL, + `penilaian_jatuhmorse_skala6` enum('Sadar Akan Kemampuan Diri Sendiri','Sering Lupa Akan Keterbatasan Yang Dimiliki') DEFAULT NULL, + `penilaian_jatuhmorse_nilai6` tinyint DEFAULT NULL, + `penilaian_jatuhmorse_totalnilai` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala1` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai1` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala2` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai2` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala3` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai3` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala4` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai4` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala5` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai5` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala6` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai6` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala7` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai7` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala8` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai8` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala9` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai9` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala10` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai10` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_skala11` enum('Tidak','Ya') DEFAULT NULL, + `penilaian_jatuhsydney_nilai11` tinyint DEFAULT NULL, + `penilaian_jatuhsydney_totalnilai` tinyint DEFAULT NULL, + `skrining_gizi1` enum('Tidak ada penurunan berat badan','Tidak yakin/ tidak tahu/ terasa baju lebih longgar','Ya 1-5 kg','Ya 6-10 kg','Ya 11-15 kg','Ya > 15 kg') DEFAULT NULL, + `nilai_gizi1` int DEFAULT NULL, + `skrining_gizi2` enum('Tidak','Ya') DEFAULT NULL, + `nilai_gizi2` int DEFAULT NULL, + `nilai_total_gizi` double DEFAULT NULL, + `skrining_gizi_diagnosa_khusus` enum('Tidak','Ya') DEFAULT NULL, + `skrining_gizi_ket_diagnosa_khusus` TEXT, + `skrining_gizi_diketahui_dietisen` enum('Tidak','Ya') DEFAULT NULL, + `skrining_gizi_jam_diketahui_dietisen` varchar(10) DEFAULT NULL, + `rencana` TEXT, + `nip1` varchar(20) NOT NULL, + `nip2` varchar(20) NOT NULL, + `kd_dokter` varchar(20) NOT NULL, + PRIMARY KEY (`no_rawat`) USING BTREE, + KEY `nip1` (`nip1`) USING BTREE, + KEY `nip2` (`nip2`) USING BTREE, + KEY `kd_dokter` (`kd_dokter`) USING BTREE, + CONSTRAINT `penilaian_awal_keperawatan_ranap_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `penilaian_awal_keperawatan_ranap_ibfk_2` FOREIGN KEY (`nip1`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `penilaian_awal_keperawatan_ranap_ibfk_3` FOREIGN KEY (`nip2`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `penilaian_awal_keperawatan_ranap_ibfk_4` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `pendidikan` ENABLE KEYS */; -UNLOCK TABLES; +CREATE TABLE `penilaian_medis_igd` ( + `no_rawat` varchar(17) NOT NULL, + `tanggal` datetime NOT NULL, + `kd_dokter` varchar(20) NOT NULL, + `anamnesis` enum('Autoanamnesis','Alloanamnesis') NOT NULL, + `hubungan` varchar(100) NOT NULL, + `keluhan_utama` TEXT NOT NULL DEFAULT '', + `rps` TEXT NOT NULL, + `rpd` TEXT NOT NULL DEFAULT '', + `rpk` TEXT NOT NULL, + `rpo` TEXT NOT NULL, + `alergi` varchar(100) NOT NULL DEFAULT '', + `keadaan` enum('Sehat','Sakit Ringan','Sakit Sedang','Sakit Berat') NOT NULL, + `gcs` varchar(10) NOT NULL, + `kesadaran` enum('Compos Mentis','Apatis','Somnolen','Sopor','Koma') NOT NULL, + `td` varchar(8) NOT NULL DEFAULT '', + `nadi` varchar(5) NOT NULL DEFAULT '', + `rr` varchar(5) NOT NULL, + `suhu` varchar(5) NOT NULL DEFAULT '', + `spo` varchar(5) NOT NULL, + `bb` varchar(5) NOT NULL DEFAULT '', + `tb` varchar(5) NOT NULL DEFAULT '', + `kepala` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `mata` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `gigi` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `leher` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `thoraks` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `abdomen` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `genital` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `ekstremitas` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `ket_fisik` text NOT NULL, + `ket_lokalis` text NOT NULL, + `ekg` text NOT NULL, + `rad` text NOT NULL, + `lab` text NOT NULL, + `diagnosis` TEXT NOT NULL, + `tata` text NOT NULL, + PRIMARY KEY (`no_rawat`) USING BTREE, + KEY `kd_dokter` (`kd_dokter`) USING BTREE, + CONSTRAINT `penilaian_medis_igd_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `penilaian_medis_igd_ibfk_2` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table penilaian_medis_ralan -# ------------------------------------------------------------ CREATE TABLE `penilaian_medis_ralan` ( `no_rawat` varchar(17) NOT NULL, @@ -3349,11 +4452,11 @@ CREATE TABLE `penilaian_medis_ralan` ( `kd_dokter` varchar(20) NOT NULL, `anamnesis` enum('Autoanamnesis','Alloanamnesis') NOT NULL, `hubungan` varchar(30) NOT NULL, - `keluhan_utama` varchar(2000) NOT NULL DEFAULT '', - `rps` varchar(2000) NOT NULL, - `rpd` varchar(1000) NOT NULL DEFAULT '', - `rpk` varchar(1000) NOT NULL, - `rpo` varchar(1000) NOT NULL, + `keluhan_utama` TEXT NOT NULL DEFAULT '', + `rps` TEXT NOT NULL, + `rpd` TEXT NOT NULL DEFAULT '', + `rpk` TEXT NOT NULL, + `rpo` TEXT NOT NULL, `alergi` varchar(50) NOT NULL DEFAULT '', `keadaan` enum('Sehat','Sakit Ringan','Sakit Sedang','Sakit Berat') NOT NULL, `gcs` varchar(10) NOT NULL, @@ -3376,19 +4479,85 @@ CREATE TABLE `penilaian_medis_ralan` ( `ket_fisik` text NOT NULL, `ket_lokalis` text NOT NULL, `penunjang` text NOT NULL, - `diagnosis` varchar(500) NOT NULL, + `diagnosis` TEXT NOT NULL, `tata` text NOT NULL, - `konsulrujuk` varchar(1000) NOT NULL, - PRIMARY KEY (`no_rawat`), - KEY `kd_dokter` (`kd_dokter`), + `konsulrujuk` TEXT NOT NULL, + PRIMARY KEY (`no_rawat`) USING BTREE, + KEY `kd_dokter` (`kd_dokter`) USING BTREE, CONSTRAINT `penilaian_medis_ralan_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `penilaian_medis_ralan_ibfk_2` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +CREATE TABLE `penilaian_medis_ranap` ( + `no_rawat` varchar(17) NOT NULL, + `tanggal` datetime NOT NULL, + `kd_dokter` varchar(20) NOT NULL, + `anamnesis` enum('Autoanamnesis','Alloanamnesis') NOT NULL, + `hubungan` varchar(100) NOT NULL, + `keluhan_utama` TEXT NOT NULL DEFAULT '', + `rps` TEXT NOT NULL, + `rpd` TEXT NOT NULL DEFAULT '', + `rpk` TEXT NOT NULL, + `rpo` TEXT NOT NULL, + `alergi` varchar(100) NOT NULL DEFAULT '', + `keadaan` enum('Sehat','Sakit Ringan','Sakit Sedang','Sakit Berat') NOT NULL, + `gcs` varchar(10) NOT NULL, + `kesadaran` enum('Compos Mentis','Apatis','Somnolen','Sopor','Koma') NOT NULL, + `td` varchar(8) NOT NULL DEFAULT '', + `nadi` varchar(5) NOT NULL DEFAULT '', + `rr` varchar(5) NOT NULL, + `suhu` varchar(5) NOT NULL DEFAULT '', + `spo` varchar(5) NOT NULL, + `bb` varchar(5) NOT NULL DEFAULT '', + `tb` varchar(5) NOT NULL DEFAULT '', + `kepala` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `mata` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `gigi` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `tht` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `thoraks` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `jantung` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `paru` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `abdomen` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `genital` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `ekstremitas` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `kulit` enum('Normal','Abnormal','Tidak Diperiksa') NOT NULL, + `ket_fisik` text NOT NULL, + `ket_lokalis` text NOT NULL, + `lab` text NOT NULL, + `rad` text NOT NULL, + `penunjang` text NOT NULL, + `diagnosis` TEXT NOT NULL, + `tata` text NOT NULL, + `edukasi` TEXT NOT NULL, + PRIMARY KEY (`no_rawat`) USING BTREE, + KEY `kd_dokter` (`kd_dokter`) USING BTREE, + CONSTRAINT `penilaian_medis_ranap_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `penilaian_medis_ranap_ibfk_2` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; +CREATE TABLE `penilaian_ulang_nyeri` ( + `no_rawat` varchar(17) NOT NULL, + `tanggal` datetime NOT NULL, + `nyeri` enum('Tidak Ada Nyeri','Nyeri Akut','Nyeri Kronis') NOT NULL, + `provokes` enum('Proses Penyakit','Benturan','Lain-lain','-') NOT NULL, + `ket_provokes` varchar(40) NOT NULL, + `quality` enum('Seperti Tertusuk','Berdenyut','Teriris','Tertindih','Tertiban','Lain-lain','-') NOT NULL, + `ket_quality` varchar(50) NOT NULL, + `lokasi` varchar(50) NOT NULL, + `menyebar` enum('Tidak','Ya') NOT NULL, + `skala_nyeri` enum('0','1','2','3','4','5','6','7','8','9','10') NOT NULL, + `durasi` varchar(25) NOT NULL, + `nyeri_hilang` enum('Istirahat','Medengar Musik','Minum Obat','-') NOT NULL, + `ket_nyeri` varchar(40) NOT NULL, + `nip` varchar(20) NOT NULL, + PRIMARY KEY (`no_rawat`,`tanggal`) USING BTREE, + KEY `nip` (`nip`) USING BTREE, + CONSTRAINT `penilaian_ulang_nyeri_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `penilaian_ulang_nyeri_ibfk_2` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table penjab -# ------------------------------------------------------------ CREATE TABLE `penjab` ( `kd_pj` char(3) NOT NULL, @@ -3399,27 +4568,17 @@ CREATE TABLE `penjab` ( `attn` varchar(60) NOT NULL, `status` enum('0','1') NOT NULL, PRIMARY KEY (`kd_pj`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `penjab` WRITE; -/*!40000 ALTER TABLE `penjab` DISABLE KEYS */; - -INSERT INTO `penjab` (`kd_pj`, `png_jawab`, `nama_perusahaan`, `alamat_asuransi`, `no_telp`, `attn`, `status`) -VALUES - ('-','-','-','-','0','0','1'), - ('BPJ','BPJS Kesehatan','-','-','0','0','1'), - ('UMU','Umum','-','-','0','0','1'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `penjab` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `penjab` VALUES ("-","-","-","-","0","0","1"), +("BPJ","BPJS Kesehatan","-","-","0","0","1"), +("UMU","Umum","-","-","0","0","1"); -# Dump of table penyakit -# ------------------------------------------------------------ CREATE TABLE `penyakit` ( `kd_penyakit` varchar(10) NOT NULL, - `nm_penyakit` varchar(100) DEFAULT NULL, + `nm_penyakit` varchar(250) DEFAULT NULL, `ciri_ciri` text, `keterangan` varchar(60) DEFAULT NULL, `kd_ktg` varchar(8) DEFAULT NULL, @@ -3429,12 +4588,8 @@ CREATE TABLE `penyakit` ( KEY `nm_penyakit` (`nm_penyakit`), KEY `status` (`status`), CONSTRAINT `penyakit_ibfk_1` FOREIGN KEY (`kd_ktg`) REFERENCES `kategori_penyakit` (`kd_ktg`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table perbaikan_inventaris -# ------------------------------------------------------------ CREATE TABLE `perbaikan_inventaris` ( `no_permintaan` varchar(15) NOT NULL, @@ -3449,12 +4604,8 @@ CREATE TABLE `perbaikan_inventaris` ( KEY `nip` (`nip`), CONSTRAINT `perbaikan_inventaris_ibfk_1` FOREIGN KEY (`no_permintaan`) REFERENCES `permintaan_perbaikan_inventaris` (`no_permintaan`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `perbaikan_inventaris_ibfk_2` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table periksa_lab -# ------------------------------------------------------------ CREATE TABLE `periksa_lab` ( `no_rawat` varchar(17) NOT NULL, @@ -3484,12 +4635,8 @@ CREATE TABLE `periksa_lab` ( CONSTRAINT `periksa_lab_ibfk_12` FOREIGN KEY (`dokter_perujuk`) REFERENCES `dokter` (`kd_dokter`) ON UPDATE CASCADE, CONSTRAINT `periksa_lab_ibfk_13` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON UPDATE CASCADE, CONSTRAINT `periksa_lab_ibfk_9` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table periksa_radiologi -# ------------------------------------------------------------ CREATE TABLE `periksa_radiologi` ( `no_rawat` varchar(17) NOT NULL, @@ -3526,17 +4673,13 @@ CREATE TABLE `periksa_radiologi` ( CONSTRAINT `periksa_radiologi_ibfk_6` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_radiologi` (`kd_jenis_prw`) ON UPDATE CASCADE, CONSTRAINT `periksa_radiologi_ibfk_7` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON UPDATE CASCADE, CONSTRAINT `periksa_radiologi_ibfk_8` FOREIGN KEY (`dokter_perujuk`) REFERENCES `dokter` (`kd_dokter`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table permintaan_detail_permintaan_lab -# ------------------------------------------------------------ CREATE TABLE `permintaan_detail_permintaan_lab` ( `noorder` varchar(15) NOT NULL, `kd_jenis_prw` varchar(15) NOT NULL, - `id_template` int(11) NOT NULL, + `id_template` int NOT NULL, `stts_bayar` enum('Sudah','Belum') DEFAULT NULL, PRIMARY KEY (`noorder`,`kd_jenis_prw`,`id_template`) USING BTREE, KEY `id_template` (`id_template`) USING BTREE, @@ -3544,12 +4687,8 @@ CREATE TABLE `permintaan_detail_permintaan_lab` ( CONSTRAINT `permintaan_detail_permintaan_lab_ibfk_2` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_lab` (`kd_jenis_prw`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `permintaan_detail_permintaan_lab_ibfk_3` FOREIGN KEY (`id_template`) REFERENCES `template_laboratorium` (`id_template`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `permintaan_detail_permintaan_lab_ibfk_4` FOREIGN KEY (`noorder`) REFERENCES `permintaan_lab` (`noorder`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table permintaan_lab -# ------------------------------------------------------------ CREATE TABLE `permintaan_lab` ( `noorder` varchar(15) NOT NULL, @@ -3569,12 +4708,8 @@ CREATE TABLE `permintaan_lab` ( KEY `no_rawat` (`no_rawat`), CONSTRAINT `permintaan_lab_ibfk_2` FOREIGN KEY (`dokter_perujuk`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `permintaan_lab_ibfk_3` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table permintaan_pemeriksaan_lab -# ------------------------------------------------------------ CREATE TABLE `permintaan_pemeriksaan_lab` ( `noorder` varchar(15) NOT NULL, @@ -3584,12 +4719,8 @@ CREATE TABLE `permintaan_pemeriksaan_lab` ( KEY `kd_jenis_prw` (`kd_jenis_prw`), CONSTRAINT `permintaan_pemeriksaan_lab_ibfk_1` FOREIGN KEY (`noorder`) REFERENCES `permintaan_lab` (`noorder`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `permintaan_pemeriksaan_lab_ibfk_2` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_lab` (`kd_jenis_prw`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table permintaan_pemeriksaan_radiologi -# ------------------------------------------------------------ CREATE TABLE `permintaan_pemeriksaan_radiologi` ( `noorder` varchar(15) NOT NULL, @@ -3599,12 +4730,8 @@ CREATE TABLE `permintaan_pemeriksaan_radiologi` ( KEY `kd_jenis_prw` (`kd_jenis_prw`), CONSTRAINT `permintaan_pemeriksaan_radiologi_ibfk_1` FOREIGN KEY (`noorder`) REFERENCES `permintaan_radiologi` (`noorder`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `permintaan_pemeriksaan_radiologi_ibfk_2` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_radiologi` (`kd_jenis_prw`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table permintaan_perbaikan_inventaris -# ------------------------------------------------------------ CREATE TABLE `permintaan_perbaikan_inventaris` ( `no_permintaan` varchar(15) NOT NULL, @@ -3617,12 +4744,8 @@ CREATE TABLE `permintaan_perbaikan_inventaris` ( KEY `nik` (`nik`), CONSTRAINT `permintaan_perbaikan_inventaris_ibfk_1` FOREIGN KEY (`no_inventaris`) REFERENCES `inventaris` (`no_inventaris`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `permintaan_perbaikan_inventaris_ibfk_2` FOREIGN KEY (`nik`) REFERENCES `pegawai` (`nik`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table permintaan_radiologi -# ------------------------------------------------------------ CREATE TABLE `permintaan_radiologi` ( `noorder` varchar(15) NOT NULL, @@ -3642,25 +4765,17 @@ CREATE TABLE `permintaan_radiologi` ( KEY `no_rawat` (`no_rawat`), CONSTRAINT `permintaan_radiologi_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `permintaan_radiologi_ibfk_3` FOREIGN KEY (`dokter_perujuk`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table personal_pasien -# ------------------------------------------------------------ CREATE TABLE `personal_pasien` ( `no_rkm_medis` varchar(15) NOT NULL, - `gambar` varchar(1000) DEFAULT NULL, - `password` varchar(1000) DEFAULT NULL, + `gambar` TEXT DEFAULT NULL, + `password` TEXT DEFAULT NULL, PRIMARY KEY (`no_rkm_medis`), CONSTRAINT `personal_pasien_ibfk_1` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table perusahaan_pasien -# ------------------------------------------------------------ CREATE TABLE `perusahaan_pasien` ( `kode_perusahaan` varchar(8) NOT NULL, @@ -3669,21 +4784,11 @@ CREATE TABLE `perusahaan_pasien` ( `kota` varchar(40) DEFAULT NULL, `no_telp` varchar(27) DEFAULT NULL, PRIMARY KEY (`kode_perusahaan`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `perusahaan_pasien` WRITE; -/*!40000 ALTER TABLE `perusahaan_pasien` DISABLE KEYS */; - -INSERT INTO `perusahaan_pasien` (`kode_perusahaan`, `nama_perusahaan`, `alamat`, `kota`, `no_telp`) -VALUES - ('-','-','-','-','0'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `perusahaan_pasien` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `perusahaan_pasien` VALUES ("-","-","-","-","0"); -# Dump of table petugas -# ------------------------------------------------------------ CREATE TABLE `petugas` ( `nip` varchar(20) NOT NULL, @@ -3709,21 +4814,11 @@ CREATE TABLE `petugas` ( KEY `alamat` (`alamat`), CONSTRAINT `petugas_ibfk_4` FOREIGN KEY (`nip`) REFERENCES `pegawai` (`nik`) ON UPDATE CASCADE, CONSTRAINT `petugas_ibfk_5` FOREIGN KEY (`kd_jbtn`) REFERENCES `jabatan` (`kd_jbtn`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `petugas` WRITE; -/*!40000 ALTER TABLE `petugas` DISABLE KEYS */; - -INSERT INTO `petugas` (`nip`, `nama`, `jk`, `tmp_lahir`, `tgl_lahir`, `gol_darah`, `agama`, `stts_nikah`, `alamat`, `kd_jbtn`, `no_telp`, `status`) -VALUES - ('DR001','dr. Ataaka Muhammad','L','Barabai','2020-12-01','A','Islam','MENIKAH','-','-','0','1'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `petugas` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `petugas` VALUES ("DR001","dr. Ataaka Muhammad","L","Barabai","2020-12-01","A","Islam","MENIKAH","-","-","0","1"); -# Dump of table poliklinik -# ------------------------------------------------------------ CREATE TABLE `poliklinik` ( `kd_poli` char(5) NOT NULL DEFAULT '', @@ -3735,60 +4830,36 @@ CREATE TABLE `poliklinik` ( KEY `nm_poli` (`nm_poli`), KEY `registrasi` (`registrasi`), KEY `registrasilama` (`registrasilama`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `poliklinik` WRITE; -/*!40000 ALTER TABLE `poliklinik` DISABLE KEYS */; - -INSERT INTO `poliklinik` (`kd_poli`, `nm_poli`, `registrasi`, `registrasilama`, `status`) -VALUES - ('-','-',0,0,'1'), - ('IGDK','IGD',0,0,'1'), - ('UMU','Umum',0,0,'1'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `poliklinik` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `poliklinik` VALUES ("-","-","0","0","1"), +("IGDK","IGD","0","0","1"), +("UMU","Umum","0","0","1"); -# Dump of table propinsi -# ------------------------------------------------------------ CREATE TABLE `propinsi` ( - `kd_prop` int(11) NOT NULL AUTO_INCREMENT, + `kd_prop` int NOT NULL, `nm_prop` varchar(30) NOT NULL, PRIMARY KEY (`kd_prop`), UNIQUE KEY `nm_prop` (`nm_prop`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `propinsi` WRITE; -/*!40000 ALTER TABLE `propinsi` DISABLE KEYS */; - -INSERT INTO `propinsi` (`kd_prop`, `nm_prop`) -VALUES - (1,'-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `propinsi` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `propinsi` VALUES ("1","-"); -# Dump of table prosedur_pasien -# ------------------------------------------------------------ CREATE TABLE `prosedur_pasien` ( `no_rawat` varchar(17) NOT NULL, `kode` varchar(8) NOT NULL, `status` enum('Ralan','Ranap') NOT NULL, - `prioritas` tinyint(4) NOT NULL, + `prioritas` tinyint NOT NULL, PRIMARY KEY (`no_rawat`,`kode`,`status`), KEY `kode` (`kode`), CONSTRAINT `prosedur_pasien_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `prosedur_pasien_ibfk_2` FOREIGN KEY (`kode`) REFERENCES `icd9` (`kode`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table rawat_inap_dr -# ------------------------------------------------------------ CREATE TABLE `rawat_inap_dr` ( `no_rawat` varchar(17) NOT NULL DEFAULT '', @@ -3812,12 +4883,8 @@ CREATE TABLE `rawat_inap_dr` ( CONSTRAINT `rawat_inap_dr_ibfk_3` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON UPDATE CASCADE, CONSTRAINT `rawat_inap_dr_ibfk_6` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_inap` (`kd_jenis_prw`) ON UPDATE CASCADE, CONSTRAINT `rawat_inap_dr_ibfk_7` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table rawat_inap_drpr -# ------------------------------------------------------------ CREATE TABLE `rawat_inap_drpr` ( `no_rawat` varchar(17) NOT NULL DEFAULT '', @@ -3841,12 +4908,8 @@ CREATE TABLE `rawat_inap_drpr` ( CONSTRAINT `rawat_inap_drpr_ibfk_2` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_inap` (`kd_jenis_prw`) ON UPDATE CASCADE, CONSTRAINT `rawat_inap_drpr_ibfk_3` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON UPDATE CASCADE, CONSTRAINT `rawat_inap_drpr_ibfk_4` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table rawat_inap_pr -# ------------------------------------------------------------ CREATE TABLE `rawat_inap_pr` ( `no_rawat` varchar(17) NOT NULL DEFAULT '', @@ -3868,12 +4931,8 @@ CREATE TABLE `rawat_inap_pr` ( CONSTRAINT `rawat_inap_pr_ibfk_3` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON UPDATE CASCADE, CONSTRAINT `rawat_inap_pr_ibfk_6` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_inap` (`kd_jenis_prw`) ON UPDATE CASCADE, CONSTRAINT `rawat_inap_pr_ibfk_7` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table rawat_jl_dr -# ------------------------------------------------------------ CREATE TABLE `rawat_jl_dr` ( `no_rawat` varchar(17) NOT NULL DEFAULT '', @@ -3896,12 +4955,8 @@ CREATE TABLE `rawat_jl_dr` ( CONSTRAINT `rawat_jl_dr_ibfk_2` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan` (`kd_jenis_prw`) ON UPDATE CASCADE, CONSTRAINT `rawat_jl_dr_ibfk_3` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON UPDATE CASCADE, CONSTRAINT `rawat_jl_dr_ibfk_5` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table rawat_jl_drpr -# ------------------------------------------------------------ CREATE TABLE `rawat_jl_drpr` ( `no_rawat` varchar(17) NOT NULL DEFAULT '', @@ -3927,12 +4982,8 @@ CREATE TABLE `rawat_jl_drpr` ( CONSTRAINT `rawat_jl_drpr_ibfk_2` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan` (`kd_jenis_prw`) ON UPDATE CASCADE, CONSTRAINT `rawat_jl_drpr_ibfk_3` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON UPDATE CASCADE, CONSTRAINT `rawat_jl_drpr_ibfk_4` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table rawat_jl_pr -# ------------------------------------------------------------ CREATE TABLE `rawat_jl_pr` ( `no_rawat` varchar(17) NOT NULL DEFAULT '', @@ -3955,12 +5006,8 @@ CREATE TABLE `rawat_jl_pr` ( CONSTRAINT `rawat_jl_pr_ibfk_10` FOREIGN KEY (`nip`) REFERENCES `petugas` (`nip`) ON UPDATE CASCADE, CONSTRAINT `rawat_jl_pr_ibfk_8` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE, CONSTRAINT `rawat_jl_pr_ibfk_9` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan` (`kd_jenis_prw`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table reg_periksa -# ------------------------------------------------------------ CREATE TABLE `reg_periksa` ( `no_reg` varchar(8) DEFAULT NULL, @@ -3978,7 +5025,7 @@ CREATE TABLE `reg_periksa` ( `stts_daftar` enum('-','Lama','Baru') NOT NULL, `status_lanjut` enum('Ralan','Ranap') NOT NULL, `kd_pj` char(3) NOT NULL, - `umurdaftar` int(11) DEFAULT NULL, + `umurdaftar` int DEFAULT NULL, `sttsumur` enum('Th','Bl','Hr') DEFAULT NULL, `status_bayar` enum('Sudah Bayar','Belum Bayar') NOT NULL, `status_poli` enum('Lama','Baru') NOT NULL, @@ -3993,15 +5040,11 @@ CREATE TABLE `reg_periksa` ( CONSTRAINT `reg_periksa_ibfk_4` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `reg_periksa_ibfk_6` FOREIGN KEY (`kd_pj`) REFERENCES `penjab` (`kd_pj`) ON UPDATE CASCADE, CONSTRAINT `reg_periksa_ibfk_7` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table rekap_presensi -# ------------------------------------------------------------ CREATE TABLE `rekap_presensi` ( - `id` int(10) NOT NULL, + `id` int NOT NULL, `shift` enum('Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10','Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10','Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10','Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10','Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10','Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10') NOT NULL, `jam_datang` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `jam_pulang` datetime DEFAULT NULL, @@ -4009,16 +5052,12 @@ CREATE TABLE `rekap_presensi` ( `keterlambatan` varchar(20) NOT NULL, `durasi` varchar(20) DEFAULT NULL, `keterangan` varchar(100) NOT NULL, - `photo` varchar(500) NOT NULL, + `photo` TEXT NOT NULL, PRIMARY KEY (`id`,`jam_datang`), KEY `id` (`id`), CONSTRAINT `rekap_presensi_ibfk_1` FOREIGN KEY (`id`) REFERENCES `pegawai` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table resep_dokter -# ------------------------------------------------------------ CREATE TABLE `resep_dokter` ( `no_resep` varchar(14) DEFAULT NULL, @@ -4029,31 +5068,23 @@ CREATE TABLE `resep_dokter` ( KEY `kode_brng` (`kode_brng`), CONSTRAINT `resep_dokter_ibfk_1` FOREIGN KEY (`no_resep`) REFERENCES `resep_obat` (`no_resep`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `resep_dokter_ibfk_2` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table resep_dokter_racikan -# ------------------------------------------------------------ CREATE TABLE `resep_dokter_racikan` ( `no_resep` varchar(14) NOT NULL, `no_racik` varchar(2) NOT NULL, `nama_racik` varchar(100) NOT NULL, `kd_racik` varchar(3) NOT NULL, - `jml_dr` int(11) NOT NULL, + `jml_dr` int NOT NULL, `aturan_pakai` varchar(150) NOT NULL, `keterangan` varchar(50) NOT NULL, PRIMARY KEY (`no_resep`,`no_racik`), KEY `kd_racik` (`kd_racik`), CONSTRAINT `resep_dokter_racikan_ibfk_1` FOREIGN KEY (`no_resep`) REFERENCES `resep_obat` (`no_resep`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `resep_dokter_racikan_ibfk_2` FOREIGN KEY (`kd_racik`) REFERENCES `metode_racik` (`kd_racik`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table resep_dokter_racikan_detail -# ------------------------------------------------------------ CREATE TABLE `resep_dokter_racikan_detail` ( `no_resep` varchar(14) NOT NULL, @@ -4067,12 +5098,8 @@ CREATE TABLE `resep_dokter_racikan_detail` ( KEY `kode_brng` (`kode_brng`), CONSTRAINT `resep_dokter_racikan_detail_ibfk_1` FOREIGN KEY (`no_resep`) REFERENCES `resep_obat` (`no_resep`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `resep_dokter_racikan_detail_ibfk_2` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table resep_obat -# ------------------------------------------------------------ CREATE TABLE `resep_obat` ( `no_resep` varchar(14) NOT NULL DEFAULT '', @@ -4090,12 +5117,8 @@ CREATE TABLE `resep_obat` ( KEY `kd_dokter` (`kd_dokter`), CONSTRAINT `resep_obat_ibfk_3` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE, CONSTRAINT `resep_obat_ibfk_4` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table resep_pulang -# ------------------------------------------------------------ CREATE TABLE `resep_pulang` ( `no_rawat` varchar(17) NOT NULL, @@ -4116,33 +5139,19 @@ CREATE TABLE `resep_pulang` ( CONSTRAINT `resep_pulang_ibfk_2` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `resep_pulang_ibfk_3` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE, CONSTRAINT `resep_pulang_ibfk_4` FOREIGN KEY (`kd_bangsal`) REFERENCES `bangsal` (`kd_bangsal`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table resiko_kerja -# ------------------------------------------------------------ CREATE TABLE `resiko_kerja` ( `kode_resiko` varchar(3) NOT NULL, `nama_resiko` varchar(200) DEFAULT NULL, - `indek` tinyint(4) DEFAULT NULL, + `indek` tinyint DEFAULT NULL, PRIMARY KEY (`kode_resiko`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `resiko_kerja` WRITE; -/*!40000 ALTER TABLE `resiko_kerja` DISABLE KEYS */; - -INSERT INTO `resiko_kerja` (`kode_resiko`, `nama_resiko`, `indek`) -VALUES - ('-','-',1); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `resiko_kerja` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `resiko_kerja` VALUES ("-","-","1"); -# Dump of table resume_pasien -# ------------------------------------------------------------ CREATE TABLE `resume_pasien` ( `no_rawat` varchar(17) NOT NULL, @@ -4175,12 +5184,8 @@ CREATE TABLE `resume_pasien` ( KEY `kd_dokter` (`kd_dokter`), CONSTRAINT `resume_pasien_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `resume_pasien_ibfk_2` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table resume_pasien_ranap -# ------------------------------------------------------------ CREATE TABLE `resume_pasien_ranap` ( `no_rawat` varchar(17) NOT NULL, @@ -4228,12 +5233,8 @@ CREATE TABLE `resume_pasien_ranap` ( KEY `kd_dokter` (`kd_dokter`), CONSTRAINT `resume_pasien_ranap_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `resume_pasien_ranap_ibfk_2` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table riwayat_barang_medis -# ------------------------------------------------------------ CREATE TABLE `riwayat_barang_medis` ( `kode_brng` varchar(15) DEFAULT NULL, @@ -4244,7 +5245,7 @@ CREATE TABLE `riwayat_barang_medis` ( `posisi` enum('Pemberian Obat','Pengadaan','Penerimaan','Piutang','Retur Beli','Retur Jual','Retur Piutang','Mutasi','Opname','Resep Pulang','Retur Pasien','Stok Pasien Ranap','Pengambilan Medis','Penjualan','Stok Keluar','Hibah') DEFAULT NULL, `tanggal` date DEFAULT NULL, `jam` time DEFAULT NULL, - `petugas` varchar(20) DEFAULT NULL, + `petugas` varchar(100) DEFAULT NULL, `kd_bangsal` char(5) DEFAULT NULL, `status` enum('Simpan','Hapus') DEFAULT NULL, `no_batch` varchar(20) NOT NULL, @@ -4254,55 +5255,33 @@ CREATE TABLE `riwayat_barang_medis` ( KEY `kd_bangsal` (`kd_bangsal`) USING BTREE, CONSTRAINT `riwayat_barang_medis_ibfk_1` FOREIGN KEY (`kode_brng`) REFERENCES `databarang` (`kode_brng`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `riwayat_barang_medis_ibfk_2` FOREIGN KEY (`kd_bangsal`) REFERENCES `bangsal` (`kd_bangsal`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table ruang_ok -# ------------------------------------------------------------ CREATE TABLE `ruang_ok` ( `kd_ruang_ok` varchar(3) NOT NULL, `nm_ruang_ok` varchar(50) DEFAULT NULL, PRIMARY KEY (`kd_ruang_ok`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table set_keterlambatan -# ------------------------------------------------------------ CREATE TABLE `set_keterlambatan` ( - `toleransi` int(11) DEFAULT NULL, - `terlambat1` int(11) DEFAULT NULL, - `terlambat2` int(11) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=latin1; + `toleransi` int DEFAULT NULL, + `terlambat1` int DEFAULT NULL, + `terlambat2` int DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; - -# Dump of table set_no_rkm_medis -# ------------------------------------------------------------ - CREATE TABLE `set_no_rkm_medis` ( `no_rkm_medis` varchar(15) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; - -LOCK TABLES `set_no_rkm_medis` WRITE; -/*!40000 ALTER TABLE `set_no_rkm_medis` DISABLE KEYS */; - -INSERT INTO `set_no_rkm_medis` (`no_rkm_medis`) -VALUES - ('000000'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `set_no_rkm_medis` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `set_no_rkm_medis` VALUES ("000000"); -# Dump of table skdp_bpjs -# ------------------------------------------------------------ CREATE TABLE `skdp_bpjs` ( - `tahun` year(4) NOT NULL, + `tahun` year NOT NULL, `no_rkm_medis` varchar(15) DEFAULT NULL, `diagnosa` varchar(50) NOT NULL, `terapi` varchar(50) NOT NULL, @@ -4320,94 +5299,50 @@ CREATE TABLE `skdp_bpjs` ( KEY `kd_dokter` (`kd_dokter`) USING BTREE, CONSTRAINT `skdp_bpjs_ibfk_1` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON UPDATE CASCADE, CONSTRAINT `skdp_bpjs_ibfk_2` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table spesialis -# ------------------------------------------------------------ CREATE TABLE `spesialis` ( `kd_sps` char(5) NOT NULL DEFAULT '', `nm_sps` varchar(30) DEFAULT NULL, PRIMARY KEY (`kd_sps`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `spesialis` WRITE; -/*!40000 ALTER TABLE `spesialis` DISABLE KEYS */; - -INSERT INTO `spesialis` (`kd_sps`, `nm_sps`) -VALUES - ('UMUM','Dokter Umum'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `spesialis` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `spesialis` VALUES ("UMUM","Dokter Umum"); -# Dump of table stts_kerja -# ------------------------------------------------------------ CREATE TABLE `stts_kerja` ( `stts` char(3) NOT NULL, `ktg` varchar(20) NOT NULL, - `indek` tinyint(4) NOT NULL, + `indek` tinyint NOT NULL, PRIMARY KEY (`stts`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `stts_kerja` WRITE; -/*!40000 ALTER TABLE `stts_kerja` DISABLE KEYS */; - -INSERT INTO `stts_kerja` (`stts`, `ktg`, `indek`) -VALUES - ('-','-',1); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `stts_kerja` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `stts_kerja` VALUES ("-","-","1"); -# Dump of table stts_wp -# ------------------------------------------------------------ CREATE TABLE `stts_wp` ( `stts` char(5) NOT NULL, `ktg` varchar(50) NOT NULL, PRIMARY KEY (`stts`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `stts_wp` WRITE; -/*!40000 ALTER TABLE `stts_wp` DISABLE KEYS */; - -INSERT INTO `stts_wp` (`stts`, `ktg`) -VALUES - ('-','-'); +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `stts_wp` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `stts_wp` VALUES ("-","-"); -# Dump of table suku_bangsa -# ------------------------------------------------------------ CREATE TABLE `suku_bangsa` ( - `id` int(11) NOT NULL AUTO_INCREMENT, + `id` int NOT NULL AUTO_INCREMENT, `nama_suku_bangsa` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `nama_suku_bangsa` (`nama_suku_bangsa`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT; - -LOCK TABLES `suku_bangsa` WRITE; -/*!40000 ALTER TABLE `suku_bangsa` DISABLE KEYS */; - -INSERT INTO `suku_bangsa` (`id`, `nama_suku_bangsa`) -VALUES - (1,'-'); +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40000 ALTER TABLE `suku_bangsa` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `suku_bangsa` VALUES ("1","-"); -# Dump of table tambahan_biaya -# ------------------------------------------------------------ CREATE TABLE `tambahan_biaya` ( `no_rawat` varchar(17) NOT NULL, @@ -4415,16 +5350,12 @@ CREATE TABLE `tambahan_biaya` ( `besar_biaya` double NOT NULL, PRIMARY KEY (`no_rawat`,`nama_biaya`), CONSTRAINT `tambahan_biaya_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table template_laboratorium -# ------------------------------------------------------------ CREATE TABLE `template_laboratorium` ( `kd_jenis_prw` varchar(15) NOT NULL, - `id_template` int(11) NOT NULL AUTO_INCREMENT, + `id_template` int NOT NULL AUTO_INCREMENT, `Pemeriksaan` varchar(200) NOT NULL, `satuan` varchar(20) NOT NULL, `nilai_rujukan_ld` varchar(30) NOT NULL, @@ -4439,7 +5370,7 @@ CREATE TABLE `template_laboratorium` ( `kso` double DEFAULT NULL, `menejemen` double DEFAULT NULL, `biaya_item` double NOT NULL, - `urut` int(4) DEFAULT NULL, + `urut` int DEFAULT NULL, PRIMARY KEY (`id_template`), KEY `kd_jenis_prw` (`kd_jenis_prw`), KEY `Pemeriksaan` (`Pemeriksaan`), @@ -4458,40 +5389,26 @@ CREATE TABLE `template_laboratorium` ( KEY `biaya_item` (`biaya_item`), KEY `urut` (`urut`), CONSTRAINT `template_laboratorium_ibfk_1` FOREIGN KEY (`kd_jenis_prw`) REFERENCES `jns_perawatan_lab` (`kd_jenis_prw`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -LOCK TABLES `template_laboratorium` WRITE; -/*!40000 ALTER TABLE `template_laboratorium` DISABLE KEYS */; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -INSERT INTO `template_laboratorium` (`kd_jenis_prw`, `id_template`, `Pemeriksaan`, `satuan`, `nilai_rujukan_ld`, `nilai_rujukan_la`, `nilai_rujukan_pd`, `nilai_rujukan_pa`, `bagian_rs`, `bhp`, `bagian_perujuk`, `bagian_dokter`, `bagian_laborat`, `kso`, `menejemen`, `biaya_item`, `urut`) -VALUES - ('LAB001',1,'Leukosit','LK','10','5','10','5',0,0,0,0,0,0,0,0,1), - ('LAB001',2,'Hemoglobin','HB','20','10','20','10',0,0,0,0,0,0,0,0,2); -/*!40000 ALTER TABLE `template_laboratorium` ENABLE KEYS */; -UNLOCK TABLES; +INSERT INTO `template_laboratorium` VALUES ("LAB001","1","Leukosit","LK","10","5","10","5","0","0","0","0","0","0","0","0","1"), +("LAB001","2","Hemoglobin","HB","20","10","20","10","0","0","0","0","0","0","0","0","2"); -# Dump of table temporary_presensi -# ------------------------------------------------------------ - CREATE TABLE `temporary_presensi` ( - `id` int(11) NOT NULL, + `id` int NOT NULL, `shift` enum('Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10','Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10','Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10','Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10','Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10','Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10') NOT NULL, `jam_datang` datetime DEFAULT NULL, `jam_pulang` datetime DEFAULT NULL, `status` enum('Tepat Waktu','Terlambat Toleransi','Terlambat I','Terlambat II','Tepat Waktu & PSW','Terlambat Toleransi & PSW','Terlambat I & PSW','Terlambat II & PSW') NOT NULL, `keterlambatan` varchar(20) NOT NULL, `durasi` varchar(20) DEFAULT NULL, - `photo` varchar(500) NOT NULL, + `photo` TEXT NOT NULL, PRIMARY KEY (`id`), CONSTRAINT `temporary_presensi_ibfk_1` FOREIGN KEY (`id`) REFERENCES `pegawai` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table utd_donor -# ------------------------------------------------------------ CREATE TABLE `utd_donor` ( `no_donor` varchar(15) NOT NULL, @@ -4499,7 +5416,7 @@ CREATE TABLE `utd_donor` ( `tanggal` date DEFAULT NULL, `dinas` enum('Pagi','Siang','Sore','Malam') DEFAULT NULL, `tensi` varchar(7) DEFAULT NULL, - `no_bag` int(11) DEFAULT NULL, + `no_bag` int DEFAULT NULL, `jenis_bag` enum('SB','DB','TB','QB') DEFAULT NULL, `jenis_donor` enum('DB','DP','DS') DEFAULT NULL, `tempat_aftap` enum('Dalam Gedung','Luar Gedung') DEFAULT NULL, @@ -4518,17 +5435,13 @@ CREATE TABLE `utd_donor` ( CONSTRAINT `utd_donor_ibfk_1` FOREIGN KEY (`petugas_aftap`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `utd_donor_ibfk_2` FOREIGN KEY (`petugas_u_saring`) REFERENCES `petugas` (`nip`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `utd_donor_ibfk_3` FOREIGN KEY (`no_pendonor`) REFERENCES `utd_pendonor` (`no_pendonor`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table utd_komponen_darah -# ------------------------------------------------------------ CREATE TABLE `utd_komponen_darah` ( `kode` varchar(5) NOT NULL, `nama` varchar(70) DEFAULT NULL, - `lama` smallint(6) DEFAULT NULL, + `lama` smallint DEFAULT NULL, `jasa_sarana` double DEFAULT NULL, `paket_bhp` double DEFAULT NULL, `kso` double DEFAULT NULL, @@ -4536,12 +5449,8 @@ CREATE TABLE `utd_komponen_darah` ( `total` double DEFAULT NULL, `pembatalan` double DEFAULT NULL, PRIMARY KEY (`kode`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table utd_pendonor -# ------------------------------------------------------------ CREATE TABLE `utd_pendonor` ( `no_pendonor` varchar(15) NOT NULL, @@ -4551,10 +5460,10 @@ CREATE TABLE `utd_pendonor` ( `tmp_lahir` varchar(15) NOT NULL, `tgl_lahir` date NOT NULL, `alamat` varchar(100) NOT NULL, - `kd_kel` int(11) NOT NULL, - `kd_kec` int(11) NOT NULL, - `kd_kab` int(11) NOT NULL, - `kd_prop` int(11) NOT NULL, + `kd_kel` int NOT NULL, + `kd_kec` int NOT NULL, + `kd_kab` int NOT NULL, + `kd_prop` int NOT NULL, `golongan_darah` enum('A','AB','B','O') NOT NULL, `resus` enum('(-)','(+)') NOT NULL, `no_telp` varchar(40) NOT NULL, @@ -4566,12 +5475,8 @@ CREATE TABLE `utd_pendonor` ( CONSTRAINT `utd_pendonor_ibfk_1` FOREIGN KEY (`kd_kec`) REFERENCES `kecamatan` (`kd_kec`) ON UPDATE CASCADE, CONSTRAINT `utd_pendonor_ibfk_2` FOREIGN KEY (`kd_kab`) REFERENCES `kabupaten` (`kd_kab`) ON UPDATE CASCADE, CONSTRAINT `utd_pendonor_ibfk_3` FOREIGN KEY (`kd_prop`) REFERENCES `propinsi` (`kd_prop`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -# Dump of table utd_stok_darah -# ------------------------------------------------------------ CREATE TABLE `utd_stok_darah` ( `no_kantong` varchar(20) NOT NULL DEFAULT '', @@ -4585,14 +5490,7 @@ CREATE TABLE `utd_stok_darah` ( PRIMARY KEY (`no_kantong`), KEY `kode_komponen` (`kode_komponen`), CONSTRAINT `utd_stok_darah_ibfk_1` FOREIGN KEY (`kode_komponen`) REFERENCES `utd_komponen_darah` (`kode`) ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - - +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +SET foreign_key_checks = 1; diff --git a/mlite_only.sql b/mlite_only.sql deleted file mode 100644 index 8d111bdae..000000000 --- a/mlite_only.sql +++ /dev/null @@ -1,918 +0,0 @@ -CREATE TABLE IF NOT EXISTS `mlite_akun_kegiatan` ( - `id` int(11) NOT NULL, - `kegiatan` varchar(200) DEFAULT NULL, - `kd_rek` varchar(20) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_antrian_loket` ( - `kd` int(50) NOT NULL, - `type` varchar(50) NOT NULL, - `noantrian` varchar(50) NOT NULL, - `no_rkm_medis` varchar(50) DEFAULT NULL, - `postdate` date NOT NULL, - `start_time` time NOT NULL, - `end_time` time NOT NULL DEFAULT '00:00:00', - `status` varchar(10) NOT NULL DEFAULT '0', - `loket` varchar(10) NOT NULL DEFAULT '0' -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_antrian_referensi` ( - `tanggal_periksa` date NOT NULL, - `no_rkm_medis` varchar(50) NOT NULL, - `nomor_kartu` varchar(50) NOT NULL, - `nomor_referensi` varchar(50) NOT NULL, - `kodebooking` varchar(100) NOT NULL, - `jenis_kunjungan` varchar(10) NOT NULL, - `status_kirim` varchar(20) DEFAULT NULL, - `keterangan` varchar(250) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_antrian_referensi_batal` ( - `tanggal_batal` date NOT NULL, - `nomor_referensi` varchar(50) NOT NULL, - `kodebooking` varchar(100) NOT NULL, - `keterangan` varchar(250) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_antrian_referensi_taskid` ( - `tanggal_periksa` date NOT NULL, - `nomor_referensi` varchar(50) NOT NULL, - `taskid` varchar(50) NOT NULL, - `waktu` varchar(50) NOT NULL, - `status` varchar(20) DEFAULT NULL, - `keterangan` varchar(250) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_apamregister` ( - `nama_lengkap` varchar(225) NOT NULL, - `email` varchar(225) NOT NULL, - `nomor_ktp` varchar(225) NOT NULL, - `nomor_telepon` varchar(225) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `mlite_billing` ( - `id_billing` int(11) NOT NULL, - `kd_billing` varchar(100) NOT NULL, - `no_rawat` varchar(17) NOT NULL, - `jumlah_total` int(100) NOT NULL, - `potongan` int(100) NOT NULL, - `jumlah_harus_bayar` int(100) NOT NULL, - `jumlah_bayar` int(100) NOT NULL, - `tgl_billing` date NOT NULL, - `jam_billing` time NOT NULL, - `id_user` int(11) NOT NULL, - `keterangan` varchar(100) NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_bridging_pcare` ( - `id` int(11) NOT NULL, - `no_rawat` text NOT NULL, - `no_rkm_medis` text, - `tgl_daftar` text, - `nomor_kunjungan` text, - `kode_provider_peserta` text, - `nomor_jaminan` text, - `kode_poli` text, - `nama_poli` text, - `kunjungan_sakit` text, - `sistole` text, - `diastole` text, - `nadi` text, - `respirasi` text, - `tinggi` text, - `berat` text, - `lingkar_perut` text, - `rujuk_balik` text, - `subyektif` text, - `kode_tkp` text, - `nomor_urut` text, - `kode_kesadaran` text, - `nama_kesadaran` text, - `terapi` text, - `kode_status_pulang` text, - `nama_status_pulang` text, - `tgl_pulang` text, - `tgl_kunjungan` text, - `kode_dokter` text, - `nama_dokter` text, - `kode_diagnosa1` text, - `nama_diagnosa1` text, - `kode_diagnosa2` text, - `nama_diagnosa2` text, - `kode_diagnosa3` text, - `nama_diagnosa3` text, - `tgl_estimasi_rujuk` text, - `kode_ppk` text, - `nama_ppk` text, - `kode_spesialis` text, - `nama_spesialis` text, - `kode_subspesialis` text, - `nama_subspesialis` text, - `kode_sarana` text, - `nama_sarana` text, - `kode_referensikhusus` text, - `nama_referensikhusus` text, - `kode_faskeskhusus` text, - `nama_faskeskhusus` text, - `catatan` text, - `kode_tacc` text, - `nama_tacc` text, - `alasan_tacc` text, - `id_user` text NOT NULL, - `tgl_input` text NOT NULL, - `status_kirim` text NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `mlite_detailjurnal` ( - `no_jurnal` varchar(20) DEFAULT NULL, - `kd_rek` varchar(15) DEFAULT NULL, - `arus_kas` int(10) NOT NULL, - `debet` double NOT NULL, - `kredit` double NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_duitku` ( - `id` int(10) NOT NULL, - `tanggal` datetime NOT NULL, - `no_rkm_medis` varchar(15) NOT NULL, - `paymentUrl` varchar(255) NOT NULL, - `merchantCode` varchar(255) NOT NULL, - `reference` varchar(255) NOT NULL, - `vaNumber` varchar(255) NOT NULL, - `amount` varchar(255) NOT NULL, - `statusCode` varchar(255) NOT NULL, - `statusMessage` varchar(255) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_geolocation_presensi` ( - `id` int(11) NOT NULL, - `tanggal` date DEFAULT NULL, - `latitude` varchar(200) NOT NULL, - `longitude` varchar(200) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_jurnal` ( - `no_jurnal` varchar(20) NOT NULL, - `no_bukti` varchar(20) DEFAULT NULL, - `tgl_jurnal` date DEFAULT NULL, - `jenis` enum('U','P') DEFAULT NULL, - `kegiatan` varchar(250) NOT NULL, - `keterangan` varchar(350) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_login_attempts` ( - `ip` text, - `attempts` int(100) NOT NULL, - `expires` int(100) NOT NULL DEFAULT '0' -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_modules` ( - `id` int(11) NOT NULL, - `dir` text, - `sequence` text -) ENGINE=MyISAM AUTO_INCREMENT=35 DEFAULT CHARSET=utf8; - -INSERT INTO `mlite_modules` (`id`, `dir`, `sequence`) VALUES -(1, 'settings', '9'), -(2, 'dashboard', '0'), -(3, 'master', '1'), -(4, 'pasien', '2'), -(5, 'rawat_jalan', '3'), -(6, 'kasir_rawat_jalan', '4'), -(7, 'kepegawaian', '5'), -(8, 'farmasi', '6'), -(9, 'users', '8'), -(10, 'modules', '7'), -(11, 'wagateway', '10'), -(12, 'apotek_ralan', '11'), -(13, 'dokter_ralan', '12'), -(14, 'igd', '13'), -(15, 'dokter_igd', '14'), -(16, 'laboratorium', '15'), -(17, 'radiologi', '16'), -(18, 'icd', '17'), -(19, 'rawat_inap', '18'), -(20, 'apotek_ranap', '19'), -(21, 'dokter_ranap', '20'), -(22, 'kasir_rawat_inap', '21'), -(23, 'operasi', '22'), -(24, 'anjungan', '23'), -(25, 'api', '24'), -(26, 'jkn_mobile', '25'), -(27, 'vclaim', '26'), -(28, 'keuangan', '27'), -(29, 'manajemen', '28'), -(30, 'presensi', '29'), -(31, 'vedika', '30'), -(32, 'profil', '31'), -(33, 'orthanc', '32'), -(34, 'veronisa', '33'); - -CREATE TABLE IF NOT EXISTS `mlite_notifications` ( - `id` int(11) NOT NULL, - `judul` varchar(250) NOT NULL, - `pesan` text NOT NULL, - `tanggal` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `no_rkm_medis` varchar(255) NOT NULL, - `status` varchar(250) NOT NULL DEFAULT 'unread' -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_odontogram` ( - `id` int(11) NOT NULL, - `no_rkm_medis` text NOT NULL, - `pemeriksaan` text, - `kondisi` text, - `catatan` text, - `id_user` text NOT NULL, - `tgl_input` text NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -CREATE TABLE IF NOT EXISTS `mlite_ohis` ( - `id` int(11) NOT NULL, - `no_rkm_medis` text NOT NULL, - `d_16` text, - `d_11` text, - `d_26` text, - `d_36` text, - `d_31` text, - `d_46` text, - `c_16` text, - `c_11` text, - `c_26` text, - `c_36` text, - `c_31` text, - `c_46` text, - `debris` text, - `calculus` text, - `nilai` text, - `kriteria` text, - `id_user` text NOT NULL, - `tgl_input` text NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; - -CREATE TABLE IF NOT EXISTS `mlite_pengaduan` ( - `id` varchar(15) NOT NULL, - `tanggal` datetime NOT NULL, - `no_rkm_medis` varchar(15) NOT NULL, - `pesan` varchar(255) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_pengaduan_detail` ( - `id` int(10) NOT NULL, - `pengaduan_id` varchar(15) NOT NULL, - `tanggal` datetime NOT NULL, - `no_rkm_medis` varchar(15) NOT NULL, - `pesan` varchar(225) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `mlite_penjualan` ( - `id` int(11) NOT NULL, - `nama_pembeli` varchar(100) DEFAULT NULL, - `alamat_pembeli` varchar(100) DEFAULT NULL, - `nomor_telepon` varchar(50) DEFAULT NULL, - `email` varchar(50) DEFAULT NULL, - `tanggal` date NOT NULL, - `jam` time NOT NULL, - `id_user` varchar(50) NOT NULL, - `keterangan` varchar(100) DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_penjualan_barang` ( - `id` int(11) NOT NULL, - `nama_barang` varchar(100) DEFAULT NULL, - `stok` varchar(100) DEFAULT NULL, - `harga` varchar(100) DEFAULT NULL, - `keterangan` varchar(100) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_penjualan_billing` ( - `id` int(11) NOT NULL, - `id_penjualan` int(11) NOT NULL, - `jumlah_total` int(100) NOT NULL, - `potongan` int(100) DEFAULT NULL, - `jumlah_harus_bayar` int(100) NOT NULL, - `jumlah_bayar` int(100) NOT NULL, - `tanggal` date NOT NULL, - `jam` time NOT NULL, - `id_user` varchar(50) NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_penjualan_detail` ( - `id` int(11) NOT NULL, - `id_penjualan` int(11) NOT NULL, - `id_barang` int(11) NOT NULL, - `nama_barang` varchar(100) NOT NULL, - `harga` int(11) NOT NULL, - `jumlah` int(100) NOT NULL, - `harga_total` int(11) NOT NULL, - `tanggal` date NOT NULL, - `jam` time NOT NULL, - `id_user` varchar(50) NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_rekening` ( - `kd_rek` varchar(15) NOT NULL DEFAULT '', - `nm_rek` varchar(100) DEFAULT NULL, - `tipe` enum('N','M','R') DEFAULT NULL, - `balance` enum('D','K') DEFAULT NULL, - `level` enum('0','1') DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_rekeningtahun` ( - `thn` year(4) NOT NULL, - `kd_rek` varchar(15) NOT NULL DEFAULT '', - `saldo_awal` double NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_remember_me` ( - `id` int(11) NOT NULL, - `token` text, - `user_id` int(10) NOT NULL, - `expiry` int(100) NOT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_satu_sehat_departemen` ( - `dep_id` char(4) NOT NULL, - `id_organisasi_satusehat` varchar(40) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_satu_sehat_lokasi` ( - `kode` char(5) NOT NULL, - `lokasi` varchar(40) DEFAULT NULL, - `id_organisasi_satusehat` varchar(40) DEFAULT NULL, - `id_lokasi_satusehat` varchar(40) DEFAULT NULL, - `longitude` varchar(30) NOT NULL, - `latitude` varchar(30) NOT NULL, - `altitude` varchar(30) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_satu_sehat_mapping_praktisi` ( - `practitioner_id` varchar(40) NOT NULL, - `kd_dokter` varchar(20) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_satu_sehat_response` ( - `no_rawat` varchar(17) NOT NULL, - `id_encounter` varchar(50) DEFAULT NULL, - `id_condition` varchar(50) DEFAULT NULL, - `id_observation_ttvnadi` varchar(50) DEFAULT NULL, - `id_observation_ttvrespirasi` varchar(50) DEFAULT NULL, - `id_observation_ttvsuhu` varchar(50) DEFAULT NULL, - `id_observation_ttvspo2` varchar(50) DEFAULT NULL, - `id_observation_ttvgcs` varchar(50) DEFAULT NULL, - `id_observation_ttvtinggi` varchar(50) DEFAULT NULL, - `id_observation_ttvberat` varchar(50) DEFAULT NULL, - `id_observation_ttvperut` varchar(50) DEFAULT NULL, - `id_observation_ttvtensi` varchar(50) DEFAULT NULL, - `id_observation_ttvkesadaran` varchar(50) DEFAULT NULL, - `id_procedure` varchar(50) DEFAULT NULL, - `id_composition` varchar(50) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_settings` ( - `id` int(11) NOT NULL, - `module` text, - `field` text, - `value` text -) ENGINE=MyISAM AUTO_INCREMENT=151 DEFAULT CHARSET=utf8; - -INSERT INTO `mlite_settings` (`id`, `module`, `field`, `value`) VALUES -(1, 'settings', 'logo', 'uploads/settings/logo.png'), -(2, 'settings', 'nama_instansi', 'mLITE Indonesia'), -(3, 'settings', 'alamat', 'Jl. Perintis Kemerdekaan 45'), -(4, 'settings', 'kota', 'Barabai'), -(5, 'settings', 'propinsi', 'Kalimantan Selatan'), -(6, 'settings', 'nomor_telepon', '0812345678'), -(7, 'settings', 'email', 'info@mlite.id'), -(8, 'settings', 'website', 'https://mlite.id'), -(9, 'settings', 'ppk_bpjs', '-'), -(10, 'settings', 'footer', 'Copyright {?=date("Y")?} © by drg. F. Basoro. All rights reserved.'), -(11, 'settings', 'homepage', 'main'), -(12, 'settings', 'wallpaper', 'uploads/settings/wallpaper.jpg'), -(13, 'settings', 'text_color', '#44813e'), -(14, 'settings', 'igd', 'IGDK'), -(15, 'settings', 'laboratorium', '-'), -(16, 'settings', 'pj_laboratorium', 'DR001'), -(17, 'settings', 'radiologi', '-'), -(18, 'settings', 'pj_radiologi', 'DR001'), -(19, 'settings', 'dokter_ralan_per_dokter', 'false'), -(20, 'settings', 'cekstatusbayar', 'false'), -(21, 'settings', 'ceklimit', 'false'), -(22, 'settings', 'responsivevoice', 'false'), -(23, 'settings', 'notif_presensi', 'true'), -(24, 'settings', 'BpjsApiUrl', 'https://apijkn-dev.bpjs-kesehatan.go.id/vclaim-rest-dev/'), -(25, 'settings', 'BpjsConsID', '-'), -(26, 'settings', 'BpjsSecretKey', '-'), -(27, 'settings', 'BpjsUserKey', '-'), -(28, 'settings', 'timezone', 'Asia/Makassar'), -(29, 'settings', 'theme', 'default'), -(30, 'settings', 'theme_admin', 'mlite'), -(31, 'settings', 'admin_mode', 'complex'), -(32, 'settings', 'input_kasir', 'tidak'), -(33, 'settings', 'editor', 'wysiwyg'), -(34, 'settings', 'version', '4.1.2'), -(35, 'settings', 'update_check', '0'), -(36, 'settings', 'update_changelog', ''), -(37, 'settings', 'update_version', '0'), -(38, 'settings', 'license', ''), -(39, 'farmasi', 'deporalan', '-'), -(40, 'farmasi', 'igd', '-'), -(41, 'farmasi', 'deporanap', '-'), -(42, 'farmasi', 'gudang', '-'), -(43, 'wagateway', 'server', 'https://mlite.id'), -(44, 'wagateway', 'token', '-'), -(45, 'wagateway', 'phonenumber', '-'), -(46, 'anjungan', 'display_poli', ''), -(47, 'anjungan', 'carabayar', ''), -(48, 'anjungan', 'antrian_loket', '1'), -(49, 'anjungan', 'antrian_cs', '2'), -(50, 'anjungan', 'antrian_apotek', '3'), -(51, 'anjungan', 'panggil_loket', '1'), -(52, 'anjungan', 'panggil_loket_nomor', '1'), -(53, 'anjungan', 'panggil_cs', '1'), -(54, 'anjungan', 'panggil_cs_nomor', '1'), -(55, 'anjungan', 'panggil_apotek', '1'), -(56, 'anjungan', 'panggil_apotek_nomor', '1'), -(57, 'anjungan', 'text_anjungan', 'Running text anjungan pasien mandiri.....'), -(58, 'anjungan', 'text_loket', 'Running text display antrian loket.....'), -(59, 'anjungan', 'text_poli', 'Running text display antrian poliklinik.....'), -(60, 'anjungan', 'text_laboratorium', 'Running text display antrian laboratorium.....'), -(61, 'anjungan', 'text_apotek', 'Running text display antrian apotek.....'), -(62, 'anjungan', 'text_farmasi', 'Running text display antrian farmasi.....'), -(63, 'anjungan', 'vidio', 'G4im8_n0OoI'), -(64, 'api', 'apam_key', 'qtbexUAxzqO3M8dCOo2vDMFvgYjdUEdMLVo341'), -(65, 'api', 'apam_status_daftar', 'Terdaftar'), -(66, 'api', 'apam_status_dilayani', 'Anda siap dilayani'), -(67, 'api', 'apam_webappsurl', 'http://localhost/webapps/'), -(68, 'api', 'apam_normpetugas', '000001,000002'), -(69, 'api', 'apam_limit', '2'), -(70, 'api', 'apam_smtp_host', 'ssl://smtp.gmail.com'), -(71, 'api', 'apam_smtp_port', '465'), -(72, 'api', 'apam_smtp_username', ''), -(73, 'api', 'apam_smtp_password', ''), -(74, 'api', 'apam_kdpj', ''), -(75, 'api', 'apam_kdprop', ''), -(76, 'api', 'apam_kdkab', ''), -(77, 'api', 'apam_kdkec', ''), -(78, 'api', 'duitku_merchantCode', ''), -(79, 'api', 'duitku_merchantKey', ''), -(80, 'api', 'duitku_paymentAmount', ''), -(81, 'api', 'duitku_paymentMethod', ''), -(82, 'api', 'duitku_productDetails', ''), -(83, 'api', 'duitku_expiryPeriod', ''), -(84, 'api', 'duitku_kdpj', ''), -(85, 'api', 'berkasdigital_key', 'qtbexUAxzqO3M8dCOo2vDMFvgYjdUEdMLVo341'), -(86, 'jkn_mobile', 'x_username', 'jkn'), -(87, 'jkn_mobile', 'x_password', 'mobile'), -(88, 'jkn_mobile', 'header_token', 'X-Token'), -(89, 'jkn_mobile', 'header_username', 'X-Username'), -(90, 'jkn_mobile', 'header_password', 'X-Password'), -(91, 'jkn_mobile', 'BpjsConsID', ''), -(92, 'jkn_mobile', 'BpjsSecretKey', ''), -(93, 'jkn_mobile', 'BpjsUserKey', ''), -(94, 'jkn_mobile', 'BpjsAntrianUrl', 'https://apijkn-dev.bpjs-kesehatan.go.id/antreanrs_dev/'), -(95, 'jkn_mobile', 'kd_pj_bpjs', ''), -(96, 'jkn_mobile', 'exclude_taskid', ''), -(97, 'jkn_mobile', 'display', ''), -(98, 'jkn_mobile', 'kdprop', '1'), -(99, 'jkn_mobile', 'kdkab', '1'), -(100, 'jkn_mobile', 'kdkec', '1'), -(101, 'jkn_mobile', 'kdkel', '1'), -(102, 'jkn_mobile', 'perusahaan_pasien', ''), -(103, 'jkn_mobile', 'suku_bangsa', ''), -(104, 'jkn_mobile', 'bahasa_pasien', ''), -(105, 'jkn_mobile', 'cacat_fisik', ''), -(106, 'keuangan', 'jurnal_kasir', '0'), -(107, 'keuangan', 'akun_kredit_pendaftaran', ''), -(108, 'keuangan', 'akun_kredit_tindakan', ''), -(109, 'keuangan', 'akun_kredit_obat_bhp', ''), -(110, 'keuangan', 'akun_kredit_laboratorium', ''), -(111, 'keuangan', 'akun_kredit_radiologi', ''), -(112, 'keuangan', 'akun_kredit_tambahan_biaya', ''), -(113, 'manajemen', 'penjab_umum', 'UMU'), -(114, 'manajemen', 'penjab_bpjs', 'BPJ'), -(115, 'presensi', 'lat', '-2.58'), -(116, 'presensi', 'lon', '115.37'), -(117, 'presensi', 'distance', '2'), -(118, 'presensi', 'helloworld', 'Jangan Lupa Bahagia; \nCara untuk memulai adalah berhenti berbicara dan mulai melakukan; \nWaktu yang hilang tidak akan pernah ditemukan lagi; \nKamu bisa membodohi semua orang, tetapi kamu tidak bisa membohongi pikiranmu; \nIni bukan tentang ide. Ini tentang mewujudkan ide; \nBekerja bukan hanya untuk mencari materi. Bekerja merupakan manfaat bagi banyak orang'), -(119, 'vedika', 'carabayar', ''), -(120, 'vedika', 'sep', ''), -(121, 'vedika', 'skdp', ''), -(122, 'vedika', 'operasi', ''), -(123, 'vedika', 'individual', ''), -(124, 'vedika', 'billing', 'mlite'), -(125, 'vedika', 'periode', '2023-01'), -(126, 'vedika', 'verifikasi', '2023-01'), -(127, 'vedika', 'inacbgs_prosedur_bedah', ''), -(128, 'vedika', 'inacbgs_prosedur_non_bedah', ''), -(129, 'vedika', 'inacbgs_konsultasi', ''), -(130, 'vedika', 'inacbgs_tenaga_ahli', ''), -(131, 'vedika', 'inacbgs_keperawatan', ''), -(132, 'vedika', 'inacbgs_penunjang', ''), -(133, 'vedika', 'inacbgs_pelayanan_darah', ''), -(134, 'vedika', 'inacbgs_rehabilitasi', ''), -(135, 'vedika', 'inacbgs_rawat_intensif', ''), -(136, 'vedika', 'eklaim_url', ''), -(137, 'vedika', 'eklaim_key', ''), -(138, 'vedika', 'eklaim_kelasrs', 'CP'), -(139, 'vedika', 'eklaim_payor_id', '3'), -(140, 'vedika', 'eklaim_payor_cd', 'JKN'), -(141, 'vedika', 'eklaim_cob_cd', '#'), -(142, 'orthanc', 'server', 'http://localhost:8042'), -(143, 'orthanc', 'username', 'orthanc'), -(144, 'orthanc', 'password', 'orthanc'), -(145, 'veronisa', 'username', ''), -(146, 'veronisa', 'password', ''), -(147, 'veronisa', 'obat_kronis', ''), -(148, 'jkn_mobile', 'kirimantrian', 'tidak'), -(149, 'settings', 'keamanan', 'ya'), -(150, 'dokter_ralan', 'set_sudah', 'tidak'); - -CREATE TABLE IF NOT EXISTS `mlite_subrekening` ( - `kd_rek` varchar(15) NOT NULL, - `kd_rek2` varchar(15) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_temporary` ( - `temp1` text, - `temp2` text, - `temp3` text, - `temp4` text, - `temp5` text, - `temp6` text, - `temp7` text, - `temp8` text, - `temp9` text, - `temp10` text, - `temp11` text, - `temp12` text, - `temp13` text, - `temp14` text, - `temp15` text, - `temp16` text, - `temp17` text, - `temp18` text, - `temp19` text, - `temp20` text, - `temp21` text, - `temp22` text, - `temp23` text, - `temp24` text, - `temp25` text, - `temp26` text, - `temp27` text, - `temp28` text, - `temp29` text, - `temp30` text, - `temp31` text, - `temp32` text, - `temp33` text, - `temp34` text, - `temp35` text, - `temp36` text, - `temp37` text, - `temp38` text, - `temp39` text, - `temp40` text, - `temp41` text, - `temp42` text, - `temp43` text, - `temp44` text, - `temp45` text, - `temp46` text, - `temp47` text, - `temp48` text, - `temp49` text, - `temp50` text, - `temp51` text, - `temp52` text, - `temp53` text, - `temp54` text, - `temp55` text, - `temp56` text, - `temp57` text, - `temp58` text, - `temp59` text, - `temp60` text, - `temp61` text, - `temp62` text, - `temp63` text, - `temp64` text, - `temp65` text, - `temp66` text, - `temp67` text, - `temp68` text, - `temp69` text, - `temp70` text, - `temp71` text, - `temp72` text, - `temp73` text, - `temp74` text, - `temp75` text, - `temp76` text, - `temp77` text, - `temp78` text, - `temp79` text, - `temp80` text, - `temp81` text, - `temp82` text, - `temp83` text, - `temp84` text, - `temp85` text, - `temp86` text, - `temp87` text, - `temp88` text, - `temp89` text, - `temp90` text, - `temp91` text, - `temp92` text, - `temp93` text, - `temp94` text, - `temp95` text, - `temp96` text, - `temp97` text, - `temp98` text, - `temp99` text, - `temp100` text -) ENGINE=MyISAM DEFAULT CHARSET=latin1; - -CREATE TABLE IF NOT EXISTS `mlite_users` ( - `id` int(11) NOT NULL, - `username` text, - `fullname` text, - `description` text, - `password` text, - `avatar` text, - `email` text, - `role` varchar(100) NOT NULL DEFAULT 'user', - `cap` varchar(100) DEFAULT '', - `access` varchar(500) NOT NULL DEFAULT 'dashboard' -) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; - -INSERT INTO `mlite_users` (`id`, `username`, `fullname`, `description`, `password`, `avatar`, `email`, `role`, `cap`, `access`) VALUES -(1, 'admin', 'Administrator', 'Admin ganteng baik hati, suka menabung dan tidak sombong.', '$2y$10$pgRnDiukCbiYVqsamMM3ROWViSRqbyCCL33N8.ykBKZx0dlplXe9i', 'avatar6422cb573b50c.png', 'info@mlite.id', 'admin', '', 'all'); - -CREATE TABLE IF NOT EXISTS `mlite_users_vedika` ( - `id` int(11) NOT NULL, - `username` text, - `password` text, - `fullname` text -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_vedika` ( - `id` int(11) NOT NULL, - `tanggal` date DEFAULT NULL, - `no_rkm_medis` varchar(6) NOT NULL, - `no_rawat` varchar(100) NOT NULL, - `tgl_registrasi` varchar(100) NOT NULL, - `nosep` varchar(100) NOT NULL, - `jenis` varchar(100) NOT NULL, - `status` varchar(100) NOT NULL, - `username` varchar(100) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_vedika_feedback` ( - `id` int(11) NOT NULL, - `nosep` varchar(100) NOT NULL, - `tanggal` date DEFAULT NULL, - `catatan` text, - `username` varchar(100) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_veronisa` ( - `id` int(11) NOT NULL, - `tanggal` date DEFAULT NULL, - `no_rkm_medis` varchar(6) NOT NULL, - `no_rawat` varchar(100) NOT NULL, - `tgl_registrasi` varchar(100) NOT NULL, - `nosep` varchar(100) NOT NULL, - `status` varchar(100) NOT NULL, - `username` varchar(100) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -CREATE TABLE IF NOT EXISTS `mlite_veronisa_feedback` ( - `id` int(11) NOT NULL, - `nosep` varchar(100) NOT NULL, - `tanggal` date DEFAULT NULL, - `catatan` text, - `username` varchar(100) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -ALTER TABLE `mlite_akun_kegiatan` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_antrian_loket` - ADD PRIMARY KEY (`kd`); - -ALTER TABLE `mlite_billing` - ADD PRIMARY KEY (`id_billing`); - -ALTER TABLE `mlite_bridging_pcare` - ADD PRIMARY KEY (`id`) USING BTREE; - -ALTER TABLE `mlite_detailjurnal` - ADD KEY `no_jurnal` (`no_jurnal`), - ADD KEY `kd_rek` (`kd_rek`), - ADD KEY `debet` (`debet`), - ADD KEY `kredit` (`kredit`); - -ALTER TABLE `mlite_duitku` - ADD PRIMARY KEY (`id`), - ADD KEY `reference` (`reference`), - ADD KEY `mlite_duitku_ibfk_1` (`no_rkm_medis`); - -ALTER TABLE `mlite_geolocation_presensi` - ADD KEY `mlite_geolocation_presensi_ibfk_1` (`id`); - -ALTER TABLE `mlite_jurnal` - ADD PRIMARY KEY (`no_jurnal`), - ADD KEY `no_bukti` (`no_bukti`), - ADD KEY `tgl_jurnal` (`tgl_jurnal`), - ADD KEY `jenis` (`jenis`), - ADD KEY `keterangan` (`keterangan`); - -ALTER TABLE `mlite_modules` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_notifications` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_odontogram` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_ohis` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_pengaduan` - ADD PRIMARY KEY (`id`), - ADD KEY `no_rkm_medis` (`no_rkm_medis`); - -ALTER TABLE `mlite_pengaduan_detail` - ADD PRIMARY KEY (`id`) USING BTREE, - ADD KEY `pengaduan_detail_ibfk_1` (`pengaduan_id`); - -ALTER TABLE `mlite_penjualan` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_penjualan_barang` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_penjualan_billing` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_penjualan_detail` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_rekening` - ADD PRIMARY KEY (`kd_rek`), - ADD KEY `nm_rek` (`nm_rek`), - ADD KEY `tipe` (`tipe`), - ADD KEY `balance` (`balance`); - -ALTER TABLE `mlite_rekeningtahun` - ADD PRIMARY KEY (`thn`,`kd_rek`), - ADD KEY `kd_rek` (`kd_rek`), - ADD KEY `saldo_awal` (`saldo_awal`); - -ALTER TABLE `mlite_remember_me` - ADD PRIMARY KEY (`id`), - ADD KEY `mlite_remember_me_ibfk_1` (`user_id`); - -ALTER TABLE `mlite_satu_sehat_departemen` - ADD PRIMARY KEY (`dep_id`), - ADD UNIQUE KEY `id_organisasi_satusehat` (`id_organisasi_satusehat`); - -ALTER TABLE `mlite_satu_sehat_lokasi` - ADD PRIMARY KEY (`kode`), - ADD UNIQUE KEY `id_lokasi_satusehat` (`id_lokasi_satusehat`), - ADD KEY `id_organisasi_satusehat` (`id_organisasi_satusehat`); - -ALTER TABLE `mlite_satu_sehat_mapping_praktisi` - ADD PRIMARY KEY (`practitioner_id`), - ADD KEY `kd_dokter` (`kd_dokter`); - -ALTER TABLE `mlite_satu_sehat_response` - ADD PRIMARY KEY (`no_rawat`); - -ALTER TABLE `mlite_settings` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_subrekening` - ADD PRIMARY KEY (`kd_rek2`), - ADD KEY `kd_rek` (`kd_rek`); - -ALTER TABLE `mlite_users` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_users_vedika` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_vedika` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_vedika_feedback` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_veronisa` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_veronisa_feedback` - ADD PRIMARY KEY (`id`); - -ALTER TABLE `mlite_akun_kegiatan` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_antrian_loket` - MODIFY `kd` int(50) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_billing` - MODIFY `id_billing` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_bridging_pcare` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_duitku` - MODIFY `id` int(10) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_modules` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=35; - -ALTER TABLE `mlite_notifications` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_odontogram` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_ohis` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_pengaduan_detail` - MODIFY `id` int(10) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_penjualan` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_penjualan_barang` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_penjualan_billing` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_penjualan_detail` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_remember_me` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_settings` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=151; - -ALTER TABLE `mlite_users` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3; - -ALTER TABLE `mlite_users_vedika` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_vedika` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_vedika_feedback` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_veronisa` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_veronisa_feedback` - MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; - -ALTER TABLE `mlite_detailjurnal` - ADD CONSTRAINT `mlite_detailjurnal_ibfk_1` FOREIGN KEY (`no_jurnal`) REFERENCES `mlite_jurnal` (`no_jurnal`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `mlite_detailjurnal_ibfk_2` FOREIGN KEY (`kd_rek`) REFERENCES `mlite_rekening` (`kd_rek`) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `mlite_duitku` - ADD CONSTRAINT `mlite_duitku_ibfk_1` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `mlite_geolocation_presensi` - ADD CONSTRAINT `mlite_geolocation_presensi_ibfk_1` FOREIGN KEY (`id`) REFERENCES `pegawai` (`id`) ON UPDATE CASCADE; - -ALTER TABLE `mlite_pengaduan` - ADD CONSTRAINT `mlite_pengaduan_ibfk_1` FOREIGN KEY (`no_rkm_medis`) REFERENCES `pasien` (`no_rkm_medis`) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `mlite_pengaduan_detail` - ADD CONSTRAINT `mlite_pengaduan_detail_ibfk_1` FOREIGN KEY (`pengaduan_id`) REFERENCES `mlite_pengaduan` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `mlite_rekeningtahun` - ADD CONSTRAINT `mlite_rekeningtahun_ibfk_1` FOREIGN KEY (`kd_rek`) REFERENCES `mlite_rekening` (`kd_rek`) ON UPDATE CASCADE; - -ALTER TABLE `mlite_satu_sehat_lokasi` - ADD CONSTRAINT `mlite_satu_sehat_lokasi_ibfk_2` FOREIGN KEY (`id_organisasi_satusehat`) REFERENCES `mlite_satu_sehat_departemen` (`id_organisasi_satusehat`) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `mlite_satu_sehat_mapping_praktisi` - ADD CONSTRAINT `mlite_satu_sehat_mapping_praktisi_ibfk_1` FOREIGN KEY (`kd_dokter`) REFERENCES `dokter` (`kd_dokter`) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `mlite_satu_sehat_response` - ADD CONSTRAINT `mlite_satu_sehat_response_ibfk_1` FOREIGN KEY (`no_rawat`) REFERENCES `reg_periksa` (`no_rawat`) ON DELETE CASCADE ON UPDATE CASCADE; - -ALTER TABLE `mlite_subrekening` - ADD CONSTRAINT `mlite_subrekening_ibfk_1` FOREIGN KEY (`kd_rek`) REFERENCES `mlite_rekening` (`kd_rek`) ON UPDATE CASCADE, - ADD CONSTRAINT `mlite_subrekening_ibfk_2` FOREIGN KEY (`kd_rek2`) REFERENCES `mlite_rekening` (`kd_rek`) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/plugins/afm/Admin.php b/plugins/afm/Admin.php index 26191aec3..533c0bd75 100644 --- a/plugins/afm/Admin.php +++ b/plugins/afm/Admin.php @@ -6,6 +6,8 @@ class Admin extends AdminModule { + public $assign = []; + public function navigation() { return [ @@ -17,11 +19,15 @@ public function getManage() { $this->assign['title'] = 'Pengaturan Modul API AFM'; $this->assign['afm'] = htmlspecialchars_array($this->settings('afm')); - return $this->draw('settings.html', ['settings' => $this->assign]); + return $this->draw('settings.html', ['settings' => htmlspecialchars_array($this->assign)]); } public function postSaveSettings() { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'afm', 'manage'])); + } foreach ($_POST['afm'] as $key => $val) { $this->settings('afm', $key, $val); } diff --git a/plugins/afm/Help.md b/plugins/afm/Help.md deleted file mode 100644 index 1bc4f1632..000000000 --- a/plugins/afm/Help.md +++ /dev/null @@ -1,8 +0,0 @@ -Untuk menggunakan fitur ini, silahkan ikuti langkah-langkah berikut! -1. Aktifkan modul AFM (Anjungan finger mandiri). Jika anda bisa membaca tutorial ini berarti anda sudah mengaktifkan modulnya (LOL) ...!! -2. Isikan kredensial di pengaturan AFM, yag terdiri dari token AFM, username finger dan password finger BPJS. -3. Download file AFM di mLITE.id dengan klik mlite.id/page/afm -4. Extract dan jalankan file hasil download point 3 di Anjungan Finger mandiri -5. Silahkan ujicoba - -Jika ada kesulitan silahkan tanyakan di grup diff --git a/plugins/afm/Info.php b/plugins/afm/Info.php index 1d40d8960..6d5ad33ea 100644 --- a/plugins/afm/Info.php +++ b/plugins/afm/Info.php @@ -3,8 +3,9 @@ 'name' => 'AFM', 'description' => 'Katalog API AFM mLITE', 'author' => 'Basoro', + 'category' => 'bridging', 'version' => '1.0', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'laptop', 'pages' => ['API AFM mLITE' => 'afm'], 'install' => function () use ($core) { diff --git a/plugins/afm/README.md b/plugins/afm/README.md new file mode 100644 index 000000000..0159411f3 --- /dev/null +++ b/plugins/afm/README.md @@ -0,0 +1,29 @@ +# Plugin AFM + +Dokumentasi singkat penggunaan modul **AFM** di mLITE. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **API AFM mLITE**. +- Pilih submenu sesuai kebutuhan: + - Kelola + +## Panduan Pengguna (Petugas) + +Plugin AFM bersifat konfigurasi teknis dan tidak memiliki alur operasional harian untuk petugas. Akses diberikan kepada admin teknis yang mengelola integrasi API. + +## Panduan Admin + +1. **Kelola (Pengaturan Token API)** + - Buka menu **API AFM mLITE → Kelola**. + - Isi field **AFM Token** dengan token autentikasi yang diberikan oleh penyedia layanan AFM. + - Isi **Username Finger** dan **Password Finger** untuk integrasi perangkat fingerprint. + - Isi **X-Header-Token** sesuai nama header yang disepakati dengan sistem eksternal (default: `X-Header-Token`). + - Klik **Simpan** untuk menyimpan konfigurasi. + +## Catatan + +- Token AFM bersifat rahasia; jangan bagikan ke pihak yang tidak berwenang. +- Perubahan token memerlukan sinkronisasi ulang dengan sistem eksternal yang menggunakan API ini. +- Plugin ini termasuk kategori **bridging** dan berfungsi sebagai katalog titik akses API AFM mLITE untuk integrasi sistem lain. diff --git a/plugins/afm/Site.php b/plugins/afm/Site.php index 25e6cd313..e0ad76c20 100644 --- a/plugins/afm/Site.php +++ b/plugins/afm/Site.php @@ -59,9 +59,13 @@ public function _getCariPasien() } else if ($header[$this->settings->get('afm.x_header_token')] == $this->settings->get('afm.afm_token')){ $cari = isset_or($decode['nomor_kartu'],''); $field = isset_or($decode['kolom'], 'no_rkm_medis'); - $sql = "SELECT no_peserta , no_rkm_medis , no_ktp , no_tlp FROM pasien WHERE " . $field . " = '" . $cari . "'"; + $allowed_fields = ['no_rkm_medis', 'no_peserta', 'no_ktp', 'no_tlp']; + if (!in_array($field, $allowed_fields)) { + $field = 'no_rkm_medis'; + } + $sql = "SELECT no_peserta , no_rkm_medis , no_ktp , no_tlp FROM pasien WHERE `" . $field . "` = :cari"; $query = $this->db()->pdo()->prepare($sql); - $query->execute(); + $query->execute([':cari' => $cari]); $cek_bookings = $query->fetch(); if (!is_array($cek_bookings)) { $cek_bookings = []; @@ -81,7 +85,7 @@ public function _getCariPasien() ); http_response_code(200); } - echo json_encode($response,true); + echo json_encode(htmlspecialchars_array($response),true); exit(); } @@ -134,7 +138,7 @@ public function _getBio() ); http_response_code(200); } - echo json_encode($response,true); + echo json_encode(htmlspecialchars_array($response),true); exit(); } @@ -201,7 +205,7 @@ public function _getRegPasien() http_response_code(200); } } - echo json_encode($response,true); + echo json_encode(htmlspecialchars_array($response),true); exit(); } @@ -253,7 +257,7 @@ public function _getUserPassFinger() ); http_response_code(200); } - echo json_encode($response,true); + echo json_encode(htmlspecialchars_array($response),true); exit(); } @@ -320,7 +324,7 @@ public function _getSepPatient() http_response_code(200); } } - echo json_encode($response,true); + echo json_encode(htmlspecialchars_array($response),true); exit(); } } diff --git a/plugins/afm/js/admin/notifikasi.js b/plugins/afm/js/admin/notifikasi.js index 2a8883209..52b61433b 100644 --- a/plugins/afm/js/admin/notifikasi.js +++ b/plugins/afm/js/admin/notifikasi.js @@ -2,14 +2,12 @@ $("#notif").hide(); // tombol tambah diklik $("#index").on('click', '#bukaform', function(){ var baseURL = mlite.url + '/' + mlite.admin; - event.preventDefault(); $("#form").show().load(baseURL + '/api/notifikasiform?t=' + mlite.token); $("#bukaform").val("Tutup Form"); $("#bukaform").attr("id", "tutupform"); }); $("#index").on('click', '#tutupform', function(){ - event.preventDefault(); $("#form").hide(); $("#tutupform").val("Buka Form"); $("#tutupform").attr("id", "bukaform"); diff --git a/plugins/afm/view/admin/settings.html b/plugins/afm/view/admin/settings.html index 931f04db2..bdff733e0 100644 --- a/plugins/afm/view/admin/settings.html +++ b/plugins/afm/view/admin/settings.html @@ -1,22 +1,22 @@ -
    +
    -

    {$settings.title}

    +

    {?=isset_or($settings.title)?}

    - +
    - +
    - +
    @@ -32,8 +32,31 @@

    {$settings.title}

    +
    +
    +
    +

    Biometrik JKN BPJS

    +
    +
    +

    Instalasi

    + +

    Sebelum memulai instalasi, buka **Windows Powershell** lalu jalankan perintah berikut:

    + + + Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force; + +

    +

    Tujuannya untuk mengubah ExecutionPolicy supaya dapat menjalankan script instalasi.

    + +

    Download dan extract Zip, klik kanan script install.ps1 lalu pilih Run with PowerShell, ketik R untuk melanjutkan. Jika terdapat prompt terkait Execution Policy, ketik huruf A yakni Yes to All lalu tunggu hingga proses instalasi selesai. Jalankan perintah node .\index.js untuk mengaktikan bot biometrik. Server bot akan berjalan di port 3000 secara default dan seharusnya dapat di-akses melalui browser di alamat http://localhost:3000.

    +

    + Download +

    +
    +
    +
    -
    +
    diff --git a/plugins/anjungan/Admin.php b/plugins/anjungan/Admin.php index f54843b79..5abfc87c2 100644 --- a/plugins/anjungan/Admin.php +++ b/plugins/anjungan/Admin.php @@ -6,11 +6,13 @@ class Admin extends AdminModule { + public $assign = []; public function navigation() { return [ 'Kelola' => 'manage', 'Display' => 'index', + 'Pemanggil' => 'pemanggil', 'Pengaturan' => 'settings', ]; } @@ -19,9 +21,10 @@ public function getManage() { $sub_modules = [ ['name' => 'Display', 'url' => url([ADMIN, 'anjungan', 'index']), 'icon' => 'desktop', 'desc' => 'Display-Display Informasi Anjungan'], - ['name' => 'Pengaturan', 'url' => url([ADMIN, 'anjungan', 'settings']), 'icon' => 'desktop', 'desc' => 'Pengaturan Anjungan'], + ['name' => 'Pemanggil', 'url' => url([ADMIN, 'anjungan', 'pemanggil']), 'icon' => 'bullhorn', 'desc' => 'Pemanggil Antrian'], + ['name' => 'Pengaturan', 'url' => url([ADMIN, 'anjungan', 'settings']), 'icon' => 'gear', 'desc' => 'Pengaturan Anjungan'], ]; - return $this->draw('manage.html', ['sub_modules' => $sub_modules]); + return $this->draw('manage.html', ['sub_modules' => htmlspecialchars_array($sub_modules)]); } public function getIndex() @@ -29,18 +32,202 @@ public function getIndex() return $this->draw('index.html'); } + public function getPemanggil() + { + $title = 'Display Antrian Loket'; + $logo = $this->settings->get('settings.logo'); + $display = ''; + + $_username = ''; + $__username = 'Tamu'; + if(isset($_SESSION['mlite_user'])) { + $_username = $this->core->getUserInfo('fullname', null, true); + $__username = $this->core->getUserInfo('username'); + } + $tanggal = getDayIndonesia(date('Y-m-d')).', '.dateIndonesia(date('Y-m-d')); + $username = !empty($_username) ? $_username : $__username; + + $show = isset($_GET['show']) ? $_GET['show'] : ""; + switch($show){ + default: + break; + case "panggil_loket": + $display = 'Panggil Loket'; + + $_username = ''; + $__username = 'Tamu'; + if(isset($_SESSION['mlite_user'])) { + $_username = $this->core->getUserInfo('fullname', null, true); + $__username = $this->core->getUserInfo('username'); + } + $tanggal = getDayIndonesia(date('Y-m-d')).', '.dateIndonesia(date('Y-m-d')); + $username = !empty($_username) ? $_username : $__username; + + $setting_antrian_loket = str_replace(",","','", $this->settings->get('anjungan.antrian_loket')); + $loket = explode(",", $this->settings->get('anjungan.antrian_loket')); + $namaloket = 'a'; + $panggil_loket = 'panggil_loket'; + $get_antrian = $this->db('mlite_antrian_loket')->select('noantrian')->where('type', 'Loket')->where('postdate', date('Y-m-d'))->desc('start_time')->oneArray(); + $noantrian = 0; + if(!empty($get_antrian['noantrian'])) { + $noantrian = $get_antrian['noantrian']; + } + + $antriloket = $this->settings->get('anjungan.panggil_loket_nomor'); + $tcounter = $antriloket; + $_tcounter = 1; + if(!empty($tcounter)) { + $_tcounter = $tcounter + 1; + } + if(isset($_GET['loket'])) { + $this->db('mlite_antrian_loket') + ->where('type', 'Loket') + ->where('noantrian', $tcounter) + ->where('postdate', date('Y-m-d')) + ->save(['end_time' => date('H:i:s')]); + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_loket')->save(['value' => $_GET['loket']]); + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_loket_nomor')->save(['value' => $_tcounter]); + } + if(isset($_GET['antrian'])) { + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_loket')->save(['value' => $_GET['reset']]); + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_loket_nomor')->save(['value' => $_GET['antrian']]); + } + if(isset($_GET['no_rkm_medis'])) { + $this->db('mlite_antrian_loket')->where('noantrian', $_GET['noantrian'])->where('postdate', date('Y-m-d'))->save(['no_rkm_medis' => $_GET['no_rkm_medis']]); + } + $hitung_antrian = $this->db('mlite_antrian_loket') + ->where('type', 'Loket') + ->like('postdate', date('Y-m-d')) + ->toArray(); + $counter = strlen($tcounter); + $xcounter = []; + for($i=0;$i<$counter;$i++){ + $xcounter[] = ''; + }; + + break; + case "panggil_cs": + $display = 'Panggil CS'; + $loket = explode(",", $this->settings->get('anjungan.antrian_cs')); + $namaloket = 'b'; + $panggil_loket = 'panggil_cs'; + $get_antrian = $this->db('mlite_antrian_loket')->select('noantrian')->where('type', 'CS')->where('postdate', date('Y-m-d'))->desc('start_time')->oneArray(); + $noantrian = 0; + if(!empty($get_antrian['noantrian'])) { + $noantrian = $get_antrian['noantrian']; + } + + $antriloket = $this->settings->get('anjungan.panggil_cs_nomor'); + $tcounter = $antriloket; + $_tcounter = 1; + if(!empty($tcounter)) { + $_tcounter = $tcounter + 1; + } + if(isset($_GET['loket'])) { + $this->db('mlite_antrian_loket') + ->where('type', 'CS') + ->where('noantrian', $tcounter) + ->where('postdate', date('Y-m-d')) + ->save(['end_time' => date('H:i:s')]); + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_cs')->save(['value' => $_GET['loket']]); + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_cs_nomor')->save(['value' => $_tcounter]); + } + if(isset($_GET['antrian'])) { + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_cs')->save(['value' => $_GET['reset']]); + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_cs_nomor')->save(['value' => $_GET['antrian']]); + } + $hitung_antrian = $this->db('mlite_antrian_loket') + ->where('type', 'CS') + ->like('postdate', date('Y-m-d')) + ->toArray(); + $counter = strlen($tcounter); + $xcounter = []; + for($i=0;$i<$counter;$i++){ + $xcounter[] = ''; + }; + + break; + case "panggil_apotek": + $display = 'Panggil Apotek'; + $loket = explode(",", $this->settings->get('anjungan.antrian_apotek')); + $namaloket = 'f'; + $panggil_loket = 'panggil_apotek'; + $get_antrian = $this->db('mlite_antrian_loket')->select('noantrian')->where('type', 'Apotek')->where('postdate', date('Y-m-d'))->desc('start_time')->oneArray(); + $noantrian = 0; + if(!empty($get_antrian['noantrian'])) { + $noantrian = $get_antrian['noantrian']; + } + + $antriloket = $this->settings->get('anjungan.panggil_apotek_nomor'); + $tcounter = $antriloket; + $_tcounter = 1; + if(!empty($tcounter)) { + $_tcounter = $tcounter + 1; + } + if(isset($_GET['loket'])) { + $this->db('mlite_antrian_loket') + ->where('type', 'Apotek') + ->where('noantrian', $tcounter) + ->where('postdate', date('Y-m-d')) + ->save(['end_time' => date('H:i:s')]); + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_apotek')->save(['value' => $_GET['loket']]); + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_apotek_nomor')->save(['value' => $_tcounter]); + } + if(isset($_GET['antrian'])) { + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_apotek')->save(['value' => $_GET['reset']]); + $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_apotek_nomor')->save(['value' => $_GET['antrian']]); + } + $hitung_antrian = $this->db('mlite_antrian_loket') + ->where('type', 'Apotek') + ->like('postdate', date('Y-m-d')) + ->toArray(); + $counter = strlen($tcounter); + $xcounter = []; + for($i=0;$i<$counter;$i++){ + $xcounter[] = ''; + }; + + break; + } + + return $this->draw('pemanggil.html', [ + 'title' => $title, + 'logo' => $logo, + 'powered' => 'Powered by mLITE', + 'username' => $username, + 'tanggal' => $tanggal, + 'show' => isset_or($show), + 'loket' => isset_or($loket), + 'namaloket' => isset_or($namaloket), + 'panggil_loket' => isset_or($panggil_loket), + 'antrian' => isset_or($tcounter), + 'hitung_antrian' => isset_or($hitung_antrian), + 'xcounter' => isset_or($xcounter), + 'noantrian' =>isset_or($noantrian), + 'display' => $display + ]); + } + public function getSettings() { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'anjungan', 'index'])); + } $this->assign['title'] = 'Pengaturan Modul Anjungan'; $this->assign['poliklinik'] = $this->_getPoliklinik($this->settings->get('anjungan.display_poli')); $this->assign['penjab'] = $this->_getPenjab($this->settings->get('anjungan.carabayar')); $this->assign['anjungan'] = htmlspecialchars_array($this->settings('anjungan')); - return $this->draw('settings.html', ['settings' => $this->assign]); + return $this->draw('settings.html', ['settings' => htmlspecialchars_array($this->assign)]); } public function postSaveSettings() { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'anjungan', 'index'])); + } $_POST['anjungan']['display_poli'] = implode(',', $_POST['anjungan']['display_poli']); $_POST['anjungan']['carabayar'] = implode(',', $_POST['anjungan']['carabayar']); foreach ($_POST['anjungan'] as $key => $val) { diff --git a/plugins/anjungan/Help.md b/plugins/anjungan/Help.md deleted file mode 100644 index ee707d08c..000000000 --- a/plugins/anjungan/Help.md +++ /dev/null @@ -1,3 +0,0 @@ -
    - -
    diff --git a/plugins/anjungan/Info.php b/plugins/anjungan/Info.php index 3c15766a7..02a5e53a0 100644 --- a/plugins/anjungan/Info.php +++ b/plugins/anjungan/Info.php @@ -3,8 +3,9 @@ 'name' => 'Anjungan', 'description' => 'Modul anjungan pasien rawat jalan', 'author' => 'Basoro', + 'category' => 'bridging', 'version' => '1.0', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'desktop', 'pages' => ['Anjungan Pasien Mandiri' => 'anjungan'], 'install' => function () use ($core) { diff --git a/plugins/anjungan/README.md b/plugins/anjungan/README.md new file mode 100644 index 000000000..ba694d169 --- /dev/null +++ b/plugins/anjungan/README.md @@ -0,0 +1,55 @@ +# Plugin Anjungan + +Dokumentasi singkat penggunaan modul **Anjungan Pasien Mandiri** di mLITE. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Anjungan Pasien Mandiri**. +- Pilih submenu sesuai kebutuhan: + - Kelola + - Display + - Pemanggil + - Pengaturan + +## Panduan Pengguna (Petugas) + +Petugas loket, CS, dan apotek menggunakan fitur **Pemanggil** untuk memanggil nomor antrian pasien: + +1. **Panggil Antrian Loket** + - Buka **Pemanggil → Panggil Loket**. + - Klik tombol loket yang dituju untuk memanggil nomor antrian berikutnya. + - Sistem akan memperbarui nomor antrian dan memutar suara pemanggilan. + - Gunakan tombol **Reset** untuk mereset nomor antrian ke awal hari. + +2. **Panggil Antrian CS** + - Buka **Pemanggil → Panggil CS**. + - Proses sama seperti pemanggil loket, menggunakan antrian tipe CS. + +3. **Panggil Antrian Apotek** + - Buka **Pemanggil → Panggil Apotek**. + - Proses sama seperti pemanggil loket, menggunakan antrian tipe Apotek. + +4. **Display Informasi** + - Buka submenu **Display** untuk menampilkan layar informasi antrian poliklinik, loket, laboratorium, dan apotek secara publik (dapat dipasang di monitor ruang tunggu). + +## Panduan Admin + +1. **Pengaturan Anjungan** + - Buka **Anjungan → Pengaturan**. + - Pilih **Poliklinik** yang ditampilkan di anjungan (multiselect). + - Pilih **Cara Bayar** yang diperbolehkan mendaftar mandiri. + - Atur nomor antrian awal untuk Loket, CS, dan Apotek. + - Isi **Running Text** untuk setiap layar display (anjungan, loket, poli, lab, apotek, farmasi). + - Isi **ID Video YouTube** yang akan ditayangkan di layar anjungan. + - Klik **Simpan** untuk menyimpan pengaturan. + +2. **Reset Antrian Harian** + - Gunakan fungsi reset antrian (Loket/CS/Apotek) di awal hari atau saat antrian perlu dimulai ulang. + - Reset dapat dipicu melalui endpoint yang tersedia di Admin.php (`resetAnjunganLoket`, `resetAnjunganCS`, `resetAnjunganApotek`). + +## Catatan + +- Suara pemanggilan menggunakan file audio digit (0–9) di folder `plugins/anjungan/suara/`. +- Layar Display dapat dibuka di browser terpisah atau monitor publik tanpa login admin. +- Pastikan nomor antrian awal di pengaturan sudah benar sebelum operasional dimulai setiap hari. diff --git a/plugins/anjungan/Site.php b/plugins/anjungan/Site.php index 52e8c4f2e..510061be2 100644 --- a/plugins/anjungan/Site.php +++ b/plugins/anjungan/Site.php @@ -27,12 +27,20 @@ public function init() public function routes() { + // Auth or IP Restriction Check + if (strpos($_SERVER['REQUEST_URI'], '/anjungan') !== false) { + $this->_checkAccess(); + } + $this->route('anjungan', 'getIndex'); $this->route('anjungan/pasien', 'getDisplayAPM'); $this->route('anjungan/loket', 'getDisplayAntrianLoket'); $this->route('anjungan/loket2', 'getDisplayAntrianLoket2'); $this->route('anjungan/poli', 'getDisplayAntrianPoli'); + $this->route('anjungan/panggil_loket', 'getAntrianPanggilLoket'); + + /* Sumbangan Mbak Kiki Sagira RS Bhayangkara Makassar */ $this->route('anjungan/display/poli/(:str)', 'getDisplayAntrianPoliSatu'); $this->route('anjungan/display/poli/(:str)/(:str)', 'getDisplayAntrianPoliDua'); @@ -45,6 +53,7 @@ public function routes() $this->route('anjungan/display/poli/(:str)', 'getDisplayAntrianPoliDisplay'); $this->route('anjungan/display/poli/(:str)/(:str)', 'getDisplayAntrianPoliDisplay'); $this->route('anjungan/laboratorium', 'getDisplayAntrianLaboratorium'); + $this->route('anjungan/radiologi', 'getDisplayAntrianRadiologi'); $this->route('anjungan/apotek', 'getDisplayAntrianApotek'); $this->route('anjungan/apotek/ambilantrian', 'getDisplayAntrianApotekAmbil'); $this->route('anjungan/ajax', 'getAjax'); @@ -67,6 +76,151 @@ public function routes() //$this->route('anjungan/daftar/baru/(:str)', 'getDaftarBPJS'); } + private function _checkAccess() + { + // 1. Check if user is logged in + if (isset($_SESSION['mlite_user'])) { + return true; + } + + // 2. Check if IP is local/intranet + $clientIP = $_SERVER['REMOTE_ADDR']; + + // Define local/intranet ranges + // localhost, 127.0.0.1, ::1 + // 10.0.0.0 - 10.255.255.255 + // 172.16.0.0 - 172.31.255.255 + // 192.168.0.0 - 192.168.255.255 + + $isLocal = false; + + // Check for IPv6 localhost + if ($clientIP === '::1') { + $isLocal = true; + } + + // Check for IPv4 + $ipLong = ip2long($clientIP); + + if ($ipLong !== false) { + // 127.0.0.0/8 + if (($ipLong & 0xFF000000) === 0x7F000000) { + $isLocal = true; + } + // 10.0.0.0/8 + elseif (($ipLong & 0xFF000000) === 0x0A000000) { + $isLocal = true; + } + // 172.16.0.0/12 + elseif (($ipLong & 0xFFF00000) === 0xAC100000) { + $isLocal = true; + } + // 192.168.0.0/16 + elseif (($ipLong & 0xFFFF0000) === 0xC0A80000) { + $isLocal = true; + } + } + + if (!$isLocal) { + http_response_code(403); + $logo = $this->settings->get('settings.logo'); + $instansi = $this->settings->get('settings.nama_instansi'); + $alamat = $this->settings->get('settings.alamat'); + $ip = $_SERVER['REMOTE_ADDR']; + + $html = ' + + + Access Denied - ' . htmlspecialchars($instansi) . ' + + + + +
    + ' . ($logo ? '' : '') . ' +

    Akses Ditolak

    +
    IP Anda: ' . htmlspecialchars($ip) . '
    +

    + Maaf, halaman Anjungan hanya dapat diakses melalui jaringan lokal (Intranet) Rumah Sakit atau oleh pengguna yang telah terautentikasi. +

    + Login Disini + +
    + + '; + + die($html); + } + + return true; + } + public function getIndex() { echo $this->draw('index.html', ['test' => 'Opo iki']); @@ -77,7 +231,7 @@ public function getDisplayAPM() { $title = 'Display Antrian Poliklinik'; $logo = $this->settings->get('settings.logo'); - $poliklinik = $this->db('poliklinik')->toArray(); + $poliklinik = $this->db('poliklinik')->where('status', '1')->toArray(); $carabayar = str_replace(",","','", $this->settings->get('anjungan.carabayar')); $penjab = $this->db()->pdo()->prepare("SELECT * FROM penjab WHERE kd_pj IN ('$carabayar')"); $penjab->execute(); @@ -435,7 +589,6 @@ public function _resultDisplayAntrianPoli() } $row['selanjutnya'] = $this->db('reg_periksa') ->select('reg_periksa.no_reg') - //->select(['no_urut_reg' => 'ifnull(MAX(CONVERT(RIGHT(reg_periksa.no_reg,3),signed)),0)']) ->select('pasien.nm_pasien') ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') ->where('reg_periksa.tgl_registrasi', $date) @@ -445,11 +598,11 @@ public function _resultDisplayAntrianPoli() ->asc('reg_periksa.no_reg') ->toArray(); $row['get_no_reg'] = $this->db('reg_periksa') - ->select(['max' => 'ifnull(MAX(CONVERT(RIGHT(no_reg,3),signed)),0)']) - ->where('tgl_registrasi', $date) - ->where('kd_poli', $row['kd_poli']) - ->where('kd_dokter', $row['kd_dokter']) - ->oneArray(); + ->where('tgl_registrasi', $date) + ->where('kd_poli', $row['kd_poli']) + ->where('kd_dokter', $row['kd_dokter']) + ->nextRightNumber('no_reg', 3); + $row['diff'] = (strtotime($row['jam_selesai'])-strtotime($row['jam_mulai']))/60; $row['interval'] = 0; if($row['diff'] == 0) { @@ -687,7 +840,6 @@ public function _resultDisplayAntrianPoliKodeSatu() } $row['selanjutnya'] = $this->db('reg_periksa') ->select('reg_periksa.no_reg') - //->select(['no_urut_reg' => 'ifnull(MAX(CONVERT(RIGHT(reg_periksa.no_reg,3),signed)),0)']) ->select('pasien.nm_pasien') ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') ->where('reg_periksa.tgl_registrasi', $date) @@ -696,12 +848,13 @@ public function _resultDisplayAntrianPoliKodeSatu() ->where('reg_periksa.kd_dokter', $row['kd_dokter']) ->asc('reg_periksa.no_reg') ->toArray(); + $row['get_no_reg'] = $this->db('reg_periksa') - ->select(['max' => 'ifnull(MAX(CONVERT(RIGHT(no_reg,3),signed)),0)']) ->where('tgl_registrasi', $date) ->where('kd_poli', $row['kd_poli']) ->where('kd_dokter', $row['kd_dokter']) - ->oneArray(); + ->nextRightNumber('no_reg', 3); + $row['diff'] = (strtotime($row['jam_selesai'])-strtotime($row['jam_mulai']))/60; $row['interval'] = 0; if($row['diff'] == 0) { @@ -820,7 +973,6 @@ public function _resultDisplayAntrianPoliKodeDua() } $row['selanjutnya'] = $this->db('reg_periksa') ->select('reg_periksa.no_reg') - //->select(['no_urut_reg' => 'ifnull(MAX(CONVERT(RIGHT(reg_periksa.no_reg,3),signed)),0)']) ->select('pasien.nm_pasien') ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') ->where('reg_periksa.tgl_registrasi', $date) @@ -830,11 +982,10 @@ public function _resultDisplayAntrianPoliKodeDua() ->asc('reg_periksa.no_reg') ->toArray(); $row['get_no_reg'] = $this->db('reg_periksa') - ->select(['max' => 'ifnull(MAX(CONVERT(RIGHT(no_reg,3),signed)),0)']) ->where('tgl_registrasi', $date) ->where('kd_poli', $row['kd_poli']) ->where('kd_dokter', $row['kd_dokter']) - ->oneArray(); + ->nextRightNumber('no_reg', 3); $row['diff'] = (strtotime($row['jam_selesai'])-strtotime($row['jam_mulai']))/60; $row['interval'] = 0; if($row['diff'] == 0) { @@ -953,7 +1104,6 @@ public function _resultDisplayAntrianPoliKodeTiga() } $row['selanjutnya'] = $this->db('reg_periksa') ->select('reg_periksa.no_reg') - //->select(['no_urut_reg' => 'ifnull(MAX(CONVERT(RIGHT(reg_periksa.no_reg,3),signed)),0)']) ->select('pasien.nm_pasien') ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') ->where('reg_periksa.tgl_registrasi', $date) @@ -963,11 +1113,10 @@ public function _resultDisplayAntrianPoliKodeTiga() ->asc('reg_periksa.no_reg') ->toArray(); $row['get_no_reg'] = $this->db('reg_periksa') - ->select(['max' => 'ifnull(MAX(CONVERT(RIGHT(no_reg,3),signed)),0)']) ->where('tgl_registrasi', $date) ->where('kd_poli', $row['kd_poli']) ->where('kd_dokter', $row['kd_dokter']) - ->oneArray(); + ->nextRightNumber('no_reg', 3); $row['diff'] = (strtotime($row['jam_selesai'])-strtotime($row['jam_mulai']))/60; $row['interval'] = 0; if($row['diff'] == 0) { @@ -1094,7 +1243,6 @@ public function _resultDisplayAntrianPoliKodeDisplay() } $row['selanjutnya'] = $this->db('reg_periksa') ->select('reg_periksa.no_reg') - //->select(['no_urut_reg' => 'ifnull(MAX(CONVERT(RIGHT(reg_periksa.no_reg,3),signed)),0)']) ->select('pasien.nm_pasien') ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') ->where('reg_periksa.tgl_registrasi', $date) @@ -1104,11 +1252,10 @@ public function _resultDisplayAntrianPoliKodeDisplay() ->asc('reg_periksa.no_reg') ->toArray(); $row['get_no_reg'] = $this->db('reg_periksa') - ->select(['max' => 'ifnull(MAX(CONVERT(RIGHT(no_reg,3),signed)),0)']) ->where('tgl_registrasi', $date) ->where('kd_poli', $row['kd_poli']) ->where('kd_dokter', $row['kd_dokter']) - ->oneArray(); + ->nextRightNumber('no_reg', 3); $row['diff'] = (strtotime($row['jam_selesai'])-strtotime($row['jam_mulai']))/60; $row['interval'] = 0; if($row['diff'] == 0) { @@ -1146,202 +1293,17 @@ public function getDisplayAntrianLoket() $tanggal = getDayIndonesia(date('Y-m-d')).', '.dateIndonesia(date('Y-m-d')); $username = !empty($_username) ? $_username : $__username; - $show = isset($_GET['show']) ? $_GET['show'] : ""; - switch($show){ - default: - $display = 'Depan'; - $content = $this->draw('display.antrian.loket.html', [ - 'title' => $title, - 'logo' => $logo, - 'powered' => 'Powered by mLITE', - 'username' => $username, - 'tanggal' => $tanggal, - 'show' => $show, - 'vidio' => $this->settings->get('anjungan.vidio'), - 'running_text' => $this->settings->get('anjungan.text_loket'), - 'display' => $display - ]); - break; - case "panggil_loket": - $display = 'Panggil Loket'; - - $_username = ''; - $__username = 'Tamu'; - if(isset($_SESSION['mlite_user'])) { - $_username = $this->core->getUserInfo('fullname', null, true); - $__username = $this->core->getUserInfo('username'); - } - $tanggal = getDayIndonesia(date('Y-m-d')).', '.dateIndonesia(date('Y-m-d')); - $username = !empty($_username) ? $_username : $__username; - - $setting_antrian_loket = str_replace(",","','", $this->settings->get('anjungan.antrian_loket')); - $loket = explode(",", $this->settings->get('anjungan.antrian_loket')); - $get_antrian = $this->db('mlite_antrian_loket')->select('noantrian')->where('type', 'Loket')->where('postdate', date('Y-m-d'))->desc('start_time')->oneArray(); - $noantrian = 0; - if(!empty($get_antrian['noantrian'])) { - $noantrian = $get_antrian['noantrian']; - } - - $antriloket = $this->settings->get('anjungan.panggil_loket_nomor'); - $tcounter = $antriloket; - $_tcounter = 1; - if(!empty($tcounter)) { - $_tcounter = $tcounter + 1; - } - if(isset($_GET['loket'])) { - $this->db('mlite_antrian_loket') - ->where('type', 'Loket') - ->where('noantrian', $tcounter) - ->where('postdate', date('Y-m-d')) - ->save(['end_time' => date('H:i:s')]); - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_loket')->save(['value' => $_GET['loket']]); - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_loket_nomor')->save(['value' => $_tcounter]); - } - if(isset($_GET['antrian'])) { - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_loket')->save(['value' => $_GET['reset']]); - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_loket_nomor')->save(['value' => $_GET['antrian']]); - } - if(isset($_GET['no_rkm_medis'])) { - $this->db('mlite_antrian_loket')->where('noantrian', $_GET['noantrian'])->where('postdate', date('Y-m-d'))->save(['no_rkm_medis' => $_GET['no_rkm_medis']]); - } - $hitung_antrian = $this->db('mlite_antrian_loket') - ->where('type', 'Loket') - ->like('postdate', date('Y-m-d')) - ->toArray(); - $counter = strlen($tcounter); - $xcounter = []; - for($i=0;$i<$counter;$i++){ - $xcounter[] = ''; - }; - - $content = $this->draw('display.antrian.loket.html', [ - 'title' => $title, - 'logo' => $logo, - 'powered' => 'Powered by mLITE', - 'username' => $username, - 'tanggal' => $tanggal, - 'show' => $show, - 'loket' => $loket, - 'namaloket' => 'a', - 'panggil_loket' => 'panggil_loket', - 'antrian' => $tcounter, - 'hitung_antrian' => $hitung_antrian, - 'xcounter' => $xcounter, - 'noantrian' =>$noantrian, - 'display' => $display - ]); - break; - case "panggil_cs": - $display = 'Panggil CS'; - $loket = explode(",", $this->settings->get('anjungan.antrian_cs')); - $get_antrian = $this->db('mlite_antrian_loket')->select('noantrian')->where('type', 'CS')->where('postdate', date('Y-m-d'))->desc('start_time')->oneArray(); - $noantrian = 0; - if(!empty($get_antrian['noantrian'])) { - $noantrian = $get_antrian['noantrian']; - } - - $antriloket = $this->settings->get('anjungan.panggil_cs_nomor'); - $tcounter = $antriloket; - $_tcounter = 1; - if(!empty($tcounter)) { - $_tcounter = $tcounter + 1; - } - if(isset($_GET['loket'])) { - $this->db('mlite_antrian_loket') - ->where('type', 'CS') - ->where('noantrian', $tcounter) - ->where('postdate', date('Y-m-d')) - ->save(['end_time' => date('H:i:s')]); - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_cs')->save(['value' => $_GET['loket']]); - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_cs_nomor')->save(['value' => $_tcounter]); - } - if(isset($_GET['antrian'])) { - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_cs')->save(['value' => $_GET['reset']]); - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_cs_nomor')->save(['value' => $_GET['antrian']]); - } - $hitung_antrian = $this->db('mlite_antrian_loket') - ->where('type', 'CS') - ->like('postdate', date('Y-m-d')) - ->toArray(); - $counter = strlen($tcounter); - $xcounter = []; - for($i=0;$i<$counter;$i++){ - $xcounter[] = ''; - }; - - $content = $this->draw('display.antrian.loket.html', [ - 'title' => $title, - 'logo' => $logo, - 'powered' => 'Powered by mLITE', - 'username' => $username, - 'tanggal' => $tanggal, - 'show' => $show, - 'loket' => $loket, - 'namaloket' => 'b', - 'panggil_loket' => 'panggil_cs', - 'antrian' => $tcounter, - 'hitung_antrian' => $hitung_antrian, - 'xcounter' => $xcounter, - 'noantrian' =>$noantrian, - 'display' => $display - ]); - break; - case "panggil_apotek": - $display = 'Panggil Apotek'; - $loket = explode(",", $this->settings->get('anjungan.antrian_apotek')); - $get_antrian = $this->db('mlite_antrian_loket')->select('noantrian')->where('type', 'Apotek')->where('postdate', date('Y-m-d'))->desc('start_time')->oneArray(); - $noantrian = 0; - if(!empty($get_antrian['noantrian'])) { - $noantrian = $get_antrian['noantrian']; - } + $content = $this->draw('display.antrian.loket.html', [ + 'title' => $title, + 'logo' => $logo, + 'powered' => 'Powered by mLITE', + 'username' => $username, + 'tanggal' => $tanggal, + 'vidio' => $this->settings->get('anjungan.vidio'), + 'running_text' => $this->settings->get('anjungan.text_loket'), + 'display' => $display + ]); - $antriloket = $this->settings->get('anjungan.panggil_apotek_nomor'); - $tcounter = $antriloket; - $_tcounter = 1; - if(!empty($tcounter)) { - $_tcounter = $tcounter + 1; - } - if(isset($_GET['loket'])) { - $this->db('mlite_antrian_loket') - ->where('type', 'Apotek') - ->where('noantrian', $tcounter) - ->where('postdate', date('Y-m-d')) - ->save(['end_time' => date('H:i:s')]); - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_apotek')->save(['value' => $_GET['loket']]); - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_apotek_nomor')->save(['value' => $_tcounter]); - } - if(isset($_GET['antrian'])) { - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_apotek')->save(['value' => $_GET['reset']]); - $this->db('mlite_settings')->where('module', 'anjungan')->where('field', 'panggil_apotek_nomor')->save(['value' => $_GET['antrian']]); - } - $hitung_antrian = $this->db('mlite_antrian_loket') - ->where('type', 'Apotek') - ->like('postdate', date('Y-m-d')) - ->toArray(); - $counter = strlen($tcounter); - $xcounter = []; - for($i=0;$i<$counter;$i++){ - $xcounter[] = ''; - }; - - $content = $this->draw('display.antrian.loket.html', [ - 'title' => $title, - 'logo' => $logo, - 'powered' => 'Powered by mLITE', - 'username' => $username, - 'tanggal' => $tanggal, - 'show' => $show, - 'loket' => $loket, - 'namaloket' => 'f', - 'panggil_loket' => 'panggil_apotek', - 'antrian' => $tcounter, - 'hitung_antrian' => $hitung_antrian, - 'xcounter' => $xcounter, - 'noantrian' =>$noantrian, - 'display' => $display - ]); - break; - } $assign = [ 'title' => $this->settings->get('settings.nama_instansi'), @@ -1353,7 +1315,6 @@ public function getDisplayAntrianLoket() $this->tpl->set('page', ['title' => $assign['title'], 'desc' => $assign['desc'], 'content' => $assign['content']]); - //exit(); } public function getDisplayAntrianLoket2() @@ -1435,36 +1396,129 @@ public function getDisplayAntrianLaboratorium() //exit(); } - public function _resultDisplayAntrianLaboratorium() + public function getDisplayAntrianRadiologi() { - $date = date('Y-m-d'); - $tentukan_hari=date('D',strtotime(date('Y-m-d'))); - $day = array( - 'Sun' => 'AKHAD', - 'Mon' => 'SENIN', - 'Tue' => 'SELASA', - 'Wed' => 'RABU', - 'Thu' => 'KAMIS', - 'Fri' => 'JUMAT', - 'Sat' => 'SABTU' - ); - $hari=$day[$tentukan_hari]; + $logo = $this->settings->get('settings.logo'); + $title = 'Display Antrian Radiologi'; + $display = $this->_resultDisplayAntrianRadiologi(); - $poliklinik = $this->settings('settings', 'laboratorium'); - $rows = $this->db('reg_periksa') - ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') - ->where('tgl_registrasi', date('Y-m-d')) - ->where('kd_poli', $poliklinik) - ->asc('no_reg') - ->toArray(); + $_username = ''; + $__username = 'Tamu'; + if(isset($_SESSION['mlite_user'])) { + $_username = $this->core->getUserInfo('fullname', null, true); + $__username = $this->core->getUserInfo('username'); + } + $tanggal = getDayIndonesia(date('Y-m-d')).', '.dateIndonesia(date('Y-m-d')); + $username = !empty($_username) ? $_username : $__username; + $running_text = $this->settings->get('anjungan.text_radiologi'); + if(empty($running_text)) { + $running_text = $this->settings->get('anjungan.text_laboratorium'); + } - return $rows; + $content = $this->draw('display.antrian.radiologi.html', [ + 'logo' => $logo, + 'title' => $title, + 'powered' => 'Powered by mLITE', + 'username' => $username, + 'tanggal' => $tanggal, + 'running_text' => $running_text, + 'display' => $display + ]); + + $assign = [ + 'title' => $this->settings->get('settings.nama_instansi'), + 'desc' => $this->settings->get('settings.alamat'), + 'content' => $content + ]; + + $this->setTemplate("canvas.html"); + $this->tpl->set('page', ['title' => $assign['title'], 'desc' => $assign['desc'], 'content' => $assign['content']]); + } + + public function _resultDisplayAntrianLaboratorium() + { + $date_start = date('Y-m-d', strtotime('-1 month')); + $date = date('Y-m-d'); + + $rows = $this->db('permintaan_lab') + ->join('dokter', 'dokter.kd_dokter=permintaan_lab.dokter_perujuk') + ->join('reg_periksa', 'reg_periksa.no_rawat=permintaan_lab.no_rawat') + ->join('poliklinik', 'poliklinik.kd_poli=reg_periksa.kd_poli') + ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') + ->join('permintaan_pemeriksaan_lab', 'permintaan_pemeriksaan_lab.noorder=permintaan_lab.noorder') + ->join('jns_perawatan_lab', 'jns_perawatan_lab.kd_jenis_prw=permintaan_pemeriksaan_lab.kd_jenis_prw') + ->where('permintaan_lab.tgl_hasil', '0000-00-00') + ->where('permintaan_lab.tgl_permintaan', '>=', $date_start) + ->where('permintaan_lab.tgl_permintaan', '<=', $date) + ->group('permintaan_lab.noorder') + ->desc('permintaan_lab.tgl_permintaan') + ->toArray(); + + $filteredRows = []; + foreach ($rows as $row) { + + // Tentukan status untuk data yang akan ditampilkan + if ($row['tgl_sampel'] == '0000-00-00' && $row['jam_sampel'] == '00:00:00') { + $row['status_antrian'] = 'Menunggu'; + $row['status_class'] = 'label-warning'; + } elseif ($row['tgl_sampel'] != '0000-00-00' && $row['jam_sampel'] != '00:00:00') { + $row['status_antrian'] = 'Diproses'; + $row['status_class'] = 'label-success'; + } else { + $row['status_antrian'] = 'Diproses'; + $row['status_class'] = 'label-warning'; + } + + $filteredRows[] = $row; + } + + $rows = $filteredRows; + + return $rows; + } + + public function _resultDisplayAntrianRadiologi() + { + $date_start = date('Y-m-d', strtotime('-1 month')); + $date = date('Y-m-d'); + + $rows = $this->db('permintaan_radiologi') + ->join('dokter', 'dokter.kd_dokter=permintaan_radiologi.dokter_perujuk') + ->join('reg_periksa', 'reg_periksa.no_rawat=permintaan_radiologi.no_rawat') + ->join('poliklinik', 'poliklinik.kd_poli=reg_periksa.kd_poli') + ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') + ->join('permintaan_pemeriksaan_radiologi', 'permintaan_pemeriksaan_radiologi.noorder=permintaan_radiologi.noorder') + ->join('jns_perawatan_radiologi', 'jns_perawatan_radiologi.kd_jenis_prw=permintaan_pemeriksaan_radiologi.kd_jenis_prw') + ->where('permintaan_radiologi.tgl_hasil', '0000-00-00') + ->where('permintaan_radiologi.tgl_permintaan', '>=', $date_start) + ->where('permintaan_radiologi.tgl_permintaan', '<=', $date) + ->group('permintaan_radiologi.noorder') + ->desc('permintaan_radiologi.tgl_permintaan') + ->toArray(); + + $filteredRows = []; + foreach ($rows as $row) { + if ($row['tgl_sampel'] == '0000-00-00' && $row['jam_sampel'] == '00:00:00') { + $row['status_antrian'] = 'Menunggu'; + $row['status_class'] = 'label-warning'; + } elseif ($row['tgl_sampel'] != '0000-00-00' && $row['jam_sampel'] != '00:00:00') { + $row['status_antrian'] = 'Diproses'; + $row['status_class'] = 'label-success'; + } else { + $row['status_antrian'] = 'Diproses'; + $row['status_class'] = 'label-warning'; + } + + $filteredRows[] = $row; } + return $filteredRows; + } + public function getDisplayAntrianApotek() { $logo = $this->settings->get('settings.logo'); - $title = 'Display Antrian Laboratorium'; + $title = 'Display Antrian Apotek'; $display = $this->_resultDisplayAntrianApotek(); $date = date('Y-m-d'); @@ -1545,6 +1599,9 @@ public function _resultDisplayAntrianApotek() if($resep_obat['tgl_perawatan'] != '0000-00-00' && $resep_obat['jam'] != '00:00:00') { $row['status_resep'] = 'Disiapkan'; } + if($resep_obat['tgl_penyerahan'] != '0000-00-00' && $resep_obat['jam_penyerahan'] != '00:00:00') { + $row['status_resep'] = 'Diserahkan'; + } if(!empty($resep_dokter_racikan)) { $row['jenis_resep'] = 'Racikan'; @@ -1909,7 +1966,6 @@ public function getAjax() case "simpanloket": $this->db('mlite_antrian_loket') ->save([ - 'kd' => NULL, 'type' => 'Loket', 'noantrian' => $_GET['noantrian'], 'postdate' => date('Y-m-d'), @@ -1981,7 +2037,6 @@ public function getAjax() case "simpancs": $this->db('mlite_antrian_loket') ->save([ - 'kd' => NULL, 'type' => 'CS', 'noantrian' => $_GET['noantrian'], 'postdate' => date('Y-m-d'), @@ -2056,7 +2111,6 @@ public function getAjax() case "simpanapotek": $this->db('mlite_antrian_loket') ->save([ - 'kd' => NULL, 'type' => 'Apotek', 'noantrian' => $_GET['noantrian'], 'no_rkm_medis' => $_POST['no_rkm_medis'], @@ -2145,7 +2199,7 @@ public function getAjax() $data['status'] = 'err'; $data['result'] = ''; } - echo json_encode($data); + echo json_encode(htmlspecialchars_array($data)); } break; @@ -2162,7 +2216,7 @@ public function getAjax() $data['status'] = 'err'; $data['result'] = ''; } - echo json_encode($data); + echo json_encode(htmlspecialchars_array($data)); } break; @@ -2172,7 +2226,7 @@ public function getAjax() if($this->db('reg_periksa')->where('no_rkm_medis', $_POST['no_rkm_medis'])->where('tgl_registrasi', $_POST['tgl_registrasi'])->oneArray()) { $data['status'] = 'exist'; $data['result'] = ''; - echo json_encode($data); + echo json_encode(htmlspecialchars_array($data)); } else { $tanggal = $_POST['tgl_registrasi']; $tentukan_hari = date('D',strtotime($tanggal)); @@ -2194,7 +2248,7 @@ public function getAjax() $data['status'] = 'err'; $data['result'] = ''; } - echo json_encode($data); + echo json_encode(htmlspecialchars_array($data)); } } break; @@ -2240,7 +2294,7 @@ public function getAjax() $data['status'] = 'err'; $data['result'] = ''; } - echo json_encode($data); + echo json_encode(htmlspecialchars_array($data)); } } break; @@ -2256,7 +2310,7 @@ public function getAjax() $data['status'] = 'err'; $data['result'] = ''; } - echo json_encode($data); + echo json_encode(htmlspecialchars_array($data)); } break; case "get-namadokter": @@ -2271,7 +2325,7 @@ public function getAjax() $data['status'] = 'err'; $data['result'] = ''; } - echo json_encode($data); + echo json_encode(htmlspecialchars_array($data)); } break; case "post-registrasi": @@ -2326,7 +2380,7 @@ public function getAjax() $_POST['umurdaftar'] = $umur; $_POST['sttsumur'] = $sttsumur; $_POST['status_lanjut'] = 'Ralan'; - //$_POST['kd_pj'] = $this->settings->get('anjungan.carabayar_umum'); + // $_POST['kd_pj'] = $this->settings->get('anjungan.carabayar_umum'); $_POST['status_bayar'] = 'Belum Bayar'; $_POST['no_rawat'] = $this->core->setNoRawat($date); $_POST['jam_reg'] = date('H:i:s'); @@ -2360,7 +2414,80 @@ public function getAjax() $data['status'] = 'err'; $data['result'] = ''; } - echo json_encode($data); + echo json_encode(htmlspecialchars_array($data)); + } + break; + case "loket-display": + $apotek = $this->db('mlite_antrian_loket') + ->select('noantrian') + ->select('loket') + ->where('type', 'Apotek') + ->where('postdate', date('Y-m-d')) + ->where('status', '>=', 1) + ->desc('kd') + ->oneArray(); + + echo json_encode([ + 'loket' => [ + 'antrian' => (string) $this->settings->get('anjungan.no_antrian_loket'), + 'counter' => (string) $this->settings->get('anjungan.konter_antrian_loket') + ], + 'cs' => [ + 'antrian' => (string) $this->settings->get('anjungan.no_antrian_cs'), + 'counter' => (string) $this->settings->get('anjungan.konter_antrian_cs') + ], + 'apotek' => [ + 'antrian' => isset($apotek['noantrian']) ? (string) $apotek['noantrian'] : '', + 'counter' => isset($apotek['loket']) ? (string) $apotek['loket'] : '' + ] + ]); + break; + // FOR DISPLAY + case "apotek-display": + $rows = $this->_resultDisplayAntrianApotek(); + foreach ($rows as $row) { + echo '
  • ' + . ''. $row['noantrian'] . ' '. $row['nm_pasien'] . ' - ' . $row['no_rkm_medis'] . ' Resep: ' . $row['jenis_resep'] . ' Status: ' . $row['status_resep'] . '
    ' + . '
  • '; + } + break; + case "laboratorium-display": + $rows = $this->_resultDisplayAntrianLaboratorium(); + foreach ($rows as $row) { + + echo '
  • ' + . '' . ' Nama: ' . $row['nm_pasien'] . ', No. RM: ' . $row['no_rkm_medis'] . ' Status: ' . $row['status_antrian'] . '
    ' + . '
  • '; + } + break; + case "radiologi-display": + $rows = $this->_resultDisplayAntrianRadiologi(); + foreach ($rows as $row) { + echo '
  • ' + . '' . ' Nama: ' . $row['nm_pasien'] . ', No. RM: ' . $row['no_rkm_medis'] . ' Status: ' . $row['status_antrian'] . '
    ' + . '
  • '; + } + break; + case "bed-display": + $rows = $this->_resultDisplayBed(); + foreach ($rows as $row) { + echo '' + . '' . $row['nm_bangsal'] . '' + . '' . $row['kelas'] . '' + . '' + . 'Jumlah Kosong : ' . $row['kosong']['jumlah'] . ' | Jumlah Terisi : ' . $row['isi']['jumlah'] + . '' + . ''; + } + break; + case "operasi-display": + $rows = $this->_resultDisplayJadwalOperasi(); + foreach ($rows as $row) { + echo '
  • ' + . 'Nama: ' . $row['nm_pasien'] . ', No. RM: ' . $row['no_rkm_medis'] . 'Status: ' . $row['status'] . '
    ' + . '[ Operator : ' . $row['namadok'] . ' ] [ Rujukan Dari : ' + . '{if: $row.kd_poli == "IGDK"}' . $row['kamar.namabangsal'] . '{elseif: $row.kd_poli == "U0027"}' . $row['kamar.namabangsal'] . '{else}' . $row['namapoli'] . '{/if} ]
    ' + . '
  • '; } break; } @@ -2386,7 +2513,7 @@ public function getPresensi() 'powered' => 'Powered by mLITE', 'tanggal' => $tanggal, 'running_text' => $this->settings->get('anjungan.text_poli'), - 'jam_jaga' => $this->db('jam_jaga')->group('jam_masuk')->toArray() + 'jam_jaga' => $this->db('jam_jaga')->select('jam_masuk')->select('jam_pulang')->group('jam_masuk')->toArray() ]); $assign = [ @@ -2446,40 +2573,43 @@ public function getUpload() $idpeg = $this->db('barcode')->where('barcode', $barcode)->oneArray(); $jam_jaga = $this->db('jam_jaga')->join('pegawai', 'pegawai.departemen = jam_jaga.dep_id')->where('pegawai.id', $idpeg['id'])->where('jam_jaga.shift', $_GET['shift'])->oneArray(); - $jadwal_pegawai = $this->db('jadwal_pegawai')->where('id', $idpeg['id'])->where('h'.date('j'), $_GET['shift'])->oneArray(); + $jadwal_pegawai = $this->db('jadwal_pegawai')->where('id', $idpeg['id'])->where('h'.date('j'), $_GET['shift'])->where('bulan', date('m'))->where('tahun', date('Y'))->oneArray(); - $set_keterlambatan = $this->db('set_keterlambatan')->toArray(); - $toleransi = $set_keterlambatan['toleransi']; - $terlambat1 = $set_keterlambatan['terlambat1']; - $terlambat2 = $set_keterlambatan['terlambat2']; + $set_keterlambatan = $this->db('set_keterlambatan')->oneArray(); + $toleransi = $set_keterlambatan['toleransi'] ?? 0; + $terlambat1 = $set_keterlambatan['terlambat1'] ?? 0; + $terlambat2 = $set_keterlambatan['terlambat2'] ?? 0; - $valid = $this->db('rekap_presensi')->where('id', $idpeg['id'])->where('shift', $jam_jaga['shift'])->like('jam_datang', '%'.date('Y-m-d').'%')->oneArray(); + $valid = $this->db('rekap_presensi')->where('id', $idpeg['id'])->where('shift', $jam_jaga['shift'] ?? '')->like('jam_datang', '%'.date('Y-m-d').'%')->oneArray(); if($valid){ - $this->notify('failure', 'Anda sudah presensi untuk tanggal '.date('Y-m-d')); + echo "Anda sudah presensi untuk tanggal ".date('Y-m-d'); //}elseif((!empty($idpeg['id']))&&(!empty($jam_jaga['shift']))&&($jadwal_pegawai)&&(!$valid)) { }elseif((!empty($idpeg['id']))) { $cek = $this->db('temporary_presensi')->where('id', $idpeg['id'])->oneArray(); if(!$cek){ if(empty($urlnya)){ - $this->notify('failure', 'Pilih shift dulu...!!!!'); + echo "Pilih shift dulu...!!!!"; }else{ - + + $keterlambatan = '00:00:00'; $status = 'Tepat Waktu'; + $jam_masuk = $jam_jaga['jam_masuk'] ?? '00:00:00'; + $shift_jaga = $jam_jaga['shift'] ?? ''; - if((strtotime(date('Y-m-d H:i:s'))-strtotime(date('Y-m-d').' '.$jam_jaga['jam_masuk']))>($toleransi*60)) { + if((strtotime(date('Y-m-d H:i:s'))-strtotime(date('Y-m-d').' '.$jam_masuk))>($toleransi*60)) { $status = 'Terlambat Toleransi'; } - if((strtotime(date('Y-m-d H:i:s'))-strtotime(date('Y-m-d').' '.$jam_jaga['jam_masuk']))>($terlambat1*60)) { + if((strtotime(date('Y-m-d H:i:s'))-strtotime(date('Y-m-d').' '.$jam_masuk))>($terlambat1*60)) { $status = 'Terlambat I'; } - if((strtotime(date('Y-m-d H:i:s'))-strtotime(date('Y-m-d').' '.$jam_jaga['jam_masuk']))>($terlambat2*60)) { + if((strtotime(date('Y-m-d H:i:s'))-strtotime(date('Y-m-d').' '.$jam_masuk))>($terlambat2*60)) { $status = 'Terlambat II'; } - if(strtotime(date('Y-m-d H:i:s'))-(date('Y-m-d').' '.$jam_jaga['jam_masuk'])>($toleransi*60)) { - $awal = new \DateTime(date('Y-m-d').' '.$jam_jaga['jam_masuk']); + if((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d').' '.$jam_masuk)) > ($toleransi*60)) { + $awal = new \DateTime(date('Y-m-d').' '.$jam_masuk); $akhir = new \DateTime(); $diff = $akhir->diff($awal,true); // to make the difference to be always positive. $keterlambatan = $diff->format('%H:%I:%S'); @@ -2489,7 +2619,7 @@ public function getUpload() $insert = $this->db('temporary_presensi') ->save([ 'id' => $idpeg['id'], - 'shift' => $jam_jaga['shift'], + 'shift' => $shift_jaga, 'jam_datang' => date('Y-m-d H:i:s'), 'jam_pulang' => NULL, 'status' => $status, @@ -2499,13 +2629,15 @@ public function getUpload() ]); if($insert) { - $this->notify('success', 'Presensi Masuk jam '.$jam_jaga['jam_masuk'].' '.$status.' '.$keterlambatan); + echo htmlspecialchars("Presensi Masuk jam ".$jam_masuk." ".$status." ".$keterlambatan." telah disimpan", ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); } } }elseif($cek){ $status = $cek['status']; - if((strtotime(date('Y-m-d H:i:s'))-strtotime(date('Y-m-d').' '.$jam_jaga['jam_pulang']))<0) { + $jam_pulang = $jam_jaga['jam_pulang'] ?? '00:00:00'; + + if((strtotime(date('Y-m-d H:i:s'))-strtotime(date('Y-m-d').' '.$jam_pulang))<0) { $status = $cek['status'].' & PSW'; } @@ -2537,13 +2669,13 @@ public function getUpload() 'photo' => $presensi['photo'] ]); if($insert) { - $this->notify('success', 'Presensi pulang telah disimpan'); $this->db('temporary_presensi')->where('id', $cek['id'])->delete(); + echo htmlspecialchars("Presensi Masuk jam ".$presensi['jam_datang']." ".$presensi['status']." ".$presensi['keterlambatan']." telah disimpan", ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); } } } }else{ - $this->notify('failure', 'ID Pegawai atau jadwal shift tidak sesuai. Silahkan pilih berdasarkan shift departemen anda!'); + echo "ID Pegawai atau jadwal shift tidak sesuai. Silahkan pilih berdasarkan shift departemen anda!"; } } } @@ -2677,6 +2809,7 @@ public function getSepMandiriCek() public function getSepMandiriNokaNorm() { + $dateNow = date('Y-m-d'); date_default_timezone_set('UTC'); $tStamp = strval(time() - strtotime("1970-01-01 00:00:00")); $key = $this->consid.$this->secretkey.$tStamp; @@ -2703,6 +2836,7 @@ public function getSepMandiriNokaNorm() $message = $json['metaData']['message']; $stringDecrypt = stringDecrypt($key, $json['response']); $decompress = '""'; + $biometrik = ''; if(!empty($json)): if ($code != "200") { @@ -2711,6 +2845,22 @@ public function getSepMandiriNokaNorm() if(!empty($stringDecrypt)) { $decompress = \LZCompressor\LZString::decompressFromEncodedURIComponent(($stringDecrypt)); $sep_response = json_decode($decompress, true); + + $url = $this->api_url . '/SEP/FingerPrint/Peserta/' . $slug[2] . '/TglPelayanan/'.$dateNow.''; + $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, $tStamp); + $json = json_decode($output, true); + //echo json_encode(htmlspecialchars_array($json)); + $code = $json['metaData']['code']; + $message = $json['metaData']['message']; + $stringDecrypt = stringDecrypt($key, $json['response']); + $decompress = '""'; + if (!empty($stringDecrypt)) { + $decompress = \LZCompressor\LZString::decompressFromEncodedURIComponent(($stringDecrypt)); + } + if ($json != null) { + $biometrik = json_decode($decompress, true)['status']; + } + } else { $sep_response = "Sambungan ke server BPJS sedang ada gangguan. Silahkan ulangi lagi dengan menekan tombol REFRESH"; } @@ -2718,6 +2868,7 @@ public function getSepMandiriNokaNorm() else: $sep_response = "Sambungan ke server BPJS sedang ada gangguan. Silahkan ulangi lagi dengan menekan tombol REFRESH"; endif; + } $title = 'Display SEP Mandiri'; @@ -2740,7 +2891,8 @@ public function getSepMandiriNokaNorm() 'tanggal' => $tanggal, 'running_text' => $this->settings->get('anjungan.text_anjungan'), 'no_rkm_medis' => $slug[3], - 'sep_response' => $sep_response + 'sep_response' => $sep_response, + 'biometrik' => $biometrik ]); $assign = [ @@ -2954,17 +3106,19 @@ public function postSaveSEP() $cek_kuota['jam_mulai'] = date('H:i:s',strtotime('+'.$minutes.' minutes',strtotime($jadwaldokter['jam_mulai']))); $kodebooking = $this->settings->get('settings.ppk_bpjs').''.convertNorawat($reg_periksa['no_rawat']).''.$maping_poli_bpjs['kd_poli_bpjs'].''.$reg_periksa['no_reg']; - + $tlp = substr($pasien['no_tlp'], 0, 13); + $jenisKunjungan = '1'; $nomorreferensi = $_POST['norujukan']; - if(isset($_POST['tujuanKunj']) == '3') { + if(isset($_POST['tujuanKunj']) == '2') { $nomorreferensi = $_POST['noskdp']; + $jenisKunjungan = '3'; } $data = [ 'kodebooking' => $kodebooking, 'jenispasien' => 'JKN', 'nomorkartu' => $pasien['no_peserta'], 'nik' => $pasien['no_ktp'], - 'nohp' => $pasien['no_tlp'], + 'nohp' => $tlp, 'kodepoli' => $maping_poli_bpjs['kd_poli_bpjs'], 'namapoli' => $maping_poli_bpjs['nm_poli_bpjs'], 'pasienbaru' => '0', @@ -2973,7 +3127,7 @@ public function postSaveSEP() 'kodedokter' => $maping_dokter_dpjpvclaim['kd_dokter_bpjs'], 'namadokter' => $maping_dokter_dpjpvclaim['nm_dokter_bpjs'], 'jampraktek' => substr($jadwaldokter['jam_mulai'],0,5).'-'.substr($jadwaldokter['jam_selesai'],0,5), - 'jeniskunjungan' => $_POST['tujuanKunj'], + 'jeniskunjungan' => $jenisKunjungan, 'nomorreferensi' => $nomorreferensi, 'nomorantrean' => $maping_poli_bpjs['kd_poli_bpjs'].'-'.$reg_periksa['no_reg'], 'angkaantrean' => $reg_periksa['no_reg'], @@ -2989,7 +3143,30 @@ public function postSaveSEP() $data = json_encode($data); $url = $this->api_url.'antrean/add'; $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); - // $data = json_decode($output, true); + $data = json_decode($output, true); + if($data['metadata']['code'] == 200 || $data['metadata']['code'] == 208) { + $this->db('mlite_antrian_referensi')->save([ + 'tanggal_periksa' => date('Y-m-d'), + 'no_rkm_medis' => $reg_periksa['no_rkm_medis'], + 'nomor_kartu' => $pasien['no_peserta'], + 'nomor_referensi' => $nomorreferensi, + 'kodebooking' => $kodebooking, + 'jenis_kunjungan' => $jenisKunjungan, + 'status_kirim' => 'Sudah', + 'keterangan' => $data['metadata']['code'].': '.$data['metadata']['message'] + ]); + } else if ($data == null) { + $this->db('mlite_antrian_referensi')->save([ + 'tanggal_periksa' => date('Y-m-d'), + 'no_rkm_medis' => $reg_periksa['no_rkm_medis'], + 'nomor_kartu' => $pasien['no_peserta'], + 'nomor_referensi' => $nomorreferensi, + 'kodebooking' => $kodebooking, + 'jenis_kunjungan' => $jenisKunjungan, + 'status_kirim' => 'Sudah', + 'keterangan' => $data['metadata']['code'].' null : null '.$data['metadata']['message'] + ]); + } } $data = [ @@ -3151,7 +3328,7 @@ public function postSaveSEP() 'prb' => $_POST['prolanis_prb'] ]); } - echo $_POST['sep_no_sep']; + echo htmlspecialchars($_POST['sep_no_sep']); } else { $simpan_sep = $this->db('bridging_sep_internal')->save([ 'no_sep' => $_POST['sep_no_sep'], @@ -3211,7 +3388,7 @@ public function postSaveSEP() } else { - echo $data['metaData']['message']; + echo htmlspecialchars($data['metaData']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); } exit(); @@ -3475,7 +3652,7 @@ public function getDaftarBPJS($nik) $url = $this->api_url . 'Peserta/nik/' . $nik . '/tglSEP/' . $tglPelayananSEP; $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, $tStamp); $json = json_decode($output, true); - //echo json_encode($json); + //echo json_encode(htmlspecialchars_array($json)); $code = $json['metaData']['code']; $message = $json['metaData']['message']; $stringDecrypt = stringDecrypt($key, $json['response']); diff --git a/plugins/anjungan/suara/lab.mp3 b/plugins/anjungan/suara/lab.mp3 new file mode 100644 index 000000000..d34f78257 Binary files /dev/null and b/plugins/anjungan/suara/lab.mp3 differ diff --git a/plugins/anjungan/view/admin/index.html b/plugins/anjungan/view/admin/index.html index 09f3dab24..8750942e0 100644 --- a/plugins/anjungan/view/admin/index.html +++ b/plugins/anjungan/view/admin/index.html @@ -59,6 +59,36 @@

    Antrian Laboratorium

    +
    +
    +
    +

    Antrian Apotek

    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +

    Antrian Radiologi

    +
    +
    +
    + +
    + +
    +
    +
    diff --git a/plugins/anjungan/view/admin/manage.html b/plugins/anjungan/view/admin/manage.html index c51320c69..bdf53d77c 100644 --- a/plugins/anjungan/view/admin/manage.html +++ b/plugins/anjungan/view/admin/manage.html @@ -1,21 +1,21 @@ - +
    diff --git a/plugins/anjungan/view/admin/pemanggil.html b/plugins/anjungan/view/admin/pemanggil.html new file mode 100644 index 000000000..4c96c5835 --- /dev/null +++ b/plugins/anjungan/view/admin/pemanggil.html @@ -0,0 +1,225 @@ + + + +
    + + + + {if: $show} +
    +
    +
    + {loop: $loket} +
    +
    +
    +
    Loket {?=isset_or($value)?}
    +
    +
    {?=strtoupper($namaloket)?}{?=isset_or($antrian)?}
    +
    + +
    +
    +
    + {/loop} +
    +
    +
    +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    +
    +
    + {/if} + +
    +
      +
    • Klik tombol 1x untuk memanggil antrian selanjutnya
    • +
    • Klik tombol 1x untuk memanggil ulang antrian
    • +
    • Untuk menyesuaikan urutan, masukkan nomor urut pada kolom lompat dan klik tombol panggil 1x
    • +
    • Angka di Sebelah Kiri Tombol Pemanggil Menunjukan Jumlah Nomor Antrian Yang Telah diambil Pasien
    • +
    +
    +
    {?=isset_or($powered)?}
    + diff --git a/plugins/anjungan/view/admin/settings.html b/plugins/anjungan/view/admin/settings.html index f973a6920..4d247d504 100644 --- a/plugins/anjungan/view/admin/settings.html +++ b/plugins/anjungan/view/admin/settings.html @@ -1,16 +1,16 @@ -
    +
    -

    {$settings.title}

    +

    {?=isset_or($settings.title)?}

    @@ -18,49 +18,49 @@

    {$settings.title}

    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    @@ -72,4 +72,4 @@

    {$settings.title}

    -
    +
    diff --git a/plugins/anjungan/view/cetak.sep.html b/plugins/anjungan/view/cetak.sep.html index e8c80752c..af82d6de6 100644 --- a/plugins/anjungan/view/cetak.sep.html +++ b/plugins/anjungan/view/cetak.sep.html @@ -70,7 +70,7 @@ SURAT ELEGIBILITAS PESERTA
    - {$settings.nama_instansi} + {?=isset_or($settings.nama_instansi)?}
    @@ -82,11 +82,11 @@ @@ -104,7 +104,7 @@ :
    - {$data_sep.potensi_prb} + {?=isset_or($data_sep.potensi_prb)?}
    - +
    - {$data_sep.no_sep} + {?=isset_or($data_sep.no_sep)?}
    @@ -121,7 +121,7 @@ : - {$data_sep.tglsep} + {?=isset_or($data_sep.tglsep)?} @@ -138,7 +138,7 @@ : - {$data_sep.no_kartu} (MR: {$data_sep.nomr}) + {?=isset_or($data_sep.no_kartu)?} (MR: {?=isset_or($data_sep.nomr)?}) Peserta @@ -147,7 +147,7 @@ : - {$data_sep.peserta} + {?=isset_or($data_sep.peserta)?} @@ -164,7 +164,7 @@ : - {$data_sep.nama_pasien} ({$data_sep.jkel}) + {?=isset_or($data_sep.nama_pasien)?} ({?=isset_or($data_sep.jkel)?}) COB @@ -190,7 +190,7 @@ : - {$data_sep.tanggal_lahir} + {?=isset_or($data_sep.tanggal_lahir)?} Jns. Rawat @@ -216,7 +216,7 @@ : - {$data_sep.notelep} + {?=isset_or($data_sep.notelep)?} Kls. Rawat @@ -225,7 +225,7 @@ : - Kelas {$data_sep.klsrawat} + Kelas {?=isset_or($data_sep.klsrawat)?} @@ -242,7 +242,7 @@ : - {$data_sep.nmpolitujuan} + {?=isset_or($data_sep.nmpolitujuan)?} - {$title} - {$settings.nama_instansi} + {?=isset_or($title)?} - {?=isset_or($settings.nama_instansi)?} @@ -55,11 +55,39 @@ padding-top: 0; padding-bottom: 0; } + .scroll-container { + height: 700px; + overflow: hidden; + position: relative; + } + .scroll-container ul { + position: absolute; + width: 100%; + animation: scrollUp 20s linear infinite; + } + @keyframes scrollUp { + 0% { top: 100%; } + 100% { top: -100%; } + } + .running-text-wrapper { + overflow: hidden; + white-space: nowrap; + width: 100%; + } + .running-text-track { + display: inline-block; + padding-left: 100%; + animation: ticker 25s linear infinite; + } + @keyframes ticker { + 0% { transform: translateX(0); } + 100% { transform: translateX(-100%); } + }
    -

    Antrian Apotek {$settings.nama_instansi}

    +

    Antrian Apotek {?=isset_or($settings.nama_instansi)?}

    {if: isset($_GET['status']) && $_GET['status'] == '1'}

    @@ -76,38 +104,56 @@

    - +
    -
      - {if: $display} - {loop: $display} -
    • - {$value.noantrian} {$value.nm_pasien} - [{$value.no_rkm_medis}], Resep: {$value.jenis_resep} Status: {$value.status_resep}
      -
    • - {/loop} - {else} -
      Belum ada data antrian!
      - {/if} -
    +
      -
      +

      -

      {$running_text} :: {loop: $jadwal} {$value.nm_dokter} [{$value.nm_poli}] - {$value.jam_mulai} s/d {$value.jam_selesai} WITA {/loop}

      +

      {?=isset_or($running_text)?} :: {loop: $jadwal} {?=isset_or($value.nm_dokter)?} [{?=isset_or($value.nm_poli)?}] - {?=isset_or($value.jam_mulai)?} s/d {?=isset_or($value.jam_selesai)?} WITA {/loop}

      Made with by drg. F. Basoro. - {$powered}. + {?=isset_or($powered)?}.

      -

      {$tanggal} {?= sprintf('Login sebagai %s', $username) ?}

      +

      {?=isset_or($tanggal)?} {?= sprintf('Login sebagai %s', $username) ?}

      + {if: isset($_GET['status']) && $_GET['status'] == '1'} - - + } + + -
      -

      Antrian Laboratorium {$settings.nama_instansi}

      - - - - + + +
      - -
      -
        - {loop: $display} -
      • - Nama: {$value.nm_pasien}, No. RM: {$value.no_rkm_medis} Status: {$value.stts}
        -
      • - {/loop} -
      +
      +

      + Antrian Laboratorium {$settings.nama_instansi}

      + + + + - - -
      +
      +
        - -
        -
        -

        {$running_text}

        -
        -
        -
        -
        -

        - Made with by drg. F. Basoro. - {$powered}. -

        -

        {$tanggal} {?= sprintf('Login sebagai %s', $username) ?}

        +
        +
        +

        {$running_text}

        +
        - +
        +
        +

        + Made with by drg. F. + Basoro. + {$powered}. +

        +

        {$tanggal} {?= sprintf('Login sebagai %s', + $username) ?}

        +
        +
        + + + - + + \ No newline at end of file diff --git a/plugins/anjungan/view/display.antrian.loket.html b/plugins/anjungan/view/display.antrian.loket.html index dbc56830b..984670350 100644 --- a/plugins/anjungan/view/display.antrian.loket.html +++ b/plugins/anjungan/view/display.antrian.loket.html @@ -73,8 +73,22 @@ padding-bottom: 0px; margin-top: 0px; margin-bottom: 10px; - color: #FF0000; - background-color: #fff; + color: #FF0000; + background-color: #fff; + } + .running-text-wrapper { + overflow: hidden; + white-space: nowrap; + width: 100%; + } + .running-text-track { + display: inline-block; + padding-left: 100%; + animation: ticker 25s linear infinite; + } + @keyframes ticker { + 0% { transform: translateX(0); } + 100% { transform: translateX(-100%); } } footer { position: fixed; @@ -92,47 +106,46 @@
        - {if: !$show}

        Antrian Loket {$settings.nama_instansi}

        - +
        -
        -
        A
        +
        A
        -
        -
        -
        B
        +
        B
        -
        -
        -
        F
        +
        F
        -
        @@ -159,74 +172,10 @@

        -
        - {$running_text} -
        -

        - {/if} - {if: $show == 'panggil_loket' || $show == 'panggil_cs' || $show == 'panggil_apotek'} -
        Pemanggil Antrian Loket
        -
        -
        -
        - {loop: $loket} -
        -
        -
        -
        Loket {$value}
        -
        -
        {?=strtoupper($namaloket)?}{$antrian}
        -
        - -
        -
        -
        - {/loop} -
        +
        + {$running_text}
        -
        -
        - - -
        -
        -
        - - - - -
        -
        -
        -
        -
        - -
        -
          -
        • Klik tombol 1x untuk memanggil antrian selanjutnya
        • -
        • Klik tombol 1x untuk memanggil ulang antrian
        • -
        • Untuk menyesuaikan urutan, masukkan nomor urut pada kolom lompat dan klik tombol panggil 1x
        • -
        • Angka di Sebelah Kiri Tombol Pemanggil Menunjukan Jumlah Nomor Antrian Yang Telah diambil Pasien
        • -
        -
        - {/if}

        @@ -301,14 +250,35 @@

        {?=strtoupper($namaloket)?}{$ant } setInterval(showTime2, 500); - {if: !$show} - {/if} - {if: $show == 'panggil_loket' || $show == 'panggil_cs' || $show == 'panggil_apotek'} - - {/if} diff --git a/plugins/anjungan/view/display.antrian.loket2.html b/plugins/anjungan/view/display.antrian.loket2.html index 58f19901b..fbc32b6dc 100644 --- a/plugins/anjungan/view/display.antrian.loket2.html +++ b/plugins/anjungan/view/display.antrian.loket2.html @@ -100,7 +100,7 @@ -

        Antrian Loket {$settings.nama_instansi}

        +

        Antrian Loket {?=isset_or($settings.nama_instansi)?}

        @@ -256,10 +256,10 @@

        Antrian Dipanggil

        Made with by drg. F. Basoro. - {$powered}. + {?=isset_or($powered)?}.

        {if: $show} -

        {$tanggal} {?= sprintf('Login sebagai %s', $username) ?}

        +

        {?=isset_or($tanggal)?} {?= sprintf('Login sebagai %s', $username) ?}

        {/if}
        diff --git a/plugins/anjungan/view/display.antrian.poli.display.html b/plugins/anjungan/view/display.antrian.poli.display.html index c0037425d..79773c41f 100644 --- a/plugins/anjungan/view/display.antrian.poli.display.html +++ b/plugins/anjungan/view/display.antrian.poli.display.html @@ -5,7 +5,7 @@ {/if}
        {loop: $display} -

        {$value.nm_poli}

        {$value.nm_dokter}


        +

        {?=isset_or($value.nm_poli)?}

        {?=isset_or($value.nm_dokter)?}


        @@ -13,7 +13,7 @@

        {$value.nm_poli}

        {$value.nm_

        Antrian

        -
        {$value.dalam_antrian.jumlah}
        +
        {?=isset_or($value.dalam_antrian.jumlah)?}
        @@ -23,7 +23,7 @@

        Antrian

        Terlayani

        -
        {$value.sudah_dilayani.jumlah}
        +
        {?=isset_or($value.sudah_dilayani.jumlah)?}
        @@ -36,7 +36,7 @@

        Terlayani

          {loop: $value.selanjutnya as $data}
        • - {$data.no_reg} - {?=substr($data.nm_pasien, 0, 20)?} ...
          + {?=isset_or($data.no_reg)?} - {?=substr($data.nm_pasien, 0, 20)?} ...
        • {/loop}
        @@ -52,4 +52,4 @@

        Terlayani

        {/if}
        -
        {$powered}
        +
        {?=isset_or($powered)?}
        diff --git a/plugins/anjungan/view/display.antrian.poli.displaytv.html b/plugins/anjungan/view/display.antrian.poli.displaytv.html index 01dd1952d..9ca6b578f 100644 --- a/plugins/anjungan/view/display.antrian.poli.displaytv.html +++ b/plugins/anjungan/view/display.antrian.poli.displaytv.html @@ -2,7 +2,7 @@
        {loop: $display} -

        {$value.nm_poli}

        {$value.nm_dokter}


        +

        {?=isset_or($value.nm_poli)?}

        {?=isset_or($value.nm_dokter)?}


        @@ -10,7 +10,7 @@

        {$value.nm_poli}

        {$value.nm_

        Antrian

        -
        {$value.dalam_antrian.jumlah}
        +
        {?=isset_or($value.dalam_antrian.jumlah)?}
        @@ -20,7 +20,7 @@

        Antrian

        Terlayani

        -
        {$value.sudah_dilayani.jumlah}
        +
        {?=isset_or($value.sudah_dilayani.jumlah)?}
        @@ -33,7 +33,7 @@

        Terlayani

          {loop: $value.selanjutnya as $data}
        • - {$data.no_reg} - {?=substr($data.nm_pasien, 0, 20)?} ...
          + {?=isset_or($data.no_reg)?} - {?=substr($data.nm_pasien, 0, 20)?} ...
        • {/loop}
        @@ -46,4 +46,4 @@

        Terlayani

        -
        {$powered}
        +
        {?=isset_or($powered)?}
        diff --git a/plugins/anjungan/view/display.antrian.poli.html b/plugins/anjungan/view/display.antrian.poli.html index f204e1cf1..c2c2b9bd5 100644 --- a/plugins/anjungan/view/display.antrian.poli.html +++ b/plugins/anjungan/view/display.antrian.poli.html @@ -7,7 +7,7 @@ - {$title} - {$settings.nama_instansi} + {?=isset_or($title)?} - {?=isset_or($settings.nama_instansi)?} @@ -38,7 +38,7 @@
        -

        Antrian Poliklinik {$settings.nama_instansi}

        +

        Antrian Poliklinik {?=isset_or($settings.nama_instansi)?}

        @@ -50,14 +50,14 @@

        {$value.nm_dokter}
        {$value.nm_poli}
        [ Antrian: {$value.dalam_antrian.jumlah} - Terlayani: {$value.sudah_dilayani.jumlah} ] -

        + + {if: $obat} {loop: $obat} - - - - + + + + {/loop} {else} diff --git a/plugins/apotek_ralan/view/admin/racikan.html b/plugins/apotek_ralan/view/admin/racikan.html new file mode 100644 index 000000000..02a13f74f --- /dev/null +++ b/plugins/apotek_ralan/view/admin/racikan.html @@ -0,0 +1,28 @@ +
        +
        +
        +
        {if: empty($value.dalam_pemeriksaan)}Kosong{else}{$value.dalam_pemeriksaan.no_reg} - {$value.dalam_pemeriksaan.nm_pasien}{/if}{?=isset_or($value.nm_dokter)?}
        {?=isset_or($value.nm_poli)?}
        [ Antrian: {?=isset_or($value.dalam_antrian.jumlah)?} - Terlayani: {?=isset_or($value.sudah_dilayani.jumlah)?} ]
        {if: empty($value.dalam_pemeriksaan)}Kosong{else}{?=isset_or($value.dalam_pemeriksaan.no_reg)?} - {?=isset_or($value.dalam_pemeriksaan.nm_pasien)?}{/if} {if: !empty($value.selanjutnya)} {loop: $value.selanjutnya as $data} - - {$data.nm_pasien} ({$data.no_reg}) - + - {?=isset_or($data.nm_pasien)?} ({?=isset_or($data.no_reg)?}) + {/loop} {/if} @@ -67,16 +67,16 @@

        -

        {$running_text}

        +

        {?=isset_or($running_text)?}

        Made with by drg. F. Basoro. - {$powered}. + {?=isset_or($powered)?}.

        -

        {$tanggal} {?= sprintf('Login sebagai %s', $username) ?}

        +

        {?=isset_or($tanggal)?} {?= sprintf('Login sebagai %s', $username) ?}

        diff --git a/plugins/anjungan/view/display.antrian.poli.kode.html b/plugins/anjungan/view/display.antrian.poli.kode.html index 575a8da50..62e87f4dc 100644 --- a/plugins/anjungan/view/display.antrian.poli.kode.html +++ b/plugins/anjungan/view/display.antrian.poli.kode.html @@ -6,7 +6,7 @@ - {$title} - {$settings.nama_instansi} + {?=isset_or($title)?} - {?=isset_or($settings.nama_instansi)?} @@ -40,11 +40,17 @@
        -

        Antrian Poliklinik {$settings.nama_instansi}

        +

        Antrian Poliklinik {?=isset_or($settings.nama_instansi)?}

        - +
        @@ -54,9 +60,9 @@

        {if: empty($running_text)} - {loop: $jadwal} {$value.nm_dokter} [{$value.nm_poli}] - {$value.jam_mulai} s/d {$value.jam_selesai} WITA {/loop} + {loop: $jadwal} {?=isset_or($value.nm_dokter)?} [{?=isset_or($value.nm_poli)?}] - {?=isset_or($value.jam_mulai)?} s/d {?=isset_or($value.jam_selesai)?} WITA {/loop} {else} - {$running_text} + {?=isset_or($running_text)?} {/if}

        @@ -64,9 +70,9 @@

        Made with by drg. F. Basoro. - {$powered}. + {?=isset_or($powered)?}.

        -

        {$tanggal} {?= sprintf('Login sebagai %s', $username) ?}

        +

        {?=isset_or($tanggal)?} {?= sprintf('Login sebagai %s', $username) ?}

        + + + + +
        +

        Antrian Radiologi {$settings.nama_instansi}

        + + + + + + +
        +
        +
          +
          +
          +
          +

          {$running_text}

          +
          +
          +
          +
          +

          + Made with by drg. F. Basoro. + {$powered}. +

          +

          {$tanggal} {?= sprintf('Login sebagai %s', $username) ?}

          +
          +
          + + + + + diff --git a/plugins/anjungan/view/display.bed.html b/plugins/anjungan/view/display.bed.html index 1de11049e..5a1e291f1 100644 --- a/plugins/anjungan/view/display.bed.html +++ b/plugins/anjungan/view/display.bed.html @@ -1,89 +1,103 @@ - + - - - - - - {$title} - {$settings.nama_instansi} - - - - - - - + .marquee { + width: 100%; + overflow: scroll; + height: calc(75vh); + /* border: 1px solid #ccc; */ + background: #0264d6; + } + + -
          -

          Bed Management {$settings.nama_instansi}

          - - - - - - - - -
          BangsalKelasStatus
          -
          - - - {loop: $display} - - - - - - {/loop} - -
          {$value.nm_bangsal}{$value.kelas} - Jumlah Kosong : {$value.kosong.jumlah} | Jumlah Terisi : {$value.isi.jumlah} -
          -
          -
          -
          -
          -

          - Made with by drg. F. Basoro. - {$powered}. -

          -

          {$tanggal} {?= sprintf('Login sebagai %s', $username) ?}

          +
          +

          Bed Management {?=isset_or($settings.nama_instansi)?}

          + + + + + + + + +
          BangsalKelasStatus
          +
          + + + +
          +
          -
          +
          +
          +

          + Made with by drg. F. + Basoro. + {?=isset_or($powered)?}. +

          +

          {?=isset_or($tanggal)?} {?= + sprintf('Login sebagai %s', $username) ?}

          +
          +
          + + $('.marquee').marquee() + + $(document).ready(function () { + loadBed(); + }); + function loadBed() { + $.get('{?=url()?}/anjungan/ajax?show=bed-display', function (html) { + $("#bed-display").html(html); + + }); + } + \ No newline at end of file diff --git a/plugins/anjungan/view/display.jadwal.operasi.html b/plugins/anjungan/view/display.jadwal.operasi.html index df81d1a20..015094eaa 100644 --- a/plugins/anjungan/view/display.jadwal.operasi.html +++ b/plugins/anjungan/view/display.jadwal.operasi.html @@ -7,7 +7,7 @@ - {$title} - {$settings.nama_instansi} + {?=isset_or($title)?} - {?=isset_or($settings.nama_instansi)?} @@ -39,23 +39,13 @@
          -

          Jadwal Operasi {$settings.nama_instansi}

          +

          Jadwal Operasi {?=isset_or($settings.nama_instansi)?}

          @@ -69,10 +59,21 @@

          Made with by drg. F. Basoro. - {$powered}. + {?=isset_or($powered)?}.

          -

          {$tanggal} {?= sprintf('Login sebagai %s', $username) ?}

          +

          {?=isset_or($tanggal)?} {?= sprintf('Login sebagai %s', $username) ?}

          + diff --git a/plugins/anjungan/view/presensi.html b/plugins/anjungan/view/presensi.html index 6ffbaa5c3..a69272558 100644 --- a/plugins/anjungan/view/presensi.html +++ b/plugins/anjungan/view/presensi.html @@ -6,7 +6,7 @@ - {$title} - {$settings.nama_instansi} + {?=isset_or($title)?} - {?=isset_or($settings.nama_instansi)?} @@ -22,7 +22,7 @@ body:before { content: ""; position: absolute; - background: url('{?=url()?}/{$wallpaper}'); + background: url('{?=url()?}/{?=isset_or($wallpaper)?}'); background-size: cover; z-index: -1; /* Keep the background behind the content */ height: 20%; width: 20%; /* Using Glen Maddern's trick /via @mente */ @@ -36,7 +36,7 @@ text-align: center; } .text_color { - color: {$text_color} !important; + color: {?=isset_or($text_color)?} !important; } .button { position: absolute; @@ -54,40 +54,38 @@ footer a, footer a:hover { color: #fff; } - .btn-group .btn-fab{ - position: fixed !important; - right: 20px; - bottom: 60px; + .center-page { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); } +
          -

          Presensi Pegawai {$settings.nama_instansi}

          -
          - -
          - {if: $notify} -
          - {/if} - +

          Made with by drg. F. Basoro. - {$powered}. + {?=isset_or($powered)?}.

          -

          {$tanggal}

          +

          {?=isset_or($tanggal)?}

          @@ -99,26 +97,55 @@

          {$running_text}

          + +
          + + + + @@ -165,18 +192,14 @@

          {$running_text}

          var base64image = document.getElementById("imageprev").src; Webcam.upload(base64image, '{?=url()?}/anjungan/presensi/upload/?barcode=' + barcode + '&shift=' + getshift, function(code, text) { + if(text) { + alert(text); + console.log(text); + } }); Webcam.reset(); - navigator.geolocation.getCurrentPosition( - function(position) { - $.get('{?=url(ADMIN.'/dashboard/geolocation/')?}', {lat: position.coords.latitude, lng: position.coords.longitude}); - }, - function error(err) {}, - {enableHighAccuracy: true, timeout: 5000} - ); - window.location.href = '{?=url()?}/anjungan/presensi'; }); diff --git a/plugins/anjungan/view/rincian.eresep.html b/plugins/anjungan/view/rincian.eresep.html index 8ca42352b..6477fe522 100644 --- a/plugins/anjungan/view/rincian.eresep.html +++ b/plugins/anjungan/view/rincian.eresep.html @@ -13,11 +13,11 @@
          Non Racikan
          {loop: $resep} - - - + + + @@ -29,11 +29,11 @@
          Non Racikan
          {loop: $value.resep_dokter as $data} - - - + + + - + {/loop} {/loop} @@ -61,11 +61,11 @@
          Racikan
          {loop: $resep_racikan} - - - + + + @@ -75,10 +75,10 @@
          Racikan
          - - - - + + + + @@ -88,9 +88,9 @@
          Racikan
          {loop: $value.resep_dokter_racikan_detail as $data} - - - + + + {/loop} diff --git a/plugins/anjungan/view/sep.mandiri.bikin.html b/plugins/anjungan/view/sep.mandiri.bikin.html index fe7972eca..78c56aac6 100644 --- a/plugins/anjungan/view/sep.mandiri.bikin.html +++ b/plugins/anjungan/view/sep.mandiri.bikin.html @@ -5,13 +5,14 @@ - {$title} - {$settings.nama_instansi} + {?=isset_or($title)?} - {?=isset_or($settings.nama_instansi)?} + @@ -176,6 +197,40 @@
          Silahkan Pilih Poli Tujuan

          +

          {$running_text}

          @@ -198,6 +253,54 @@

          {$running_text}

          + + diff --git a/plugins/api/view/admin/settings.apam.html b/plugins/api/view/admin/settings.apam.html index e38ecd695..3b255d72a 100644 --- a/plugins/api/view/admin/settings.apam.html +++ b/plugins/api/view/admin/settings.apam.html @@ -1,77 +1,77 @@ -
          +
          -

          {$settings.title}

          +

          {?=isset_or($settings.title)?}

          - +
          - +
          - +
          - +
          - +

          Pisahkan dengan tanda koma

          - +

          Limit untuk kuota. Misal 2 (50%), 4 (25%) dari kuota dalam jadwal

          - +
          - +
          - +
          - +
          - +
            - +
              - +
                @@ -87,37 +87,37 @@

                Pengaturan e-Payment Telemedicine Duitku

                - +

                Ada di dashboard Duitku.COM

                - +

                Ada di dashboard Duitku.COM

                - +

                Biaya Konsultasi Online (Duitku Payment Amount)

                - +

                A1 = ATM Bersama, WW = duitku wallet, VC = Credit Card, MY = Mandiri Clickpay, BK = BCA KlikPay

                - +
                - +

                Batas kadaluarsa pembayaran Virtual Account

                @@ -127,10 +127,9 @@

                Pengaturan e-Payment Telemedicine Duitku

                -
                + + \ No newline at end of file diff --git a/plugins/apotek_ralan/view/admin/manage.html b/plugins/apotek_ralan/view/admin/manage.html index db04d26ee..6b529b725 100644 --- a/plugins/apotek_ralan/view/admin/manage.html +++ b/plugins/apotek_ralan/view/admin/manage.html @@ -2,9 +2,9 @@
                -
                +
                - + +
                +

                Kelola Pasien

                @@ -33,7 +38,7 @@

                Kelola Pasien

                -
                +
                {include: ../plugins/apotek_ralan/view/admin/display.html}
                diff --git a/plugins/apotek_ralan/view/admin/nota_parsial.besar.html b/plugins/apotek_ralan/view/admin/nota_parsial.besar.html new file mode 100644 index 000000000..9c5c8014d --- /dev/null +++ b/plugins/apotek_ralan/view/admin/nota_parsial.besar.html @@ -0,0 +1,114 @@ + + + + + Nota Pembayaran Parsial Obat + + + + + + +
                +
                +
                +

                {?=isset_or($settings.nama_instansi)?}

                +
                {?=isset_or($settings.alamat)?}
                +
                +

                NOTA PEMBAYARAN PARSIAL OBAT

                +
                +
                + +
                -
                  - {loop: $display} -
                • - Nama: {$value.nm_pasien}, No. RM: {$value.no_rkm_medis} Status: {$value.status}
                  - [ Operator : {$value.namadok} ] [ Rujukan Dari : - {if: $value.kd_poli == 'IGDK'}{$value.kamar.namabangsal} - {elseif: $value.kd_poli == 'U0027'}{$value.kamar.namabangsal} - {else} {$value.namapoli}{/if} ]
                  -
                • - {/loop} -
                +
                  {$value.nm_dokter}{$value.no_resep}{$value.tgl_peresepan} {$value.jam_peresepan}{?=isset_or($value.nm_dokter)?}{?=isset_or($value.no_resep)?}{?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} - +
                  {$data.nama_brng}{$data.jml}{$data.aturan_pakai}{?=isset_or($data.nama_brng)?}{?=isset_or($data.jml)?}{?=isset_or($data.aturan_pakai)?} Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?}
                  {$value.nm_dokter}{$value.no_resep}{$value.tgl_peresepan} {$value.jam_peresepan}{?=isset_or($value.nm_dokter)?}{?=isset_or($value.no_resep)?}{?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} - +
                  Keterangan
                  {$value.nama_racik}{$value.jml_dr}{$value.aturan_pakai}{$value.keterangan}{?=isset_or($value.nama_racik)?}{?=isset_or($value.jml_dr)?}{?=isset_or($value.aturan_pakai)?}{?=isset_or($value.keterangan)?}
                  Nama Obat
                  {$data.nama_brng}{$data.kandungan}{$data.jml}{?=isset_or($data.nama_brng)?}{?=isset_or($data.kandungan)?}{?=isset_or($data.jml)?} Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?}
                  + + + + + + + + + + + + + + + + + + + + + + + + +
                  ID Pembayaran{?=isset_or($pembayaran.id)?}No Rawat{?=isset_or($pembayaran.no_rawat)?}
                  Tanggal/Jam{?=isset_or($pembayaran.tgl_bayar)?} {?=isset_or($pembayaran.jam_bayar)?}Metode{?=isset_or($pembayaran.metode)?}
                  Nama Pasien{?=isset_or($pasien.nm_pasien)?}No RM{?=isset_or($pasien.no_rkm_medis)?}
                  Alamat{?=isset_or($pasien.alamat)?}
                  + + + + + + + + + + {loop: $detail} + + + + + {/loop} + + + + + + + +
                  ItemJumlah
                  {?=isset_or($value.nm_perawatan)?}Rp. {?= number_format(isset_or($value.jumlah_alokasi,0),2,',','.')?}
                  TotalRp. {?= number_format(isset_or($total_detail,0),2,',','.')?}
                  + +
                  +
                  + Terbilang: # {?=terbilang(isset_or($total_detail,0),3,"")?} Rupiah # +
                  +
                  + +
                  +
                  +
                  {?=isset_or($settings.kota)?}, {?=date('d-m-Y')?}
                  +
                  Kasir
                  +


                  +
                  {?=isset_or($nama_kasir)?}
                  +
                  +
                  +
                  + + + + + diff --git a/plugins/apotek_ralan/view/admin/nota_parsial.kecil.html b/plugins/apotek_ralan/view/admin/nota_parsial.kecil.html new file mode 100644 index 000000000..c1d003d4e --- /dev/null +++ b/plugins/apotek_ralan/view/admin/nota_parsial.kecil.html @@ -0,0 +1,97 @@ + + + + + Nota Pembayaran Parsial Obat + + + + + + +
                  +
                  + + + + + + + + + + + + + + + + + + + +
                  {?=isset_or($settings.nama_instansi)?}

                  {?=isset_or($settings.alamat)?}

                  + NOTA PEMBAYARAN PARSIAL OBAT
                  + ID Pembayaran : {?=isset_or($pembayaran.id)?}
                  + No Rawat : {?=isset_or($pembayaran.no_rawat)?}
                  + Tanggal : {?=isset_or($pembayaran.tgl_bayar)?} {?=isset_or($pembayaran.jam_bayar)?}
                  + Metode : {?=isset_or($pembayaran.metode)?}
                  + Nama Pasien : {?=isset_or($pasien.nm_pasien)?}
                  + No RM : {?=isset_or($pasien.no_rkm_medis)?}
                  + Alamat : {?=isset_or($pasien.alamat)?}
                  +
                  + + {loop: $detail} + + + + + {/loop} + + + + +
                  {?=isset_or($value.nm_perawatan)?}Rp. {?= number_format(isset_or($value.jumlah_alokasi,0),2,',','.')?}
                  TotalRp. {?= number_format(isset_or($total_detail,0),2,',','.')?}
                  +
                  Terbilang : # {?=terbilang(isset_or($total_detail,0),3,"")?} Rupiah #
                  +

                  {?=isset_or($settings.kota)?}, {?=date('d-m-Y')?}
                  + Kasir


                  + {?=isset_or($nama_kasir)?}
                  +

                  +
                  +
                  +
                  + + Versi Besar + + + diff --git a/plugins/apotek_ralan/view/admin/obat.html b/plugins/apotek_ralan/view/admin/obat.html index c3fe88c34..3c3a1f8ab 100644 --- a/plugins/apotek_ralan/view/admin/obat.html +++ b/plugins/apotek_ralan/view/admin/obat.html @@ -12,10 +12,10 @@

                  {$value.kode_brng}{$value.nama_brng}Rp. {?= number_format($value.ralan,2,',','.')?}
                  {?=isset_or($value.kode_brng)?}{?=isset_or($value.nama_brng)?}Rp. {?= number_format($value.dasar,2,',','.')?}
                  + + + + + + + + {if: $racikan} + {loop: $racikan} + + + + + {/loop} + {else} + + + + {/if} + +
                  ID RacikanNama Racikan
                  {?=isset_or($value.kd_racik)?}{?=isset_or($value.nm_racik)?}
                  Tidak ada data metode racik.
                  +
                  + + diff --git a/plugins/apotek_ralan/view/admin/rincian.html b/plugins/apotek_ralan/view/admin/rincian.html index be78fa6ce..5b8bad251 100644 --- a/plugins/apotek_ralan/view/admin/rincian.html +++ b/plugins/apotek_ralan/view/admin/rincian.html @@ -1,11 +1,12 @@

                  Pemberian Obat

                  +
                  Non Racikan
                  - + @@ -13,12 +14,12 @@

                  Pemberian Obat

                  {loop: $detail_pemberian_obat} - - - + + + {/loop} @@ -32,6 +33,123 @@

                  Pemberian Obat

                  Nama Obat JumlahAturan Pakai {if: $detail_pemberian_obat}{/if}Aturan Pakai Harga Aksi
                  {$value.nama_brng}{$value.jml}{$value.aturan_pakai}{?=isset_or($value.nama_brng)?}{?=isset_or($value.jml)?}{?=isset_or($value.aturan_pakai)?} Rp. {?= number_format(($value.ralan * $value.jml),2,',','.')?} - +
                  +
                  Racikan
                  +
                  + + + + + + + + + + + + {loop: $detail_pemberian_obat_racikan} + + + + + + + + {loop: $value.detail_pemberian_obat as $data} + + + + + + + + {/loop} + {/loop} + + + + + + + + +
                  Nama RacikanJumlahAturan PakaiHargaAksi
                  {?=isset_or($value.nama_racik)?}{?=isset_or($value.jml_dr)?}{?=isset_or($value.aturan_pakai)?} + +
                  - {?=isset_or($data.nama_brng)?}{?=isset_or($data.jml)?}Rp. {?= number_format(($data.total),2,',','.')?}
                  Total Biaya ObatRp. {?= number_format($jumlah_total_obat2,2,',','.')?}
                  +
                  +
                  +{if: $billing_parsial_enabled == 'true'} +

                  Pembayaran Parsial Obat

                  +
                  +
                  + + + + + + + + + + + + + + + +
                  Total Tagihan ObatRp. {?= number_format(isset_or($parsial_total_obat,0),2,',','.')?}
                  Sudah DibayarRp. {?= number_format(isset_or($parsial_paid_obat,0),2,',','.')?}
                  SisaRp. {?= number_format(isset_or($parsial_remaining_obat,0),2,',','.')?}
                  +
                  +
                  +
                  + + + + +
                  +
                  +
                  + +
                  Riwayat Pembayaran Parsial Obat
                  +
                  + + + + + + + + + + + + + {loop: $parsial_history_obat} + + + + + + + + + {/loop} + {if: empty($parsial_history_obat)} + + {/if} + +
                  NoTanggalJamMetodeJumlahAksi
                  {?=$counter?}.{?=isset_or($value.tgl_bayar)?}{?=isset_or($value.jam_bayar)?}{?=isset_or($value.metode)?}Rp. {?= number_format(isset_or($value.jumlah_obat,0),2,',','.')?} + +
                  Belum ada pembayaran parsial obat.
                  +
                  +
                  +{/if}

                  e-Resep

                  Non Racikan
                  @@ -41,41 +159,70 @@
                  Non Racikan
                  Nama Dokter Nomor Resep Tanggal Peresepan - Aksi + Aksi - + {if: isset($resep)} {loop: $resep} + - {$value.nm_dokter} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} - - - - + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} + + + + + + + {if: $value.tgl_perawatan != '0000-00-00'} + + {/if} Nama Obat Jumlah - Aturan Pakai {if: $resep}{/if} + Aturan Pakai + Embalase + Tuslah Harga {loop: $value.resep_dokter as $data} - - {$data.nama_brng} - {$data.jml} - {$data.aturan_pakai} + + {?=isset_or($data.nama_brng)?} + + + + + + + + Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?} {/loop} + {/loop} - + {/if} Total Biaya Obat - Rp. {?= number_format($jumlah_total_resep,2,',','.')?} + Rp. {?= number_format($jumlah_total_resep,2,',','.')?} @@ -88,56 +235,134 @@
                  Racikan
                  Nama Dokter Nomor Resep Tanggal Peresepan - Aksi + Aksi - - {loop: $resep_racikan} + {loop: $resep_racikan} + - {$value.nm_dokter} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} - - - + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} + + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_delete', 'apotek_ralan') == true}{/if} + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_update', 'apotek_ralan') == true}{/if} + + + + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_create', 'apotek_ralan') == true} + {if: $value.tgl_perawatan != '0000-00-00'} + + {/if} + {/if} Nama Racikan Jml. Racik - Aturan Pakai {if: $resep_racikan}{/if} - Keterangan + Aturan Pakai + Keterangan - {$value.nama_racik} - {$value.jml_dr} - {$value.aturan_pakai} - {$value.keterangan} + {?=isset_or($value.nama_racik)?} + + + + + + + {?=isset_or($value.keterangan)?} Nama Obat Kandungan Jumlah + Embalase + Tuslah Harga {loop: $value.resep_dokter_racikan_detail as $data} - - {$data.nama_brng} - {$data.kandungan} - {$data.jml} - Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?} + + {?=isset_or($data.nama_brng)?} + + {?=isset_or($data.jml)?} + + + Rp. {?= number_format($data.ralan,2,',','.')?} {/loop} - {/loop} + {/loop} Total Biaya Obat Racikan - Rp. {?= number_format($jumlah_total_resep_racikan,2,',','.')?} + Rp. {?= number_format($jumlah_total_resep_racikan,2,',','.')?}
                  +
                  - -
                  - + +
                  + +
                  + +
                  +
                  @@ -32,6 +36,7 @@
                  +
                  @@ -52,54 +57,63 @@
                  +
                  -
                  - -
                  - -
                  -
                  -
                  - -
                  - -
                    +
                    +
                    + +
                    + +
                    - -
                    - -
                    -
                    -
                    - -
                    - -
                      +
                      +
                      + +
                      + + +
                      + +
                      + +
                      +
                      - -
                      - +
                      + +
                      + +
                      -
                      - -
                      - -
                        +
                        +
                        + +
                        + +
                        + +
                        + +
                        - -
                        - +
                        + +
                        + +
                          +
                          + +
                          + +
                          @@ -208,3 +222,75 @@ }); }); + \ No newline at end of file diff --git a/plugins/apotek_ranap/view/admin/manage.html b/plugins/apotek_ranap/view/admin/manage.html index e89b744d9..4d0802377 100644 --- a/plugins/apotek_ranap/view/admin/manage.html +++ b/plugins/apotek_ranap/view/admin/manage.html @@ -2,9 +2,9 @@
                          -
                          +
                          - +
                          +

                          Kelola Pasien

                          -
                          +
                          {include: ../plugins/apotek_ranap/view/admin/display.html}
                          diff --git a/plugins/apotek_ranap/view/admin/nota_parsial.besar.html b/plugins/apotek_ranap/view/admin/nota_parsial.besar.html new file mode 100644 index 000000000..9c5c8014d --- /dev/null +++ b/plugins/apotek_ranap/view/admin/nota_parsial.besar.html @@ -0,0 +1,114 @@ + + + + + Nota Pembayaran Parsial Obat + + + + + + +
                          +
                          +
                          +

                          {?=isset_or($settings.nama_instansi)?}

                          +
                          {?=isset_or($settings.alamat)?}
                          +
                          +

                          NOTA PEMBAYARAN PARSIAL OBAT

                          +
                          +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          ID Pembayaran{?=isset_or($pembayaran.id)?}No Rawat{?=isset_or($pembayaran.no_rawat)?}
                          Tanggal/Jam{?=isset_or($pembayaran.tgl_bayar)?} {?=isset_or($pembayaran.jam_bayar)?}Metode{?=isset_or($pembayaran.metode)?}
                          Nama Pasien{?=isset_or($pasien.nm_pasien)?}No RM{?=isset_or($pasien.no_rkm_medis)?}
                          Alamat{?=isset_or($pasien.alamat)?}
                          + + + + + + + + + + {loop: $detail} + + + + + {/loop} + + + + + + + +
                          ItemJumlah
                          {?=isset_or($value.nm_perawatan)?}Rp. {?= number_format(isset_or($value.jumlah_alokasi,0),2,',','.')?}
                          TotalRp. {?= number_format(isset_or($total_detail,0),2,',','.')?}
                          + +
                          +
                          + Terbilang: # {?=terbilang(isset_or($total_detail,0),3,"")?} Rupiah # +
                          +
                          + +
                          +
                          +
                          {?=isset_or($settings.kota)?}, {?=date('d-m-Y')?}
                          +
                          Kasir
                          +


                          +
                          {?=isset_or($nama_kasir)?}
                          +
                          +
                          +
                          + + + + + diff --git a/plugins/apotek_ranap/view/admin/nota_parsial.kecil.html b/plugins/apotek_ranap/view/admin/nota_parsial.kecil.html new file mode 100644 index 000000000..e6bcb2704 --- /dev/null +++ b/plugins/apotek_ranap/view/admin/nota_parsial.kecil.html @@ -0,0 +1,97 @@ + + + + + Nota Pembayaran Parsial Obat + + + + + + +
                          +
                          + + + + + + + + + + + + + + + + + + + +
                          {?=isset_or($settings.nama_instansi)?}

                          {?=isset_or($settings.alamat)?}

                          + NOTA PEMBAYARAN PARSIAL OBAT
                          + ID Pembayaran : {?=isset_or($pembayaran.id)?}
                          + No Rawat : {?=isset_or($pembayaran.no_rawat)?}
                          + Tanggal : {?=isset_or($pembayaran.tgl_bayar)?} {?=isset_or($pembayaran.jam_bayar)?}
                          + Metode : {?=isset_or($pembayaran.metode)?}
                          + Nama Pasien : {?=isset_or($pasien.nm_pasien)?}
                          + No RM : {?=isset_or($pasien.no_rkm_medis)?}
                          + Alamat : {?=isset_or($pasien.alamat)?}
                          +
                          + + {loop: $detail} + + + + + {/loop} + + + + +
                          {?=isset_or($value.nm_perawatan)?}Rp. {?= number_format(isset_or($value.jumlah_alokasi,0),2,',','.')?}
                          TotalRp. {?= number_format(isset_or($total_detail,0),2,',','.')?}
                          +
                          Terbilang : # {?=terbilang(isset_or($total_detail,0),3,"")?} Rupiah #
                          +

                          {?=isset_or($settings.kota)?}, {?=date('d-m-Y')?}
                          + Kasir


                          + {?=isset_or($nama_kasir)?}
                          +

                          +
                          +
                          +
                          + + Versi Besar + + + diff --git a/plugins/apotek_ranap/view/admin/obat.html b/plugins/apotek_ranap/view/admin/obat.html index f7f64b748..51beefc78 100644 --- a/plugins/apotek_ranap/view/admin/obat.html +++ b/plugins/apotek_ranap/view/admin/obat.html @@ -14,11 +14,11 @@ {if: $obat} {loop: $obat} - - {$value.kode_brng} - {$value.nama_brng} - {$value.stok} - {$value.stokminimal} + + {?=isset_or($value.kode_brng)?} + {?=isset_or($value.nama_brng)?} + {?=isset_or($value.stok)?} + {?=isset_or($value.stokminimal)?} Rp. {?= number_format($value.ralan,2,',','.')?} {/loop} diff --git a/plugins/apotek_ranap/view/admin/racikan.html b/plugins/apotek_ranap/view/admin/racikan.html new file mode 100644 index 000000000..02a13f74f --- /dev/null +++ b/plugins/apotek_ranap/view/admin/racikan.html @@ -0,0 +1,28 @@ +
                          +
                          +
                          + + + + + + + + + {if: $racikan} + {loop: $racikan} + + + + + {/loop} + {else} + + + + {/if} + +
                          ID RacikanNama Racikan
                          {?=isset_or($value.kd_racik)?}{?=isset_or($value.nm_racik)?}
                          Tidak ada data metode racik.
                          +
                          +
                          +
                          diff --git a/plugins/apotek_ranap/view/admin/rincian.html b/plugins/apotek_ranap/view/admin/rincian.html index 6c0336e87..6864c4ae7 100644 --- a/plugins/apotek_ranap/view/admin/rincian.html +++ b/plugins/apotek_ranap/view/admin/rincian.html @@ -1,11 +1,12 @@

                          Pemberian Obat

                          +
                          Non Racikan
                          - + @@ -13,12 +14,30 @@

                          Pemberian Obat

                          {loop: $detail_pemberian_obat} - - - - + + + + {/loop} @@ -32,7 +51,152 @@

                          Pemberian Obat

                          Nama Obat JumlahAturan Pakai {if: $detail_pemberian_obat}{/if}Aturan Pakai Harga Aksi
                          {$value.nama_brng}{$value.jml}{$value.aturan_pakai}Rp. {?= number_format(($value.h_beli * $value.jml),2,',','.')?}{?=isset_or($value.nama_brng)?}{?=isset_or($value.jml)?} + + + + Rp. {?= number_format(($value.biaya_obat * $value.jml),2,',','.')?} - +
                          +
                          Racikan
                          +
                          + + + + + + + + + + + + + {if: isset($resep)} + + {loop: $detail_pemberian_obat_racikan} + + + + + + + + {loop: $value.detail_pemberian_obat as $data} + + + + + + + + {/loop} + {/loop} + + {/if} + + + + + + + +
                          Nama RacikanJumlahAturan PakaiEmbalaseTuslahHargaAksi
                          {if: isset($value.nama_racik)}{?=isset_or($value.nama_racik)?}{else}-{/if}{if: isset($value.jml_dr)}{?=isset_or($value.jml_dr)?}{else}-{/if} + + + + + +
                          - {?=isset_or($data.nama_brng)?}{?=isset_or($data.jml)?}Rp. {?= number_format(($data.total),2,',','.')?}
                          Total Biaya ObatRp. {?= number_format($jumlah_total_obat2,2,',','.')?}
                          +
                          +
                          +{if: $billing_parsial_enabled == 'true'} +

                          Pembayaran Parsial Obat

                          +
                          +
                          + + + + + + + + + + + + + + + +
                          Total Tagihan ObatRp. {?= number_format(isset_or($parsial_total_obat,0),2,',','.')?}
                          Sudah DibayarRp. {?= number_format(isset_or($parsial_paid_obat,0),2,',','.')?}
                          SisaRp. {?= number_format(isset_or($parsial_remaining_obat,0),2,',','.')?}
                          +
                          +
                          +
                          + + + + +
                          +
                          +
                          + +
                          Riwayat Pembayaran Parsial Obat
                          +
                          + + + + + + + + + + + + + {loop: $parsial_history_obat} + + + + + + + + + {/loop} + {if: empty($parsial_history_obat)} + + {/if} + +
                          NoTanggalJamMetodeJumlahAksi
                          {?=$counter?}.{?=isset_or($value.tgl_bayar)?}{?=isset_or($value.jam_bayar)?}{?=isset_or($value.metode)?}Rp. {?= number_format(isset_or($value.jumlah_obat,0),2,',','.')?} + +
                          Belum ada pembayaran parsial obat.
                          +
                          +
                          +{/if}

                          e-Resep

                          +
                          Non Racikan
                          @@ -40,50 +204,173 @@

                          e-Resep

                          - + - - {loop: $resep} + {if: isset($resep)} + {loop: $resep} + - - - - + + + - + + + - {loop: $value.resep_dokter as $data} - - - - - - + + + + + + + {/loop} + {/loop} - + {/if} - - +
                          Nama Dokter Nomor Resep Tanggal PeresepanAksiAksi
                          {$value.nm_dokter}{$value.no_resep}{$value.tgl_peresepan} {$value.jam_peresepan} - - - + {?=isset_or($value.nm_dokter)?}{?=isset_or($value.no_resep)?}{?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} {?=isset_or($value.tgl_penyerahan)?} + + + + + + {if: $value.tgl_perawatan != '0000-00-00'} + + {/if}
                          Nama Obat JumlahAturan Pakai {if: $resep}{/if}Aturan PakaiEmbalaseTuslah HargaAksi
                          {$data.nama_brng}{$data.jml}{$data.aturan_pakai}Rp. {?= number_format(($data.h_beli * $data.jml),2,',','.')?} - -
                          {?=isset_or($data.nama_brng)?}{if: isset($data.aturan_pakai)}{?=isset_or($data.aturan_pakai)?}{else}-{/if} Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?}
                          Total Biaya ObatRp. {?= number_format($jumlah_total_resep,2,',','.')?}Rp. {?= number_format($jumlah_total_resep,2,',','.')?}
                          +
                          Racikan
                          +
                          + + + + + + + + + + {loop: $resep_racikan} + + + + + + + + + + + + + + + + + + + + + + + + + + + + {loop: $value.resep_dokter_racikan_detail as $data} + + + + + + + + + {/loop} + + {/loop} + + + + + + +
                          Nama DokterNomor ResepTanggal PeresepanAksi
                          {?=isset_or($value.nm_dokter)?}{?=isset_or($value.no_resep)?}{?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_delete', 'apotek_ranap') == true} + + {/if} + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_update', 'apotek_ranap') == true} + + {/if} + + + + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_create', 'apotek_ranap') == true} + {if: $value.tgl_perawatan != '0000-00-00'} + + {/if} + {/if} +
                          Nama RacikanJml. RacikAturan PakaiKeterangan
                          {if: isset($value.nama_racik)}{?=isset_or($value.nama_racik)?}{else}-{/if}{if: isset($value.jml_dr)}{?=isset_or($value.jml_dr)?}{else}-{/if}{if: isset($value.aturan_pakai)}{?=isset_or($value.aturan_pakai)?}{else}-{/if} {if: isset($value.keterangan)}{?=isset_or($value.keterangan)?}{else}-{/if}
                          Nama ObatKandunganJumlahEmbalaseTuslahHarga
                          {?=isset_or($data.nama_brng)?}{?=isset_or($data.jml)?}Rp. {?= number_format($data.ranap,2,',','.')?}
                          Total Biaya Obat RacikanRp. {?= number_format($jumlah_total_resep_racikan,2,',','.')?}
                          +
                          + + \ No newline at end of file diff --git a/plugins/crud_generator/src/javascript.tpl b/plugins/crud_generator/src/javascript.tpl index b9f5e3bb9..49d41b03b 100644 --- a/plugins/crud_generator/src/javascript.tpl +++ b/plugins/crud_generator/src/javascript.tpl @@ -38,6 +38,63 @@ COLUMNDEFS_ISI dom: "<'row'<'col-sm-12'tr>><<'pmd-datatable-pagination' l i p>>" }); + // Configure long press + let longPressTimer; + let longPressDelay = 500; // milliseconds + + // Context menu configuration + $.contextMenu({ + selector: '#tbl_NAMA_TABLE tbody tr', + trigger: 'right', // for right-click + events: { + show: function(options) { + // Highlight the selected row + $(this).addClass('selected'); + }, + hide: function(options) { + // Remove highlight + $(this).removeClass('selected'); + } + }, + callback: function(key, options) { + // Get the data from the selected row + let table = $('#tbl_NAMA_TABLE').DataTable(); + let data = table.row(this).data(); + + // Handle menu actions + switch(key) { + case "edit": + $('#edit_data_NAMA_TABLE').trigger('click'); + break; + case "delete": + $('#hapus_data_NAMA_TABLE').trigger('click'); + break; + case "detail": + $('#lihat_detail_NAMA_TABLE').trigger('click'); + break; + } + }, + items: { + "edit": {name: "Edit", icon: "fa-edit"}, + "delete": {name: "Hapus", icon: "fa-trash"}, + "detail": {name: "Detail", icon: "fa-eye"}, + "sep1": "---------", + "quit": {name: "Tutup", icon: "fa-close"} + } + }); + + // Add touch support for mobile devices + $('#tbl_NAMA_TABLE tbody').on('touchstart', 'tr', function(e) { + let row = $(this); + longPressTimer = setTimeout(function() { + // Trigger context menu + row.contextMenu({x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY}); + }, longPressDelay); + }).on('touchend touchcancel', 'tr', function() { + // Clear timer if touch ends before longpress delay + clearTimeout(longPressTimer); + }); + // ============================================================== // FORM VALIDASI // ============================================================== @@ -153,10 +210,26 @@ DELETE_ISI // ============================================================== // TOMBOL TAMBAH DATA DI CLICK // ============================================================== + + let searchParams = new URLSearchParams(window.location.search) + + if(window.location.search.indexOf('no_rawat') !== -1) { + $('#search_text_NAMA_TABLE').val(searchParams.get('no_rawat')); + var_tbl_NAMA_TABLE.draw(); + if(searchParams.get('modal') == 'true') { + $("#modal_NAMA_TABLE").modal(); + $('#no_rawat').val(searchParams.get('no_rawat')); + } + } + jQuery("#tambah_data_NAMA_TABLE").click(function () { TAMBAH_ISI + if(window.location.search.indexOf('no_rawat') !== -1) { + $('#no_rawat').val(searchParams.get('no_rawat')); + } + $("#typeact").val("add"); $("#ADD_FIELD").prop('disabled', false); @@ -283,4 +356,10 @@ DATA_ISI XLSX.utils.book_append_sheet(new_workbook, worksheet1, "Data NAMA_TABLE"); XLSX.writeFile(new_workbook, 'tmp_file.xls'); }) + + $("#view_chart").click(function () { + var baseURL = mlite.url + '/' + mlite.admin; + window.open(baseURL + '/MODULE_NAME/chart?t=' + mlite.token, '_blank',"toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no,modal=yes"); + }) + }); \ No newline at end of file diff --git a/plugins/crud_generator/src/manage.tpl b/plugins/crud_generator/src/manage.tpl index 2e1b55ed8..24cb0f96e 100644 --- a/plugins/crud_generator/src/manage.tpl +++ b/plugins/crud_generator/src/manage.tpl @@ -1,4 +1,4 @@ -
                          +
                          @@ -16,19 +16,12 @@ - -
                          - - -
                          +
                          @@ -60,7 +53,7 @@
                          -
                          +
                          +
                          +
                          +
                          + +
                          +
                          - +
                          + + + + \ No newline at end of file diff --git a/plugins/dashboard/Admin.php b/plugins/dashboard/Admin.php index bfac793a6..bdcb67951 100644 --- a/plugins/dashboard/Admin.php +++ b/plugins/dashboard/Admin.php @@ -70,7 +70,7 @@ public function getMenu() { $this->core->addCSS(url(MODULES . '/dashboard/css/admin/dashboard.css?v={$mlite.version}')); $this->core->addJS(url(MODULES . '/dashboard/js/admin/dashboard.js?v={$mlite.version}'), 'footer'); - echo $this->draw('dashboard.html', ['modules' => $this->_modulesList()]); + echo $this->draw('dashboard.html', ['modules' => htmlspecialchars_array($this->_modulesList())]); exit(); } @@ -139,22 +139,29 @@ public function postUpload() $barcode = $this->core->getUserInfo('username', null, true); $bulan = date('m'); - $tahun = date('y'); + $tahun = date('Y'); $hari = date('j'); - $shift = $_GET['shift']; + $shift = $_GET['shift'] ?? ''; $idpeg = $this->db('barcode')->where('barcode', $barcode)->oneArray(); + + if (!$idpeg) { + $this->notify('failure', 'ID Pegawai tidak ditemukan!'); + echo 'ID Pegawai tidak ditemukan!'; + exit(); + } + $jam_jaga = $this->db('jam_jaga')->join('pegawai', 'pegawai.departemen = jam_jaga.dep_id')->where('pegawai.id', $idpeg['id'])->where('jam_jaga.shift', $shift)->oneArray(); - $jadwal_pegawai = $this->db('jadwal_pegawai')->where('id', $idpeg['id'])->where('h' . $hari, $jam_jaga['shift'])->where('bulan', $bulan)->where('tahun', $tahun)->oneArray(); - $jadwal_tambahan = $this->db('jadwal_tambahan')->where('id', $idpeg['id'])->where('h' . $hari, $jam_jaga['shift'])->where('bulan', $bulan)->where('tahun', $tahun)->oneArray(); - $isFullAbsen = $this->db('rekap_presensi')->where('id', $idpeg['id'])->where('shift', $jam_jaga['shift'])->like('jam_datang', date('Y-m-d') . '%')->oneArray(); + $jadwal_pegawai = $this->db('jadwal_pegawai')->where('id', $idpeg['id'])->where('h' . $hari, $jam_jaga['shift'] ?? '')->where('bulan', $bulan)->where('tahun', $tahun)->oneArray(); + $jadwal_tambahan = $this->db('jadwal_tambahan')->where('id', $idpeg['id'])->where('h' . $hari, $jam_jaga['shift'] ?? '')->where('bulan', $bulan)->where('tahun', $tahun)->oneArray(); + $isFullAbsen = $this->db('rekap_presensi')->where('id', $idpeg['id'])->where('shift', $jam_jaga['shift'] ?? '')->like('jam_datang', date('Y-m-d') . '%')->oneArray(); $isAbsen = $this->db('temporary_presensi')->where('id', $idpeg['id'])->oneArray(); $set_keterlambatan = $this->db('set_keterlambatan')->oneArray(); - $toleransi = $set_keterlambatan['toleransi']; - $terlambat1 = $set_keterlambatan['terlambat1']; - $terlambat2 = $set_keterlambatan['terlambat2']; + $toleransi = $set_keterlambatan['toleransi'] ?? 0; + $terlambat1 = $set_keterlambatan['terlambat1'] ?? 0; + $terlambat2 = $set_keterlambatan['terlambat2'] ?? 0; $toleransi = (int)$toleransi; $terlambat1 = (int)$terlambat1; @@ -166,22 +173,25 @@ public function postUpload() if ($jadwal_tambahan) { if (empty($urlnya)) { $this->notify('failure', 'Pilih shift dulu...!!!!'); + echo 'Pilih shift dulu...!!!!'; } else { $status = 'Tepat Waktu'; + $jam_masuk = $jam_jaga['jam_masuk'] ?? '00:00:00'; - if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_jaga['jam_masuk'])) > ($toleransi * 60)) { + if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_masuk)) > ($toleransi * 60)) { $status = 'Terlambat Toleransi'; } - if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_jaga['jam_masuk'])) > ($terlambat1 * 60)) { + if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_masuk)) > ($terlambat1 * 60)) { $status = 'Terlambat I'; } - if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_jaga['jam_masuk'])) > ($terlambat2 * 60)) { + if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_masuk)) > ($terlambat2 * 60)) { $status = 'Terlambat II'; } - if (strtotime(date('Y-m-d H:i:s')) - (date('Y-m-d') . $jam_jaga['jam_masuk']) > ($toleransi * 60)) { - $awal = new \DateTime(date('Y-m-d') . ' ' . $jam_jaga['jam_masuk']); + $keterlambatan = '00:00:00'; + if (strtotime(date('Y-m-d H:i:s')) - (date('Y-m-d') . $jam_masuk) > ($toleransi * 60)) { + $awal = new \DateTime(date('Y-m-d') . ' ' . $jam_masuk); $akhir = new \DateTime(); $diff = $akhir->diff($awal, true); // to make the difference to be always positive. if ($awal > $akhir) { @@ -204,31 +214,36 @@ public function postUpload() ]); if ($insert) { - $this->notify('success', 'Presensi Masuk jam ' . $jam_jaga['jam_masuk'] . ' ' . $status . ' ' . $keterlambatan); + $this->notify('success', 'Presensi Masuk jam ' . htmlspecialchars($jam_masuk . ' ' . $status . ' ' . $keterlambatan, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')); + echo htmlspecialchars('Presensi Masuk jam ' . $jam_masuk . ' ' . $status . ' ' . $keterlambatan, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); } } } else { $this->notify('failure', 'ID Pegawai atau jadwal shift tidak sesuai!'); + echo 'ID Pegawai atau jadwal shift tidak sesuai!'; } } else { if (empty($urlnya)) { $this->notify('failure', 'Pilih shift dulu...!!!!'); + echo 'Pilih shift dulu...!!!!'; } else { $status = 'Tepat Waktu'; + $jam_masuk = $jam_jaga['jam_masuk'] ?? '00:00:00'; - if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_jaga['jam_masuk'])) > ($toleransi * 60)) { + if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_masuk)) > ($toleransi * 60)) { $status = 'Terlambat Toleransi'; } - if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_jaga['jam_masuk'])) > ($terlambat1 * 60)) { + if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_masuk)) > ($terlambat1 * 60)) { $status = 'Terlambat I'; } - if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_jaga['jam_masuk'])) > ($terlambat2 * 60)) { + if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . $jam_masuk)) > ($terlambat2 * 60)) { $status = 'Terlambat II'; } - if (strtotime(date('Y-m-d H:i:s')) - (date('Y-m-d') . $jam_jaga['jam_masuk']) > ($toleransi * 60)) { - $awal = new \DateTime(date('Y-m-d') . ' ' . $jam_jaga['jam_masuk']); + $keterlambatan = '00:00:00'; + if (strtotime(date('Y-m-d H:i:s')) - (date('Y-m-d') . $jam_masuk) > ($toleransi * 60)) { + $awal = new \DateTime(date('Y-m-d') . ' ' . $jam_masuk); $akhir = new \DateTime(); $diff = $akhir->diff($awal, true); // to make the difference to be always positive. if ($awal > $akhir) { @@ -251,17 +266,20 @@ public function postUpload() ]); if ($insert) { - $this->notify('success', 'Presensi Masuk jam ' . $jam_jaga['jam_masuk'] . ' ' . $status . ' ' . $keterlambatan); + $this->notify('success', 'Presensi Masuk jam ' . htmlspecialchars($jam_masuk . ' ' . $status . ' ' . $keterlambatan, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')); + echo htmlspecialchars('Presensi Masuk jam ' . $jam_masuk . ' ' . $status . ' ' . $keterlambatan, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); } } } } else { - if ($jam_jaga['shift'] != $isAbsen['shift']) { + if (($jam_jaga['shift'] ?? '') != $isAbsen['shift']) { $this->notify('failure', 'ID Pegawai atau jadwal shift tidak sesuai!'); + echo 'ID Pegawai atau jadwal shift tidak sesuai!'; } else { $jamDatang = substr($isAbsen['jam_datang'], 16); if ((strtotime(date('Y-m-d H:i')) - strtotime($jamDatang)) < 2 * 60) { $this->notify('failure', 'Sabar ... Jangan pencet terus'); + echo 'Sabar ... Jangan pencet terus'; } else { $status = $isAbsen['status']; $dayShift = date('Y-m-d'); @@ -269,7 +287,8 @@ public function postUpload() $dayShift = substr($isAbsen['jam_datang'], 10); $dayShift = date('Y-m-d', strtotime($dayShift . ' +1 day')); } - if ((strtotime(date('Y-m-d H:i:s')) - strtotime($dayShift . $jam_jaga['jam_pulang'])) < 0) { + $jam_pulang = $jam_jaga['jam_pulang'] ?? '00:00:00'; + if ((strtotime(date('Y-m-d H:i:s')) - strtotime($dayShift . $jam_pulang)) < 0) { $status = $isAbsen['status'] . ' & PSW'; } @@ -302,6 +321,7 @@ public function postUpload() ]); if ($insert) { $this->notify('success', 'Presensi pulang telah disimpan'); + echo 'Presensi pulang telah disimpan'; $this->db('temporary_presensi')->where('id', $isAbsen['id'])->delete(); } } @@ -310,6 +330,7 @@ public function postUpload() } } else { $this->notify('failure', 'Anda sudah presensi untuk tanggal ' . date('Y-m-d')); + echo 'Anda sudah presensi untuk tanggal ' . date('Y-m-d'); } } } @@ -341,7 +362,7 @@ public function getHelp($dir) { $files = [ 'info' => MODULES . '/' . $dir . '/Info.php', - 'help' => MODULES . '/' . $dir . '/Help.md' + 'help' => MODULES . '/' . $dir . '/README.md' ]; $module = $this->core->getModuleInfo($dir); @@ -358,4 +379,130 @@ public function getHelp($dir) exit(); } + public function apiStats() + { + header('Content-Type: application/json'); + date_default_timezone_set($this->settings->get('settings.timezone')); + + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'dashboard')) { + echo json_encode(['status' => 'error', 'message' => 'Invalid User Permission Credentials']); + exit; + } + + // Validasi apakah user adalah dokter + $dokter = $this->db('dokter')->where('kd_dokter', $username)->oneArray(); + if (!$dokter) { + echo json_encode(['status' => 'error', 'message' => 'Akses ditolak. User bukan dokter. ' . $username]); + exit; + } + + $kd_dokter = $dokter['kd_dokter']; + $today = date('Y-m-d'); + $firstDayOfMonth = date('Y-m-01'); + $lastDayOfMonth = date('Y-m-t'); + + // 1. Total Pasien (Unik) + $stmt = $this->db()->pdo()->prepare("SELECT count(DISTINCT no_rkm_medis) FROM reg_periksa WHERE kd_dokter = ? AND stts != 'Batal'"); + $stmt->execute([$kd_dokter]); + $total_pasien = $stmt->fetchColumn(); + + // 2. Bulan Ini (Kunjungan) + $bulan_ini = $this->db('reg_periksa') + ->where('kd_dokter', $kd_dokter) + ->where('tgl_registrasi', '>=', $firstDayOfMonth) + ->where('tgl_registrasi', '<=', $lastDayOfMonth) + ->where('stts', '!=', 'Batal') + ->count(); + + // 3. Poli Bulan Ini (Total kunjungan di poli tempat dokter praktek bulan ini - akumulasi) + $polis_month = $this->db('reg_periksa') + ->select('kd_poli') + ->where('kd_dokter', $kd_dokter) + ->where('tgl_registrasi', '>=', $firstDayOfMonth) + ->where('tgl_registrasi', '<=', $lastDayOfMonth) + ->where('stts', '!=', 'Batal') + ->group('kd_poli') + ->toArray(); + + $poli_bulan_ini = 0; + if($polis_month) { + $kd_polis = array_column($polis_month, 'kd_poli'); + $placeholders = implode(',', array_fill(0, count($kd_polis), '?')); + $stmt = $this->db()->pdo()->prepare("SELECT count(no_rawat) FROM reg_periksa WHERE kd_poli IN ($placeholders) AND tgl_registrasi BETWEEN ? AND ? AND stts != 'Batal'"); + $params = array_merge($kd_polis, [$firstDayOfMonth, $lastDayOfMonth]); + $stmt->execute($params); + $poli_bulan_ini = $stmt->fetchColumn(); + } + + // 4. Poli Hari Ini + $polis_today = $this->db('reg_periksa') + ->select('kd_poli') + ->where('kd_dokter', $kd_dokter) + ->where('tgl_registrasi', $today) + ->where('stts', '!=', 'Batal') + ->group('kd_poli') + ->toArray(); + + $poli_hari_ini = 0; + if($polis_today) { + $kd_polis = array_column($polis_today, 'kd_poli'); + $placeholders = implode(',', array_fill(0, count($kd_polis), '?')); + $stmt = $this->db()->pdo()->prepare("SELECT count(no_rawat) FROM reg_periksa WHERE kd_poli IN ($placeholders) AND tgl_registrasi = ? AND stts != 'Batal'"); + $params = array_merge($kd_polis, [$today]); + $stmt->execute($params); + $poli_hari_ini = $stmt->fetchColumn(); + } + + // 5. Chart Poliklinik Hari Ini + $chart_data = $this->db('reg_periksa') + ->select(['reg_periksa.kd_poli', 'count(reg_periksa.no_rawat) as jumlah', 'poliklinik.nm_poli']) + ->join('poliklinik', 'poliklinik.kd_poli = reg_periksa.kd_poli') + ->where('reg_periksa.kd_dokter', $kd_dokter) + ->where('reg_periksa.tgl_registrasi', $today) + ->where('reg_periksa.stts', '!=', 'Batal') + ->group('reg_periksa.kd_poli') + ->toArray(); + + $chart_labels = array_column($chart_data, 'nm_poli'); + $chart_values = array_column($chart_data, 'jumlah'); + + // 6. Pasien Paling Aktif (Top 10) + $pasien_aktif = $this->db('reg_periksa') + ->select(['pasien.nm_pasien', 'count(reg_periksa.no_rawat) as jumlah']) + ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') + ->where('reg_periksa.kd_dokter', $kd_dokter) + ->where('reg_periksa.stts', '!=', 'Batal') + ->group('reg_periksa.no_rkm_medis') + ->desc('jumlah') + ->limit(10) + ->toArray(); + + // 7. Antrian 10 Pasien Terakhir + $antrian_terakhir = $this->db('reg_periksa') + ->select(['pasien.nm_pasien', 'reg_periksa.stts', 'reg_periksa.no_reg', 'reg_periksa.jam_reg']) + ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') + ->where('reg_periksa.kd_dokter', $kd_dokter) + ->where('reg_periksa.tgl_registrasi', $today) + ->desc('reg_periksa.jam_reg') + ->limit(10) + ->toArray(); + + return [ + 'status' => 'success', + 'data' => [ + 'total_pasien' => $total_pasien, + 'bulan_ini' => $bulan_ini, + 'poli_bulan_ini' => $poli_bulan_ini, + 'poli_hari_ini' => $poli_hari_ini, + 'chart' => [ + 'labels' => $chart_labels, + 'values' => $chart_values + ], + 'pasien_aktif' => $pasien_aktif, + 'antrian_terakhir' => $antrian_terakhir + ] + ]; + } + } diff --git a/plugins/dashboard/Info.php b/plugins/dashboard/Info.php index 200882841..8c69567d2 100644 --- a/plugins/dashboard/Info.php +++ b/plugins/dashboard/Info.php @@ -4,8 +4,9 @@ 'name' => 'Dashboard', 'description' => 'Akses cepat pada modul dan berita.', 'author' => 'Basoro.ID', + 'category' => 'main', 'version' => '1.1', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'home', 'pages' => ['Main' => 'main'] , 'install' => function () use ($core) { diff --git a/plugins/dashboard/README.md b/plugins/dashboard/README.md new file mode 100644 index 000000000..fe5ea10ca --- /dev/null +++ b/plugins/dashboard/README.md @@ -0,0 +1,49 @@ +# Plugin Dashboard + +Dokumentasi singkat penggunaan modul **Dashboard** di mLITE. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Dashboard tampil otomatis sebagai halaman pertama setelah login. +- Pilih submenu sesuai kebutuhan: + - Main (halaman utama/beranda) + +## Panduan Pengguna (Petugas) + +Dashboard adalah halaman pertama yang dilihat setiap pengguna setelah login: + +1. **Halaman Utama (Main)** + - Menampilkan informasi hari dan tanggal saat ini dalam bahasa Indonesia. + - Jika modul **Presensi** aktif, halaman ini menampilkan: + - Nama pegawai yang sedang login. + - Status presensi hari ini (sudah/belum absen masuk). + - Rekap kehadiran harian. + - Jadwal jaga sesuai departemen pegawai. + - Teks sambutan/motivasi harian yang dapat dikustomisasi. + - Notifikasi presensi ditampilkan jika pengaturan notifikasi aktif. + +2. **Menu Modul (Dashboard)** + - Klik ikon/tombol **Menu** atau **Dashboard** untuk membuka tampilan daftar modul. + - Modul yang tampil disesuaikan dengan hak akses akun yang sedang login. + - Klik modul yang diinginkan untuk berpindah ke modul tersebut. + - Admin dengan akses **"all"** dapat melihat seluruh modul yang terpasang. + +## Panduan Admin + +1. **Pengaturan Akses Modul per Pengguna** + - Hak akses modul diatur di manajemen pengguna mLITE. + - Pengguna dengan akses selain `all` hanya melihat modul yang tercantum di daftar aksesnya. + - Urutan modul di dashboard mengikuti kolom `sequence` di tabel `mlite_modules`. + +2. **Integrasi Modul Presensi** + - Jika modul **Presensi** terpasang dan aktif, widget presensi muncul otomatis di halaman Main. + - Konfigurasi teks sambutan diatur di **Pengaturan Presensi** (field `helloworld`), dipisahkan dengan tanda titik koma (`;`) untuk rotasi acak. + +3. **Upload dan Geolokasi** + - Dashboard mendukung fitur upload file dan pencatatan geolokasi (digunakan oleh modul pendukung seperti Presensi). + +## Catatan + +- Dashboard tidak memiliki data master sendiri; semua informasi yang tampil diambil dari modul lain yang aktif. +- Jika modul Presensi tidak terpasang, widget presensi tidak akan muncul dan halaman Main hanya menampilkan info tanggal dan menu modul. diff --git a/plugins/dashboard/Site.php b/plugins/dashboard/Site.php index 795a40cf7..77b64e7c5 100644 --- a/plugins/dashboard/Site.php +++ b/plugins/dashboard/Site.php @@ -32,6 +32,8 @@ public function getIndex() $assign['module_rawat_inap'] = $this->db('mlite_modules')->where('dir', 'rawat_inap')->oneArray(); $assign['cek_anjungan'] = $this->db('mlite_modules')->where('dir', 'anjungan')->oneArray(); $assign['poliklinik'] = ''; + $assign['nav'] = $this->_modulesList(); + if($assign['cek_anjungan']) { $assign['poliklinik'] = $this->_getPoliklinik($this->settings->get('anjungan.display_poli')); } @@ -48,6 +50,56 @@ public function getIndex() exit(); } + private function _modulesList() + { + $modules = array_column($this->db('mlite_modules')->asc('sequence')->toArray(), 'dir'); + $result = []; + + foreach ($modules as $name) { + $files = [ + 'info' => MODULES . '/' . $name . '/Info.php', + 'admin' => MODULES . '/' . $name . '/Admin.php', + ]; + + if (file_exists($files['info']) && file_exists($files['admin'])) { + $details = $this->getModuleInfo($name); + + $class = '\\Plugins\\' . $name . '\\Admin'; + $api_admin = new $class($this->core); + $features = $api_admin->navigation(); + + $details['url'] = url([ADMIN, $name, array_shift($features)]); + $details['dir'] = $name; + + $subnavURLs = []; + foreach ($features as $key => $val) { + + $subnavURLs[] = [ + 'name' => $key, + 'url' => url([ADMIN, $name, $val]), + ]; + } + + $details['subnav'] = $subnavURLs; + + $result[] = $details; + } + } + return $result; + } + + public function getModuleInfo($dir) + { + $file = MODULES.'/'.$dir.'/Info.php'; + $core = $this; + + if (file_exists($file)) { + return include($file); + } else { + return false; + } + } + private function _getPoliklinik($kd_poli = null) { $result = []; diff --git a/plugins/dashboard/view/admin/dashboard.html b/plugins/dashboard/view/admin/dashboard.html index 7c4f6e201..2da2bf2c0 100644 --- a/plugins/dashboard/view/admin/dashboard.html +++ b/plugins/dashboard/view/admin/dashboard.html @@ -26,17 +26,17 @@

                          Dashboard

                          {loop: $modules} - {if: $value.name !== 'Dashboard'} + {if: $value.name != 'Dashboard'}
                        • diff --git a/plugins/dashboard/view/admin/main.html b/plugins/dashboard/view/admin/main.html index c94d25015..c13c0f9de 100644 --- a/plugins/dashboard/view/admin/main.html +++ b/plugins/dashboard/view/admin/main.html @@ -1,7 +1,7 @@
                          - -

                          {$settings.nama_instansi}

                          -

                          {$settings.alamat} - {$settings.kota} - {$settings.propinsi}

                          + +

                          {?=isset_or($settings.nama_instansi)?}

                          +

                          {?=isset_or($settings.alamat)?} - {?=isset_or($settings.kota)?} - {?=isset_or($settings.propinsi)?}

                          {if: $presensi}
                          @@ -194,27 +194,27 @@ {if: $cek_presensi} {elseif: $cek_rekap} {else} {/if} {/if} @@ -234,7 +234,7 @@

                          {$pengaturan_presensi.distance}) { + if(meters > {?=isset_or($pengaturan_presensi.distance)?}) { alert('Presensi harus di area Rumah Sakit!!') } else { $('#myModal').modal('show', function () { @@ -283,7 +283,7 @@ switch (code) { case GeolocationPositionError.TIMEOUT: // Handle timeout. - alert('Koneksi Terputus') + alert('Gagal mendapatkan lokasi (Timeout). Pastikan GPS aktif dan sinyal bagus.') break; case GeolocationPositionError.PERMISSION_DENIED: // User denied the request. @@ -295,7 +295,7 @@ break; } }, - {timeout: 5000 , maximumAge: 0}); + {timeout: 10000 , maximumAge: 0}); } {/if} diff --git a/plugins/dashboard/view/main.html b/plugins/dashboard/view/main.html index 945b681c3..1de471afe 100644 --- a/plugins/dashboard/view/main.html +++ b/plugins/dashboard/view/main.html @@ -5,11 +5,12 @@ mLITE - - + + + @@ -42,7 +43,7 @@ @@ -91,8 +216,8 @@
                          -
                          ").show(); }); {/if} + }); +$("#form_soap").on("click",".resume", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $('input:text[name=no_rawat]').val().replace(/\//g, ''); + + var loadURL = baseURL + '/dokter_igd/resume/' + no_rawat + '?t=' + mlite.token; + + var modal = $('#eresepModal'); + var modalContent = $('#eresepModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + modalContent.load(loadURL); + }).modal(); + return false; +}); + +// JavaScript handlers untuk Assessment IGD +$(document).ready(function() { + + // Handler untuk form assessment + $(document).on('submit', '#form_assessment', function(e) { + e.preventDefault(); + + var baseURL = mlite.url + '/' + mlite.admin; + var formData = $(this).serialize(); + + $.ajax({ + url: baseURL + '/dokter_igd/medisigd?t=' + mlite.token, + type: 'POST', + data: formData, + dataType: 'json', + success: function(response) { + if(response.status === 'success') { + $('#assessmentModal').modal('hide'); + alert('Data assessment berhasil disimpan!'); + } else { + alert('Gagal menyimpan data assessment: ' + (response.message || 'Unknown error')); + } + }, + error: function(xhr, status, error) { + alert('Terjadi kesalahan saat menyimpan data assessment!'); + console.error('Error:', error); + } + }); + }); + + // Handler untuk dropdown anamnesis + $(document).on('change', 'select[name="anamnesis"]', function() { + var hubunganField = $('input[name="hubungan"]'); + if($(this).val() === 'Autoanamnesis') { + hubunganField.val('Pasien').prop('readonly', true); + } else { + hubunganField.val('').prop('readonly', false); + } + }); + + // Handler untuk auto-fill vital signs dari pemeriksaan ralan + $(document).on('click', '#auto_fill_vital', function() { + var no_rawat = $('input[name="no_rawat"]').val(); + var baseURL = mlite.url + '/' + mlite.admin; + + $.ajax({ + url: baseURL + '/dokter_igd/getvitalsigns?t=' + mlite.token, + type: 'POST', + data: {no_rawat: no_rawat}, + dataType: 'json', + success: function(data) { + if(data) { + if(data.td) $('input[name="td"]').val(data.td); + if(data.nadi) $('input[name="nadi"]').val(data.nadi); + if(data.rr) $('input[name="rr"]').val(data.rr); + if(data.suhu) $('input[name="suhu"]').val(data.suhu); + if(data.spo) $('input[name="spo"]').val(data.spo); + if(data.bb) $('input[name="bb"]').val(data.bb); + if(data.tb) $('input[name="tb"]').val(data.tb); + if(data.kesadaran) $('select[name="kesadaran"]').val(data.kesadaran); + if(data.gcs) $('input[name="gcs"]').val(data.gcs); + } + }, + error: function() { + console.log('Gagal mengambil data vital signs'); + } + }); + }); + + // Handler untuk validasi form + $(document).on('blur', 'input[name="td"]', function() { + var td = $(this).val(); + if(td && !td.match(/^\d{2,3}\/\d{2,3}$/)) { + alert('Format tekanan darah harus seperti: 120/80'); + $(this).focus(); + } + }); + + // Handler untuk numeric input validation + $(document).on('keypress', 'input[name="nadi"], input[name="rr"], input[name="suhu"], input[name="spo"], input[name="bb"], input[name="tb"]', function(e) { + // Allow: backspace, delete, tab, escape, enter, decimal point + if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || + // Allow: Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X + (e.keyCode === 65 && e.ctrlKey === true) || + (e.keyCode === 67 && e.ctrlKey === true) || + (e.keyCode === 86 && e.ctrlKey === true) || + (e.keyCode === 88 && e.ctrlKey === true) || + // Allow: home, end, left, right + (e.keyCode >= 35 && e.keyCode <= 39)) { + return; + } + // Ensure that it is a number and stop the keypress + if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { + e.preventDefault(); + } + }); + + // Handler untuk textarea auto-resize + $(document).on('input', 'textarea', function() { + this.style.height = 'auto'; + this.style.height = (this.scrollHeight) + 'px'; + }); + + // Handler untuk reset form + $(document).on('click', '#reset_assessment', function() { + if(confirm('Apakah Anda yakin ingin mereset form ini?')) { + $('#form_assessment')[0].reset(); + // Reset anamnesis hubungan + $('input[name="hubungan"]').prop('readonly', false); + } + }); + +}); + +// Function untuk format tanggal +function formatTanggal(tanggal) { + var date = new Date(tanggal); + var day = String(date.getDate()).padStart(2, '0'); + var month = String(date.getMonth() + 1).padStart(2, '0'); + var year = date.getFullYear(); + var hours = String(date.getHours()).padStart(2, '0'); + var minutes = String(date.getMinutes()).padStart(2, '0'); + + return day + '/' + month + '/' + year + ' ' + hours + ':' + minutes; +} + +// Function untuk validasi form assessment +function validateAssessmentForm() { + var isValid = true; + var requiredFields = ['keluhan_utama', 'rps', 'rpk', 'rpo', 'keadaan', 'kesadaran', 'diagnosis']; + + requiredFields.forEach(function(field) { + var element = $('[name="' + field + '"]'); + if(!element.val() || element.val().trim() === '') { + element.addClass('error'); + isValid = false; + } else { + element.removeClass('error'); + } + }); + + if(!isValid) { + alert('Mohon lengkapi semua field yang wajib diisi!'); + } + + return isValid; +} + + // ketika tombol hapus ditekan $("#soap").on("click",".edit_soap", function(event){ var baseURL = mlite.url + '/' + mlite.admin; @@ -582,9 +764,9 @@ $("#obat").on("click", ".pilih_obat", function(event){ var kode_brng = $(this).attr("data-kode_brng"); var nama_brng = $(this).attr("data-nama_brng"); - var biaya = $(this).attr("data-ralan"); - var stok = $(this).attr("data-stok"); - var stokminimal = $(this).attr("data-stokminimal"); + var biaya = $(this).attr("data-dasar"); + var stok = parseFloat($(this).attr("data-stok")); + var stokminimal = parseFloat($(this).attr("data-stokminimal")); var kat = $(this).attr("data-kat"); if(stok < stokminimal) { @@ -638,10 +820,10 @@ $("#obat_racikan").on("click", ".pilih_obat_racikan", function(event){ var kode_brng = $(this).attr("data-kode_brng"); var nama_brng = $(this).attr("data-nama_brng"); - var biaya = $(this).attr("data-ralan"); - var stok = $(this).attr("data-stok"); + var biaya = $(this).attr("data-dasar"); + var stok = parseFloat($(this).attr("data-stok")); - if(stok < 10) { + if(stok < 1) { alert('Stok obat ' + nama_brng + ' tidak mencukupi.'); $('input:hidden[name=kode_brng]').val(); $('input:text[name=nama_brng]').val(); @@ -761,6 +943,11 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ // tampilkan data $("#rincian").html(data).show(); }); + $.post(baseURL + '/dokter_igd/cekwaktu?t=' + mlite.token, { + } ,function(data) { + $("#form_rincian #rincian_jam_reg").val(data); + $('input:text[name=jam_rawat]').last().val(data).focus(); + }); $('input:hidden[name=kd_jenis_prw]').val(""); $('input:text[name=nm_perawatan]').val(""); $('input:hidden[name=kat]').val(""); @@ -777,6 +964,7 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ $('#keterangan').val(""); $('input:text[name=kandungan]').val(""); $('.row_racikan').remove(); + $('input:text[name=jam_rawat]').last().val(""); $('#notif').html("
                          "+ "Data pasien telah disimpan!"+ ""+ @@ -814,7 +1002,71 @@ $("#rincian").on("click",".hapus_detail", function(event){ $("#rincian").html(data).show(); }); $('#notif').html("
                          "+ - "Data rincian rawat jalan telah dihapus!"+ + "Data rincian IGD telah dihapus!"+ + ""+ + "
                          ").show(); + }); + } + }); +}); + +// ketika tombol hapus ditekan +$("#rincian").on("click",".hapus_permintaan_lab", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var url = baseURL + '/dokter_igd/hapuspermintaanlab?t=' + mlite.token; + var noorder = $(this).attr("data-noorder"); + var no_rawat = $(this).attr("data-no_rawat"); + + // tampilkan dialog konfirmasi + bootbox.confirm("Apakah Anda yakin ingin menghapus data ini?", function(result){ + // ketika ditekan tombol ok + if (result){ + // mengirimkan perintah penghapusan + $.post(url, { + noorder: noorder, + no_rawat: no_rawat + } ,function(data) { + var url = baseURL + '/dokter_igd/rincian?t=' + mlite.token; + $.post(url, {no_rawat : no_rawat, + }, function(data) { + // tampilkan data + $("#rincian").html(data).show(); + }); + $('#notif').html("
                          "+ + "Data rincian IGD telah dihapus!"+ + ""+ + "
                          ").show(); + }); + } + }); +}); + +// ketika tombol hapus ditekan +$("#rincian").on("click",".hapus_permintaan_rad", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var url = baseURL + '/dokter_igd/hapuspermintaanrad?t=' + mlite.token; + var noorder = $(this).attr("data-noorder"); + var no_rawat = $(this).attr("data-no_rawat"); + + // tampilkan dialog konfirmasi + bootbox.confirm("Apakah Anda yakin ingin menghapus data ini?", function(result){ + // ketika ditekan tombol ok + if (result){ + // mengirimkan perintah penghapusan + $.post(url, { + noorder: noorder, + no_rawat: no_rawat + } ,function(data) { + var url = baseURL + '/dokter_igd/rincian?t=' + mlite.token; + $.post(url, {no_rawat : no_rawat, + }, function(data) { + // tampilkan data + $("#rincian").html(data).show(); + }); + $('#notif').html("
                          "+ + "Data rincian IGD telah dihapus!"+ ""+ "
                          ").show(); }); @@ -850,7 +1102,7 @@ $("#rincian").on("click",".hapus_resep_obat", function(event){ $("#rincian").html(data).show(); }); $('#notif').html("
                          "+ - "Data rincian rawat jalan telah dihapus!"+ + "Data rincian IGD telah dihapus!"+ ""+ "
                          ").show(); }); @@ -884,7 +1136,7 @@ $("#rincian").on("click",".hapus_resep_dokter", function(event){ $("#rincian").html(data).show(); }); $('#notif').html("
                          "+ - "Data rincian rawat jalan telah dihapus!"+ + "Data rincian IGD telah dihapus!"+ ""+ "
                          ").show(); }); @@ -892,6 +1144,48 @@ $("#rincian").on("click",".hapus_resep_dokter", function(event){ }); }); +// ketika tombol hapus ditekan +$("#soap").on("click",".copy_soap", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var suhu_tubuh = $(this).attr("data-suhu_tubuh"); + var tensi = $(this).attr("data-tensi"); + var nadi = $(this).attr("data-nadi"); + var respirasi = $(this).attr("data-respirasi"); + var tinggi = $(this).attr("data-tinggi"); + var berat = $(this).attr("data-berat"); + var gcs = $(this).attr("data-gcs"); + var kesadaran = $(this).attr("data-kesadaran"); + var alergi = $(this).attr("data-alergi"); + var lingkar_perut = $(this).attr("data-lingkar_perut"); + var keluhan = $(this).attr("data-keluhan"); + var pemeriksaan = $(this).attr("data-pemeriksaan"); + var penilaian = $(this).attr("data-penilaian"); + var rtl = $(this).attr("data-rtl"); + var instruksi = $(this).attr("data-instruksi"); + var evaluasi = $(this).attr("data-evaluasi"); + var spo2 = $(this).attr("data-spo2"); + + $('input:text[name=suhu_tubuh]').val(suhu_tubuh); + $('input:text[name=tensi]').val(tensi); + $('input:text[name=nadi]').val(nadi); + $('input:text[name=respirasi]').val(respirasi); + $('input:text[name=tinggi]').val(tinggi); + $('input:text[name=berat]').val(berat); + $('input:text[name=gcs]').val(gcs); + $('input:text[name=kesadaran]').val(kesadaran); + $('input:text[name=alergi]').val(alergi); + $('input:text[name=lingkar_perut]').val(lingkar_perut); + $('textarea[name=keluhan]').val(keluhan); + $('textarea[name=pemeriksaan]').val(pemeriksaan); + $('textarea[name=penilaian]').val(penilaian); + $('textarea[name=rtl]').val(rtl); + $('textarea[name=instruksi]').val(instruksi); + $('textarea[name=evaluasi]').val(evaluasi); + $('input:text[name=spo2]').val(spo2); + +}); + // ketika tombol hapus ditekan $("#rincian").on("click",".copy_resep", function(event){ var baseURL = mlite.url + '/' + mlite.admin; @@ -919,15 +1213,41 @@ $("#rincian").on("click","#simpan_copy_resep", function(event){ var jam_rawat = $('input:text[name=jam_reg]').val(); var kode_brng = JSON.stringify($('input:hidden[name=kode_brng_copyresep]').serializeArray()); var jml = JSON.stringify($('input:text[name=jml_copyresep]').serializeArray()); - var aturan_pakai = JSON.stringify($('input:hidden[name=aturan_copyresep]').serializeArray()); - - $.post(url_save, {no_rawat : no_rawat, + var aturan_pakai = JSON.stringify($('input:text[name=aturan_copyresep]').serializeArray()); + + // Racikan Data + var nama_racik = JSON.stringify($('input:hidden[name=nama_racik_copyresep]').serializeArray()); + var kd_racik = JSON.stringify($('input:hidden[name=kd_racik_copyresep]').serializeArray()); + var keterangan = JSON.stringify($('input:hidden[name=keterangan_copyresep]').serializeArray()); + var no_racik = JSON.stringify($('input:hidden[name=no_racik_copyresep]').serializeArray()); + var jml_dr = JSON.stringify($('input:text[name=jml_dr_copyresep]').serializeArray()); + var aturan_pakai_racik = JSON.stringify($('input:text[name=aturan_pakai_copyresep]').serializeArray()); + + var data = { + no_rawat : no_rawat, tgl_perawatan : tgl_perawatan, jam_rawat : jam_rawat, kode_brng : kode_brng, jml : jml, - aturan_pakai : aturan_pakai - }, function(data) { + aturan_pakai : aturan_pakai, + nama_racik: nama_racik, + kd_racik: kd_racik, + keterangan: keterangan, + no_racik: no_racik, + jml_dr: jml_dr, + aturan_pakai_racik: aturan_pakai_racik + }; + + // Add dynamic racikan details + $('input:hidden[name^="no_racik_copyresep"]').each(function() { + var nr = $(this).val(); + data['kode_brng_racikan_' + nr] = JSON.stringify($('input:hidden[name="kode_brng_racikan_copyresep_' + nr + '"]').serializeArray()); + data['jml_racikan_' + nr] = JSON.stringify($('input:text[name="jml_racikan_copyresep_' + nr + '"]').serializeArray()); + data['p1_' + nr] = JSON.stringify($('input:hidden[name="p1_copyresep_' + nr + '"]').serializeArray()); + data['p2_' + nr] = JSON.stringify($('input:hidden[name="p2_copyresep_' + nr + '"]').serializeArray()); + }); + + $.post(url_save, data, function(data) { //alert(data); //if(data == 'ErrorError') { // alert('Stok tidak mencukupi pada satu atau lebih obat.'); @@ -1041,7 +1361,7 @@ $(document).ready(function () { dataType: 'json', success: function(data) { callback(data.slice(0, 100)); - console.log(data); + // console.log(data); }, error: function() { callback(); @@ -1060,7 +1380,7 @@ $(document).ready(function () { load: function (search, callback) { if (search.length < this.minSearchLength) return callback(); $.ajax({ - url: '{?=url()?}/{?=ADMIN?}/dokter_ralan/ajax?show=aturan_pakai&aturan=' + encodeURIComponent(search) + '&t={?=$_SESSION['token']?}', + url: '{?=url()?}/{?=ADMIN?}/dokter_igd/ajax?show=aturan_pakai&aturan=' + encodeURIComponent(search) + '&t={?=$_SESSION['token']?}', type: 'GET', dataType: 'json', success: function(data) { @@ -1084,7 +1404,7 @@ $(document).ready(function () { load: function (search, callback) { if (search.length < this.minSearchLength) return callback(); $.ajax({ - url: '{?=url()?}/{?=ADMIN?}/dokter_ralan/ajax?show=jns_perawatan&nm_perawatan=' + encodeURIComponent(search) + '&t={?=$_SESSION['token']?}', + url: '{?=url()?}/{?=ADMIN?}/dokter_igd/ajax?show=jns_perawatan&nm_perawatan=' + encodeURIComponent(search) + '&t={?=$_SESSION['token']?}', type: 'GET', dataType: 'json', success: function(data) { @@ -1108,7 +1428,7 @@ $(document).ready(function () { load: function (search, callback) { if (search.length < this.minSearchLength) return callback(); $.ajax({ - url: '{?=url()?}/{?=ADMIN?}/dokter_ralan/ajax?show=jns_perawatan_lab&nm_perawatan=' + encodeURIComponent(search) + '&t={?=$_SESSION['token']?}', + url: '{?=url()?}/{?=ADMIN?}/dokter_igd/ajax?show=jns_perawatan_lab&nm_perawatan=' + encodeURIComponent(search) + '&t={?=$_SESSION['token']?}', type: 'GET', dataType: 'json', success: function(data) { @@ -1132,7 +1452,7 @@ $(document).ready(function () { load: function (search, callback) { if (search.length < this.minSearchLength) return callback(); $.ajax({ - url: '{?=url()?}/{?=ADMIN?}/dokter_ralan/ajax?show=jns_perawatan_radiologi&nm_perawatan=' + encodeURIComponent(search) + '&t={?=$_SESSION['token']?}', + url: '{?=url()?}/{?=ADMIN?}/dokter_igd/ajax?show=jns_perawatan_radiologi&nm_perawatan=' + encodeURIComponent(search) + '&t={?=$_SESSION['token']?}', type: 'GET', dataType: 'json', success: function(data) { @@ -1169,3 +1489,148 @@ $("#form_rincian").on("click","#jam_reg", function(event){ $("#form_rincian #jam_reg").val(data); }); }); + +// ===== TRIASE IGD HANDLERS ===== + +// Handler untuk tombol kembali dari triase +$("#triase_igd").on("click", "#btn_kembali_triase", function(event){ + event.preventDefault(); + $("#triase_igd").hide(); + $("#display").show(); +}); + +// Handler untuk submit form triase +$("#triase_igd").on("submit", "#form_triase_igd", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + + // Validasi form + var required_fields = ['tgl_triase', 'petugas_id', 'kesadaran_triase', 'airway', 'breathing', 'circulation', 'kategori']; + var is_valid = true; + var error_message = ''; + + required_fields.forEach(function(field) { + var field_value = $('input[name="' + field + '"], select[name="' + field + '"]').val(); + if(!field_value || field_value.trim() === '') { + is_valid = false; + error_message += 'Field ' + field + ' harus diisi\n'; + $('input[name="' + field + '"], select[name="' + field + '"]').addClass('has-error'); + } else { + $('input[name="' + field + '"], select[name="' + field + '"]').removeClass('has-error'); + } + }); + + if(!is_valid) { + alert('Validasi Error:\n' + error_message); + return false; + } + + // Serialize form data + var formData = $(this).serialize(); + + var url = baseURL + '/dokter_igd/triaseigdsave?t=' + mlite.token; + $.post(url, formData, function(response) { + try { + var data = JSON.parse(response); + if(data.status === 'success') { + alert(data.msg); + // Refresh form dengan data terbaru + var no_rawat = $('input[name="no_rawat"]').val(); + var no_rkm_medis = $('input[name="no_rkm_medis"]').val(); + var nm_pasien = $('input[name="nm_pasien"]').val(); + var tgl_registrasi = $('input[name="tgl_registrasi"]').val(); + + // Reload triase form + var reload_url = baseURL + '/dokter_igd/triaseigd?t=' + mlite.token; + $.post(reload_url, { + no_rawat: no_rawat, + no_rkm_medis: no_rkm_medis, + nm_pasien: nm_pasien, + tgl_registrasi: tgl_registrasi + }, function(reload_data) { + $("#triase_igd").html(reload_data); + }); + } else { + alert('Error: ' + data.msg); + } + } catch(e) { + alert('Error: Gagal memproses response dari server'); + console.log('Response error:', e); + console.log('Raw response:', response); + } + }).fail(function(xhr, status, error) { + alert('Error: Gagal mengirim data ke server\nStatus: ' + status + '\nError: ' + error); + console.log('AJAX Error:', xhr.responseText); + }); +}); + +// Handler untuk tombol hapus triase (jika diperlukan) +$("#triase_igd").on("click", "#btn_hapus_triase", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + + if(confirm('Apakah Anda yakin ingin menghapus data triase ini?')) { + var no_rawat = $('input[name="no_rawat"]').val(); + + var url = baseURL + '/dokter_igd/triaseigddelete?t=' + mlite.token; + $.post(url, {no_rawat: no_rawat}, function(response) { + try { + var data = JSON.parse(response); + if(data.status === 'success') { + alert(data.msg); + $("#triase_igd").hide(); + $("#display").show(); + } else { + alert('Error: ' + data.msg); + } + } catch(e) { + alert('Error: Gagal memproses response dari server'); + console.log('Response error:', e); + } + }).fail(function(xhr, status, error) { + alert('Error: Gagal mengirim data ke server'); + console.log('AJAX Error:', xhr.responseText); + }); + } +}); + +{if: $mlite.websocket == 'ya'} + + {if: $mlite.websocket_proxy != ''} + var URL_WEBSOCKET = "{$mlite.websocket_proxy}"; + {else} + var URL_WEBSOCKET = "wss://:3892"; + {/if} + + var ws = new WebSocket(URL_WEBSOCKET); + var baseURL = mlite.url + '/' + mlite.admin; + + ws.onmessage = function(response){ + try{ + output = JSON.parse(response.data); + if(output['action'] == 'simpan'){ + if(output['modul'] == 'rawat_jalan' || output['modul'] == 'igd'){ + $("#dokter_igd #display").show().load(baseURL + '/dokter_igd/display?t=' + mlite.token); + } + } + }catch(e){ + // console.log(e); + } + } + + + ws.onclose = function(){ + // Jika terputus dari websocket server, maka mencoba terhubung kembali. + var interval_reconnect_ws = setInterval(function(){ + if(ws.readyState != 0){ + if(ws.readyState == 1){ // readyState = 1 (Open) , berarti sudah terhubung dengan websocket. Maka gak perlu interval lagi. + clearInterval(interval_reconnect_ws); + }else{ + ws = new WebSocket(URL_WEBSOCKET); + } + } + + },5000); + } + +{/if} diff --git a/plugins/dokter_igd/view/admin/copyresep.display.html b/plugins/dokter_igd/view/admin/copyresep.display.html index 1581b0f23..8d9d809f0 100644 --- a/plugins/dokter_igd/view/admin/copyresep.display.html +++ b/plugins/dokter_igd/view/admin/copyresep.display.html @@ -10,23 +10,60 @@ - {if: $copy_resep} + {if: $copy_resep || $copy_resep_racikan}
                          + {if: $copy_resep} + + Obat Non-Racikan + {loop: $copy_resep} - $value.stok} class="selisih"{/if}>{$value.nama_brng} - - {$value.stok} - {$value.aturan_pakai} + $value.stok} class="selisih"{/if}>{?=isset_or($value.nama_brng)?} + + {?=isset_or($value.stok)?} + + + {/loop} + {/if} + + {if: $copy_resep_racikan} + + Obat Racikan + + {loop: $copy_resep_racikan} + + + {?=isset_or($value.nama_racik)?} + + + + + + + + Jumlah Racikan: + Aturan Pakai: + + {loop: $value.detail as $detail} + + $detail.stok} class="selisih"{/if} style="padding-left: 20px;"> + + - {?=isset_or($detail.nama_brng)?} + + + {?=isset_or($detail.stok)?} + {/loop} + {/loop} + {/if} - + {else} - Tidak ada data perawatan. + Tidak ada data obat. {/if} diff --git a/plugins/dokter_igd/view/admin/details.html b/plugins/dokter_igd/view/admin/details.html index 37e8cd109..38acdc78f 100644 --- a/plugins/dokter_igd/view/admin/details.html +++ b/plugins/dokter_igd/view/admin/details.html @@ -19,14 +19,14 @@ {loop: $detail} - {$value.template_laboratorium.urut} - {$value.template_laboratorium.Pemeriksaan} - {$value.template_laboratorium.satuan} - {$value.template_laboratorium.nilai_rujukan_la} - {$value.template_laboratorium.nilai_rujukan_pa} - {$value.template_laboratorium.nilai_rujukan_ld} - {$value.template_laboratorium.nilai_rujukan_pd} - + {?=isset_or($value.template_laboratorium.urut)?} + {?=isset_or($value.template_laboratorium.Pemeriksaan)?} + {?=isset_or($value.template_laboratorium.satuan)?} + {?=isset_or($value.template_laboratorium.nilai_rujukan_la)?} + {?=isset_or($value.template_laboratorium.nilai_rujukan_pa)?} + {?=isset_or($value.template_laboratorium.nilai_rujukan_ld)?} + {?=isset_or($value.template_laboratorium.nilai_rujukan_pd)?} + {/loop} diff --git a/plugins/dokter_igd/view/admin/display.html b/plugins/dokter_igd/view/admin/display.html index 36dc767b8..271340c9e 100644 --- a/plugins/dokter_igd/view/admin/display.html +++ b/plugins/dokter_igd/view/admin/display.html @@ -21,7 +21,7 @@ {loop: $rawat_jalan.list} - + - {$value.nm_pasien} - {$value.no_rawat} - {$value.no_reg} - {$value.nm_poli} - {$value.nm_dokter} - {$value.png_jawab} - {$value.no_peserta} - {$value.tgl_registrasi} {$value.jam_reg} - {$value.stts} - {$value.status_lanjut} - {$value.status_bayar} + {?=isset_or($value.nm_pasien)?} + {?=isset_or($value.no_rawat)?} + {?=isset_or($value.no_reg)?} + {?=isset_or($value.nm_poli)?} + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.png_jawab)?} + {?=isset_or($value.no_peserta)?} + {?=isset_or($value.tgl_registrasi)?} {?=isset_or($value.jam_reg)?} + {?=isset_or($value.stts)?} + {?=isset_or($value.status_lanjut)?} + {?=isset_or($value.status_bayar)?} {/loop} @@ -58,6 +61,13 @@
                          + + + + + + + diff --git a/plugins/dokter_igd/view/admin/eresep.html b/plugins/dokter_igd/view/admin/eresep.html index bcbbb44d7..04c0ffdef 100644 --- a/plugins/dokter_igd/view/admin/eresep.html +++ b/plugins/dokter_igd/view/admin/eresep.html @@ -119,11 +119,11 @@
                          Non Racikan
                          {loop: $resep} - {$value.nm_dokter} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} - + @@ -135,11 +135,11 @@
                          Non Racikan
                          {loop: $value.resep_dokter as $data} - {$data.nama_brng} - {$data.jml} - {$data.aturan_pakai} + {?=isset_or($data.nama_brng)?} + {?=isset_or($data.jml)?} + {?=isset_or($data.aturan_pakai)?} Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?} - + {/loop} {/loop} @@ -167,11 +167,11 @@
                          Racikan
                          {loop: $resep_racikan} - {$value.nm_dokter} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} - + @@ -181,10 +181,10 @@
                          Racikan
                          Keterangan - {$value.nama_racik} - {$value.jml_dr} - {$value.aturan_pakai} - {$value.keterangan} + {if: isset($value.nama_racik)}{?=isset_or($value.nama_racik)?}{else}-{/if} + {if: isset($value.jml_dr)}{?=isset_or($value.jml_dr)?}{else}-{/if} + {if: isset($value.aturan_pakai)}{?=isset_or($value.aturan_pakai)?}{else}-{/if} + {if: isset($value.keterangan)}{?=isset_or($value.keterangan)?}{else}-{/if} Nama Obat @@ -194,9 +194,9 @@
                          Racikan
                          {loop: $value.resep_dokter_racikan_detail as $data} - {$data.nama_brng} - {$data.kandungan} - {$data.jml} + {?=isset_or($data.nama_brng)?} + {?=isset_or($data.kandungan)?} + {?=isset_or($data.jml)?} Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?} {/loop} @@ -241,7 +241,7 @@
                          Racikan
                          var kode_brng = $(this).attr("data-kode_brng"); var nama_brng = $(this).attr("data-nama_brng"); - var biaya = $(this).attr("data-ralan"); + var biaya = $(this).attr("data-dasar"); var stok = $(this).attr("data-stok"); var stokminimal = $(this).attr("data-stokminimal"); diff --git a/plugins/dokter_igd/view/admin/form.soap.html b/plugins/dokter_igd/view/admin/form.soap.html index 19bdb6083..2674dab92 100644 --- a/plugins/dokter_igd/view/admin/form.soap.html +++ b/plugins/dokter_igd/view/admin/form.soap.html @@ -4,11 +4,11 @@
                          - +
                          - +
                          @@ -135,6 +135,10 @@

                          SOAP

                          + + + +
                          @@ -165,13 +169,24 @@

                          SOAP

                        • 9
                        • -
                          +
                            + +
                            +
                            + + + +
                              + +
                              @@ -199,19 +214,30 @@

                              SOAP

                            • 9
                            • -
                              - - -
                                +
                                + + +
                                  + + + +
                                  +
                                  + + + +
                                    - +
                                    -
                                    -
                                    -
                                    +
                                    +
                                    +
                                    @@ -248,6 +274,49 @@

                                    SOAP

                                    $('#kesadaranList').fadeOut(); }); + + + + + + + + diff --git a/plugins/dokter_igd/view/admin/manage.html b/plugins/dokter_igd/view/admin/manage.html index 26b120b4c..e0a169644 100644 --- a/plugins/dokter_igd/view/admin/manage.html +++ b/plugins/dokter_igd/view/admin/manage.html @@ -2,7 +2,7 @@
                                    -
                                    +
                                    @@ -14,16 +14,16 @@
                                  • -
                                    Semua
                                    +
                                    Semua
                                  • -
                                    Belum Diperiksa
                                    +
                                    Belum Diperiksa
                                  • -
                                    Selesai Diperiksa
                                    +
                                    Selesai Diperiksa
                                  • -
                                    Sudah Bayar
                                    +
                                    Sudah Bayar
                                  • @@ -33,22 +33,19 @@

                                    Kelola Pasien

                                    -
                                    +
                                    {include: ../plugins/dokter_igd/view/admin/display.html}
                                    {include: ../plugins/dokter_igd/view/admin/form.rincian.html} {include: ../plugins/dokter_igd/view/admin/form.soap.html} {include: ../plugins/dokter_igd/view/admin/form.kontrol.html} - {if: $cek_vclaim} - {include: ../plugins/vclaim/view/admin/form.sep.html} - {/if}
                                    -
                                    +
                                    diff --git a/plugins/dokter_igd/view/admin/medis.igd.html b/plugins/dokter_igd/view/admin/medis.igd.html new file mode 100644 index 000000000..81f971f5b --- /dev/null +++ b/plugins/dokter_igd/view/admin/medis.igd.html @@ -0,0 +1,586 @@ + + + + + diff --git a/plugins/dokter_igd/view/admin/medis.igd.tampil.html b/plugins/dokter_igd/view/admin/medis.igd.tampil.html new file mode 100644 index 000000000..1881c3325 --- /dev/null +++ b/plugins/dokter_igd/view/admin/medis.igd.tampil.html @@ -0,0 +1,214 @@ + + + + + \ No newline at end of file diff --git a/plugins/dokter_igd/view/admin/obat.html b/plugins/dokter_igd/view/admin/obat.html index f0de8188f..decd40d5a 100644 --- a/plugins/dokter_igd/view/admin/obat.html +++ b/plugins/dokter_igd/view/admin/obat.html @@ -14,12 +14,12 @@ {if: $obat} {loop: $obat} - - {$value.kode_brng} - {$value.nama_brng} - {$value.stok} - {$value.stokminimal} - Rp. {?= number_format($value.ralan,2,',','.')?} + + {?=isset_or($value.kode_brng)?} + {?=isset_or($value.nama_brng)?} + {?=isset_or($value.stok)?} + {?=isset_or($value.stokminimal)?} + Rp. {?= number_format($value.dasar,2,',','.')?} {/loop} {else} diff --git a/plugins/dokter_igd/view/admin/obat.racikan.html b/plugins/dokter_igd/view/admin/obat.racikan.html index 8c100a126..7f19b34a9 100644 --- a/plugins/dokter_igd/view/admin/obat.racikan.html +++ b/plugins/dokter_igd/view/admin/obat.racikan.html @@ -13,11 +13,11 @@ {if: $obat} {loop: $obat} - - {$value.kode_brng} - {$value.nama_brng} - {$value.stok} - Rp. {?= number_format($value.ralan,2,',','.')?} + + {?=isset_or($value.kode_brng)?} + {?=isset_or($value.nama_brng)?} + {?=isset_or($value.stok)?} + Rp. {?= number_format($value.dasar,2,',','.')?} {/loop} {else} diff --git a/plugins/dokter_igd/view/admin/pasien.html b/plugins/dokter_igd/view/admin/pasien.html index 3a073084c..fd0751839 100644 --- a/plugins/dokter_igd/view/admin/pasien.html +++ b/plugins/dokter_igd/view/admin/pasien.html @@ -12,15 +12,15 @@ {if: $pasien} {loop: $pasien} - {$value.no_rkm_medis} - {$value.nm_pasien} + data-no_rkm_medis="{?=isset_or($value.no_rkm_medis)?}" + data-nm_pasien="{?=isset_or($value.nm_pasien)?}" + data-tgl_lahir="{?=isset_or($value.tgl_lahir)?}" + data-jk="{if: $value.jk == 'L'}Laki-Laki{else}Perempuan{/if}" + data-alamat="{?=isset_or($value.alamat)?}" + data-no_tlp="{?=isset_or($value.no_tlp)?}" + data-pekerjaan="{?=isset_or($value.pekerjaan)?}"> + {?=isset_or($value.no_rkm_medis)?} + {?=isset_or($value.nm_pasien)?} {/loop} {else} diff --git a/plugins/dokter_igd/view/admin/racikan.html b/plugins/dokter_igd/view/admin/racikan.html index d6f4937cb..02a13f74f 100644 --- a/plugins/dokter_igd/view/admin/racikan.html +++ b/plugins/dokter_igd/view/admin/racikan.html @@ -11,9 +11,9 @@ {if: $racikan} {loop: $racikan} - - {$value.kd_racik} - {$value.nm_racik} + + {?=isset_or($value.kd_racik)?} + {?=isset_or($value.nm_racik)?} {/loop} {else} diff --git a/plugins/dokter_igd/view/admin/radiologi.html b/plugins/dokter_igd/view/admin/radiologi.html index eb16ec6a5..3ccb80a6d 100644 --- a/plugins/dokter_igd/view/admin/radiologi.html +++ b/plugins/dokter_igd/view/admin/radiologi.html @@ -12,9 +12,9 @@ {if: $radiologi} {loop: $radiologi} - - {$value.kd_jenis_prw} - {$value.nm_perawatan} + + {?=isset_or($value.kd_jenis_prw)?} + {?=isset_or($value.nm_perawatan)?} Rp. {?= number_format($value.total_byr,2,',','.')?} {/loop} diff --git a/plugins/dokter_igd/view/admin/resume.html b/plugins/dokter_igd/view/admin/resume.html new file mode 100644 index 000000000..f795c4f12 --- /dev/null +++ b/plugins/dokter_igd/view/admin/resume.html @@ -0,0 +1,135 @@ + + + + + + diff --git a/plugins/dokter_igd/view/admin/resume.tampil.html b/plugins/dokter_igd/view/admin/resume.tampil.html new file mode 100644 index 000000000..69457408a --- /dev/null +++ b/plugins/dokter_igd/view/admin/resume.tampil.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + + {if: $resume_pasien} + + + + + + + + + {else} + + + + {/if} + +
                                    Nomor RawatKeluhanDiagnosaProsedurPulangDokter
                                    {?=isset_or($resume_pasien.no_rawat)?}{?=isset_or($resume_pasien.keluhan_utama)?}{?=isset_or($resume_pasien.diagnosa_utama)?}{?=isset_or($resume_pasien.prosedur_utama)?}{?=isset_or($resume_pasien.kondisi_pulang)?}{?=isset_or($resume_pasien.nm_dokter)?}
                                    Tidak ada data
                                    diff --git a/plugins/dokter_igd/view/admin/rincian.eresep.html b/plugins/dokter_igd/view/admin/rincian.eresep.html index 93a64514b..d4e2f8836 100644 --- a/plugins/dokter_igd/view/admin/rincian.eresep.html +++ b/plugins/dokter_igd/view/admin/rincian.eresep.html @@ -13,11 +13,11 @@
                                    Non Racikan
                                    {loop: $resep} - {$value.nm_dokter} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} - + @@ -29,11 +29,11 @@
                                    Non Racikan
                                    {loop: $value.resep_dokter as $data} - {$data.nama_brng} - {$data.jml} - {$data.aturan_pakai} + {?=isset_or($data.nama_brng)?} + {?=isset_or($data.jml)?} + {?=isset_or($data.aturan_pakai)?} Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?} - + {/loop} {/loop} @@ -61,11 +61,11 @@
                                    Racikan
                                    {loop: $resep_racikan} - {$value.nm_dokter} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} - + @@ -75,10 +75,10 @@
                                    Racikan
                                    Keterangan - {$value.nama_racik} - {$value.jml_dr} - {$value.aturan_pakai} - {$value.keterangan} + {if: isset($value.nama_racik)}{?=isset_or($value.nama_racik)?}{else}-{/if} + {if: isset($value.jml_dr)}{?=isset_or($value.jml_dr)?}{else}-{/if} + {if: isset($value.aturan_pakai)}{?=isset_or($value.aturan_pakai)?}{else}-{/if} + {if: isset($value.keterangan)}{?=isset_or($value.keterangan)?}{else}-{/if} Nama Obat @@ -88,9 +88,9 @@
                                    Racikan
                                    {loop: $value.resep_dokter_racikan_detail as $data} - {$data.nama_brng} - {$data.kandungan} - {$data.jml} + {?=isset_or($data.nama_brng)?} + {?=isset_or($data.kandungan)?} + {?=isset_or($data.jml)?} Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?} {/loop} diff --git a/plugins/dokter_igd/view/admin/rincian.html b/plugins/dokter_igd/view/admin/rincian.html index 63fd01b72..cc06b8665 100644 --- a/plugins/dokter_igd/view/admin/rincian.html +++ b/plugins/dokter_igd/view/admin/rincian.html @@ -20,14 +20,15 @@
                                    Non Racikan
                                    Aksi + {if: isset($resep)} {loop: $resep} - {$value.nm_dokter} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} - + @@ -39,15 +40,16 @@
                                    Non Racikan
                                    {loop: $value.resep_dokter as $data} - {$data.nama_brng} - {$data.jml} - {$data.aturan_pakai} + {?=isset_or($data.nama_brng)?} + {?=isset_or($data.jml)?} + {?=isset_or($data.aturan_pakai)?} Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?} - + {/loop} {/loop} + {/if} Total Biaya Obat @@ -71,11 +73,11 @@
                                    Racikan
                                    {loop: $resep_racikan} - {$value.nm_dokter} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} - + @@ -85,10 +87,10 @@
                                    Racikan
                                    Keterangan - {$value.nama_racik} - {$value.jml_dr} - {$value.aturan_pakai} - {$value.keterangan} + {if: isset($value.nama_racik)}{?=isset_or($value.nama_racik)?}{else}-{/if} + {if: isset($value.jml_dr)}{?=isset_or($value.jml_dr)?}{else}-{/if} + {if: isset($value.aturan_pakai)}{?=isset_or($value.aturan_pakai)?}{else}-{/if} + {if: isset($value.keterangan)}{?=isset_or($value.keterangan)?}{else}-{/if} Nama Obat @@ -98,9 +100,9 @@
                                    Racikan
                                    {loop: $value.resep_dokter_racikan_detail as $data} - {$data.nama_brng} - {$data.kandungan} - {$data.jml} + {?=isset_or($data.nama_brng)?} + {?=isset_or($data.kandungan)?} + {?=isset_or($data.jml)?} Rp. {?= number_format(($data.ralan * $data.jml),2,',','.')?} {/loop} @@ -131,29 +133,29 @@

                                    Rincian Tindakan

                                    {loop: $rawat_jl_dr} - {$value.tgl_perawatan} {$value.jam_rawat} - {$value.nm_perawatan} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?} + {?=isset_or($value.nm_perawatan)?} Dokter Rp. {?= number_format($value.biaya_rawat,2,',','.')?} - + {/loop} {loop: $rawat_jl_pr} - {$value.tgl_perawatan} {$value.jam_rawat} - {$value.nm_perawatan} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?} + {?=isset_or($value.nm_perawatan)?} Perawat Rp. {?= number_format($value.biaya_rawat,2,',','.')?} - + {/loop} {loop: $rawat_jl_drpr} - {$value.tgl_perawatan} {$value.jam_rawat} - {$value.nm_perawatan} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?} + {?=isset_or($value.nm_perawatan)?} Dokter & Perawat Rp. {?= number_format($value.biaya_rawat,2,',','.')?} - + {/loop} @@ -183,17 +185,31 @@

                                    Data e-Resep

                                    {loop: $data_resep} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?}
                                      {loop: $value.resep_dokter as $data} -
                                    • {$data.nama_brng} - {$data.jml} - {$data.aturan_pakai}
                                    • +
                                    • {?=isset_or($data.nama_brng)?} - {?=isset_or($data.jml)?} - {?=isset_or($data.aturan_pakai)?}
                                    • {/loop}
                                    + {if: !empty($value.resep_racikan)} +
                                    +
                                      + {loop: $value.resep_racikan as $racikan} +
                                    • {?=isset_or($racikan.nama_racik)?} ({?=isset_or($racikan.jml_dr)?}) - {?=isset_or($racikan.aturan_pakai)?} +
                                        + {loop: $racikan.detail as $detail} +
                                      • - {?=isset_or($detail.nama_brng)?} ({?=isset_or($detail.jml)?})
                                      • + {/loop} +
                                      +
                                    • + {/loop} +
                                    + {/if} - + {/loop} @@ -203,39 +219,6 @@

                                    Data e-Resep

                                    Permintaan Laboratorium

                                    -
                                    @@ -249,11 +232,11 @@

                                    Permintaan Laboratorium

                                    {loop: $laboratorium} - - - + + + @@ -263,10 +246,10 @@

                                    Permintaan Laboratorium

                                    {loop: $value.permintaan_pemeriksaan_lab as $data} - - + + @@ -284,13 +267,13 @@

                                    Permintaan Laboratorium

                                    {loop: $data.permintaan_detail_permintaan_lab as $data2} - - - - - - - + + + + + + + {/loop}
                                    {$value.nm_dokter}{$value.noorder}{$value.tgl_permintaan} {$value.jam_permintaan}{?=isset_or($value.nm_dokter)?}{?=isset_or($value.noorder)?}{?=isset_or($value.tgl_permintaan)?} {?=isset_or($value.jam_permintaan)?} - +
                                    {$data.nm_perawatan}{$data.stts_bayar}{?=isset_or($data.nm_perawatan)?}{?=isset_or($data.stts_bayar)?} - +
                                    - {$data2.template_laboratorium.Pemeriksaan}{$data2.template_laboratorium.satuan}{$data2.template_laboratorium.nilai_rujukan_la}{$data2.template_laboratorium.nilai_rujukan_pa}{$data2.template_laboratorium.nilai_rujukan_ld}{$data2.template_laboratorium.nilai_rujukan_pd}- {?=isset_or($data2.template_laboratorium.Pemeriksaan)?}{?=isset_or($data2.template_laboratorium.satuan)?}{?=isset_or($data2.template_laboratorium.nilai_rujukan_la)?}{?=isset_or($data2.template_laboratorium.nilai_rujukan_pa)?}{?=isset_or($data2.template_laboratorium.nilai_rujukan_ld)?}{?=isset_or($data2.template_laboratorium.nilai_rujukan_pd)?}
                                    @@ -318,11 +301,11 @@

                                    Permintaan Radiologi

                                    {loop: $radiologi} - {$value.tgl_permintaan} {$value.jam_permintaan} - {$value.nm_perawatan} - {$value.kelas} + {?=isset_or($value.tgl_permintaan)?} {?=isset_or($value.jam_permintaan)?} + {?=isset_or($value.nm_perawatan)?} + {?=isset_or($value.kelas)?} Rp. {?= number_format($value.total_byr,2,',','.')?} - + {/loop} diff --git a/plugins/dokter_igd/view/admin/soap.html b/plugins/dokter_igd/view/admin/soap.html index 52caf3131..1edd4947a 100644 --- a/plugins/dokter_igd/view/admin/soap.html +++ b/plugins/dokter_igd/view/admin/soap.html @@ -7,7 +7,7 @@
                                    - {include: ../plugins/icd/view/admin/display.html} + {include: ../plugins/dokter_igd/view/admin/display.icd.html}

                                    Rincian Riwayat

                                    @@ -32,175 +32,211 @@

                                    Rincian Riwayat

                                    {if: $pemeriksaan} {loop: $pemeriksaan} - {$value.nomor} + {?=isset_or($value.nomor)?} Rawat Jalan
                                    - {$value.tgl_perawatan} {$value.jam_rawat}
                                    - {$value.departemen_petugas} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?}
                                    + {?=isset_or($value.departemen_petugas)?} - {$value.suhu_tubuh} - {$value.tensi} - {$value.nadi} - {$value.respirasi} - {$value.tinggi} - {$value.berat} - {$value.gcs} - {$value.spo2} - {$value.alergi} + {?=isset_or($value.suhu_tubuh)?} + {?=isset_or($value.tensi)?} + {?=isset_or($value.nadi)?} + {?=isset_or($value.respirasi)?} + {?=isset_or($value.tinggi)?} + {?=isset_or($value.berat)?} + {?=isset_or($value.gcs)?} + {?=isset_or($value.spo2)?} + {?=isset_or($value.alergi)?} - Instruksi: {$value.instruksi}

                                    - Evaluasi: {$value.evaluasi}

                                    -
                                    - {$value.nama_petugas} + Instruksi: {?=isset_or($value.instruksi)?}

                                    + Evaluasi: {?=isset_or($value.evaluasi)?}

                                    +
                                    + {?=isset_or($value.nama_petugas)?} Kesadaran - {$value.kesadaran} + {?=isset_or($value.kesadaran)?} Lingkar Perut - {$value.lingkar_perut} + {?=isset_or($value.lingkar_perut)?} Subyektif - {$value.keluhan} + {?=isset_or($value.keluhan)?} Obyektif - {$value.pemeriksaan} + {?=isset_or($value.pemeriksaan)?} Assesment - {$value.penilaian} + {?=isset_or($value.penilaian)?}
                                    - {if: $this->core->getUserInfo('username', !empty($_SESSION['mlite_user'])) == $value.nip} + - {/if}
                                    Plan - {$value.rtl} + {?=isset_or($value.rtl)?} {/loop} {/if} {if: $pemeriksaan_ranap} {loop: $pemeriksaan_ranap as $data} - {$data.nomor} + {?=isset_or($data.nomor)?} Rawat Inap
                                    - {$data.tgl_perawatan} {$data.jam_rawat}
                                    - {$data.departemen_petugas} + {?=isset_or($data.tgl_perawatan)?} {?=isset_or($data.jam_rawat)?}
                                    + {?=isset_or($data.departemen_petugas)?} - {$data.suhu_tubuh} - {$data.tensi} - {$data.nadi} - {$data.respirasi} - {$data.tinggi} - {$data.berat} - {$data.gcs} - {$data.spo2} - {$data.alergi} + {?=isset_or($data.suhu_tubuh)?} + {?=isset_or($data.tensi)?} + {?=isset_or($data.nadi)?} + {?=isset_or($data.respirasi)?} + {?=isset_or($data.tinggi)?} + {?=isset_or($data.berat)?} + {?=isset_or($data.gcs)?} + {?=isset_or($data.spo2)?} + {?=isset_or($data.alergi)?} - {$data.instruksi}

                                    -
                                    - {$data.nama_petugas} + {?=isset_or($data.instruksi)?}

                                    +
                                    + {?=isset_or($data.nama_petugas)?} Kesadaran - {$data.kesadaran} + {?=isset_or($data.kesadaran)?} Subyektif - {$data.keluhan} + {?=isset_or($data.keluhan)?} Obyektif - {$data.pemeriksaan} + {?=isset_or($data.pemeriksaan)?} Assesment - {$data.penilaian} + {?=isset_or($data.penilaian)?}
                                    - {if: $this->core->getUserInfo('username', !empty($_SESSION['mlite_user'])) == $value.nip} + - {/if}
                                    Plan - {$data.rtl} + {?=isset_or($data.rtl)?} {/loop} {/if} diff --git a/plugins/dokter_igd/view/admin/triase_igd.html b/plugins/dokter_igd/view/admin/triase_igd.html new file mode 100644 index 000000000..5ee8ad751 --- /dev/null +++ b/plugins/dokter_igd/view/admin/triase_igd.html @@ -0,0 +1,590 @@ +
                                    +
                                    +
                                    +
                                    + + + + +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + + + Kategori akan dihitung otomatis berdasarkan tanda vital dan GCS. + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    + + + {if: $triase_igd.id_triase != ''} + + {/if} +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + + + + + + + \ No newline at end of file diff --git a/plugins/dokter_igd/view/admin/triase_igd_view.html b/plugins/dokter_igd/view/admin/triase_igd_view.html new file mode 100644 index 000000000..30e2aa3b7 --- /dev/null +++ b/plugins/dokter_igd/view/admin/triase_igd_view.html @@ -0,0 +1,299 @@ + + +
                                    +
                                    + + + + + + + + + + + + + + + + + + + +
                                    No. Rawat{?=isset_or($triase_igd.no_rawat)?}No. RM{?=isset_or($triase_igd.no_rkm_medis)?}
                                    Nama Pasien{?=isset_or($triase_igd.nm_pasien)?}Tgl. Triase{?=isset_or($triase_igd.tgl_triase)?}
                                    Petugas{?=isset_or($triase_igd.nama_petugas)?} ({?=isset_or($triase_igd.petugas_id)?})
                                    + + +
                                    +
                                    +
                                    Kondisi Umum
                                    + + + + + + + + + + + + + + + + + +
                                    Kesadaran{?=isset_or($triase_igd.kesadaran)?}
                                    Airway{?=isset_or($triase_igd.airway)?}
                                    Breathing{?=isset_or($triase_igd.breathing)?}
                                    Circulation{?=isset_or($triase_igd.circulation)?}
                                    +
                                    + +
                                    +
                                    Tanda Vital
                                    + + + + + + + + + + + + + + + + + + + + + +
                                    Tekanan Darah{?=isset_or($triase_igd.tekanan_darah, '-')?} mmHg
                                    Nadi{?=isset_or($triase_igd.nadi, '-')?} x/menit
                                    Respirasi{?=isset_or($triase_igd.respirasi, '-')?} x/menit
                                    Suhu{?=isset_or($triase_igd.suhu, '-')?} °C
                                    SpO2{?=isset_or($triase_igd.spo2, '-')?} %
                                    +
                                    +
                                    + + +
                                    +
                                    +
                                    Glasgow Coma Scale (GCS)
                                    + + + + + + + + + + + + + + + + + +
                                    GCS Eye (E){?=isset_or($triase_igd.gcs_e, '-')?}
                                    GCS Verbal (V){?=isset_or($triase_igd.gcs_v, '-')?}
                                    GCS Motorik (M){?=isset_or($triase_igd.gcs_m, '-')?}
                                    Total GCS{?=isset_or($triase_igd.total_gcs)?}
                                    +
                                    + +
                                    +
                                    Hasil Triase
                                    + + + + + + + + + +
                                    Kategori + + {?=isset_or($triase_igd.kategori)?} + +
                                    Skala Triase{?=isset_or($triase_igd.skala_triase, '-')?}
                                    +
                                    +
                                    + + + {if: $triase_igd.keluhan_utama || $triase_igd.diagnosa_awal} +
                                    + {if: $triase_igd.keluhan_utama} +
                                    +
                                    Keluhan Utama
                                    +

                                    {?=isset_or($triase_igd.keluhan_utama)?}

                                    +
                                    + {/if} + + {if: $triase_igd.diagnosa_awal} +
                                    +
                                    Diagnosa Awal
                                    +

                                    {?=isset_or($triase_igd.diagnosa_awal)?}

                                    +
                                    + {/if} +
                                    + {/if} + + +
                                    +
                                    +
                                    + Dibuat: {?=isset_or($triase_igd.created_at)?} +
                                    +
                                    + Diupdate: {?=isset_or($triase_igd.updated_at)?} +
                                    +
                                    + +
                                    +
                                    \ No newline at end of file diff --git a/plugins/dokter_ralan/Admin.php b/plugins/dokter_ralan/Admin.php index 6e00df99d..83d3077e6 100644 --- a/plugins/dokter_ralan/Admin.php +++ b/plugins/dokter_ralan/Admin.php @@ -2,19 +2,26 @@ namespace Plugins\Dokter_Ralan; use Systems\AdminModule; -use Plugins\Icd\DB_ICD; use LZCompressor\LZString; +use Systems\Lib\BpjsService; class Admin extends AdminModule { + private const ALLOWED_STATUS_PENYAKIT = ['Baru', 'Lama']; private $_uploads = WEBAPPS_PATH.'/berkasrawat/pages/upload'; + protected array $assign = []; + private $consid = ''; + private $secretkey = ''; + private $api_url = ''; + private $user_key = ''; + public function navigation() { return [ 'Kelola' => 'index', 'Dokter Ralan' => 'manage', - 'Pengaturan' =>'settings' + 'Pengaturan' => 'settings' ]; } @@ -24,7 +31,7 @@ public function getIndex() ['name' => 'Dokter Ralan', 'url' => url([ADMIN, 'dokter_ralan', 'manage']), 'icon' => 'wheelchair', 'desc' => 'Data pasien rawat jalan'], ['name' => 'Pengaturan', 'url' => url([ADMIN, 'dokter_ralan', 'settings']), 'icon' => 'wrench', 'desc' => 'Pengaturan dokter rawat jalan'], ]; - return $this->draw('index.html', ['sub_modules' => $sub_modules]); + return $this->draw('index.html', ['sub_modules' => htmlspecialchars_array($sub_modules)]); } public function anyManage() @@ -45,7 +52,7 @@ public function anyManage() $cek_vclaim = $this->db('mlite_modules')->where('dir', 'vclaim')->oneArray(); $responsivevoice = $this->settings->get('settings.responsivevoice'); $this->_Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa); - return $this->draw('manage.html', ['rawat_jalan' => $this->assign, 'cek_vclaim' => $cek_vclaim, 'responsivevoice' => $responsivevoice, 'admin_mode' => $this->settings->get('settings.admin_mode')]); + return $this->draw('manage.html', ['rawat_jalan' => htmlspecialchars_array($this->assign), 'cek_vclaim' => htmlspecialchars_array($cek_vclaim), 'responsivevoice' => $responsivevoice, 'admin_mode' => $this->settings->get('settings.admin_mode')]); } public function anyDisplay() @@ -66,7 +73,7 @@ public function anyDisplay() $cek_vclaim = $this->db('mlite_modules')->where('dir', 'vclaim')->oneArray(); $responsivevoice = $this->settings->get('settings.responsivevoice'); $this->_Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa); - echo $this->draw('display.html', ['rawat_jalan' => $this->assign, 'cek_vclaim' => $cek_vclaim, 'responsivevoice' => $responsivevoice, 'admin_mode' => $this->settings->get('settings.admin_mode')]); + echo $this->draw('display.html', ['rawat_jalan' => htmlspecialchars_array($this->assign), 'cek_vclaim' => htmlspecialchars_array($cek_vclaim), 'responsivevoice' => $responsivevoice, 'admin_mode' => $this->settings->get('settings.admin_mode')]); exit(); } @@ -77,6 +84,7 @@ public function _Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa=' } $this->_addHeaderFiles(); $username = $this->core->getUserInfo('username', null, true); + $this->assign = []; $this->assign['poliklinik'] = $this->db('poliklinik')->where('status', '1')->toArray(); $this->assign['dokter'] = $this->db('dokter')->where('status', '1')->toArray(); $this->assign['penjab'] = $this->db('penjab')->where('status', '1')->toArray(); @@ -87,6 +95,7 @@ public function _Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa=' $poliklinik = str_replace(",","','", $this->core->getUserInfo('cap', null, true)); $igd = $this->settings('settings', 'igd'); + $params = []; $sql = "SELECT reg_periksa.*, pasien.*, dokter.*, @@ -94,15 +103,19 @@ public function _Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa=' penjab.* FROM reg_periksa, pasien, dokter, poliklinik, penjab WHERE reg_periksa.no_rkm_medis = pasien.no_rkm_medis - AND reg_periksa.kd_poli != '$igd' - AND reg_periksa.tgl_registrasi BETWEEN '$tgl_kunjungan' AND '$tgl_kunjungan_akhir' + AND reg_periksa.kd_poli != ? + AND reg_periksa.tgl_registrasi BETWEEN ? AND ? AND reg_periksa.kd_dokter = dokter.kd_dokter AND reg_periksa.kd_poli = poliklinik.kd_poli AND reg_periksa.kd_pj = penjab.kd_pj"; + $params[] = $igd; + $params[] = $tgl_kunjungan; + $params[] = $tgl_kunjungan_akhir; if ($this->core->getUserInfo('role') != 'admin') { if($this->settings->get('settings.dokter_ralan_per_dokter') == 'true') { - $sql .= " AND reg_periksa.kd_dokter = '$username'"; + $sql .= " AND reg_periksa.kd_dokter = ?"; + $params[] = $username; } else { $sql .= " AND reg_periksa.kd_poli IN ('$poliklinik')"; } @@ -118,14 +131,78 @@ public function _Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa=' } $stmt = $this->db()->pdo()->prepare($sql); - $stmt->execute(); + $stmt->execute($params); $rows = $stmt->fetchAll(); $this->assign['list'] = []; foreach ($rows as $row) { + $row['potensi_prb'] = ''; + $bpjs_prb = $this->db('bpjs_prb') + ->join('bridging_sep', 'bridging_sep.no_sep', 'bpjs_prb.no_sep') + ->where('bridging_sep.no_rawat', $row['no_rawat']) + ->oneArray(); + if(!empty($bpjs_prb)) { + $row['potensi_prb'] = $bpjs_prb['prb']; + } $this->assign['list'][] = $row; } + // Query untuk rujukan internal + $params_rujukan = []; + $sql_rujukan_internal = "SELECT + reg_periksa.no_rkm_medis, + pasien.nm_pasien, + reg_periksa.no_rawat, + p1.nm_poli as poli_asal, + p2.nm_poli as poli_tujuan, + d1.nm_dokter as dokter_perujuk, + d2.nm_dokter as dokter_tujuan, + reg_periksa.tgl_registrasi as tgl_rujukan, + mlite_rujukan_internal_poli.kd_poli as kd_poli_tujuan, + mlite_rujukan_internal_poli.kd_dokter as kd_dokter_tujuan, + mlite_rujukan_internal_poli.isi_rujukan as keterangan, + mlite_rujukan_internal_poli.jawab_rujukan as keterangan_jawab + FROM mlite_rujukan_internal_poli + INNER JOIN reg_periksa ON mlite_rujukan_internal_poli.no_rawat = reg_periksa.no_rawat + INNER JOIN pasien ON reg_periksa.no_rkm_medis = pasien.no_rkm_medis + INNER JOIN poliklinik p1 ON reg_periksa.kd_poli = p1.kd_poli + INNER JOIN poliklinik p2 ON mlite_rujukan_internal_poli.kd_poli = p2.kd_poli + INNER JOIN dokter d1 ON reg_periksa.kd_dokter = d1.kd_dokter + INNER JOIN dokter d2 ON mlite_rujukan_internal_poli.kd_dokter = d2.kd_dokter + INNER JOIN penjab ON reg_periksa.kd_pj = penjab.kd_pj + WHERE reg_periksa.kd_poli != ? + AND reg_periksa.tgl_registrasi BETWEEN ? AND ?"; + $params_rujukan[] = $igd; + $params_rujukan[] = $tgl_kunjungan; + $params_rujukan[] = $tgl_kunjungan_akhir; + + if ($this->core->getUserInfo('role') != 'admin') { + if($this->settings->get('settings.dokter_ralan_per_dokter') == 'true') { + $sql_rujukan_internal .= " AND reg_periksa.kd_dokter = ?"; + $params_rujukan[] = $username; + } else { + $sql_rujukan_internal .= " AND reg_periksa.kd_poli IN ('$poliklinik')"; + } + } + if($status_periksa == 'belum') { + $sql_rujukan_internal .= " AND reg_periksa.stts = 'Belum'"; + } + if($status_periksa == 'selesai') { + $sql_rujukan_internal .= " AND reg_periksa.stts = 'Sudah'"; + } + if($status_periksa == 'lunas') { + $sql_rujukan_internal .= " AND reg_periksa.status_bayar = 'Sudah Bayar'"; + } + + $stmt = $this->db()->pdo()->prepare($sql_rujukan_internal); + $stmt->execute($params_rujukan); + $rows_rujukan = $stmt->fetchAll(); + + $this->assign['list_rujukan_internal'] = []; + foreach ($rows_rujukan as $row) { + $this->assign['list_rujukan_internal'][] = $row; + } + } public function postSaveDetail() @@ -149,27 +226,45 @@ public function postSaveDetail() } if($_POST['kat'] == 'obat') { - - $no_resep = $this->core->setNoResep($_POST['tgl_perawatan']); - $cek_resep = $this->db('resep_obat')->where('no_rawat', $_POST['no_rawat'])->where('tgl_peresepan', $_POST['tgl_perawatan'])->where('tgl_perawatan', '0000-00-00')->where('status', 'ralan')->oneArray(); - - if(empty($cek_resep)) { - - $resep_obat = $this->db('resep_obat') - ->save([ - 'no_resep' => $no_resep, - 'tgl_perawatan' => '0000-00-00', - 'jam' => '00:00:00', - 'no_rawat' => $_POST['no_rawat'], - 'kd_dokter' => $this->core->getUserInfo('username', null, true), - 'tgl_peresepan' => $_POST['tgl_perawatan'], - 'jam_peresepan' => $_POST['jam_rawat'], - 'status' => 'ralan', - 'tgl_penyerahan' => '0000-00-00', - 'jam_penyerahan' => '00:00:00' - ]); - - if ($this->db('resep_obat')->where('no_resep', $no_resep)->where('kd_dokter', $this->core->getUserInfo('username', null, true))->oneArray()) { + $maxRetries = 5; + $retryCount = 0; + $success = false; + + while ($retryCount < $maxRetries && !$success) { + $this->db()->pdo()->beginTransaction(); + try { + $no_resep = $this->core->setNoResep($_POST['tgl_perawatan']); + $cek_resep = $this->db('resep_obat')->join('resep_dokter', 'resep_obat.no_resep = resep_dokter.no_resep')->where('no_rawat', $_POST['no_rawat'])->where('tgl_peresepan', $_POST['tgl_perawatan'])->where('tgl_perawatan', '0000-00-00')->where('status', 'ralan')->oneArray(); + + if(empty($cek_resep)) { + + $resep_obat = $this->db('resep_obat') + ->save([ + 'no_resep' => $no_resep, + 'tgl_perawatan' => '0000-00-00', + 'jam' => '00:00:00', + 'no_rawat' => $_POST['no_rawat'], + 'kd_dokter' => $this->core->getUserInfo('username', null, true), + 'tgl_peresepan' => $_POST['tgl_perawatan'], + 'jam_peresepan' => $_POST['jam_rawat'], + 'status' => 'ralan', + 'tgl_penyerahan' => '0000-00-00', + 'jam_penyerahan' => '00:00:00' + ]); + + if ($this->db('resep_obat')->where('no_resep', $no_resep)->where('kd_dokter', $this->core->getUserInfo('username', null, true))->oneArray()) { + $this->db('resep_dokter') + ->save([ + 'no_resep' => $no_resep, + 'kode_brng' => $_POST['kd_jenis_prw'], + 'jml' => $_POST['jml'], + 'aturan_pakai' => $_POST['aturan_pakai'] + ]); + } + + } else { + + $no_resep = $cek_resep['no_resep']; $this->db('resep_dokter') ->save([ 'no_resep' => $no_resep, @@ -177,218 +272,272 @@ public function postSaveDetail() 'jml' => $_POST['jml'], 'aturan_pakai' => $_POST['aturan_pakai'] ]); - } - - } else { - - $no_resep = $cek_resep['no_resep']; - $this->db('resep_dokter') - ->save([ - 'no_resep' => $no_resep, - 'kode_brng' => $_POST['kd_jenis_prw'], - 'jml' => $_POST['jml'], - 'aturan_pakai' => $_POST['aturan_pakai'] - ]); + } + $this->db()->pdo()->commit(); + $success = true; + } catch (\Exception $e) { + $this->db()->pdo()->rollBack(); + if ($e->getCode() == '23000') { + $retryCount++; + usleep(100000); + continue; + } + throw $e; + } } } if($_POST['kat'] == 'racikan') { + $maxRetries = 5; + $retryCount = 0; + $success = false; - $no_resep = $this->core->setNoResep($_POST['tgl_perawatan']); - $cek_resep = $this->db('resep_obat')->where('no_rawat', $_POST['no_rawat'])->where('tgl_peresepan', $_POST['tgl_perawatan'])->where('tgl_perawatan', '0000-00-00')->where('status', 'ralan')->oneArray(); + while ($retryCount < $maxRetries && !$success) { + $this->db()->pdo()->beginTransaction(); + try { + $no_resep = $this->core->setNoResep($_POST['tgl_perawatan']); + $cek_resep = $this->db('resep_obat')->join('resep_dokter_racikan', 'resep_obat.no_resep = resep_dokter_racikan.no_resep')->where('no_rawat', $_POST['no_rawat'])->where('tgl_peresepan', $_POST['tgl_perawatan'])->where('tgl_perawatan', '0000-00-00')->where('status', 'ralan')->oneArray(); - $_POST['jam_rawat'] = date('H:i:s'); + if(empty($cek_resep)) { - if(empty($cek_resep)) { - - $resep_obat = $this->db('resep_obat') - ->save([ - 'no_resep' => $no_resep, - 'tgl_perawatan' => '0000-00-00', - 'jam' => '00:00:00', - 'no_rawat' => $_POST['no_rawat'], - 'kd_dokter' => $this->core->getUserInfo('username', null, true), - 'tgl_peresepan' => $_POST['tgl_perawatan'], - 'jam_peresepan' => $_POST['jam_rawat'], - 'status' => 'ralan', - 'tgl_penyerahan' => '0000-00-00', - 'jam_penyerahan' => '00:00:00' - ]); + $resep_obat = $this->db('resep_obat') + ->save([ + 'no_resep' => $no_resep, + 'tgl_perawatan' => '0000-00-00', + 'jam' => '00:00:00', + 'no_rawat' => $_POST['no_rawat'], + 'kd_dokter' => $this->core->getUserInfo('username', null, true), + 'tgl_peresepan' => $_POST['tgl_perawatan'], + 'jam_peresepan' => $_POST['jam_rawat'], + 'status' => 'ralan', + 'tgl_penyerahan' => '0000-00-00', + 'jam_penyerahan' => '00:00:00' + ]); - if ($this->db('resep_obat')->where('no_resep', $no_resep)->where('kd_dokter', $this->core->getUserInfo('username', null, true))->oneArray()) { - $no_racik = $this->db('resep_dokter_racikan')->where('no_resep', $no_resep)->count(); - $no_racik = $no_racik+1; - $this->db('resep_dokter_racikan') - ->save([ - 'no_resep' => $no_resep, - 'no_racik' => $no_racik, - 'nama_racik' => $_POST['nama_racik'], - 'kd_racik' => $_POST['kd_jenis_prw'], - 'jml_dr' => $_POST['jml'], - 'aturan_pakai' => $_POST['aturan_pakai'], - 'keterangan' => $_POST['keterangan'] - ]); - $_POST['kode_brng'] = json_decode($_POST['kode_brng'], true); - $_POST['kandungan'] = json_decode($_POST['kandungan'], true); - for ($i = 0; $i < count($_POST['kode_brng']); $i++) { - $kapasitas = $this->db('databarang')->where('kode_brng', $_POST['kode_brng'][$i]['value'])->oneArray(); - $jml = $_POST['jml']*$_POST['kandungan'][$i]['value']; - $jml = round(($jml/$kapasitas['kapasitas']),1); - $this->db('resep_dokter_racikan_detail') + if ($this->db('resep_obat')->where('no_resep', $no_resep)->where('kd_dokter', $this->core->getUserInfo('username', null, true))->oneArray()) { + $no_racik = $this->db('resep_dokter_racikan')->where('no_resep', $no_resep)->count(); + $no_racik = $no_racik+1; + $this->db('resep_dokter_racikan') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'nama_racik' => $_POST['nama_racik'], + 'kd_racik' => $_POST['kd_jenis_prw'], + 'jml_dr' => $_POST['jml'], + 'aturan_pakai' => $_POST['aturan_pakai'], + 'keterangan' => $_POST['keterangan'] + ]); + $post_kode_brng = json_decode($_POST['kode_brng'], true); + $post_kandungan = json_decode($_POST['kandungan'], true); + $kode_brng_count = count($post_kode_brng); + for ($i = 0; $i < $kode_brng_count; $i++) { + $kapasitas = $this->db('databarang')->where('kode_brng', $post_kode_brng[$i]['value'])->oneArray(); + $jml = $_POST['jml']*$post_kandungan[$i]['value']; + $jml = round(($jml/$kapasitas['kapasitas']),1); + $this->db('resep_dokter_racikan_detail') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'kode_brng' => $post_kode_brng[$i]['value'], + 'p1' => '1', + 'p2' => '1', + 'kandungan' => $post_kandungan[$i]['value'], + 'jml' => $jml + ]); + } + } + + } else { + + $no_resep = $cek_resep['no_resep']; + + $no_racik = $this->db('resep_dokter_racikan')->where('no_resep', $no_resep)->count(); + $no_racik = $no_racik+1; + $this->db('resep_dokter_racikan') ->save([ 'no_resep' => $no_resep, 'no_racik' => $no_racik, - 'kode_brng' => $_POST['kode_brng'][$i]['value'], - 'p1' => '1', - 'p2' => '1', - 'kandungan' => $_POST['kandungan'][$i]['value'], - 'jml' => $jml + 'nama_racik' => $_POST['nama_racik'], + 'kd_racik' => $_POST['kd_jenis_prw'], + 'jml_dr' => $_POST['jml'], + 'aturan_pakai' => $_POST['aturan_pakai'], + 'keterangan' => $_POST['keterangan'] ]); - } - } - - } else { + $post_kode_brng = json_decode($_POST['kode_brng'], true); + $post_kandungan = json_decode($_POST['kandungan'], true); + $kode_brng_count = count($post_kode_brng); + for ($i = 0; $i < $kode_brng_count; $i++) { + $kapasitas = $this->db('databarang')->where('kode_brng', $post_kode_brng[$i]['value'])->oneArray(); + $jml = $_POST['jml']*$post_kandungan[$i]['value']; + $jml = round(($jml/$kapasitas['kapasitas']),1); + $this->db('resep_dokter_racikan_detail') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'kode_brng' => $post_kode_brng[$i]['value'], + 'p1' => '1', + 'p2' => '1', + 'kandungan' => $post_kandungan[$i]['value'], + 'jml' => $jml + ]); + } - $no_resep = $cek_resep['no_resep']; - - $no_racik = $this->db('resep_dokter_racikan')->where('no_resep', $no_resep)->count(); - $no_racik = $no_racik+1; - $this->db('resep_dokter_racikan') - ->save([ - 'no_resep' => $no_resep, - 'no_racik' => $no_racik, - 'nama_racik' => $_POST['nama_racik'], - 'kd_racik' => $_POST['kd_jenis_prw'], - 'jml_dr' => $_POST['jml'], - 'aturan_pakai' => $_POST['aturan_pakai'], - 'keterangan' => $_POST['keterangan'] - ]); - $_POST['kode_brng'] = json_decode($_POST['kode_brng'], true); - $_POST['kandungan'] = json_decode($_POST['kandungan'], true); - for ($i = 0; $i < count($_POST['kode_brng']); $i++) { - $kapasitas = $this->db('databarang')->where('kode_brng', $_POST['kode_brng'][$i]['value'])->oneArray(); - $jml = $_POST['jml']*$_POST['kandungan'][$i]['value']; - $jml = round(($jml/$kapasitas['kapasitas']),1); - $this->db('resep_dokter_racikan_detail') - ->save([ - 'no_resep' => $no_resep, - 'no_racik' => $no_racik, - 'kode_brng' => $_POST['kode_brng'][$i]['value'], - 'p1' => '1', - 'p2' => '1', - 'kandungan' => $_POST['kandungan'][$i]['value'], - 'jml' => $jml - ]); + } + $this->db()->pdo()->commit(); + $success = true; + } catch (\Exception $e) { + $this->db()->pdo()->rollBack(); + if ($e->getCode() == '23000') { + $retryCount++; + usleep(100000); + continue; + } + throw $e; } - } } if($_POST['kat'] == 'laboratorium') { - $cek_lab = $this->db('permintaan_lab')->where('no_rawat', $_POST['no_rawat'])->where('tgl_permintaan', date('Y-m-d'))->where('tgl_sampel', '0000-00-00')->where('status', 'ralan')->oneArray(); - if(!$cek_lab) { - $max_id = $this->db('permintaan_lab')->select(['noorder' => 'ifnull(MAX(CONVERT(RIGHT(noorder,4),signed)),0)'])->where('tgl_permintaan', date('Y-m-d'))->oneArray(); - if(empty($max_id['noorder'])) { - $max_id['noorder'] = '0000'; - } - $_next_noorder = sprintf('%04s', ($max_id['noorder'] + 1)); - $noorder = 'PL'.date('Ymd').''.$_next_noorder; - - $permintaan_lab = $this->db('permintaan_lab') - ->save([ - 'noorder' => $noorder, - 'no_rawat' => $_POST['no_rawat'], - 'tgl_permintaan' => $_POST['tgl_perawatan'], - 'jam_permintaan' => $_POST['jam_rawat'], - 'tgl_sampel' => '0000-00-00', - 'jam_sampel' => '00:00:00', - 'tgl_hasil' => '0000-00-00', - 'jam_hasil' => '00:00:00', - 'dokter_perujuk' => $this->core->getUserInfo('username', null, true), - 'status' => 'ralan', - 'informasi_tambahan' => $_POST['informasi_tambahan'], - 'diagnosa_klinis' => $_POST['diagnosa_klinis'] - ]); - $this->db('permintaan_pemeriksaan_lab') - ->save([ - 'noorder' => $noorder, - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'stts_bayar' => 'Belum' - ]); - $template_laboratorium = $this->db('template_laboratorium')->where('kd_jenis_prw', $_POST['kd_jenis_prw'])->toArray(); - for ($i = 0; $i < count($template_laboratorium); $i++) { - $this->db('permintaan_detail_permintaan_lab') - ->save([ - 'noorder' => $noorder, - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'id_template' => $template_laboratorium[$i]['id_template'], - 'stts_bayar' => 'Belum' - ]); - } - } else { - $noorder = $cek_lab['noorder']; - $this->db('permintaan_pemeriksaan_lab') - ->save([ - 'noorder' => $noorder, - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'stts_bayar' => 'Belum' - ]); - $template_laboratorium = $this->db('template_laboratorium')->where('kd_jenis_prw', $_POST['kd_jenis_prw'])->toArray(); - for ($i = 0; $i < count($template_laboratorium); $i++) { - $this->db('permintaan_detail_permintaan_lab') - ->save([ - 'noorder' => $noorder, - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'id_template' => $template_laboratorium[$i]['id_template'], - 'stts_bayar' => 'Belum' - ]); + $maxRetries = 5; + $retryCount = 0; + $success = false; + + while ($retryCount < $maxRetries && !$success) { + $this->db()->pdo()->beginTransaction(); + try { + $cek_lab = $this->db('permintaan_lab')->where('no_rawat', $_POST['no_rawat'])->where('tgl_permintaan', date('Y-m-d'))->where('tgl_sampel', '0000-00-00')->where('status', 'ralan')->oneArray(); + if(!$cek_lab) { + $urut = $this->db('permintaan_lab') + ->where('tgl_permintaan', date('Y-m-d')) + ->nextRightNumber('noorder', 4); + $noorder = 'PL' . date('Ymd') . sprintf('%04d', $urut); + + $permintaan_lab = $this->db('permintaan_lab') + ->save([ + 'noorder' => $noorder, + 'no_rawat' => $_POST['no_rawat'], + 'tgl_permintaan' => $_POST['tgl_perawatan'], + 'jam_permintaan' => $_POST['jam_rawat'], + 'tgl_sampel' => '0000-00-00', + 'jam_sampel' => '00:00:00', + 'tgl_hasil' => '0000-00-00', + 'jam_hasil' => '00:00:00', + 'dokter_perujuk' => $this->core->getUserInfo('username', null, true), + 'status' => 'ralan', + 'informasi_tambahan' => $_POST['informasi_tambahan'], + 'diagnosa_klinis' => $_POST['diagnosa_klinis'] + ]); + $this->db('permintaan_pemeriksaan_lab') + ->save([ + 'noorder' => $noorder, + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'stts_bayar' => 'Belum' + ]); + $template_laboratorium = $this->db('template_laboratorium')->where('kd_jenis_prw', $_POST['kd_jenis_prw'])->toArray(); + $template_count = count($template_laboratorium); + for ($i = 0; $i < $template_count; $i++) { + $this->db('permintaan_detail_permintaan_lab') + ->save([ + 'noorder' => $noorder, + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'id_template' => $template_laboratorium[$i]['id_template'], + 'stts_bayar' => 'Belum' + ]); + } + } else { + $noorder = $cek_lab['noorder']; + $this->db('permintaan_pemeriksaan_lab') + ->save([ + 'noorder' => $noorder, + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'stts_bayar' => 'Belum' + ]); + $template_laboratorium = $this->db('template_laboratorium')->where('kd_jenis_prw', $_POST['kd_jenis_prw'])->toArray(); + $template_count = count($template_laboratorium); + for ($i = 0; $i < $template_count; $i++) { + $this->db('permintaan_detail_permintaan_lab') + ->save([ + 'noorder' => $noorder, + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'id_template' => $template_laboratorium[$i]['id_template'], + 'stts_bayar' => 'Belum' + ]); + } + } + $this->db()->pdo()->commit(); + $success = true; + } catch (\Exception $e) { + $this->db()->pdo()->rollBack(); + if ($e->getCode() == '23000') { + $retryCount++; + usleep(100000); + continue; + } + throw $e; } } } if($_POST['kat'] == 'radiologi') { - $cek_rad = $this->db('permintaan_radiologi')->where('no_rawat', $_POST['no_rawat'])->where('tgl_permintaan', date('Y-m-d'))->where('tgl_sampel', '<>', '0000-00-00')->where('status', 'ralan')->oneArray(); - if(!$cek_rad) { - $max_id = $this->db('permintaan_radiologi')->select(['noorder' => 'ifnull(MAX(CONVERT(RIGHT(noorder,4),signed)),0)'])->where('tgl_permintaan', date('Y-m-d'))->oneArray(); - if(empty($max_id['noorder'])) { - $max_id['noorder'] = '0000'; - } - $_next_noorder = sprintf('%04s', ($max_id['noorder'] + 1)); - $noorder = 'PR'.date('Ymd').''.$_next_noorder; - - $permintaan_rad = $this->db('permintaan_radiologi') - ->save([ - 'noorder' => $noorder, - 'no_rawat' => $_POST['no_rawat'], - 'tgl_permintaan' => $_POST['tgl_perawatan'], - 'jam_permintaan' => $_POST['jam_rawat'], - 'tgl_sampel' => '0000-00-00', - 'jam_sampel' => '00:00:00', - 'tgl_hasil' => '0000-00-00', - 'jam_hasil' => '00:00:00', - 'dokter_perujuk' => $this->core->getUserInfo('username', null, true), - 'status' => 'ralan', - 'informasi_tambahan' => $_POST['informasi_tambahan'], - 'diagnosa_klinis' => $_POST['diagnosa_klinis'] - ]); - $this->db('permintaan_pemeriksaan_radiologi') - ->save([ - 'noorder' => $noorder, - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'stts_bayar' => 'Belum' - ]); + $maxRetries = 5; + $retryCount = 0; + $success = false; + + while ($retryCount < $maxRetries && !$success) { + $this->db()->pdo()->beginTransaction(); + try { + $cek_rad = $this->db('permintaan_radiologi')->where('no_rawat', $_POST['no_rawat'])->where('tgl_permintaan', date('Y-m-d'))->where('tgl_sampel', '<>', '0000-00-00')->where('status', 'ralan')->oneArray(); + if(!$cek_rad) { + $urut = $this->db('permintaan_radiologi') + ->where('tgl_permintaan', date('Y-m-d')) + ->nextRightNumber('noorder', 4); + $noorder = 'PR' . date('Ymd') . sprintf('%04d', $urut); + + $permintaan_rad = $this->db('permintaan_radiologi') + ->save([ + 'noorder' => $noorder, + 'no_rawat' => $_POST['no_rawat'], + 'tgl_permintaan' => $_POST['tgl_perawatan'], + 'jam_permintaan' => $_POST['jam_rawat'], + 'tgl_sampel' => '0000-00-00', + 'jam_sampel' => '00:00:00', + 'tgl_hasil' => '0000-00-00', + 'jam_hasil' => '00:00:00', + 'dokter_perujuk' => $this->core->getUserInfo('username', null, true), + 'status' => 'ralan', + 'informasi_tambahan' => $_POST['informasi_tambahan'], + 'diagnosa_klinis' => $_POST['diagnosa_klinis'] + ]); + $this->db('permintaan_pemeriksaan_radiologi') + ->save([ + 'noorder' => $noorder, + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'stts_bayar' => 'Belum' + ]); - } else { - $noorder = $cek_rad['noorder']; - $this->db('permintaan_pemeriksaan_radiologi') - ->save([ - 'noorder' => $noorder, - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'stts_bayar' => 'Belum' - ]); + } else { + $noorder = $cek_rad['noorder']; + $this->db('permintaan_pemeriksaan_radiologi') + ->save([ + 'noorder' => $noorder, + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'stts_bayar' => 'Belum' + ]); + } + $this->db()->pdo()->commit(); + $success = true; + } catch (\Exception $e) { + $this->db()->pdo()->rollBack(); + if ($e->getCode() == '23000') { + $retryCount++; + usleep(100000); + continue; + } + throw $e; + } } } @@ -469,7 +618,22 @@ public function anyCopyResep() ->where('kd_bangsal', $this->settings->get('farmasi.deporalan')) ->where('no_resep', $_POST['no_resep']) ->toArray(); - echo $this->draw('copyresep.display.html', ['copy_resep' => $return]); + + $racikan = $this->db('resep_dokter_racikan') + ->where('no_resep', $_POST['no_resep']) + ->toArray(); + + foreach ($racikan as &$r) { + $r['detail'] = $this->db('resep_dokter_racikan_detail') + ->join('databarang', 'databarang.kode_brng=resep_dokter_racikan_detail.kode_brng') + ->join('gudangbarang', 'gudangbarang.kode_brng=resep_dokter_racikan_detail.kode_brng') + ->where('kd_bangsal', $this->settings->get('farmasi.deporalan')) + ->where('no_resep', $r['no_resep']) + ->where('no_racik', $r['no_racik']) + ->toArray(); + } + + echo $this->draw('copyresep.display.html', ['copy_resep' => htmlspecialchars_array($return), 'copy_resep_racikan' => htmlspecialchars_array($racikan), 'no_resep' => htmlspecialchars($_POST['no_resep'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')]); exit(); } @@ -479,31 +643,104 @@ public function postSaveCopyResep() $_POST['jml'] = json_decode($_POST['jml'], true); $_POST['aturan_pakai'] = json_decode($_POST['aturan_pakai'], true); - $no_resep = $this->core->setNoResep($_POST['tgl_perawatan']); + $maxRetries = 5; + $retryCount = 0; + $success = false; - $resep_obat = $this->db('resep_obat') - ->save([ - 'no_resep' => $no_resep, - 'tgl_perawatan' => '0000-00-00', - 'jam' => '00:00:00', - 'no_rawat' => $_POST['no_rawat'], - 'kd_dokter' => $this->core->getUserInfo('username', null, true), - 'tgl_peresepan' => $_POST['tgl_perawatan'], - 'jam_peresepan' => $_POST['jam_rawat'], - 'status' => 'ralan', - 'tgl_penyerahan' => '0000-00-00', - 'jam_penyerahan' => '00:00:00' - ]); + while ($retryCount < $maxRetries && !$success) { + $this->db()->pdo()->beginTransaction(); + try { + $no_resep = $this->core->setNoResep($_POST['tgl_perawatan']); - for ($i = 0; $i < count($_POST['kode_brng']); $i++) { - $this->db('resep_dokter') + $resep_obat = $this->db('resep_obat') ->save([ 'no_resep' => $no_resep, - 'kode_brng' => $_POST['kode_brng'][$i]['value'], - 'jml' => $_POST['jml'][$i]['value'], - 'aturan_pakai' => $_POST['aturan_pakai'][$i]['value'] + 'tgl_perawatan' => '0000-00-00', + 'jam' => '00:00:00', + 'no_rawat' => $_POST['no_rawat'], + 'kd_dokter' => $this->core->getUserInfo('username', null, true), + 'tgl_peresepan' => $_POST['tgl_perawatan'], + 'jam_peresepan' => $_POST['jam_rawat'], + 'status' => 'ralan', + 'tgl_penyerahan' => '0000-00-00', + 'jam_penyerahan' => '00:00:00' ]); + if (!empty($_POST['kode_brng'])) { + $kode_brng_count = count($_POST['kode_brng']); + for ($i = 0; $i < $kode_brng_count; $i++) { + $this->db('resep_dokter') + ->save([ + 'no_resep' => $no_resep, + 'kode_brng' => $_POST['kode_brng'][$i]['value'], + 'jml' => $_POST['jml'][$i]['value'], + 'aturan_pakai' => $_POST['aturan_pakai'][$i]['value'] + ]); + + } + } + $this->db()->pdo()->commit(); + $success = true; + } catch (\Exception $e) { + $this->db()->pdo()->rollBack(); + if ($e->getCode() == '23000') { + $retryCount++; + usleep(100000); + continue; + } + throw $e; + } + } + + if (isset($_POST['nama_racik'])) { + $_POST['nama_racik'] = json_decode($_POST['nama_racik'], true); + $_POST['kd_racik'] = json_decode($_POST['kd_racik'], true); + $_POST['jml_dr'] = json_decode($_POST['jml_dr'], true); + $_POST['aturan_pakai_racik'] = json_decode($_POST['aturan_pakai_racik'], true); + $_POST['keterangan'] = json_decode($_POST['keterangan'], true); + $_POST['no_racik'] = json_decode($_POST['no_racik'], true); + + $count_racik = count($_POST['nama_racik']); + for ($i = 0; $i < $count_racik; $i++) { + $no_racik = $_POST['no_racik'][$i]['value']; + $nama_racik = $_POST['nama_racik'][$i]['value']; + $kd_racik = $_POST['kd_racik'][$i]['value']; + $jml_dr = $_POST['jml_dr'][$i]['value']; + $aturan_pakai = $_POST['aturan_pakai_racik'][$i]['value']; + $keterangan = $_POST['keterangan'][$i]['value']; + + $this->db('resep_dokter_racikan') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'nama_racik' => $nama_racik, + 'kd_racik' => $kd_racik, + 'jml_dr' => $jml_dr, + 'aturan_pakai' => $aturan_pakai, + 'keterangan' => $keterangan + ]); + + $kode_brng_racikan = json_decode($_POST['kode_brng_racikan_'.$no_racik], true); + $jml_racikan = json_decode($_POST['jml_racikan_'.$no_racik], true); + $p1 = json_decode($_POST['p1_'.$no_racik], true); + $p2 = json_decode($_POST['p2_'.$no_racik], true); + + if(!empty($kode_brng_racikan)) { + $count_detail = count($kode_brng_racikan); + for ($j = 0; $j < $count_detail; $j++) { + $this->db('resep_dokter_racikan_detail') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'kode_brng' => $kode_brng_racikan[$j]['value'], + 'p1' => $p1[$j]['value'], + 'p2' => $p2[$j]['value'], + 'kandungan' => '0', // Default or fetch if needed + 'jml' => $jml_racikan[$j]['value'] + ]); + } + } + } } exit(); @@ -553,18 +790,23 @@ public function anyRincian() $rows = $this->db('resep_obat') ->join('dokter', 'dokter.kd_dokter=resep_obat.kd_dokter') - ->join('resep_dokter', 'resep_dokter.no_resep=resep_obat.no_resep') ->where('no_rawat', $_POST['no_rawat']) ->where('resep_obat.status', 'ralan') - ->group('resep_dokter.no_resep') + ->group('resep_obat.no_resep') + ->group('resep_obat.no_rawat') + ->group('resep_obat.kd_dokter') ->toArray(); + // Filter only records that do not have racikan + $rows = array_filter($rows, function($row) { + return $this->db('resep_dokter_racikan')->where('no_resep', $row['no_resep'])->count() == 0; + }); $resep = []; $jumlah_total_resep = 0; foreach ($rows as $row) { $row['nomor'] = $i++; $row['resep_dokter'] = $this->db('resep_dokter')->join('databarang', 'databarang.kode_brng=resep_dokter.kode_brng')->where('no_resep', $row['no_resep'])->toArray(); foreach ($row['resep_dokter'] as $value) { - $value['ralan'] = $value['jml'] * $value['ralan']; + $value['ralan'] = $value['jml'] * $value['dasar']; $jumlah_total_resep += floatval($value['ralan']); } $resep[] = $row; @@ -574,16 +816,20 @@ public function anyRincian() ->join('dokter', 'dokter.kd_dokter=resep_obat.kd_dokter') ->join('resep_dokter_racikan', 'resep_dokter_racikan.no_resep=resep_obat.no_resep') ->where('no_rawat', $_POST['no_rawat']) - ->group('resep_dokter_racikan.no_resep') ->where('resep_obat.status', 'ralan') ->toArray(); + $resep_racikan = []; $jumlah_total_resep_racikan = 0; foreach ($rows_racikan as $row) { $row['nomor'] = $i++; - $row['resep_dokter_racikan_detail'] = $this->db('resep_dokter_racikan_detail')->join('databarang', 'databarang.kode_brng=resep_dokter_racikan_detail.kode_brng')->where('no_resep', $row['no_resep'])->toArray(); + $row['resep_dokter_racikan_detail'] = $this->db('resep_dokter_racikan_detail') + ->join('databarang', 'databarang.kode_brng=resep_dokter_racikan_detail.kode_brng') + ->where('no_resep', $row['no_resep']) + ->where('no_racik', $row['no_racik']) + ->toArray(); foreach ($row['resep_dokter_racikan_detail'] as $value) { - $value['ralan'] = $value['jml'] * $value['ralan']; + $value['ralan'] = $value['jml'] * $value['dasar']; $jumlah_total_resep_racikan += floatval($value['ralan']); } $resep_racikan[] = $row; @@ -671,6 +917,19 @@ public function anyRincian() ->join('databarang', 'databarang.kode_brng=resep_dokter.kode_brng') ->where('no_resep', $row['no_resep']) ->toArray(); + + $row['resep_racikan'] = $this->db('resep_dokter_racikan') + ->where('no_resep', $row['no_resep']) + ->toArray(); + + foreach ($row['resep_racikan'] as &$racikan) { + $racikan['detail'] = $this->db('resep_dokter_racikan_detail') + ->join('databarang', 'databarang.kode_brng=resep_dokter_racikan_detail.kode_brng') + ->where('no_resep', $racikan['no_resep']) + ->where('no_racik', $racikan['no_racik']) + ->toArray(); + } + $data_resep[] = $row; } @@ -679,16 +938,16 @@ public function anyRincian() 'rawat_jl_pr' => $rawat_jl_pr, 'rawat_jl_drpr' => $rawat_jl_drpr, 'resep' => $resep, - 'resep_racikan' => $resep_racikan, + 'resep_racikan' => htmlspecialchars_array($resep_racikan), 'data_resep' => $data_resep, - 'laboratorium' => $laboratorium, - 'radiologi' => $radiologi, + 'laboratorium' => htmlspecialchars_array($laboratorium), + 'radiologi' => htmlspecialchars_array($radiologi), 'jumlah_total' => $jumlah_total, 'jumlah_total_resep' => $jumlah_total_resep, 'jumlah_total_resep_racikan' => $jumlah_total_resep_racikan, //'jumlah_total_lab' => $jumlah_total_lab, 'jumlah_total_rad' => $jumlah_total_rad, - 'no_rawat' => $_POST['no_rawat'] + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); exit(); } @@ -699,18 +958,25 @@ public function anyRincianEresep() $rows = $this->db('resep_obat') ->join('dokter', 'dokter.kd_dokter=resep_obat.kd_dokter') - ->join('resep_dokter', 'resep_dokter.no_resep=resep_obat.no_resep') ->where('no_rawat', $_POST['no_rawat']) ->where('resep_obat.status', 'ralan') - ->group('resep_dokter.no_resep') + ->group('resep_obat.no_resep') + ->group('resep_obat.no_rawat') + ->group('resep_obat.kd_dokter') ->toArray(); + + // Filter only records that do not have racikan + $rows = array_filter($rows, function($row) { + return $this->db('resep_dokter_racikan')->where('no_resep', $row['no_resep'])->count() == 0; + }); + $resep = []; $jumlah_total_resep = 0; foreach ($rows as $row) { $row['nomor'] = $i++; $row['resep_dokter'] = $this->db('resep_dokter')->join('databarang', 'databarang.kode_brng=resep_dokter.kode_brng')->where('no_resep', $row['no_resep'])->toArray(); foreach ($row['resep_dokter'] as $value) { - $value['ralan'] = $value['jml'] * $value['ralan']; + $value['ralan'] = $value['jml'] * $value['dasar']; $jumlah_total_resep += floatval($value['ralan']); } $resep[] = $row; @@ -720,16 +986,20 @@ public function anyRincianEresep() ->join('dokter', 'dokter.kd_dokter=resep_obat.kd_dokter') ->join('resep_dokter_racikan', 'resep_dokter_racikan.no_resep=resep_obat.no_resep') ->where('no_rawat', $_POST['no_rawat']) - ->group('resep_dokter_racikan.no_resep') ->where('resep_obat.status', 'ralan') ->toArray(); + $resep_racikan = []; $jumlah_total_resep_racikan = 0; foreach ($rows_racikan as $row) { $row['nomor'] = $i++; - $row['resep_dokter_racikan_detail'] = $this->db('resep_dokter_racikan_detail')->join('databarang', 'databarang.kode_brng=resep_dokter_racikan_detail.kode_brng')->where('no_resep', $row['no_resep'])->toArray(); + $row['resep_dokter_racikan_detail'] = $this->db('resep_dokter_racikan_detail') + ->join('databarang', 'databarang.kode_brng=resep_dokter_racikan_detail.kode_brng') + ->where('no_resep', $row['no_resep']) + ->where('no_racik', $row['no_racik']) + ->toArray(); foreach ($row['resep_dokter_racikan_detail'] as $value) { - $value['ralan'] = $value['jml'] * $value['ralan']; + $value['ralan'] = $value['jml'] * $value['dasar']; $jumlah_total_resep_racikan += floatval($value['ralan']); } $resep_racikan[] = $row; @@ -753,11 +1023,11 @@ public function anyRincianEresep() echo $this->draw('rincian.eresep.html', [ 'resep' => $resep, - 'resep_racikan' => $resep_racikan, + 'resep_racikan' => htmlspecialchars_array($resep_racikan), 'data_resep' => $data_resep, 'jumlah_total_resep' => $jumlah_total_resep, 'jumlah_total_resep_racikan' => $jumlah_total_resep_racikan, - 'no_rawat' => $_POST['no_rawat'] + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); exit(); } @@ -830,7 +1100,27 @@ public function anySoap() $row['nama'] = $icd10['nm_penyakit']; $diagnosa[] = $row; } - + $mapping_snomeds = $this->db('mlite_mapping_snomed_icd') + ->where('no_rawat', $_POST['no_rawat']) + ->asc('kd_penyakit') + ->toArray(); + $mapping_snomed = []; + foreach ($mapping_snomeds as $row_mapping_snomed) { + $penyakit = $this->db('penyakit')->where('kd_penyakit', $row_mapping_snomed['kd_penyakit'])->oneArray(); + $row_mapping_snomed['nm_penyakit'] = $penyakit ? $penyakit['nm_penyakit'] : ''; + $mapping_snomed[] = $row_mapping_snomed; + } + $mapping_snomeds_icd9 = $this->db('mlite_mapping_snomed_icd9') + ->where('no_rawat', $_POST['no_rawat']) + ->asc('kd_tindakan') + ->toArray(); + $mapping_snomed_icd9 = []; + foreach ($mapping_snomeds_icd9 as $row_mapping_snomed_icd9) { + $tindakan = $this->db('icd9')->where('kode', $row_mapping_snomed_icd9['kd_tindakan'])->oneArray(); + $row_mapping_snomed_icd9['nm_tindakan'] = $tindakan ? $tindakan['deskripsi_panjang'] : ''; + $mapping_snomed_icd9[] = $row_mapping_snomed_icd9; + } + $i = 1; $row['nama_petugas'] = ''; $row['departemen_petugas'] = ''; @@ -858,7 +1148,15 @@ public function anySoap() } } - echo $this->draw('soap.html', ['pemeriksaan' => $result, 'pemeriksaan_ranap' => $result_ranap, 'diagnosa' => $diagnosa, 'prosedur' => $prosedur, 'admin_mode' => $this->settings->get('settings.admin_mode')]); + echo $this->draw('soap.html', [ + 'pemeriksaan' => htmlspecialchars_array($result), + 'pemeriksaan_ranap' => htmlspecialchars_array($result_ranap), + 'diagnosa' => htmlspecialchars_array($diagnosa), + 'prosedur' => htmlspecialchars_array($prosedur), + 'mapping_snomed' => htmlspecialchars_array($mapping_snomed), + 'mapping_snomed_icd9' => htmlspecialchars_array($mapping_snomed_icd9), + 'admin_mode' => $this->settings->get('settings.admin_mode') + ]); exit(); } @@ -908,7 +1206,7 @@ public function anyKontrol() $row['nomor'] = $i++; $result[] = $row; } - echo $this->draw('kontrol.html', ['booking_registrasi' => $result]); + echo $this->draw('kontrol.html', ['booking_registrasi' => htmlspecialchars_array($result)]); exit(); } @@ -940,7 +1238,7 @@ public function postSaveKontrol() 'tanggal_periksa' => $_POST['tanggal_datang'], 'kd_dokter' => $this->core->getUserInfo('username', null, true), 'kd_poli' => $this->core->getRegPeriksaInfo('kd_poli', $_POST['no_rawat']), - 'no_reg' => $this->core->setNoBooking($this->core->getUserInfo('username', null, true), $this->core->getRegPeriksaInfo('kd_poli', $no_rawat), $_POST['tanggal_datang']), + 'no_reg' => $this->core->setNoBooking($this->core->getUserInfo('username', null, true), $this->core->getRegPeriksaInfo('kd_poli', $_POST['no_rawat']), $_POST['tanggal_datang']), 'kd_pj' => $this->core->getRegPeriksaInfo('kd_pj', $_POST['no_rawat']), 'limit_reg' => 0, 'waktu_kunjungan' => $_POST['tanggal_datang'].' '.date('H:i:s'), @@ -981,8 +1279,8 @@ public function postSaveKontrolBPJS() $data = json_encode($data); - $url = $this->api_url . 'RencanaKontrol/' . $statusUrl; - $output = BpjsService::$method($url, $data, $this->consid, $this->secretkey, $this->user_key, $tStamp); + $url = $this->api_url . 'RencanaKontrol/insert'; + $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, $tStamp); $data = json_decode($output, true); //echo $data['metaData']['message']; if ($data == NULL) { @@ -1018,13 +1316,20 @@ public function postHapusKontrol() public function anyLayanan() { + $poliklinik = $this->db('poliklinik')->select('kd_poli')->where('status', '1')->toArray(); + $poliklinik = implode(",", array_column($poliklinik, 'kd_poli')); + $poliklinik = explode(',', $poliklinik); + if($this->core->getUserInfo('role', null, true) != 'admin') { + $poliklinik = explode(',', $this->core->getUserInfo('cap', null, true)); + } $layanan = $this->db('jns_perawatan') ->where('total_byrdr', '<>', '0') ->where('status', '1') ->like('nm_perawatan', '%'.$_POST['layanan'].'%') + ->in('kd_poli', $poliklinik) ->limit(10) ->toArray(); - echo $this->draw('layanan.html', ['layanan' => $layanan]); + echo $this->draw('layanan.html', ['layanan' => htmlspecialchars_array($layanan)]); exit(); } @@ -1034,10 +1339,10 @@ public function anyObat() ->join('gudangbarang', 'gudangbarang.kode_brng=databarang.kode_brng') ->where('status', '1') ->where('gudangbarang.kd_bangsal', $this->settings->get('farmasi.deporalan')) - ->like('databarang.nama_brng', '%'.$_POST['obat'].'%') + ->like('databarang.nama_brng', '%'.htmlspecialchars($_POST['obat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('obat.html', ['obat' => $obat]); + echo $this->draw('obat.html', ['obat' => htmlspecialchars_array($obat)]); exit(); } @@ -1047,19 +1352,19 @@ public function anyObatRacikan() ->join('gudangbarang', 'gudangbarang.kode_brng=databarang.kode_brng') ->where('status', '1') ->where('gudangbarang.kd_bangsal', $this->settings->get('farmasi.deporalan')) - ->like('databarang.nama_brng', '%'.$_POST['obat'].'%') + ->like('databarang.nama_brng', '%'.htmlspecialchars($_POST['obat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('obat.racikan.html', ['obat' => $obat]); + echo $this->draw('obat.racikan.html', ['obat' => htmlspecialchars_array($obat)]); exit(); } public function anyRacikan() { $racikan = $this->db('metode_racik') - ->like('nm_racik', '%'.$_POST['racikan'].'%') + ->like('nm_racik', '%'.htmlspecialchars($_POST['racikan'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->toArray(); - echo $this->draw('racikan.html', ['racikan' => $racikan]); + echo $this->draw('racikan.html', ['racikan' => htmlspecialchars_array($racikan)]); exit(); } @@ -1067,10 +1372,10 @@ public function anyLaboratorium() { $laboratorium = $this->db('jns_perawatan_lab') ->where('status', '1') - ->like('nm_perawatan', '%'.$_POST['laboratorium'].'%') + ->like('nm_perawatan', '%'.htmlspecialchars($_POST['laboratorium'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('laboratorium.html', ['laboratorium' => $laboratorium]); + echo $this->draw('laboratorium.html', ['laboratorium' => htmlspecialchars_array($laboratorium)]); exit(); } @@ -1078,10 +1383,10 @@ public function anyRadiologi() { $radiologi = $this->db('jns_perawatan_radiologi') ->where('status', '1') - ->like('nm_perawatan', '%'.$_POST['radiologi'].'%') + ->like('nm_perawatan', '%'.htmlspecialchars($_POST['radiologi'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('radiologi.html', ['radiologi' => $radiologi]); + echo $this->draw('radiologi.html', ['radiologi' => htmlspecialchars_array($radiologi)]); exit(); } @@ -1095,7 +1400,7 @@ public function postAturanPakai() $output = ''; if(count($rows)){ foreach ($rows as $row) { - $output .= ''; + $output .= ''; } } echo $output; @@ -1115,7 +1420,7 @@ public function postProviderList() $output = ''; if(count($rows)){ foreach ($rows as $row) { - $output .= ''; + $output .= ''; } } echo $output; @@ -1135,7 +1440,7 @@ public function postProviderList2() $output = ''; if(count($rows)){ foreach ($rows as $row) { - $output .= ''; + $output .= ''; } } echo $output; @@ -1147,16 +1452,19 @@ public function postProviderList2() public function getAjax() { - header('Content-type: text/html'); + header('Content-type: application/json'); $show = isset($_GET['show']) ? $_GET['show'] : ""; + $array = []; + $handled = true; switch($show){ default: + $handled = false; break; case "databarang": $rows = $this->db('databarang') ->join('gudangbarang', 'gudangbarang.kode_brng=databarang.kode_brng') ->where('status', '1') - ->where('stok', '>', '10') + ->where('stok', '>', '1') ->where('gudangbarang.kd_bangsal', $this->settings->get('farmasi.deporalan')) ->like('databarang.nama_brng', '%'.$_GET['nama_brng'].'%') ->limit(10) @@ -1168,7 +1476,7 @@ public function getAjax() 'nama_brng' => $row['nama_brng'] ); } - echo json_encode($array, true); + echo json_encode(htmlspecialchars_array($array), true); break; case "aturan_pakai": $rows = $this->db('master_aturan_pakai')->like('aturan', '%'.$_GET['aturan'].'%')->toArray(); @@ -1177,7 +1485,7 @@ public function getAjax() 'aturan' => $row['aturan'] ); } - echo json_encode($array, true); + echo json_encode(htmlspecialchars_array($array), true); break; case "jns_perawatan": $rows = $this->db('jns_perawatan')->like('nm_perawatan', '%'.$_GET['nm_perawatan'].'%')->toArray(); @@ -1187,7 +1495,7 @@ public function getAjax() 'nm_perawatan' => $row['nm_perawatan'] ); } - echo json_encode($array, true); + echo json_encode(htmlspecialchars_array($array), true); break; case "jns_perawatan_lab": $rows = $this->db('jns_perawatan_lab')->like('nm_perawatan', '%'.$_GET['nm_perawatan'].'%')->toArray(); @@ -1197,7 +1505,7 @@ public function getAjax() 'nm_perawatan' => $row['nm_perawatan'] ); } - echo json_encode($array, true); + echo json_encode(htmlspecialchars_array($array), true); break; case "jns_perawatan_radiologi": $rows = $this->db('jns_perawatan_radiologi')->like('nm_perawatan', '%'.$_GET['nm_perawatan'].'%')->toArray(); @@ -1207,36 +1515,58 @@ public function getAjax() 'nm_perawatan' => $row['nm_perawatan'] ); } - echo json_encode($array, true); + echo json_encode(htmlspecialchars_array($array), true); break; case "icd10": $phrase = ''; if(isset($_GET['s'])) $phrase = $_GET['s']; - $rows = $this->data_icd('icd10')->like('kode', '%'.$phrase.'%')->orLike('nama', '%'.$phrase.'%')->toArray(); + $rows = $this->db('penyakit')->like('kd_penyakit', '%'.$phrase.'%')->orLike('nm_penyakit', '%'.$phrase.'%')->toArray(); foreach ($rows as $row) { $array[] = array( - 'kd_penyakit' => $row['kode'], - 'nm_penyakit' => $row['nama'] + 'kd_penyakit' => $row['kd_penyakit'], + 'nm_penyakit' => $row['nm_penyakit'] ); } - echo json_encode($array, true); + echo json_encode(htmlspecialchars_array($array), true); break; case "icd9": $phrase = ''; if(isset($_GET['s'])) $phrase = $_GET['s']; - $rows = $this->data_icd('icd9')->like('kode', '%'.$phrase.'%')->orLike('nama', '%'.$phrase.'%')->toArray(); + $rows = $this->db('icd9')->like('kode', '%'.$phrase.'%')->orLike('deskripsi_panjang', '%'.$phrase.'%')->toArray(); foreach ($rows as $row) { $array[] = array( 'kode' => $row['kode'], - 'deskripsi_panjang' => $row['nama'] + 'deskripsi_panjang' => $row['deskripsi_panjang'] ); } - echo json_encode($array, true); + echo json_encode(htmlspecialchars_array($array), true); break; + case "snomed": + $phrase = ''; + if(isset($_GET['s'])) + $phrase = $_GET['s']; + + $rows = $this->db('mlite_snomed') + ->like('kode', '%'.$phrase.'%') + ->orLike('istilah', '%'.$phrase.'%') + ->limit(30) + ->toArray(); + foreach ($rows as $row) { + $array[] = array( + 'kode' => $row['kode'], + 'istilah' => $row['istilah'], + 'text' => $row['kode'] . ' - ' . $row['istilah'] + ); + } + echo json_encode(htmlspecialchars_array($array), true); + break; + } + if (!$handled) { + echo json_encode([], true); } exit(); } @@ -1248,37 +1578,49 @@ public function getEresep($no_rawat) $rows = $this->db('resep_obat') ->join('dokter', 'dokter.kd_dokter=resep_obat.kd_dokter') - ->join('resep_dokter', 'resep_dokter.no_resep=resep_obat.no_resep') ->where('no_rawat', $no_rawat) ->where('resep_obat.status', 'ralan') - ->group('resep_dokter.no_resep') + ->group('resep_obat.no_resep') + ->group('resep_obat.no_rawat') + ->group('resep_obat.kd_dokter') ->toArray(); + + // Filter only records that do not have racikan + $rows = array_filter($rows, function($row) { + return $this->db('resep_dokter_racikan')->where('no_resep', $row['no_resep'])->count() == 0; + }); + $resep = []; $jumlah_total_resep = 0; foreach ($rows as $row) { $row['nomor'] = $i++; $row['resep_dokter'] = $this->db('resep_dokter')->join('databarang', 'databarang.kode_brng=resep_dokter.kode_brng')->where('no_resep', $row['no_resep'])->toArray(); foreach ($row['resep_dokter'] as $value) { - $value['ralan'] = $value['jml'] * $value['ralan']; + $value['ralan'] = $value['jml'] * $value['dasar']; $jumlah_total_resep += floatval($value['ralan']); } $resep[] = $row; } + // Get resep_racikan records that have racikan data $rows_racikan = $this->db('resep_obat') ->join('dokter', 'dokter.kd_dokter=resep_obat.kd_dokter') ->join('resep_dokter_racikan', 'resep_dokter_racikan.no_resep=resep_obat.no_resep') ->where('no_rawat', $no_rawat) - ->group('resep_dokter_racikan.no_resep') ->where('resep_obat.status', 'ralan') ->toArray(); + $resep_racikan = []; $jumlah_total_resep_racikan = 0; foreach ($rows_racikan as $row) { $row['nomor'] = $i++; - $row['resep_dokter_racikan_detail'] = $this->db('resep_dokter_racikan_detail')->join('databarang', 'databarang.kode_brng=resep_dokter_racikan_detail.kode_brng')->where('no_resep', $row['no_resep'])->toArray(); + $row['resep_dokter_racikan_detail'] = $this->db('resep_dokter_racikan_detail') + ->join('databarang', 'databarang.kode_brng=resep_dokter_racikan_detail.kode_brng') + ->where('no_resep', $row['no_resep']) + ->where('no_racik', $row['no_racik']) + ->toArray(); foreach ($row['resep_dokter_racikan_detail'] as $value) { - $value['ralan'] = $value['jml'] * $value['ralan']; + $value['ralan'] = $value['jml'] * $value['dasar']; $jumlah_total_resep_racikan += floatval($value['ralan']); } $resep_racikan[] = $row; @@ -1302,7 +1644,7 @@ public function getEresep($no_rawat) echo $this->draw('eresep.html', [ 'resep' => $resep, - 'resep_racikan' => $resep_racikan, + 'resep_racikan' => htmlspecialchars_array($resep_racikan), 'data_resep' => $data_resep, 'jumlah_total_resep' => $jumlah_total_resep, 'jumlah_total_resep_racikan' => $jumlah_total_resep_racikan, @@ -1373,8 +1715,8 @@ public function getOdontogram($no_rkm_medis) $odt['85'] = $this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->where('pemeriksaan', 'gg_85')->desc('tgl_input')->limit(1)->oneArray(); echo $this->draw('odontogram.html', [ - 'odontogram' => $this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->toArray(), - 'ohis' => $this->db('mlite_ohis')->where('no_rkm_medis', $no_rkm_medis)->toArray(), + 'odontogram' => htmlspecialchars_array($this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->toArray()), + 'ohis' => htmlspecialchars_array($this->db('mlite_ohis')->where('no_rkm_medis', $no_rkm_medis)->toArray()), 'odt' => $odt ]); exit(); @@ -1382,7 +1724,7 @@ public function getOdontogram($no_rkm_medis) public function getOdontogramTampil($no_rkm_medis) { - echo $this->draw('odontogram.tampil.html', ['odontogram' => $this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->toArray()]); + echo $this->draw('odontogram.tampil.html', ['odontogram' => htmlspecialchars_array($this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->toArray())]); exit(); } @@ -1410,7 +1752,7 @@ public function postOdontogramDelete() public function getOhisTampil($no_rkm_medis) { - echo $this->draw('ohis.tampil.html', ['ohis' => $this->db('mlite_ohis')->where('no_rkm_medis', $no_rkm_medis)->toArray()]); + echo $this->draw('ohis.tampil.html', ['ohis' => htmlspecialchars_array($this->db('mlite_ohis')->where('no_rkm_medis', $no_rkm_medis)->toArray())]); exit(); } @@ -1454,7 +1796,7 @@ public function getResume($no_rawat) $data_resume['prosedur'] = $this->db('prosedur_pasien')->join('icd9', 'icd9.kode=prosedur_pasien.kode')->where('no_rawat', revertNoRawat($no_rawat))->where('prioritas', 1)->where('status', 'Ralan')->oneArray(); echo $this->draw('resume.html', [ 'reg_periksa' => $this->db('reg_periksa')->where('no_rawat', revertNoRawat($no_rawat))->oneArray(), - 'resume_pasien' => $this->db('resume_pasien')->where('no_rawat', revertNoRawat($no_rawat))->join('dokter', 'dokter.kd_dokter=resume_pasien.kd_dokter')->oneArray(), + 'resume_pasien' => htmlspecialchars_array($this->db('resume_pasien')->where('no_rawat', revertNoRawat($no_rawat))->join('dokter', 'dokter.kd_dokter=resume_pasien.kd_dokter')->oneArray()), 'data_resume' => $data_resume ]); exit(); @@ -1462,7 +1804,7 @@ public function getResume($no_rawat) public function getResumeTampil($no_rawat) { - echo $this->draw('resume.tampil.html', ['resume_pasien' => $this->db('resume_pasien')->where('no_rawat', revertNoRawat($no_rawat))->join('dokter', 'dokter.kd_dokter=resume_pasien.kd_dokter')->oneArray()]); + echo $this->draw('resume.tampil.html', ['resume_pasien' => htmlspecialchars_array($this->db('resume_pasien')->where('no_rawat', revertNoRawat($no_rawat))->join('dokter', 'dokter.kd_dokter=resume_pasien.kd_dokter')->oneArray())]); exit(); } @@ -1533,12 +1875,108 @@ public function postResumeSave() exit(); } + public function postResumeDelete() + { + $kd_dokter = $this->core->getUserInfo('username', $_SESSION['mlite_user']); + + $this->db('resume_pasien') + ->where('no_rawat', $_POST['no_rawat']) + ->where('kd_dokter', $kd_dokter) + ->delete(); + + exit(); + } + public function getMedisRalan($no_rawat) { $data_medisRalan['pemeriksaan_ralan'] = $this->db('pemeriksaan_ralan')->where('no_rawat', revertNoRawat($no_rawat))->oneArray(); + + // Get existing penilaian_medis_ralan data + $penilaian_medis_ralan = $this->db('penilaian_medis_ralan') + ->where('no_rawat', revertNoRawat($no_rawat)) + ->join('dokter', 'dokter.kd_dokter=penilaian_medis_ralan.kd_dokter') + ->oneArray(); + + // If no penilaian_medis_ralan data exists, use fallback from pemeriksaan_ralan + if (empty($penilaian_medis_ralan)) { + // Get latest pemeriksaan_ralan data for fallback + $pemeriksaan_fallback = $this->db('pemeriksaan_ralan') + ->where('no_rawat', revertNoRawat($no_rawat)) + ->desc('tgl_perawatan') + ->desc('jam_rawat') + ->oneArray(); + + if (!empty($pemeriksaan_fallback)) { + // Get current user (dokter) info + $current_dokter = $this->core->getUserInfo('username', $_SESSION['mlite_user']); + $dokter_info = $this->db('dokter')->where('kd_dokter', $current_dokter)->oneArray(); + + // Calculate BMI if height and weight are available + $bmi = ''; + if (!empty($pemeriksaan_fallback['tinggi']) && !empty($pemeriksaan_fallback['berat']) && + $pemeriksaan_fallback['tinggi'] > 0) { + $height_m = $pemeriksaan_fallback['tinggi'] / 100; + $bmi = round($pemeriksaan_fallback['berat'] / ($height_m * $height_m), 2); + } + + // Create fallback data structure matching penilaian_medis_ralan + $penilaian_medis_ralan = [ + 'no_rawat' => revertNoRawat($no_rawat), + 'kd_dokter' => $current_dokter, + 'tanggal' => date('Y-m-d H:i:s'), + 'anamnesis' => '', + 'hubungan' => '', + 'keluhan_utama' => $pemeriksaan_fallback['keluhan'] ?? '', + 'rps' => '', + 'rpd' => '', + 'rpk' => '', + 'rpo' => '', + 'alergi' => $pemeriksaan_fallback['alergi'] ?? '', + 'keadaan' => '', + 'gcs' => $pemeriksaan_fallback['gcs'] ?? '', + 'kesadaran' => $pemeriksaan_fallback['kesadaran'] ?? '', + 'td' => $pemeriksaan_fallback['tensi'] ?? '', + 'nadi' => $pemeriksaan_fallback['nadi'] ?? '', + 'rr' => $pemeriksaan_fallback['respirasi'] ?? '', + 'suhu' => $pemeriksaan_fallback['suhu_tubuh'] ?? '', + 'spo' => $pemeriksaan_fallback['spo2'] ?? '', + 'bb' => $pemeriksaan_fallback['berat'] ?? '', + 'tb' => $pemeriksaan_fallback['tinggi'] ?? '', + 'kepala' => '', + 'gigi' => '', + 'tht' => '', + 'thoraks' => '', + 'abdomen' => '', + 'genital' => '', + 'ekstremitas' => '', + 'kulit' => '', + 'ket_fisik' => '', + 'ket_lokalis' => '', + 'penunjang' => '', + 'diagnosis' => '', + 'tata' => '', + 'konsulrujuk' => '', + // Add dokter info for join compatibility + 'nm_dokter' => htmlspecialchars_array($dokter_info)['nm_dokter'] ?? '', + 'jk' => htmlspecialchars_array($dokter_info)['jk'] ?? '', + 'tmp_lahir' => htmlspecialchars_array($dokter_info)['tmp_lahir'] ?? '', + 'tgl_lahir' => htmlspecialchars_array($dokter_info)['tgl_lahir'] ?? '', + 'gol_drh' => htmlspecialchars_array($dokter_info)['gol_drh'] ?? '', + 'agama' => htmlspecialchars_array($dokter_info)['agama'] ?? '', + 'almt_tgl' => htmlspecialchars_array($dokter_info)['almt_tgl'] ?? '', + 'no_telp' => htmlspecialchars_array($dokter_info)['no_telp'] ?? '', + 'stts_nikah' => htmlspecialchars_array($dokter_info)['stts_nikah'] ?? '', + 'kd_sps' => htmlspecialchars_array($dokter_info)['kd_sps'] ?? '', + 'alumni' => htmlspecialchars_array($dokter_info)['alumni'] ?? '', + 'no_ijn_praktek' => htmlspecialchars_array($dokter_info)['no_ijn_praktek'] ?? '', + 'status' => htmlspecialchars_array($dokter_info)['status'] ?? '' + ]; + } + } + echo $this->draw('medis.ralan.html', [ 'reg_periksa' => $this->db('reg_periksa')->where('no_rawat', revertNoRawat($no_rawat))->oneArray(), - 'penilaian_medis_ralan' => $this->db('penilaian_medis_ralan')->where('no_rawat', revertNoRawat($no_rawat))->join('dokter', 'dokter.kd_dokter=penilaian_medis_ralan.kd_dokter')->oneArray(), + 'penilaian_medis_ralan' => $penilaian_medis_ralan, 'pasien' => $this->db('pasien')->where('no_rawat', revertNoRawat($no_rawat))->join('reg_periksa','pasien.no_rkm_medis=reg_periksa.no_rkm_medis')->oneArray(), 'dokter' => $this->db('dokter')->where('no_rawat', revertNoRawat($no_rawat))->join('reg_periksa','dokter.kd_dokter=reg_periksa.kd_dokter')->oneArray(), 'data_medisRalan' => $data_medisRalan @@ -1548,15 +1986,56 @@ public function getMedisRalan($no_rawat) public function getMedisRalanTampil($no_rawat) { - echo $this->draw('medis.ralan.tampil.html', ['penilaian_medis_ralan' => $this->db('penilaian_medis_ralan')->where('no_rawat', revertNoRawat($no_rawat))->join('dokter', 'dokter.kd_dokter=penilaian_medis_ralan.kd_dokter')->oneArray()]); + echo $this->draw('medis.ralan.tampil.html', ['penilaian_medis_ralan' => htmlspecialchars_array($this->db('penilaian_medis_ralan')->where('no_rawat', revertNoRawat($no_rawat))->join('dokter', 'dokter.kd_dokter=penilaian_medis_ralan.kd_dokter')->toArray())]); exit(); } public function postMedisRalan() { $_POST['kd_dokter'] = $this->core->getUserInfo('username', $_SESSION['mlite_user']); - - if($this->db('penilaian_medis_ralan')->where('no_rawat', $_POST['no_rawat'])->where('kd_dokter', $_POST['kd_dokter'])->oneArray()) { + + // Handle edit mode + if(isset($_POST['mode']) && $_POST['mode'] == 'edit' && isset($_POST['original_tanggal'])) { + $this->db('penilaian_medis_ralan') + ->where('no_rawat', $_POST['no_rawat']) + ->where('tanggal', $_POST['original_tanggal']) + ->save([ + 'kd_dokter' => $_POST['kd_dokter'], + 'tanggal' => $_POST['tanggal'], + 'anamnesis' => $_POST['anamnesis'], + 'hubungan' => $_POST['hubungan'], + 'keluhan_utama' => $_POST['keluhan_utama'], + 'rps' => $_POST['rps'], + 'rpd' => $_POST['rpd'], + 'rpk' => $_POST['rpk'], + 'rpo' => $_POST['rpo'], + 'alergi' => $_POST['alergi'], + 'keadaan' => $_POST['keadaan'], + 'gcs' => $_POST['gcs'], + 'kesadaran' => $_POST['kesadaran'], + 'td' => $_POST['td'], + 'nadi' => $_POST['nadi'], + 'rr' => $_POST['rr'], + 'suhu' => $_POST['suhu'], + 'spo' => $_POST['spo'], + 'bb' => $_POST['bb'], + 'tb' => $_POST['tb'], + 'kepala' => $_POST['kepala'], + 'gigi' => $_POST['gigi'], + 'tht' => $_POST['tht'], + 'thoraks' => $_POST['thoraks'], + 'abdomen' => $_POST['abdomen'], + 'genital' => $_POST['genital'], + 'ekstremitas' => $_POST['ekstremitas'], + 'kulit' => $_POST['kulit'], + 'ket_fisik' => $_POST['ket_fisik'], + 'ket_lokalis' => $_POST['ket_lokalis'], + 'penunjang' => $_POST['penunjang'] , + 'diagnosis' => $_POST['diagnosis'], + 'tata' => $_POST['tata'], + 'konsulrujuk' => $_POST['konsulrujuk'] + ]); + } else if($this->db('penilaian_medis_ralan')->where('no_rawat', $_POST['no_rawat'])->where('kd_dokter', $_POST['kd_dokter'])->oneArray()) { $this->db('penilaian_medis_ralan') ->where('no_rawat', $_POST['no_rawat']) ->save([ @@ -1637,15 +2116,32 @@ public function postMedisRalan() exit(); } + public function postHapusmedisralan() + { + $this->db('penilaian_medis_ralan') + ->where('no_rawat', $_POST['no_rawat']) + ->where('tanggal', $_POST['tanggal']) + ->delete(); + exit(); + } + public function getSettings() { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'dokter_ralan', 'manage'])); + } $this->assign['title'] = 'Pengaturan Modul Dokter Ralan'; $this->assign['dokter_ralan'] = htmlspecialchars_array($this->settings('dokter_ralan')); - return $this->draw('settings.html', ['settings' => $this->assign]); + return $this->draw('settings.html', ['settings' => htmlspecialchars_array($this->assign)]); } public function postSaveSettings() { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'dokter_ralan', 'manage'])); + } foreach ($_POST['dokter_ralan'] as $key => $val) { $this->settings('dokter_ralan', $key, $val); } @@ -1653,6 +2149,639 @@ public function postSaveSettings() redirect(url([ADMIN, 'dokter_ralan', 'settings'])); } + public function getSuratRujukan($no_rawat) + { + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', revertNoRawat($no_rawat)); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', revertNoRawat($no_rawat)); + $pasien = $this->db('pasien') + ->join('kelurahan', 'kelurahan.kd_kel=pasien.kd_kel') + ->join('kecamatan', 'kecamatan.kd_kec=pasien.kd_kec') + ->join('kabupaten', 'kabupaten.kd_kab=pasien.kd_kab') + ->join('propinsi', 'propinsi.kd_prop=pasien.kd_prop') + ->where('no_rkm_medis', $no_rkm_medis) + ->oneArray(); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $sip_dokter = $this->core->getDokterInfo('no_ijn_praktek', $kd_dokter); + $this->tpl->set('pasien', $this->tpl->noParse_array(htmlspecialchars_array($pasien))); + $this->tpl->set('nm_dokter', $nm_dokter); + $this->tpl->set('sip_dokter', $sip_dokter); + $this->tpl->set('no_rawat', revertNoRawat($no_rawat)); + $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($this->settings('settings')))); + $this->tpl->set('surat', $this->db('mlite_surat_rujukan')->where('no_rawat', revertNoRawat($no_rawat))->oneArray()); + $this->tpl->set('nomor_surat', $this->settings->get('settings.set_nomor_surat').'/'.$this->settings->get('settings.prefix_surat').'/'.getRomawi(date('m')).'/'.date('Y')); + echo $this->tpl->draw(MODULES.'/dokter_ralan/view/admin/surat.rujukan.html', true); + exit(); + } + + public function getSuratSehat($no_rawat) + { + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', revertNoRawat($no_rawat)); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', revertNoRawat($no_rawat)); + $pasien = $this->db('pasien') + ->join('kelurahan', 'kelurahan.kd_kel=pasien.kd_kel') + ->join('kecamatan', 'kecamatan.kd_kec=pasien.kd_kec') + ->join('kabupaten', 'kabupaten.kd_kab=pasien.kd_kab') + ->join('propinsi', 'propinsi.kd_prop=pasien.kd_prop') + ->where('no_rkm_medis', $no_rkm_medis) + ->oneArray(); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $sip_dokter = $this->core->getDokterInfo('no_ijn_praktek', $kd_dokter); + $this->tpl->set('pasien', $this->tpl->noParse_array(htmlspecialchars_array($pasien))); + $this->tpl->set('nm_dokter', $nm_dokter); + $this->tpl->set('sip_dokter', $sip_dokter); + $this->tpl->set('no_rawat', revertNoRawat($no_rawat)); + $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($this->settings('settings')))); + $this->tpl->set('surat', $this->db('mlite_surat_sehat')->where('no_rawat', revertNoRawat($no_rawat))->oneArray()); + $this->tpl->set('nomor_surat', $this->settings->get('settings.set_nomor_surat').'/'.$this->settings->get('settings.prefix_surat').'/'.getRomawi(date('m')).'/'.date('Y')); + echo $this->tpl->draw(MODULES.'/dokter_ralan/view/admin/surat.sehat.html', true); + exit(); + } + + public function getSuratSakit($no_rawat) + { + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', revertNoRawat($no_rawat)); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', revertNoRawat($no_rawat)); + $pasien = $this->db('pasien') + ->join('kelurahan', 'kelurahan.kd_kel=pasien.kd_kel') + ->join('kecamatan', 'kecamatan.kd_kec=pasien.kd_kec') + ->join('kabupaten', 'kabupaten.kd_kab=pasien.kd_kab') + ->join('propinsi', 'propinsi.kd_prop=pasien.kd_prop') + ->where('no_rkm_medis', $no_rkm_medis) + ->oneArray(); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $sip_dokter = $this->core->getDokterInfo('no_ijn_praktek', $kd_dokter); + $this->tpl->set('pasien', $this->tpl->noParse_array(htmlspecialchars_array($pasien))); + $this->tpl->set('nm_dokter', $nm_dokter); + $this->tpl->set('sip_dokter', $sip_dokter); + $this->tpl->set('no_rawat', revertNoRawat($no_rawat)); + $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($this->settings('settings')))); + $this->tpl->set('surat', $this->db('mlite_surat_sakit')->where('no_rawat', revertNoRawat($no_rawat))->oneArray()); + $this->tpl->set('nomor_surat', $this->settings->get('settings.set_nomor_surat').'/'.$this->settings->get('settings.prefix_surat').'/'.getRomawi(date('m')).'/'.date('Y')); + echo $this->tpl->draw(MODULES.'/dokter_ralan/view/admin/surat.sakit.html', true); + exit(); + } + + public function postSimpanSuratSakit() + { + $query = $this->db('mlite_surat_sakit')->save([ + 'nomor_surat' => $_POST['nomor_surat'], + 'no_rawat' => $_POST['no_rawat'], + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'nm_pasien' => $_POST['nm_pasien'], + 'tgl_lahir' => $_POST['tgl_lahir'], + 'umur' => $_POST['umur'], + 'jk' => $_POST['jk'], + 'alamat' => $_POST['alamat'], + 'keadaan' => $_POST['keadaan'], + 'diagnosa' => $_POST['diagnosa'], + 'lama_angka' => $_POST['lama_angka'], + 'lama_huruf' => $_POST['lama_huruf'], + 'tanggal_mulai' => $_POST['tanggal_mulai'], + 'tanggal_selesai' => $_POST['tanggal_selesai'], + 'dokter' => $_POST['dokter'], + 'petugas' => $_POST['petugas'] + ]); + + if($query) { + $nomor_surat = ltrim($this->settings->get('settings.set_nomor_surat')); + $nomor_surat = sprintf('%03s', ($nomor_surat + 1)); + $this->db('mlite_settings')->where('module', 'settings')->where('field', 'set_nomor_surat')->set('value', $nomor_surat)->update(); + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = htmlspecialchars($query->errorInfo()['2'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + echo json_encode(htmlspecialchars_array($data)); + } + + exit(); + } + + public function postSimpanSuratSehat() + { + $query = $this->db('mlite_surat_sehat')->save([ + 'nomor_surat' => $_POST['nomor_surat'], + 'no_rawat' => $_POST['no_rawat'], + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'nm_pasien' => $_POST['nm_pasien'], + 'tgl_lahir' => $_POST['tgl_lahir'], + 'umur' => $_POST['umur'], + 'jk' => $_POST['jk'], + 'alamat' => $_POST['alamat'], + 'tanggal' => $_POST['tanggal'], + 'berat_badan' => $_POST['berat_badan'], + 'tinggi_badan' => $_POST['tinggi_badan'], + 'tensi' => $_POST['tensi'], + 'gol_darah' => $_POST['gol_darah'], + 'riwayat_penyakit' => $_POST['riwayat_penyakit'], + 'keperluan' => $_POST['keperluan'], + 'dokter' => $_POST['dokter'], + 'petugas' => $_POST['petugas'] + ]); + + if($query) { + $nomor_surat = ltrim($this->settings->get('settings.set_nomor_surat')); + $nomor_surat = sprintf('%03s', ($nomor_surat + 1)); + $this->db('mlite_settings')->where('module', 'settings')->where('field', 'set_nomor_surat')->set('value', $nomor_surat)->update(); + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = htmlspecialchars($query->errorInfo()['2'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + echo json_encode(htmlspecialchars_array($data)); + } + + exit(); + } + + public function postSimpanSuratRujukan() + { + $query = $this->db('mlite_surat_rujukan')->save([ + 'nomor_surat' => $_POST['nomor_surat'], + 'no_rawat' => $_POST['no_rawat'], + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'nm_pasien' => $_POST['nm_pasien'], + 'tgl_lahir' => $_POST['tgl_lahir'], + 'umur' => $_POST['umur'], + 'jk' => $_POST['jk'], + 'alamat' => $_POST['alamat'], + 'kepada' => $_POST['kepada'], + 'di' => $_POST['di'], + 'anamnesa' => $_POST['anamnesa'], + 'pemeriksaan_fisik' => $_POST['pemeriksaan_fisik'], + 'pemeriksaan_penunjang' => $_POST['pemeriksaan_penunjang'], + 'diagnosa' => $_POST['diagnosa'], + 'terapi' => $_POST['terapi'], + 'alasan_dirujuk' => $_POST['alasan_dirujuk'], + 'dokter' => $_POST['dokter'], + 'petugas' => $_POST['petugas'] + ]); + + if($query) { + $nomor_surat = ltrim($this->settings->get('settings.set_nomor_surat')); + $nomor_surat = sprintf('%03s', ($nomor_surat + 1)); + $this->db('mlite_settings')->where('module', 'settings')->where('field', 'set_nomor_surat')->set('value', $nomor_surat)->update(); + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = htmlspecialchars($query->errorInfo()['2'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + echo json_encode(htmlspecialchars_array($data)); + } + + exit(); + } + + public function postSaveICD10() + { + $snomed_concept_id = trim((string) ($_POST['snomed_concept_id'] ?? '')); + $snomed_term = trim((string) ($_POST['snomed_term'] ?? '')); + $snomed_term = strip_tags($snomed_term); + $snomed_term = str_replace(["\r", "\n", "\t"], ' ', $snomed_term); + $snomed_term = preg_replace('/\s+/', ' ', $snomed_term); + $snomed_term = trim(mb_substr($snomed_term, 0, 255)); + $_POST['status_penyakit'] = 'Baru'; + unset($_POST['nama'], $_POST['snomed_concept_id'], $_POST['snomed_term']); + $this->db('diagnosa_pasien')->save($_POST); + if ($snomed_concept_id !== '' && $snomed_term !== '' && $this->isValidSnomedConceptId($snomed_concept_id)) { + $this->saveSnomedMappingICD( + $_POST['no_rawat'], + $_POST['kd_penyakit'], + $snomed_concept_id, + $snomed_term, + $_POST['status_penyakit'] + ); + } + exit(); + } + + public function postHapusICD10() + { + $diagnosa = $this->db('diagnosa_pasien') + ->where('no_rawat', $_POST['no_rawat']) + ->where('prioritas', $_POST['prioritas']) + ->oneArray(); + $this->db('diagnosa_pasien')->where('no_rawat', $_POST['no_rawat'])->where('prioritas', $_POST['prioritas'])->delete(); + if ($diagnosa) { + $masih_ada_diagnosa = $this->db('diagnosa_pasien') + ->where('no_rawat', $_POST['no_rawat']) + ->where('kd_penyakit', $diagnosa['kd_penyakit']) + ->oneArray(); + if (!$masih_ada_diagnosa) { + $this->db('mlite_mapping_snomed_icd') + ->where('no_rawat', $_POST['no_rawat']) + ->where('kd_penyakit', $diagnosa['kd_penyakit']) + ->delete(); + } + } + exit(); + } + + public function postICD10() + { + + if(isset($_POST["query"])){ + $output = ''; + $key = "%".$_POST["query"]."%"; + $rows = $this->db('penyakit')->like('kd_penyakit', $key)->orLike('nm_penyakit', $key)->asc('kd_penyakit')->limit(10)->toArray(); + $output = ''; + if(count($rows)){ + foreach ($rows as $row) { + $output .= ''; + } + } else { + $output .= ''; + } + echo $output; + } + + exit(); + + } + + public function postSaveICD9() + { + $no_rawat = trim((string) ($_POST['no_rawat'] ?? '')); + $kd_tindakan = trim((string) ($_POST['kode'] ?? '')); + $snomed_concept_id = trim((string) ($_POST['snomed_concept_id'] ?? '')); + $snomed_term = trim((string) ($_POST['snomed_term'] ?? '')); + $snomed_term = strip_tags($snomed_term); + $snomed_term = str_replace(["\r", "\n", "\t"], ' ', $snomed_term); + $snomed_term = preg_replace('/\s+/', ' ', $snomed_term); + $snomed_term = trim(mb_substr($snomed_term, 0, 255)); + unset($_POST['nama'], $_POST['snomed_concept_id'], $_POST['snomed_term']); + $this->db('prosedur_pasien')->save($_POST); + if ($no_rawat !== '' && $kd_tindakan !== '' && $snomed_concept_id !== '' && $snomed_term !== '' && $this->isValidSnomedConceptId($snomed_concept_id)) { + $this->saveSnomedMappingICD9( + $no_rawat, + $kd_tindakan, + $snomed_concept_id, + $snomed_term + ); + } + exit(); + } + + public function postHapusICD9() + { + $prosedur = $this->db('prosedur_pasien') + ->where('no_rawat', $_POST['no_rawat']) + ->where('prioritas', $_POST['prioritas']) + ->oneArray(); + $this->db('prosedur_pasien')->where('no_rawat', $_POST['no_rawat'])->where('prioritas', $_POST['prioritas'])->delete(); + if ($prosedur) { + $masih_ada_prosedur = $this->db('prosedur_pasien') + ->where('no_rawat', $_POST['no_rawat']) + ->where('kode', $prosedur['kode']) + ->oneArray(); + if (!$masih_ada_prosedur) { + $this->db('mlite_mapping_snomed_icd9') + ->where('no_rawat', $_POST['no_rawat']) + ->where('kd_tindakan', $prosedur['kode']) + ->delete(); + } + } + exit(); + } + + public function postICD9() + { + + if(isset($_POST["query"])){ + $output = ''; + $key = "%".$_POST["query"]."%"; + $rows = $this->db('icd9')->like('kode', $key)->orLike('deskripsi_panjang', $key)->asc('kode')->limit(10)->toArray(); + $output = ''; + if(count($rows)){ + foreach ($rows as $row) { + $output .= ''; + } + } else { + $output .= ''; + } + echo $output; + } + + exit(); + + } + + public function getDisplayICD() + { + $no_rawat = $_GET['no_rawat']; + $prosedurs = $this->db('prosedur_pasien') + ->where('no_rawat', $no_rawat) + ->asc('prioritas') + ->toArray(); + $prosedur = []; + foreach ($prosedurs as $row_prosedur) { + $icd9 = $this->db('icd9')->where('kode', $row_prosedur['kode'])->oneArray(); + $row_prosedur['nama'] = $icd9['deskripsi_panjang']; + $prosedur[] = $row_prosedur; + } + + $diagnosas = $this->db('diagnosa_pasien') + ->where('no_rawat', $no_rawat) + ->asc('prioritas') + ->toArray(); + $diagnosa = []; + foreach ($diagnosas as $row_diagnosa) { + $icd10 = $this->db('penyakit')->where('kd_penyakit', $row_diagnosa['kd_penyakit'])->oneArray(); + $row_diagnosa['nama'] = $icd10['nm_penyakit']; + $diagnosa[] = $row_diagnosa; + } + + $mapping_snomeds = $this->db('mlite_mapping_snomed_icd') + ->where('no_rawat', $no_rawat) + ->asc('kd_penyakit') + ->toArray(); + $mapping_snomed = []; + foreach ($mapping_snomeds as $row_mapping_snomed) { + $icd10 = $this->db('penyakit')->where('kd_penyakit', $row_mapping_snomed['kd_penyakit'])->oneArray(); + $row_mapping_snomed['nm_penyakit'] = $icd10 ? $icd10['nm_penyakit'] : ''; + $mapping_snomed[] = $row_mapping_snomed; + } + $mapping_snomeds_icd9 = $this->db('mlite_mapping_snomed_icd9') + ->where('no_rawat', $no_rawat) + ->asc('kd_tindakan') + ->toArray(); + $mapping_snomed_icd9 = []; + foreach ($mapping_snomeds_icd9 as $row_mapping_snomed_icd9) { + $icd9 = $this->db('icd9')->where('kode', $row_mapping_snomed_icd9['kd_tindakan'])->oneArray(); + $row_mapping_snomed_icd9['nm_tindakan'] = $icd9 ? $icd9['deskripsi_panjang'] : ''; + $mapping_snomed_icd9[] = $row_mapping_snomed_icd9; + } + + echo $this->draw('display.icd.html', [ + 'diagnosa' => htmlspecialchars_array($diagnosa), + 'prosedur' => htmlspecialchars_array($prosedur), + 'mapping_snomed' => htmlspecialchars_array($mapping_snomed), + 'mapping_snomed_icd9' => htmlspecialchars_array($mapping_snomed_icd9) + ]); + exit(); + } + + public function postSaveMappingSnomedIcd() + { + $no_rawat = trim((string) ($_POST['no_rawat'] ?? '')); + $kd_penyakit = trim((string) ($_POST['kd_penyakit'] ?? '')); + $snomed_concept_id = trim((string) ($_POST['snomed_concept_id'] ?? '')); + $snomed_term = trim((string) ($_POST['snomed_term'] ?? '')); + $status_penyakit = trim((string) ($_POST['status_penyakit'] ?? 'Baru')); + + $isPayloadEmpty = ($no_rawat === '' || $kd_penyakit === '' || $snomed_concept_id === '' || $snomed_term === ''); + if ($isPayloadEmpty) { + echo '0'; + exit(); + } + + if (!$this->isValidSnomedConceptId($snomed_concept_id)) { + echo '0'; + exit(); + } + + if (!$this->db('diagnosa_pasien')->where('no_rawat', $no_rawat)->where('kd_penyakit', $kd_penyakit)->oneArray()) { + echo '0'; + exit(); + } + + $this->saveSnomedMappingICD($no_rawat, $kd_penyakit, $snomed_concept_id, $snomed_term, $status_penyakit); + echo '1'; + exit(); + } + + public function postHapusMappingSnomedIcd() + { + $id = (int) ($_POST['id'] ?? 0); + $no_rawat = trim((string) ($_POST['no_rawat'] ?? '')); + + if ($id > 0 && $no_rawat !== '') { + $this->db('mlite_mapping_snomed_icd') + ->where('id', $id) + ->where('no_rawat', $no_rawat) + ->delete(); + } + + exit(); + } + + public function postSaveMappingSnomedIcd9() + { + $no_rawat = trim((string) ($_POST['no_rawat'] ?? '')); + $kd_tindakan = trim((string) ($_POST['kd_tindakan'] ?? '')); + $snomed_concept_id = trim((string) ($_POST['snomed_concept_id'] ?? '')); + $snomed_term = trim((string) ($_POST['snomed_term'] ?? '')); + + $isPayloadEmpty = ($no_rawat === '' || $kd_tindakan === '' || $snomed_concept_id === '' || $snomed_term === ''); + if ($isPayloadEmpty) { + echo '0'; + exit(); + } + + if (!$this->isValidSnomedConceptId($snomed_concept_id)) { + echo '0'; + exit(); + } + + $prosedur_exists = (bool) $this->db('prosedur_pasien') + ->where('no_rawat', $no_rawat) + ->where('kode', $kd_tindakan) + ->oneArray(); + if (!$prosedur_exists) { + echo '0'; + exit(); + } + + $this->saveSnomedMappingICD9($no_rawat, $kd_tindakan, $snomed_concept_id, $snomed_term); + echo '1'; + exit(); + } + + public function postHapusMappingSnomedIcd9() + { + $id = (int) ($_POST['id'] ?? 0); + $no_rawat = trim((string) ($_POST['no_rawat'] ?? '')); + + if ($id > 0 && $no_rawat !== '') { + $this->db('mlite_mapping_snomed_icd9') + ->where('id', $id) + ->where('no_rawat', $no_rawat) + ->delete(); + } + + exit(); + } + + + private function saveSnomedMappingICD($no_rawat, $kd_penyakit, $snomed_concept_id, $snomed_term, $status_penyakit = 'Baru') + { + $status_penyakit = in_array($status_penyakit, self::ALLOWED_STATUS_PENYAKIT, true) ? $status_penyakit : 'Baru'; + $data_mapping = [ + 'no_rawat' => $no_rawat, + 'kd_penyakit' => $kd_penyakit, + 'snomed_concept_id' => $snomed_concept_id, + 'snomed_term' => $snomed_term, + 'status_penyakit' => $status_penyakit + ]; + + $mapping_tersimpan = $this->db('mlite_mapping_snomed_icd') + ->where('no_rawat', $no_rawat) + ->where('kd_penyakit', $kd_penyakit) + ->where('snomed_concept_id', $snomed_concept_id) + ->oneArray(); + + if ($mapping_tersimpan) { + $this->db('mlite_mapping_snomed_icd')->where('id', $mapping_tersimpan['id'])->save($data_mapping); + } else { + $this->db('mlite_mapping_snomed_icd')->save($data_mapping); + } + } + + private function saveSnomedMappingICD9($no_rawat, $kd_tindakan, $snomed_concept_id, $snomed_term) + { + $snomed_term = strip_tags((string) $snomed_term); + $snomed_term = str_replace(["\r", "\n", "\t"], ' ', $snomed_term); + $snomed_term = preg_replace('/\s+/', ' ', $snomed_term); + $snomed_term = trim(mb_substr($snomed_term, 0, 255)); + $data_mapping = [ + 'no_rawat' => $no_rawat, + 'kd_tindakan' => $kd_tindakan, + 'snomed_concept_id' => $snomed_concept_id, + 'snomed_term' => $snomed_term + ]; + + $mapping_tersimpan = $this->db('mlite_mapping_snomed_icd9') + ->where('no_rawat', $no_rawat) + ->where('kd_tindakan', $kd_tindakan) + ->where('snomed_concept_id', $snomed_concept_id) + ->oneArray(); + + if ($mapping_tersimpan) { + $this->db('mlite_mapping_snomed_icd9')->where('id', $mapping_tersimpan['id'])->save($data_mapping); + } else { + $this->db('mlite_mapping_snomed_icd9')->save($data_mapping); + } + } + + private function isValidSnomedConceptId($concept_id) + { + return preg_match('/^[1-9][0-9]{5,17}$/', (string) $concept_id) === 1; + } + + private function extractJsonObjectFromText($text) + { + $raw = trim((string) $text); + if (preg_match('/```(?:json)?\s*([\s\S]*?)```/i', $raw, $matches) && isset($matches[1])) { + $raw = trim($matches[1]); + } + + $start = strpos($raw, '{'); + $end = strrpos($raw, '}'); + if ($start !== false && $end !== false && $end > $start) { + $candidate = substr($raw, $start, $end - $start + 1); + $decoded = json_decode($candidate, true); + if (json_last_error() === JSON_ERROR_NONE && is_array($decoded)) { + return $decoded; + } + } + + $decoded = json_decode($raw, true); + if (json_last_error() === JSON_ERROR_NONE && is_array($decoded)) { + return $decoded; + } + + return []; + } + + public function postRujukanInternal() + { + try { + $query = $this->db('mlite_rujukan_internal_poli') + ->save([ + 'no_rawat' => $_POST['no_rawat'], + 'kd_poli' => $_POST['kd_poli'], + 'kd_dokter' => $_POST['kd_dokter'], + 'isi_rujukan' => $_POST['isi_rujukan'], + ]); + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data rujukan internal berhasil disimpan']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan data rujukan internal']); + } + } catch(\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + + public function postGetRujukanInternal() + { + $rujukan = $this->db('mlite_rujukan_internal_poli')->where('no_rawat', $_POST['no_rawat'])->oneArray(); + if ($rujukan) { + $rujukan['isi_rujukan'] = htmlspecialchars($rujukan['isi_rujukan'] ?? '', ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + $rujukan['jawab_rujukan'] = htmlspecialchars($rujukan['jawab_rujukan'] ?? '', ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + } + echo json_encode(htmlspecialchars_array($rujukan)); + exit(); + } + + public function postHapusrujukaninternal() + { + try { + // Get POST data + $no_rawat = isset($_POST['no_rawat']) ? $_POST['no_rawat'] : ''; + + if (empty($no_rawat)) { + echo json_encode(['status' => 'error', 'message' => 'No rawat tidak boleh kosong']); + exit(); + } + + // Delete rujukan internal + $result = $this->db('mlite_rujukan_internal_poli')->where('no_rawat', $no_rawat)->delete(); + + if ($result) { + echo json_encode(['status' => 'success', 'message' => 'Rujukan internal berhasil dihapus']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menghapus rujukan internal atau data tidak ditemukan']); + } + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + + public function postEditrujukaninternal() + { + try { + // Get POST data + $no_rawat = isset($_POST['no_rawat']) ? $_POST['no_rawat'] : ''; + $jawab_rujukan = isset($_POST['jawab_rujukan']) ? $_POST['jawab_rujukan'] : ''; + + if (empty($jawab_rujukan)) { + echo json_encode(['status' => 'error', 'message' => 'Jawaban rujukan tidak boleh kosong']); + exit(); + } + + // Update rujukan internal + $data = [ + 'jawab_rujukan' => $jawab_rujukan + ]; + + $result = $this->db('mlite_rujukan_internal_poli') + ->where('no_rawat', $no_rawat) + ->save($data); + + if ($result) { + echo json_encode(['status' => 'success', 'message' => 'Rujukan internal berhasil diupdate']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal mengupdate rujukan internal']); + } + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + public function getJavascript() { header('Content-type: text/javascript'); @@ -1661,7 +2790,14 @@ public function getJavascript() if($cek_pegawai) { $cek_role = $this->core->getPegawaiInfo('nik', $this->core->getUserInfo('username', $_SESSION['mlite_user'])); } - echo $this->draw(MODULES.'/dokter_ralan/js/admin/dokter_ralan.js', ['cek_role' => $cek_role]); + $this->assign = []; + $poliklinik = $this->db('poliklinik')->where('status', '1')->toArray(); + $dokter = $this->db('dokter')->where('status', '1')->toArray(); + $this->assign['poliklinik'] = $poliklinik; + $this->assign['dokter'] = $dokter; + $this->assign['websocket'] = $this->settings->get('settings.websocket'); + $this->assign['websocket_proxy'] = $this->settings->get('settings.websocket_proxy'); + echo $this->draw(MODULES.'/dokter_ralan/js/admin/dokter_ralan.js', ['cek_role' => $cek_role, 'mlite' => htmlspecialchars_array($this->assign)]); exit(); } @@ -1687,9 +2823,4 @@ private function _addHeaderFiles() $this->core->addJS(url([ADMIN, 'dokter_ralan', 'javascript']), 'footer'); } - protected function data_icd($table) - { - return new DB_ICD($table); - } - } diff --git a/plugins/dokter_ralan/Help.md b/plugins/dokter_ralan/Help.md deleted file mode 100644 index 133e2fbb9..000000000 --- a/plugins/dokter_ralan/Help.md +++ /dev/null @@ -1,3 +0,0 @@ -
                                    - -
                                    diff --git a/plugins/dokter_ralan/Info.php b/plugins/dokter_ralan/Info.php index 0b789f864..2fab792b6 100644 --- a/plugins/dokter_ralan/Info.php +++ b/plugins/dokter_ralan/Info.php @@ -4,13 +4,15 @@ 'name' => 'Dokter Ralan', 'description' => 'Modul dokter rawat jalan untuk mLITE', 'author' => 'Basoro', + 'category' => 'layanan', 'version' => '1.0', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'user-md', 'install' => function () use ($core) { $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('dokter_ralan', 'set_sudah', 'tidak')"); }, 'uninstall' => function() use($core) { + $core->db()->pdo()->exec("DELETE FROM `mlite_settings` WHERE `module` = 'dokter_ralan'"); } ]; diff --git a/plugins/dokter_ralan/README.md b/plugins/dokter_ralan/README.md new file mode 100644 index 000000000..3a085d1bf --- /dev/null +++ b/plugins/dokter_ralan/README.md @@ -0,0 +1,99 @@ +# Plugin Dokter Ralan + +Modul antarmuka dokter untuk pengelolaan rekam medis pasien rawat jalan di semua poliklinik (di luar IGD). + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Dokter Ralan**. +- Pilih submenu sesuai kebutuhan: + - Kelola + - Dokter Ralan + - Pengaturan + +## Panduan Pengguna (Petugas) + +Dokter/perawat rawat jalan menggunakan modul ini untuk mencatat seluruh proses pemeriksaan: + +1. **Dokter Ralan (Daftar Pasien Rawat Jalan)** + - Filter daftar pasien berdasarkan rentang tanggal kunjungan dan status periksa (Belum/Sudah). + - Tampilan pasien dapat dibatasi per dokter atau per poliklinik sesuai konfigurasi. + - Mendukung fitur panggil antrian dengan suara (ResponsiveVoice) jika diaktifkan. + +2. **Rincian Tindakan & Layanan** + - Tambahkan tindakan dan layanan yang diberikan kepada pasien rawat jalan. + - Hapus item rincian bila ada input yang salah. + +3. **SOAP (Subyektif–Obyektif–Asesmen–Plan)** + - Isi catatan SOAP: anamnesis, pemeriksaan fisik, diagnosis kerja, dan rencana terapi. + - Simpan atau hapus catatan SOAP. + +4. **Obat & Resep** + - Tambahkan resep obat jadi maupun obat racikan. + - Atur aturan pakai setiap item obat. + - Gunakan fitur **Copy Resep** untuk menduplikasi resep dari kunjungan sebelumnya. + - Lihat dan kelola e-Resep melalui tampilan eResep. + +5. **Laboratorium & Radiologi** + - Buat permintaan laboratorium atau radiologi untuk pasien. + - Hapus nomor/item permintaan bila diperlukan. + +6. **Kontrol** + - Jadwalkan atau catat kunjungan kontrol pasien rawat jalan. + - Dukung penjadwalan kontrol BPJS (surat kontrol BPJS/SEP) melalui `postSaveKontrolBPJS`. + - Simpan atau hapus jadwal kontrol. + +7. **Resume Medis Ralan** + - Isi resume medis pasien rawat jalan setelah pemeriksaan selesai. + - Simpan atau hapus resume. + +8. **Catatan Medis Ralan** + - Isi form catatan medis ralan (anamnesis, pemeriksaan, tindakan medis). + - Simpan atau hapus catatan medis. + +9. **Odontogram & OHIS** + - Untuk pasien poli gigi: isi kondisi gigi pada diagram odontogram. + - Catat skor OHIS (Oral Hygiene Index Simplified). + - Simpan atau hapus data odontogram/OHIS. + +10. **Surat Keterangan** + - Buat dan cetak **Surat Rujukan** ke fasilitas kesehatan lain. + - Buat dan cetak **Surat Keterangan Sehat**. + - Buat dan cetak **Surat Keterangan Sakit** (dengan tanggal sakit). + - Simpan masing-masing surat sesuai kebutuhan. + +11. **Rujukan Internal** + - Buat rujukan internal antar poliklinik dalam satu faskes. + - Edit atau hapus data rujukan internal. + +12. **Diagnosis ICD-10 & ICD-9** + - Cari dan tambahkan kode diagnosis ICD-10 (penyakit) dan ICD-9 (prosedur). + - Gunakan fitur **AI SNOMED mapping** untuk membantu pencarian kode ICD dari istilah klinis. + - Hapus kode diagnosis yang tidak sesuai. + +## Panduan Admin + +1. **Pengaturan Modul Dokter Ralan** + - Buka submenu **Pengaturan**. + - Simpan konfigurasi khusus modul dokter rawat jalan (mis. mode tampilan per dokter). + +2. **Pembatasan Tampilan Per Dokter** + - Aktifkan opsi `dokter_ralan_per_dokter` di pengaturan sistem agar setiap dokter hanya melihat pasien miliknya. + - Jika tidak diaktifkan, dokter melihat pasien sesuai poliklinik yang di-assign pada akunnya. + +3. **Data Master Pendukung** + - Pastikan data **poliklinik**, **dokter**, dan **penjab** aktif (status = 1) di master data. + - Pastikan mapping dokter ke kode BPJS (`maping_dokter_dpjpvclaim`) sudah diisi untuk fitur kontrol BPJS. + +4. **Fitur Panggil Antrian (ResponsiveVoice)** + - Aktifkan `settings.responsivevoice = true` agar sistem dapat memanggil nama pasien dengan suara. + +5. **Integrasi vClaim BPJS** + - Jika plugin vClaim terpasang dan aktif, fitur SEP/BPJS otomatis muncul di halaman Dokter Ralan. + +## Catatan + +- Modul ini menampilkan semua pasien rawat jalan di luar poliklinik IGD (difilter menggunakan kode `settings.igd`). +- Data SOAP, rincian, obat, laboratorium, dan radiologi terintegrasi langsung dengan modul billing. +- Fitur AI SNOMED mapping menggunakan layanan eksternal; pastikan koneksi internet tersedia. +- Surat rujukan, surat sehat, dan surat sakit dapat dicetak langsung dari halaman detail pasien. diff --git a/plugins/dokter_ralan/js/admin/dokter_ralan.js b/plugins/dokter_ralan/js/admin/dokter_ralan.js index 015e9a8bd..857ec70c7 100644 --- a/plugins/dokter_ralan/js/admin/dokter_ralan.js +++ b/plugins/dokter_ralan/js/admin/dokter_ralan.js @@ -10,6 +10,20 @@ $('#daftar_racikan').hide(); $("#info_tambahan").hide(); $("#form_kontrol").hide(); +// Inisialisasi jam_rawat saat halaman dibuka +$(function(){ + var baseURL = mlite.url + '/' + mlite.admin; + var $jr = $('input:text[name=jam_rawat]').last(); + if ($jr.length) { + $jr.focus(); + if (!$jr.val()) { + $.post(baseURL + '/dokter_ralan/cekwaktu?t=' + mlite.token, {}, function(data){ + $jr.val(data); + }); + } + } +}); + $("#display").on("click",".riwayat_perawatan", function(event){ var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); @@ -153,8 +167,8 @@ $("#form_soap").on("click", "#simpan_soap", function(event){ event.preventDefault(); var no_rawat = $('input:text[name=no_rawat]').val(); - var tgl_perawatan = $('input:text[name=tgl_perawatan]').val(); - var jam_rawat = $('input:text[name=jam_rawat]').val(); + var tgl_perawatan = $('#soap_tgl_perawatan').val(); + var jam_rawat = $('#soap_jam_rawat').val(); var suhu_tubuh = $('input:text[name=suhu_tubuh]').val(); var tensi = $('input:text[name=tensi]').val(); var nadi = $('input:text[name=nadi]').val(); @@ -223,10 +237,9 @@ $("#form_soap").on("click", "#simpan_soap", function(event){ $('input:text[name=spo2]').val(""); $('input:text[name=tgl_perawatan]').val("{?=date('Y-m-d')?}"); $('input:text[name=tgl_registrasi]').val("{?=date('Y-m-d')?}"); - //$('input:text[name=jam_rawat]').val("{?=date('H:i:s')?}"); $.post(baseURL + '/dokter_ralan/cekwaktu?t=' + mlite.token, { } ,function(data) { - $("#form_soap #jam_rawat").val(data); + $("#form_soap #soap_jam_rawat").val(data); }); $('#notif').html("
                                    "+ "Data soap telah disimpan!"+ @@ -236,6 +249,48 @@ $("#form_soap").on("click", "#simpan_soap", function(event){ {/if} }); +// ketika tombol hapus ditekan +$("#soap").on("click",".copy_soap", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var suhu_tubuh = $(this).attr("data-suhu_tubuh"); + var tensi = $(this).attr("data-tensi"); + var nadi = $(this).attr("data-nadi"); + var respirasi = $(this).attr("data-respirasi"); + var tinggi = $(this).attr("data-tinggi"); + var berat = $(this).attr("data-berat"); + var gcs = $(this).attr("data-gcs"); + var kesadaran = $(this).attr("data-kesadaran"); + var alergi = $(this).attr("data-alergi"); + var lingkar_perut = $(this).attr("data-lingkar_perut"); + var keluhan = $(this).attr("data-keluhan"); + var pemeriksaan = $(this).attr("data-pemeriksaan"); + var penilaian = $(this).attr("data-penilaian"); + var rtl = $(this).attr("data-rtl"); + var instruksi = $(this).attr("data-instruksi"); + var evaluasi = $(this).attr("data-evaluasi"); + var spo2 = $(this).attr("data-spo2"); + + $('input:text[name=suhu_tubuh]').val(suhu_tubuh); + $('input:text[name=tensi]').val(tensi); + $('input:text[name=nadi]').val(nadi); + $('input:text[name=respirasi]').val(respirasi); + $('input:text[name=tinggi]').val(tinggi); + $('input:text[name=berat]').val(berat); + $('input:text[name=gcs]').val(gcs); + $('input:text[name=kesadaran]').val(kesadaran); + $('input:text[name=alergi]').val(alergi); + $('input:text[name=lingkar_perut]').val(lingkar_perut); + $('textarea[name=keluhan]').val(keluhan); + $('textarea[name=pemeriksaan]').val(pemeriksaan); + $('textarea[name=penilaian]').val(penilaian); + $('textarea[name=rtl]').val(rtl); + $('textarea[name=instruksi]').val(instruksi); + $('textarea[name=evaluasi]').val(evaluasi); + $('input:text[name=spo2]').val(spo2); + +}); + // ketika tombol hapus ditekan $("#soap").on("click",".edit_soap", function(event){ var baseURL = mlite.url + '/' + mlite.admin; @@ -361,13 +416,14 @@ $("#form_kontrol").on("click", "#simpan_kontrol", function(event){ alasan1 : alasan1, rtl1 : rtl1 }, function(data) { + console.log(data); // tampilkan data $("#display").hide(); var url = baseURL + '/dokter_ralan/kontrol?t=' + mlite.token; $.post(url, {no_rkm_medis : no_rkm_medis, }, function(data) { // tampilkan data - $("#kontrol").html(data).show(); + $("#surat_kontrol").html(data).show(); }); $('input:text[name=nm_perawatan]').val(""); $('input:text[name=biaya]').val(""); @@ -398,7 +454,6 @@ $("#form_rincian").on("click", "#selesai", function(event){ $('#daftar_racikan').hide(); $("#info_tambahan").hide(); $("#form_kontrol").hide(); - $("#kontrol").hide(); $("#surat_kontrol").hide(); }); @@ -415,7 +470,6 @@ $("#form_soap").on("click", "#selesai_soap", function(event){ $('#daftar_racikan').hide(); $("#info_tambahan").hide(); $("#form_kontrol").hide(); - $("#kontrol").hide(); $("#surat_kontrol").hide(); }); @@ -432,7 +486,6 @@ $("#form_kontrol").on("click", "#selesai_kontrol", function(event){ $('#daftar_racikan').hide(); $("#info_tambahan").hide(); $("#form_kontrol").hide(); - $("#kontrol").hide(); $("#surat_kontrol").hide(); }); @@ -586,9 +639,9 @@ $("#obat").on("click", ".pilih_obat", function(event){ var kode_brng = $(this).attr("data-kode_brng"); var nama_brng = $(this).attr("data-nama_brng"); - var biaya = $(this).attr("data-ralan"); - var stok = $(this).attr("data-stok"); - var stokminimal = $(this).attr("data-stokminimal"); + var biaya = $(this).attr("data-dasar"); + var stok = parseFloat($(this).attr("data-stok")); + var stokminimal = parseFloat($(this).attr("data-stokminimal")); var kat = $(this).attr("data-kat"); if(stok < stokminimal) { @@ -642,10 +695,10 @@ $("#obat_racikan").on("click", ".pilih_obat_racikan", function(event){ var kode_brng = $(this).attr("data-kode_brng"); var nama_brng = $(this).attr("data-nama_brng"); - var biaya = $(this).attr("data-ralan"); - var stok = $(this).attr("data-stok"); + var biaya = $(this).attr("data-dasar"); + var stok = parseFloat($(this).attr("data-stok")); - if(stok < 10) { + if(stok < 1) { alert('Stok obat ' + nama_brng + ' tidak mencukupi.'); $('input:hidden[name=kode_brng]').val(); $('input:text[name=nama_brng]').val(); @@ -743,7 +796,7 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ var kode_provider = $('input:text[name=kode_provider]').val(); var kode_provider2 = $('input:text[name=kode_provider2]').val(); var tgl_perawatan = $('input:text[name=tgl_perawatan]').val(); - var jam_rawat = $('input:text[name=jam_reg]').val(); + var jam_rawat = $('input:text[name=jam_rawat]').last().val(); var biaya = $('input:text[name=biaya]').val(); var aturan_pakai = $('input:text[name=aturan_pakai]').val(); var kat = $('input:hidden[name=kat]').val(); @@ -775,6 +828,29 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ diagnosa_klinis : diagnosa_klinis }, function(data) { console.log(data); + if(typeof ws != 'undefined' && typeof ws.readyState != 'undefined' && ws.readyState == 1){ + if(kat == 'obat' || kat == 'racikan') { + let payload = { + 'action' : 'permintaan_resep', + 'modul' : 'dokter_ralan' + } + ws.send(JSON.stringify(payload)); + } + if(kat == 'laboratorium') { + let payload = { + 'action' : 'permintaan_laboratorium', + 'modul' : 'dokter_ralan' + } + ws.send(JSON.stringify(payload)); + } + if(kat == 'radiologi') { + let payload = { + 'action' : 'permintaan_radiologi', + 'modul' : 'dokter_ralan' + } + ws.send(JSON.stringify(payload)); + } + } // tampilkan data $("#display").hide(); var url = baseURL + '/dokter_ralan/rincian?t=' + mlite.token; @@ -787,7 +863,8 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ $('input:text[name=nm_perawatan]').val(""); $.post(baseURL + '/dokter_ralan/cekwaktu?t=' + mlite.token, { } ,function(data) { - $("#form_rincian #jam_reg").val(data); + $("#form_rincian #rincian_jam_reg").val(data); + $('input:text[name=jam_rawat]').last().val(data).focus(); }); $('input:hidden[name=kat]').val(""); $('input:text[name=biaya]').val(""); @@ -1019,18 +1096,44 @@ $("#rincian").on("click","#simpan_copy_resep", function(event){ var url = baseURL + '/dokter_ralan/rincian?t=' + mlite.token; var no_rawat = $('input:text[name=no_rawat]').val(); var tgl_perawatan = $('input:text[name=tgl_perawatan]').val(); - var jam_rawat = $('input:text[name=jam_reg]').val(); + var jam_rawat = $('input:text[name=jam_rawat]').val(); var kode_brng = JSON.stringify($('input:hidden[name=kode_brng_copyresep]').serializeArray()); var jml = JSON.stringify($('input:text[name=jml_copyresep]').serializeArray()); var aturan_pakai = JSON.stringify($('input:text[name=aturan_copyresep]').serializeArray()); - $.post(url_save, {no_rawat : no_rawat, + // Racikan Data + var nama_racik = JSON.stringify($('input:hidden[name=nama_racik_copyresep]').serializeArray()); + var kd_racik = JSON.stringify($('input:hidden[name=kd_racik_copyresep]').serializeArray()); + var keterangan = JSON.stringify($('input:hidden[name=keterangan_copyresep]').serializeArray()); + var no_racik = JSON.stringify($('input:hidden[name=no_racik_copyresep]').serializeArray()); + var jml_dr = JSON.stringify($('input:text[name=jml_dr_copyresep]').serializeArray()); + var aturan_pakai_racik = JSON.stringify($('input:text[name=aturan_pakai_copyresep]').serializeArray()); + + var data = { + no_rawat : no_rawat, tgl_perawatan : tgl_perawatan, jam_rawat : jam_rawat, kode_brng : kode_brng, jml : jml, - aturan_pakai : aturan_pakai - }, function(data) { + aturan_pakai : aturan_pakai, + nama_racik: nama_racik, + kd_racik: kd_racik, + keterangan: keterangan, + no_racik: no_racik, + jml_dr: jml_dr, + aturan_pakai_racik: aturan_pakai_racik + }; + + // Add dynamic racikan details + $('input:hidden[name^="no_racik_copyresep"]').each(function() { + var nr = $(this).val(); + data['kode_brng_racikan_' + nr] = JSON.stringify($('input:hidden[name="kode_brng_racikan_copyresep_' + nr + '"]').serializeArray()); + data['jml_racikan_' + nr] = JSON.stringify($('input:text[name="jml_racikan_copyresep_' + nr + '"]').serializeArray()); + data['p1_' + nr] = JSON.stringify($('input:hidden[name="p1_copyresep_' + nr + '"]').serializeArray()); + data['p2_' + nr] = JSON.stringify($('input:hidden[name="p2_copyresep_' + nr + '"]').serializeArray()); + }); + + $.post(url_save, data, function(data) { //alert(data); //if(data == 'ErrorError') { // alert('Stok tidak mencukupi pada satu atau lebih obat.'); @@ -1144,7 +1247,7 @@ $(document).ready(function () { dataType: 'json', success: function(data) { callback(data.slice(0, 100)); - console.log(data); + // console.log(data); }, error: function() { callback(); @@ -1168,7 +1271,7 @@ $(document).ready(function () { dataType: 'json', success: function(data) { callback(data.slice(0, 100)); - console.log(data); + // console.log(data); }, error: function() { callback(); @@ -1319,21 +1422,21 @@ $("#form_soap").on("click","#odontogram", function(event){ return false; }); -$("#form_soap").on("click","#jam_rawat", function(event){ +$("#form_soap").on("click","#soap_jam_rawat", function(event){ var baseURL = mlite.url + '/' + mlite.admin; var url = baseURL + '/dokter_ralan/cekwaktu?t=' + mlite.token; $.post(url, { } ,function(data) { - $("#form_soap #jam_rawat").val(data); + $("#form_soap #soap_jam_rawat").val(data); }); }); -$("#form_rincian").on("click","#jam_reg", function(event){ +$("#form_rincian").on("click","#rincian_jam_reg", function(event){ var baseURL = mlite.url + '/' + mlite.admin; var url = baseURL + '/dokter_ralan/cekwaktu?t=' + mlite.token; $.post(url, { } ,function(data) { - $("#form_rincian #jam_reg").val(data); + $("#form_rincian #rincian_jam_reg").val(data); }); }); @@ -1353,3 +1456,239 @@ $("#form_soap").on("click",".resume", function(event){ }).modal(); return false; }); + +$("#form_soap").on("click",".assesment", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $('input:text[name=no_rawat]').val().replace(/\//g, ''); + + var loadURL = baseURL + '/dokter_ralan/medisralan/' + no_rawat + '?t=' + mlite.token; + + var modal = $('#assesmentModal'); + var modalContent = $('#assesmentModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + modalContent.load(loadURL); + }).modal(); + return false; +}); + +// Event delegation untuk rujuk internal - bekerja untuk elemen dinamis +$(document).on('click', 'a[href="#rujuk_internal"]', function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + var url = baseURL + '/dokter_ralan/rujukaninternal?t=' + mlite.token; + var url_get = baseURL + '/dokter_ralan/getrujukaninternal?t=' + mlite.token; + + $.post(url_get, {no_rawat: no_rawat}, function(data) { + var rujukan = JSON.parse(data); + var kd_poli_val = ''; + var kd_dokter_val = ''; + var isi_rujukan_val = ''; + + + var disabled_attr = ''; + if(rujukan) { + kd_poli_val = rujukan.kd_poli; + kd_dokter_val = rujukan.kd_dokter; + isi_rujukan_val = rujukan.isi_rujukan; + jawab_rujukan_val = rujukan.jawab_rujukan; + disabled_attr = ' disabled'; + } + + var rujuk_internal = '' + + '
                                    ' + + '' + + '' + + '
                                    ' + + '
                                    ' + + '' + + '' + + '
                                    ' + + '
                                    ' + + '' + + '' + + '
                                    ' + + '
                                    ' + + '' + + '' + + '
                                    ' + + ''; + + // tampilkan dialog konfirmasi + bootbox.dialog({ + message: rujuk_internal, + title: 'Rujuk Internal', + buttons: { + main: { + label: 'Simpan', + className: 'btn-primary', + callback() { + var kd_poli = $('#kd_poli').val(); + var kd_dokter = $('#kd_dokter').val(); + var isi_rujukan = $('#isi_rujukan').val(); + var jawab_rujukan = $('#jawab_rujukan').val(); + $.post(url, { + no_rawat: no_rawat, + kd_poli: kd_poli, + kd_dokter: kd_dokter, + isi_rujukan: isi_rujukan, + jawab_rujukan: jawab_rujukan, + } ,function(data) { + var data = JSON.parse(data); + alert(data.message); + // Reload display setelah simpan + $("#display").load(baseURL + '/dokter_ralan/display?t=' + mlite.token); + }); + } + } + } + }); + + // Set values for selects if they exist + if(kd_poli_val) { + $('#kd_poli').val(kd_poli_val); + } + if(kd_dokter_val) { + $('#kd_dokter').val(kd_dokter_val); + } + + $('select').not(':disabled').selectator(); + }); + + event.stopPropagation(); + return false; +}); + +// Event delegation untuk edit rujukan internal +$(document).on('click', 'a[href="#jawab_rujukan_internal"]', function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + var dokter_tujuan = $(this).attr("data-dokter_tujuan"); + var poli_tujuan = $(this).attr("data-poli_tujuan"); + var keterangan = $(this).attr("data-keterangan"); + var keterangan_jawab = $(this).attr("data-keterangan_jawab"); + var url = baseURL + '/dokter_ralan/editrujukaninternal?t=' + mlite.token; + var edit_rujukan_internal = '' + + '
                                    ' + + '' + + '' + + '
                                    ' + + '
                                    ' + + '' + + '' + + '
                                    ' + + '
                                    ' + + '' + + '' + + '
                                    ' + + '
                                    ' + + '' + + '' + + '
                                    ' + + ''; + + // tampilkan dialog konfirmasi + bootbox.dialog({ + message: edit_rujukan_internal, + title: 'Jawab Rujukan Internal', + buttons: { + main: { + label: 'Update', + className: 'btn-primary', + callback() { + var jawab_rujukan = $('#jawab_rujukan').val(); + $.post(url, { + no_rawat: no_rawat, + jawab_rujukan: jawab_rujukan, + } ,function(data) { + var data = JSON.parse(data); + alert(data.message); + // Reload display setelah update + $("#display").load(baseURL + '/dokter_ralan/display?t=' + mlite.token); + }); + } + } + } + }); + $('select').selectator(); + event.stopPropagation(); + return false; +}); + +// Event delegation untuk hapus rujukan internal +$(document).on('click', 'a[href="#hapus_rujukan_internal"]', function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + var url = baseURL + '/dokter_ralan/hapusrujukaninternal?t=' + mlite.token; + + // tampilkan dialog konfirmasi + bootbox.confirm("Apakah Anda yakin ingin menghapus rujukan internal ini?", function(result){ + if (result){ + $.post(url, { + no_rawat: no_rawat + } ,function(data) { + // console.log(data); + var data = JSON.parse(data); + alert(data.message); + // Reload display setelah hapus + $("#display").load(baseURL + '/dokter_ralan/display?t=' + mlite.token); + }); + } + }); + event.stopPropagation(); + return false; +}); + +{if: $mlite.websocket == 'ya'} + + {if: $mlite.websocket_proxy != ''} + var URL_WEBSOCKET = "{$mlite.websocket_proxy}"; + {else} + var URL_WEBSOCKET = "wss://:3892"; + {/if} + + var ws = new WebSocket(URL_WEBSOCKET); + var baseURL = mlite.url + '/' + mlite.admin; + + ws.onmessage = function(response){ + try{ + output = JSON.parse(response.data); + if(output['action'] == 'simpan'){ + if(output['modul'] == 'rawat_jalan' || output['modul'] == 'igd'){ + $("#dokter_ralan #display").show().load(baseURL + '/dokter_ralan/display?t=' + mlite.token); + } + } + }catch(e){ + // console.log(e); + } + } + + + ws.onclose = function(){ + // Jika terputus dari websocket server, maka mencoba terhubung kembali. + var interval_reconnect_ws = setInterval(function(){ + if(ws.readyState != 0){ + if(ws.readyState == 1){ // readyState = 1 (Open) , berarti sudah terhubung dengan websocket. Maka gak perlu interval lagi. + clearInterval(interval_reconnect_ws); + }else{ + ws = new WebSocket(URL_WEBSOCKET); + } + } + + },5000); + } + +{/if} diff --git a/plugins/dokter_ralan/view/admin/copyresep.display.html b/plugins/dokter_ralan/view/admin/copyresep.display.html index 46dbce542..8d9d809f0 100644 --- a/plugins/dokter_ralan/view/admin/copyresep.display.html +++ b/plugins/dokter_ralan/view/admin/copyresep.display.html @@ -10,16 +10,53 @@ - {if: $copy_resep} + {if: $copy_resep || $copy_resep_racikan}
                                    + {if: $copy_resep} + + Obat Non-Racikan + {loop: $copy_resep} - $value.stok} class="selisih"{/if}>{$value.nama_brng} - - {$value.stok} - + $value.stok} class="selisih"{/if}>{?=isset_or($value.nama_brng)?} + + {?=isset_or($value.stok)?} + + + {/loop} + {/if} + + {if: $copy_resep_racikan} + + Obat Racikan + + {loop: $copy_resep_racikan} + + + {?=isset_or($value.nama_racik)?} + + + + + + + + Jumlah Racikan: + Aturan Pakai: + + {loop: $value.detail as $detail} + + $detail.stok} class="selisih"{/if} style="padding-left: 20px;"> + + - {?=isset_or($detail.nama_brng)?} + + + {?=isset_or($detail.stok)?} + {/loop} + {/loop} + {/if} diff --git a/plugins/dokter_ralan/view/admin/details.html b/plugins/dokter_ralan/view/admin/details.html index 37e8cd109..38acdc78f 100644 --- a/plugins/dokter_ralan/view/admin/details.html +++ b/plugins/dokter_ralan/view/admin/details.html @@ -19,14 +19,14 @@ {loop: $detail} - {$value.template_laboratorium.urut} - {$value.template_laboratorium.Pemeriksaan} - {$value.template_laboratorium.satuan} - {$value.template_laboratorium.nilai_rujukan_la} - {$value.template_laboratorium.nilai_rujukan_pa} - {$value.template_laboratorium.nilai_rujukan_ld} - {$value.template_laboratorium.nilai_rujukan_pd} - + {?=isset_or($value.template_laboratorium.urut)?} + {?=isset_or($value.template_laboratorium.Pemeriksaan)?} + {?=isset_or($value.template_laboratorium.satuan)?} + {?=isset_or($value.template_laboratorium.nilai_rujukan_la)?} + {?=isset_or($value.template_laboratorium.nilai_rujukan_pa)?} + {?=isset_or($value.template_laboratorium.nilai_rujukan_ld)?} + {?=isset_or($value.template_laboratorium.nilai_rujukan_pd)?} + {/loop} diff --git a/plugins/dokter_ralan/view/admin/display.html b/plugins/dokter_ralan/view/admin/display.html index c0094edb4..1f982acf5 100644 --- a/plugins/dokter_ralan/view/admin/display.html +++ b/plugins/dokter_ralan/view/admin/display.html @@ -1,63 +1,175 @@ +
                                    -
                                    - - - - - - - - - - - - - - - - - - - {loop: $rawat_jalan.list} - - - - - - - - - - - - - - - {/loop} - -
                                    No. RMNama PasienID KunjunganAntrianPoliklinikDokterPenjaminNo. AsuransiTgl. KunjunganStts. PeriksaStts. LanjutStts. Bayar
                                    - - - {$value.nm_pasien}{$value.no_rawat} - {if: $responsivevoice == 'true'}{/if}{$value.nm_poli}{$value.nm_dokter}{$value.png_jawab} {if: $value.kd_pj == 'BPJ'} iCare{/if}{$value.no_peserta}{$value.tgl_registrasi} {$value.jam_reg}{$value.stts}{$value.status_lanjut}{$value.status_bayar}
                                    + + + + +
                                    + +
                                    +
                                    + + + + + + + + + + + + + + + + + + + {loop: $rawat_jalan.list} + + + + + + + + + + + + + + + {/loop} + +
                                    No. RMNama PasienID KunjunganAntrianPoliklinikDokterPenjaminNo. AsuransiTgl. KunjunganStts. PeriksaStts. LanjutStts. Bayar
                                    + + + {?=isset_or($value.nm_pasien)?}{?=isset_or($value.no_rawat)?} + {if: $responsivevoice == 'true'}{/if}{?=isset_or($value.nm_poli)?}{?=isset_or($value.nm_dokter)?}{?=isset_or($value.png_jawab)?} {if: $value.kd_pj == 'BPJ'}{if: $value.potensi_prb != ''}{/if}{if: $this->core->ActiveModule('vclaim')} iCare{/if}{if: $this->core->ActiveModule('pcare')} iCare{/if}{/if}{?=isset_or($value.no_peserta)?}{?=isset_or($value.tgl_registrasi)?} {?=isset_or($value.jam_reg)?}{?=isset_or($value.stts)?}{?=isset_or($value.status_lanjut)?}{?=isset_or($value.status_bayar)?}
                                    +
                                    +
                                    + +
                                    +
                                    + + + + + + + + + + + + + + + + + {loop: $rawat_jalan.list_rujukan_internal} + + + + + + + + + + + + + {/loop} + +
                                    No. RMNama PasienID KunjunganPoli AsalPoli TujuanDokter PerujukDokter TujuanTgl. RujukanStatusAksi
                                    {if: isset($value.no_rkm_medis)}{?=isset_or($value.no_rkm_medis)?}{else}-{/if}{if: isset($value.nm_pasien)}{?=isset_or($value.nm_pasien)?}{else}-{/if}{if: isset($value.no_rawat)}{?=isset_or($value.no_rawat)?}{else}-{/if}{if: isset($value.poli_asal)}{?=isset_or($value.poli_asal)?}{else}-{/if}{if: isset($value.poli_tujuan)}{?=isset_or($value.poli_tujuan)?}{else}-{/if}{if: isset($value.dokter_perujuk)}{?=isset_or($value.dokter_perujuk)?}{else}-{/if}{if: isset($value.dokter_tujuan)}{?=isset_or($value.dokter_tujuan)?}{else}-{/if}{if: isset($value.tgl_rujukan)}{?=isset_or($value.tgl_rujukan)?}{else}-{/if} + {if: isset($value.keterangan_jawab) && $value.keterangan_jawab != ''} + Sudah Dijawab + {else} + Belum Dijawab + {/if} + + JawabHapus +
                                    +
                                    +
                                    @@ -119,29 +119,29 @@

                                    Data Barang

                                    {loop: $inventaris_barang} - {$value.kode_barang} - {$value.nama_barang} - {$value.jml_barang} - {$value.kode_produsen} - {$value.nama_produsen} - {$value.id_merk} - {$value.nama_merk} - {$value.thn_produksi} - {$value.isbn} - {$value.id_kategori} - {$value.nama_kategori} - {$value.id_jenis} - {$value.nama_jenis} + {?=isset_or($value.kode_barang)?} + {?=isset_or($value.nama_barang)?} + {?=isset_or($value.jml_barang)?} + {?=isset_or($value.kode_produsen)?} + {?=isset_or($value.nama_produsen)?} + {?=isset_or($value.id_merk)?} + {?=isset_or($value.nama_merk)?} + {?=isset_or($value.thn_produksi)?} + {?=isset_or($value.isbn)?} + {?=isset_or($value.id_kategori)?} + {?=isset_or($value.nama_kategori)?} + {?=isset_or($value.id_jenis)?} + {?=isset_or($value.nama_jenis)?} {/loop} diff --git a/plugins/inventaris/view/admin/data.jenis.html b/plugins/inventaris/view/admin/data.jenis.html index 72e862c08..a8c5aee99 100644 --- a/plugins/inventaris/view/admin/data.jenis.html +++ b/plugins/inventaris/view/admin/data.jenis.html @@ -62,11 +62,11 @@

                                    Data Jenis

                                    {loop: $inventaris_jenis} - {$value.id_jenis} - {$value.nama_jenis} + {?=isset_or($value.id_jenis)?} + {?=isset_or($value.nama_jenis)?} {/loop} diff --git a/plugins/inventaris/view/admin/data.kategori.html b/plugins/inventaris/view/admin/data.kategori.html index 08a13cd71..32c6c629e 100644 --- a/plugins/inventaris/view/admin/data.kategori.html +++ b/plugins/inventaris/view/admin/data.kategori.html @@ -62,11 +62,11 @@

                                    Data Kategori

                                    {loop: $inventaris_kategori} - {$value.id_kategori} - {$value.nama_kategori} + {?=isset_or($value.id_kategori)?} + {?=isset_or($value.nama_kategori)?} {/loop} diff --git a/plugins/inventaris/view/admin/data.merk.html b/plugins/inventaris/view/admin/data.merk.html index a8c6fe343..9800de312 100644 --- a/plugins/inventaris/view/admin/data.merk.html +++ b/plugins/inventaris/view/admin/data.merk.html @@ -62,11 +62,11 @@

                                    Data Merk

                                    {loop: $inventaris_merk} - {$value.id_merk} - {$value.nama_merk} + {?=isset_or($value.id_merk)?} + {?=isset_or($value.nama_merk)?} {/loop} diff --git a/plugins/inventaris/view/admin/data.pemeliharaan.html b/plugins/inventaris/view/admin/data.pemeliharaan.html index 24cd0a078..3218befe1 100644 --- a/plugins/inventaris/view/admin/data.pemeliharaan.html +++ b/plugins/inventaris/view/admin/data.pemeliharaan.html @@ -31,16 +31,16 @@

                                    {loop: $pemeliharaan} - {$value.no_inventaris} - {$value.kode_barang} - {$value.nama_barang} - {$value.tanggal} - {$value.uraian_kegiatan} - {$value.nip} - {$value.nama} - {$value.pelaksana} - {$value.biaya} - {$value.jenis_pemeliharaan} + {?=isset_or($value.no_inventaris)?} + {?=isset_or($value.kode_barang)?} + {?=isset_or($value.nama_barang)?} + {?=isset_or($value.tanggal)?} + {?=isset_or($value.uraian_kegiatan)?} + {?=isset_or($value.nip)?} + {?=isset_or($value.nama)?} + {?=isset_or($value.pelaksana)?} + {?=isset_or($value.biaya)?} + {?=isset_or($value.jenis_pemeliharaan)?} {/loop} diff --git a/plugins/inventaris/view/admin/data.peminjaman.html b/plugins/inventaris/view/admin/data.peminjaman.html index 5b279a388..5b4208dd3 100644 --- a/plugins/inventaris/view/admin/data.peminjaman.html +++ b/plugins/inventaris/view/admin/data.peminjaman.html @@ -20,7 +20,7 @@

                                    @@ -44,7 +44,7 @@

                                    @@ -87,24 +87,24 @@

                                    {loop: $inventaris_peminjaman} - {$value.peminjam} - {$value.tlp} - {$value.no_inventaris} - {$value.kode_barang} - {$value.nama_barang} - {$value.tgl_pinjam} - {$value.tgl_kembali} - {$value.nip} - {$value.nama} - {$value.status_pinjam} + {?=isset_or($value.peminjam)?} + {?=isset_or($value.tlp)?} + {?=isset_or($value.no_inventaris)?} + {?=isset_or($value.kode_barang)?} + {?=isset_or($value.nama_barang)?} + {?=isset_or($value.tgl_pinjam)?} + {?=isset_or($value.tgl_kembali)?} + {?=isset_or($value.nip)?} + {?=isset_or($value.nama)?} + {?=isset_or($value.status_pinjam)?} {/loop} diff --git a/plugins/inventaris/view/admin/data.permintaan.perbaikan.detail.html b/plugins/inventaris/view/admin/data.permintaan.perbaikan.detail.html index 53838814f..86256f1ba 100644 --- a/plugins/inventaris/view/admin/data.permintaan.perbaikan.detail.html +++ b/plugins/inventaris/view/admin/data.permintaan.perbaikan.detail.html @@ -4,11 +4,11 @@

                                    Data Permintaan Perbaikan
                                    {if: !$perbaikandetail} - Baru + Baru {/if} {if: $perbaikandetail} - Ubah - Hapus + Ubah + Hapus {/if}

                                    @@ -26,11 +26,11 @@

                                    - {$permintaan_perbaikan_inventaris.no_permintaan} - {$permintaan_perbaikan_inventaris.no_inventaris} - {$permintaan_perbaikan_inventaris.nik} - {$permintaan_perbaikan_inventaris.nama} - {$permintaan_perbaikan_inventaris.tanggal} - {$permintaan_perbaikan_inventaris.deskripsi_kerusakan} + {?=isset_or($permintaan_perbaikan_inventaris.no_permintaan)?} + {?=isset_or($permintaan_perbaikan_inventaris.no_inventaris)?} + {?=isset_or($permintaan_perbaikan_inventaris.nik)?} - {?=isset_or($permintaan_perbaikan_inventaris.nama)?} + {?=isset_or($permintaan_perbaikan_inventaris.tanggal)?} + {?=isset_or($permintaan_perbaikan_inventaris.deskripsi_kerusakan)?} {if: $perbaikandetail} @@ -42,7 +42,7 @@

                                    Tanggal Perbaikan - {$perbaikandetail.tanggal} + {?=isset_or($perbaikandetail.tanggal)?} @@ -51,7 +51,7 @@

                                    Status - {$perbaikandetail.status} + {?=isset_or($perbaikandetail.status)?} @@ -60,7 +60,7 @@

                                    Uraian Kegiatan - {$perbaikandetail.uraian_kegiatan} + {?=isset_or($perbaikandetail.uraian_kegiatan)?} @@ -69,7 +69,7 @@

                                    Petugas - {$perbaikandetail.nip} - {$perbaikandetail.nama} + {?=isset_or($perbaikandetail.nip)?} - {?=isset_or($perbaikandetail.nama)?} @@ -78,7 +78,7 @@

                                    Pelaksana - {$perbaikandetail.pelaksana} + {?=isset_or($perbaikandetail.pelaksana)?} @@ -87,7 +87,7 @@

                                    Keterangan - {$perbaikandetail.keterangan} + {?=isset_or($perbaikandetail.keterangan)?} {else} diff --git a/plugins/inventaris/view/admin/data.permintaan.perbaikan.html b/plugins/inventaris/view/admin/data.permintaan.perbaikan.html index f886352a6..c9108fd23 100644 --- a/plugins/inventaris/view/admin/data.permintaan.perbaikan.html +++ b/plugins/inventaris/view/admin/data.permintaan.perbaikan.html @@ -29,16 +29,16 @@

                                    {loop: $perbaikan} - {$value.no_permintaan} - {$value.no_inventaris} - {$value.nik} - {$value.nama} - {$value.tanggal} - {$value.deskripsi_kerusakan} - {$value.status_perbaikan} + {?=isset_or($value.no_permintaan)?} + {?=isset_or($value.no_inventaris)?} + {?=isset_or($value.nik)?} - {?=isset_or($value.nama)?} + {?=isset_or($value.tanggal)?} + {?=isset_or($value.deskripsi_kerusakan)?} + {?=isset_or($value.status_perbaikan)?} - Tampil - Ubah - Hapus + Tampil + Ubah + Hapus {/loop} diff --git a/plugins/inventaris/view/admin/data.produsen.html b/plugins/inventaris/view/admin/data.produsen.html index 19c08c797..da961bfac 100644 --- a/plugins/inventaris/view/admin/data.produsen.html +++ b/plugins/inventaris/view/admin/data.produsen.html @@ -84,19 +84,19 @@

                                    Data Produsen

                                    {loop: $inventaris_produsen} - {$value.kode_produsen} - {$value.nama_produsen} - {$value.alamat_produsen} - {$value.no_telp} - {$value.email} - {$value.website_produsen} + {?=isset_or($value.kode_produsen)?} + {?=isset_or($value.nama_produsen)?} + {?=isset_or($value.alamat_produsen)?} + {?=isset_or($value.no_telp)?} + {?=isset_or($value.email)?} + {?=isset_or($value.website_produsen)?} {/loop} diff --git a/plugins/inventaris/view/admin/data.ruang.html b/plugins/inventaris/view/admin/data.ruang.html index 18e694510..22e8ad112 100644 --- a/plugins/inventaris/view/admin/data.ruang.html +++ b/plugins/inventaris/view/admin/data.ruang.html @@ -62,11 +62,11 @@

                                    Data Ruang

                                    {loop: $inventaris_ruang} - {$value.id_ruang} - {$value.nama_ruang} + {?=isset_or($value.id_ruang)?} + {?=isset_or($value.nama_ruang)?} {/loop} diff --git a/plugins/inventaris/view/admin/form.pemeliharaan.html b/plugins/inventaris/view/admin/form.pemeliharaan.html index c13de3d7a..985efb6c5 100644 --- a/plugins/inventaris/view/admin/form.pemeliharaan.html +++ b/plugins/inventaris/view/admin/form.pemeliharaan.html @@ -10,23 +10,23 @@

                                    Form Perbaikan

                                    - +
                                    - +
                                    @@ -40,7 +40,7 @@

                                    Form Perbaikan

                                    - +
                                    diff --git a/plugins/inventaris/view/admin/form.perbaikan.html b/plugins/inventaris/view/admin/form.perbaikan.html index 315bfc245..aea537a35 100644 --- a/plugins/inventaris/view/admin/form.perbaikan.html +++ b/plugins/inventaris/view/admin/form.perbaikan.html @@ -8,21 +8,21 @@

                                    Form Perbaikan

                                    - +
                                    - +
                                    - +
                                    @@ -36,11 +36,11 @@

                                    Form Perbaikan

                                    - +
                                    - +
                                    diff --git a/plugins/inventaris/view/admin/form.permintaan.perbaikan.html b/plugins/inventaris/view/admin/form.permintaan.perbaikan.html index 40dd5f5f0..067a6a37e 100644 --- a/plugins/inventaris/view/admin/form.permintaan.perbaikan.html +++ b/plugins/inventaris/view/admin/form.permintaan.perbaikan.html @@ -8,13 +8,13 @@

                                    Form Permintaan Perbaikan

                                    - +
                                    @@ -22,17 +22,17 @@

                                    Form Permintaan Perbaikan

                                    - +
                                    - +
                                    diff --git a/plugins/inventaris/view/admin/manage.html b/plugins/inventaris/view/admin/manage.html index ef247d782..97eb6c350 100644 --- a/plugins/inventaris/view/admin/manage.html +++ b/plugins/inventaris/view/admin/manage.html @@ -109,12 +109,12 @@

                                    Data Permintaan Perbaikan

                                    {loop: $perbaikan} - {$value.no_permintaan} - {$value.no_inventaris} - {$value.nik} - {$value.nama} - {$value.tanggal} - {$value.deskripsi_kerusakan} - {$value.status_perbaikan} + {?=isset_or($value.no_permintaan)?} + {?=isset_or($value.no_inventaris)?} + {?=isset_or($value.nik)?} - {?=isset_or($value.nama)?} + {?=isset_or($value.tanggal)?} + {?=isset_or($value.deskripsi_kerusakan)?} + {?=isset_or($value.status_perbaikan)?} {/loop} diff --git a/plugins/jasa_medis/Admin.php b/plugins/jasa_medis/Admin.php new file mode 100644 index 000000000..2d551ab7a --- /dev/null +++ b/plugins/jasa_medis/Admin.php @@ -0,0 +1,300 @@ + 'manage', + 'Jasa Medis Dokter' => 'dokter', + 'Jasa Medis Perawat' => 'perawat', + ]; + } + + public function getManage() + { + $sub_modules = [ + ['name' => 'Jasa Medis', 'url' => url([ADMIN, 'jasa_medis', 'dokter']), 'icon' => 'user-md', 'desc' => 'Laporan remunerasi jasa medis dokter'], + ['name' => 'Jasa Paramedis', 'url' => url([ADMIN, 'jasa_medis', 'perawat']), 'icon' => 'user', 'desc' => 'Laporan remunerasi jasa paramedis perawat'], + ]; + return $this->draw('manage.html', ['sub_modules' => htmlspecialchars_array($sub_modules)]); + } + + public function getDokter(){ + $this->_addHeaderFiles(); + + $tgl_awal = isset_or($_GET['tgl_awal'], date('Y-m-d')); + $tgl_akhir = isset_or($_GET['tgl_akhir'], date('Y-m-d')); + $search = isset_or($_GET['search'], ''); + + $this->assign = []; + $dokter = $this->db('dokter')->select(['kd_dokter', 'nm_dokter'])->where('status', '1')->toArray(); + + $reg_periksa = $this->db('reg_periksa') + ->select(['dokter.kd_dokter', 'dokter.nm_dokter']) + ->join('dokter', 'dokter.kd_dokter=reg_periksa.kd_dokter') + ->where('tgl_registrasi', '>=', $tgl_awal) + ->where('tgl_registrasi', '<=', $tgl_akhir) + ->like('dokter.kd_dokter', '%'.$search.'%') + ->group('reg_periksa.kd_dokter') + ->toArray(); + $this->assign['grandtotal'] = 0; + $this->assign['dokter'] = []; // Initialize dokter array + foreach($reg_periksa as $row) { + $tgl_perawatan = $this->db('rawat_jl_dr') + ->select(['tgl_perawatan']) + ->where('kd_dokter', $row['kd_dokter']) + // ->where('stts_bayar', 'Sudah') + ->where('tgl_perawatan', '>=', $tgl_awal) + ->where('tgl_perawatan', '<=', $tgl_akhir) + ->group('tgl_perawatan') + ->toArray(); + + $row['total'] = 0; + $row['rawat_jl_dr'] = []; // Initialize array + foreach ($tgl_perawatan as $row2) { + + $row2['detail'] = $this->db('rawat_jl_dr') + ->join('jns_perawatan', 'jns_perawatan.kd_jenis_prw=rawat_jl_dr.kd_jenis_prw') + ->join("(SELECT no_rawat, MAX(CONCAT(tgl_billing,' ', jam_billing)) AS max_waktu FROM mlite_billing GROUP BY no_rawat) latest", 'latest.no_rawat=rawat_jl_dr.no_rawat') + ->join('mlite_billing', "mlite_billing.no_rawat=rawat_jl_dr.no_rawat AND CONCAT(mlite_billing.tgl_billing,' ',mlite_billing.jam_billing)=latest.max_waktu") + ->select(['rawat_jl_dr.no_rawat', 'rawat_jl_dr.kd_jenis_prw', 'nm_perawatan', 'rawat_jl_dr.tarif_tindakandr']) + ->select(['waktu_billing' => "CONCAT(mlite_billing.tgl_billing,' ',mlite_billing.jam_billing)"]) + ->where('tgl_perawatan', $row2['tgl_perawatan']) + ->where('kd_dokter', $row['kd_dokter']) + ->toArray(); + $row2['subtotal'] = 0; + foreach($row2['detail'] as $row3) { + $row2['subtotal'] += $row3['tarif_tindakandr']; + } + $row['total'] += $row2['subtotal']; + $row['rawat_jl_dr'][] = $row2; + } + + $this->assign['grandtotal'] += $row['total']; + $this->assign['dokter'][] = $row; + } + + return $this->draw('dokter.html', [ + 'jasa_medis' => htmlspecialchars_array($this->assign), + 'dokter' => htmlspecialchars_array($dokter), + 'tgl_awal' => $tgl_awal, + 'tgl_akhir' => $tgl_akhir, + 'search' => $search + ]); + } + + public function getPerawat(){ + $this->_addHeaderFiles(); + + $tgl_awal = isset_or($_GET['tgl_awal'], date('Y-m-d')); + $tgl_akhir = isset_or($_GET['tgl_akhir'], date('Y-m-d')); + $search = isset_or($_GET['search'], ''); + + $this->assign = []; + $petugas = $this->db('petugas')->select(['nip', 'nama'])->where('status', '1')->toArray(); + + $reg_periksa = $this->db('rawat_jl_pr') + ->select(['petugas.nip', 'petugas.nama']) + ->join('petugas', 'petugas.nip=rawat_jl_pr.nip') + ->where('tgl_perawatan', '>=', $tgl_awal) + ->where('tgl_perawatan', '<=', $tgl_akhir) + ->like('petugas.nip', '%'.$search.'%') + ->group('rawat_jl_pr.nip') + ->toArray(); + $this->assign['grandtotal'] = 0; + $this->assign['petugas'] = []; // Initialize petugas array + foreach($reg_periksa as $row) { + $tgl_perawatan = $this->db('rawat_jl_pr') + ->select(['tgl_perawatan']) + ->where('nip', $row['nip']) + // ->where('stts_bayar', 'Sudah') + ->where('tgl_perawatan', '>=', $tgl_awal) + ->where('tgl_perawatan', '<=', $tgl_akhir) + ->group('tgl_perawatan') + ->toArray(); + + $row['total'] = 0; + $row['rawat_jl_pr'] = []; // Initialize array + foreach ($tgl_perawatan as $row2) { + + $row2['detail'] = $this->db('rawat_jl_pr') + ->join('jns_perawatan', 'jns_perawatan.kd_jenis_prw=rawat_jl_pr.kd_jenis_prw') + ->join("(SELECT no_rawat, MAX(CONCAT(tgl_billing,' ', jam_billing)) AS max_waktu FROM mlite_billing GROUP BY no_rawat) latest", 'latest.no_rawat=rawat_jl_pr.no_rawat') + ->join('mlite_billing', "mlite_billing.no_rawat=rawat_jl_pr.no_rawat AND CONCAT(mlite_billing.tgl_billing,' ',mlite_billing.jam_billing)=latest.max_waktu") + ->select(['rawat_jl_pr.no_rawat', 'rawat_jl_pr.kd_jenis_prw', 'nm_perawatan', 'rawat_jl_pr.tarif_tindakanpr']) + ->select(['waktu_billing' => "CONCAT(mlite_billing.tgl_billing,' ',mlite_billing.jam_billing)"]) + ->where('tgl_perawatan', $row2['tgl_perawatan']) + ->where('nip', $row['nip']) + ->toArray(); + $row2['subtotal'] = 0; + foreach($row2['detail'] as $row3) { + $row2['subtotal'] += $row3['tarif_tindakanpr']; + } + $row['total'] += $row2['subtotal']; + $row['rawat_jl_pr'][] = $row2; + } + + $this->assign['grandtotal'] += $row['total']; + $this->assign['petugas'][] = $row; + } + + return $this->draw('perawat.html', [ + 'jasa_medis' => htmlspecialchars_array($this->assign), + 'petugas' => $petugas, + 'tgl_awal' => $tgl_awal, + 'tgl_akhir' => $tgl_akhir, + 'search' => $search + ]); + } + + public function postAksi() + { + if(isset($_POST['typeact'])){ + $act = $_POST['typeact']; + }else{ + $act = ''; + } + + if ($act=="lihat_dokter") { + $tgl_awal = $_POST['tgl_awal']; + $tgl_akhir = $_POST['tgl_akhir']; + $search = $_POST['search']; + + $this->assign = []; + $dokter = $this->db('reg_periksa') + ->select(['dokter.kd_dokter', 'dokter.nm_dokter']) + ->join('dokter', 'dokter.kd_dokter=reg_periksa.kd_dokter') + ->where('tgl_registrasi', '>=', $tgl_awal) + ->where('tgl_registrasi', '<=', $tgl_akhir) + ->like('dokter.kd_dokter', '%'.$search.'%') + ->group('reg_periksa.kd_dokter') + ->toArray(); + + $this->assign['grandtotal'] = 0; + $this->assign['dokter'] = []; + foreach($dokter as $row) { + $row['nm_dokter'] = htmlspecialchars($row['nm_dokter'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + $tgl_perawatan = $this->db('rawat_jl_dr') + ->select(['tgl_perawatan']) + ->where('kd_dokter', $row['kd_dokter']) + // ->where('stts_bayar', 'Sudah') + ->where('tgl_perawatan', '>=', $tgl_awal) + ->where('tgl_perawatan', '<=', $tgl_akhir) + ->group('tgl_perawatan') + ->toArray(); + + $row['total'] = 0; + $row['rawat_jl_dr'] = []; + foreach ($tgl_perawatan as $row2) { + + $row2['detail'] = $this->db('rawat_jl_dr') + ->join('jns_perawatan', 'jns_perawatan.kd_jenis_prw=rawat_jl_dr.kd_jenis_prw') + ->join("(SELECT no_rawat, MAX(CONCAT(tgl_billing,' ', jam_billing)) AS max_waktu FROM mlite_billing GROUP BY no_rawat) latest", 'latest.no_rawat=rawat_jl_dr.no_rawat') + ->join('mlite_billing', "mlite_billing.no_rawat=rawat_jl_dr.no_rawat AND CONCAT(mlite_billing.tgl_billing,' ',mlite_billing.jam_billing)=latest.max_waktu") + ->select(['rawat_jl_dr.no_rawat', 'rawat_jl_dr.kd_jenis_prw', 'nm_perawatan', 'rawat_jl_dr.tarif_tindakandr']) + ->select(['waktu_billing' => "CONCAT(mlite_billing.tgl_billing,' ',mlite_billing.jam_billing)"]) + ->where('tgl_perawatan', $row2['tgl_perawatan']) + ->where('kd_dokter', $row['kd_dokter']) + ->toArray(); + $row2['subtotal'] = 0; + foreach($row2['detail'] as &$row3) { + $row3['nm_perawatan'] = htmlspecialchars($row3['nm_perawatan'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + $row2['subtotal'] += $row3['tarif_tindakandr']; + } + $row['total'] += $row2['subtotal']; + $row['rawat_jl_dr'][] = $row2; + } + + $this->assign['grandtotal'] += $row['total']; + $this->assign['dokter'][] = $row; + } + + echo json_encode(htmlspecialchars_array($this->assign)); + } + + if ($act=="lihat_perawat") { + $tgl_awal = $_POST['tgl_awal']; + $tgl_akhir = $_POST['tgl_akhir']; + $search = $_POST['search']; + + $this->assign = []; + + $reg_periksa = $this->db('rawat_jl_pr') + ->select(['petugas.nip', 'petugas.nama']) + ->join('petugas', 'petugas.nip=rawat_jl_pr.nip') + ->where('tgl_perawatan', '>=', $tgl_awal) + ->where('tgl_perawatan', '<=', $tgl_akhir) + ->like('petugas.nip', '%'.$search.'%') + ->group('rawat_jl_pr.nip') + ->toArray(); + $this->assign['grandtotal'] = 0; + $this->assign['petugas'] = []; + foreach($reg_periksa as $row) { + $row['nama'] = htmlspecialchars($row['nama'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + $tgl_perawatan = $this->db('rawat_jl_pr') + ->select(['tgl_perawatan']) + ->where('nip', $row['nip']) + // ->where('stts_bayar', 'Sudah') + ->where('tgl_perawatan', '>=', $tgl_awal) + ->where('tgl_perawatan', '<=', $tgl_akhir) + ->group('tgl_perawatan') + ->toArray(); + + $row['total'] = 0; + $row['rawat_jl_pr'] = []; + foreach ($tgl_perawatan as $row2) { + + $row2['detail'] = $this->db('rawat_jl_pr') + ->join('jns_perawatan', 'jns_perawatan.kd_jenis_prw=rawat_jl_pr.kd_jenis_prw') + ->join("(SELECT no_rawat, MAX(CONCAT(tgl_billing,' ', jam_billing)) AS max_waktu FROM mlite_billing GROUP BY no_rawat) latest", 'latest.no_rawat=rawat_jl_pr.no_rawat') + ->join('mlite_billing', "mlite_billing.no_rawat=rawat_jl_pr.no_rawat AND CONCAT(mlite_billing.tgl_billing,' ',mlite_billing.jam_billing)=latest.max_waktu") + ->select(['rawat_jl_pr.no_rawat', 'rawat_jl_pr.kd_jenis_prw', 'nm_perawatan', 'rawat_jl_pr.tarif_tindakanpr']) + ->select(['waktu_billing' => "CONCAT(mlite_billing.tgl_billing,' ',mlite_billing.jam_billing)"]) + ->where('tgl_perawatan', $row2['tgl_perawatan']) + ->where('nip', $row['nip']) + ->toArray(); + $row2['subtotal'] = 0; + foreach($row2['detail'] as &$row3) { + $row3['nm_perawatan'] = htmlspecialchars($row3['nm_perawatan'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + $row2['subtotal'] += $row3['tarif_tindakanpr']; + } + $row['total'] += $row2['subtotal']; + $row['rawat_jl_pr'][] = $row2; + } + + $this->assign['grandtotal'] += $row['total']; + $this->assign['petugas'][] = $row; + } + + echo json_encode(htmlspecialchars_array($this->assign)); + } + exit(); + } + + public function getJavascript() + { + header('Content-type: text/javascript'); + $settings = $this->settings('settings'); + echo $this->draw(MODULES.'/jasa_medis/js/admin/scripts.js', ['settings' => $settings]); + exit(); + } + + private function _addHeaderFiles() + { + $this->core->addJS(url('assets/jscripts/xlsx.js')); + $this->core->addJS(url('assets/jscripts/jspdf.min.js')); + $this->core->addJS(url('assets/jscripts/jspdf.plugin.autotable.min.js')); + $this->core->addCSS(url('assets/css/bootstrap-datetimepicker.css')); + $this->core->addJS(url('assets/jscripts/moment-with-locales.js')); + $this->core->addJS(url('assets/jscripts/bootstrap-datetimepicker.js')); + + $this->core->addJS(url([ADMIN, 'jasa_medis', 'javascript']), 'footer'); + } + +} diff --git a/plugins/jasa_medis/Info.php b/plugins/jasa_medis/Info.php new file mode 100644 index 000000000..71392eff2 --- /dev/null +++ b/plugins/jasa_medis/Info.php @@ -0,0 +1,16 @@ + 'Jasa Medis', + 'description' => 'Modul jasa medis dokter dan perawat untuk mLITE', + 'author' => 'Basoro', + 'category' => 'keuangan', + 'version' => '1.0', + 'compatibility' => '6.*.*', + 'icon' => 'money', + 'install' => function () use ($core) { + }, + 'uninstall' => function() use($core) + { + } +]; \ No newline at end of file diff --git a/plugins/jasa_medis/README.md b/plugins/jasa_medis/README.md new file mode 100644 index 000000000..ec9289441 --- /dev/null +++ b/plugins/jasa_medis/README.md @@ -0,0 +1,49 @@ +# Plugin Jasa Medis + +Dokumentasi singkat penggunaan modul **Jasa Medis** di mLITE. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Jasa Medis**. +- Pilih submenu sesuai kebutuhan: + - Kelola (halaman utama) + - Jasa Medis Dokter + - Jasa Medis Perawat + +## Panduan Pengguna (Petugas) + +1. **Jasa Medis Dokter** + - Buka submenu **Jasa Medis Dokter**. + - Atur rentang tanggal pada filter **Tanggal Awal** dan **Tanggal Akhir**. + - Gunakan kolom pencarian untuk memfilter berdasarkan kode dokter jika diperlukan. + - Klik **Tampilkan** untuk memuat data remunerasi. + - Laporan menampilkan rincian tindakan per dokter per tanggal perawatan beserta tarif tindakan dokter. + - Gunakan tombol **Print** atau **Excel** untuk mengekspor laporan. + +2. **Jasa Medis Perawat** + - Buka submenu **Jasa Medis Perawat**. + - Atur rentang tanggal dan gunakan pencarian berdasarkan NIP petugas bila diperlukan. + - Klik **Tampilkan** untuk memuat data remunerasi paramedis/perawat. + - Laporan menampilkan rincian tindakan per perawat per tanggal perawatan beserta tarif tindakan paramedis. + - Gunakan tombol **Print** atau **Excel** untuk mengekspor laporan. + +## Panduan Admin + +1. **Tarif Tindakan Dokter** + - Data tarif jasa medis dokter (`tarif_tindakandr`) bersumber dari tabel `rawat_jl_dr` dan dikaitkan dengan tabel `jns_perawatan`. + - Pastikan tarif tindakan sudah diatur dengan benar di master data jenis perawatan agar perhitungan remunerasi akurat. + +2. **Tarif Tindakan Paramedis** + - Data tarif jasa paramedis (`tarif_tindakanpr`) bersumber dari tabel `rawat_jl_pr`. + - Verifikasi tarif di master data jenis perawatan secara berkala. + +3. **Data Billing** + - Plugin ini mengambil data billing dari tabel `mlite_billing`. + - Pastikan proses billing rawat jalan sudah berjalan dengan benar agar laporan jasa medis menampilkan data yang lengkap. + +## Catatan + +- Laporan hanya memuat data rawat jalan (rawat_jl_dr dan rawat_jl_pr); rawat inap menggunakan modul terpisah. +- Grand total remunerasi dihitung otomatis dari akumulasi semua tindakan dalam rentang tanggal yang dipilih. +- Pastikan data dokter dan petugas berstatus aktif agar muncul dalam laporan. diff --git a/plugins/jasa_medis/js/admin/scripts.js b/plugins/jasa_medis/js/admin/scripts.js new file mode 100644 index 000000000..c5e47893a --- /dev/null +++ b/plugins/jasa_medis/js/admin/scripts.js @@ -0,0 +1,238 @@ +jQuery().ready(function () { + + // =========================================== + // Ketika tombol lihat data dokter di tekan + // =========================================== + $("#lihat_data_dokter").click(function () { + var search = $('#search').val(); + var tgl_awal = $('#tgl_awal').val(); + var tgl_akhir = $('#tgl_akhir').val(); + + $.ajax({ + url: "{?=url([ADMIN,'jasa_medis','aksi'])?}", + method: "POST", + data: { + typeact: 'lihat_dokter', + search: search, + tgl_awal: tgl_awal, + tgl_akhir: tgl_akhir + }, + dataType: 'json', + success: function (res) { + // console.log(res); + var grandtotal = res['grandtotal']; + var res = res['dokter']; + var eTable = "
                                    "; + for (var i = 0; i < res.length; i++) { + eTable += ""; + eTable += ''; + eTable += ''; + eTable += ''; + for (var ii = 0; ii < res[i]['rawat_jl_dr'].length; ii++) { + eTable += ""; + eTable += ''; + eTable += ''; + eTable += ''; + for (var iii = 0; iii < res[i]['rawat_jl_dr'][ii]['detail'].length; iii++) { + eTable += ""; + eTable += ''; + eTable += ''; + eTable += ""; + } + eTable += ''; + eTable += ''; + eTable += ''; + eTable += ""; + } + eTable += ''; + eTable += ''; + eTable += ''; + eTable += ''; + } + eTable += ""; + eTable += ''; + eTable += ''; + eTable += ""; + eTable += "
                                    Nama DokterDetail
                                    ' + res[i]['nm_dokter'] + '
                                    Tanggal : ' + res[i]['rawat_jl_dr'][ii]['tgl_perawatan'] + '
                                    - ' + res[i]['rawat_jl_dr'][ii]['detail'][iii]['nm_perawatan'] + ' : Rp. ' + (res[i]['rawat_jl_dr'][ii]['detail'][iii]['tarif_tindakandr']/1000).toFixed(3) + '
                                    Sub Total : Rp. ' + (res[i]['rawat_jl_dr'][ii]['subtotal']/1000).toFixed(3) + '
                                    Total : Rp. ' + (res[i]['total']/1000).toFixed(3) + '
                                    Grand TotalRp. ' + (grandtotal/1000).toFixed(3) + '
                                    "; + $('#forTable_dokter').html(eTable); + } + }); + + $('#modal-title-dokter').text("Lihat Data Jasa Medis Dokter"); + $("#modal_lihat_dokter").modal(); + }); + + // =========================================== + // Ketika tombol lihat data perawat di tekan + // =========================================== + $("#lihat_data_perawat").click(function () { + var search = $('#search_perawat').val(); + var tgl_awal = $('#tgl_awal_perawat').val(); + var tgl_akhir = $('#tgl_akhir_perawat').val(); + + $.ajax({ + url: "{?=url([ADMIN,'jasa_medis','aksi'])?}", + method: "POST", + data: { + typeact: 'lihat_perawat', + search: search, + tgl_awal: tgl_awal, + tgl_akhir: tgl_akhir + }, + dataType: 'json', + success: function (res) { + console.log(res); + var grandtotal = res['grandtotal']; + var res = res['petugas']; + var eTable = "
                                    "; + for (var i = 0; i < res.length; i++) { + eTable += ""; + eTable += ''; + eTable += ''; + eTable += ''; + for (var ii = 0; ii < res[i]['rawat_jl_pr'].length; ii++) { + eTable += ""; + eTable += ''; + eTable += ''; + eTable += ''; + for (var iii = 0; iii < res[i]['rawat_jl_pr'][ii]['detail'].length; iii++) { + eTable += ""; + eTable += ''; + eTable += ''; + eTable += ""; + } + eTable += ''; + eTable += ''; + eTable += ''; + eTable += ""; + } + eTable += ''; + eTable += ''; + eTable += ''; + eTable += ''; + } + eTable += ""; + eTable += ''; + eTable += ''; + eTable += ""; + eTable += "
                                    Nama PerawatDetail
                                    ' + res[i]['nama'] + '
                                    Tanggal : ' + res[i]['rawat_jl_pr'][ii]['tgl_perawatan'] + '
                                    - ' + res[i]['rawat_jl_pr'][ii]['detail'][iii]['nm_perawatan'] + ' : Rp. ' + (res[i]['rawat_jl_pr'][ii]['detail'][iii]['tarif_tindakanpr']/1000).toFixed(3) + '
                                    Sub Total : Rp. ' + (res[i]['rawat_jl_pr'][ii]['subtotal']/1000).toFixed(3) + '
                                    Total : Rp. ' + (res[i]['total']/1000).toFixed(3) + '
                                    Grand TotalRp. ' + (grandtotal/1000).toFixed(3) + '
                                    "; + $('#forTable_perawat').html(eTable); + } + }); + + $('#modal-title-perawat').text("Lihat Data Jasa Medis Perawat"); + $("#modal_lihat_perawat").modal(); + }); + + // =========================================== + // Ketika tombol export pdf dokter di tekan + // =========================================== + $("#export_pdf_dokter").click(function () { + var doc = new jsPDF('p', 'pt', 'A4'); /* pilih 'l' atau 'p' */ + var img = "{?=base64_encode(file_get_contents(url(ADMIN . '/' . $settings['logo'])))?}"; + doc.addImage(img, 'JPEG', 20, 10, 50, 50); + doc.setFontSize(20); + doc.text("{$settings.nama_instansi}", 80, 35, null, null, null); + doc.setFontSize(10); + doc.text("{$settings.alamat} - {$settings.kota} - {$settings.propinsi}", 80, 46, null, null, null); + doc.text("Telepon: {$settings.nomor_telepon} - Email: {$settings.email}", 80, 56, null, null, null); + doc.line(20,70,572,70,null); /* doc.line(20,70,820,70,null); --> Jika landscape */ + doc.line(20,72,572,72,null); /* doc.line(20,72,820,72,null); --> Jika landscape */ + doc.setFontSize(14); + doc.text("Tabel Jasa Medis Dokter", 20, 95, null, null, null); + const totalPagesExp = "{total_pages_count_string}"; + doc.autoTable({ + html: '#tbl_lihat_dokter', + startY: 105, + margin: { + left: 20, + right: 20 + }, + styles: { + fontSize: 10, + cellPadding: 5 + }, + didDrawPage: data => { + let footerStr = "Page " + doc.internal.getNumberOfPages(); + if (typeof doc.putTotalPages === 'function') { + footerStr = footerStr + " of " + totalPagesExp; + } + doc.setFontSize(10); + doc.text(footerStr, data.settings.margin.left, doc.internal.pageSize.height - 10); + } + }); + if (typeof doc.putTotalPages === 'function') { + doc.putTotalPages(totalPagesExp); + } + window.open(doc.output('bloburl'), '_blank',"toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no,modal=yes"); + }); + + // =========================================== + // Ketika tombol export pdf perawat di tekan + // =========================================== + $("#export_pdf_perawat").click(function () { + var doc = new jsPDF('p', 'pt', 'A4'); /* pilih 'l' atau 'p' */ + var img = "{?=base64_encode(file_get_contents(url(ADMIN . '/' . $settings['logo'])))?}"; + doc.addImage(img, 'JPEG', 20, 10, 50, 50); + doc.setFontSize(20); + doc.text("{$settings.nama_instansi}", 80, 35, null, null, null); + doc.setFontSize(10); + doc.text("{$settings.alamat} - {$settings.kota} - {$settings.propinsi}", 80, 46, null, null, null); + doc.text("Telepon: {$settings.nomor_telepon} - Email: {$settings.email}", 80, 56, null, null, null); + doc.line(20,70,572,70,null); /* doc.line(20,70,820,70,null); --> Jika landscape */ + doc.line(20,72,572,72,null); /* doc.line(20,72,820,72,null); --> Jika landscape */ + doc.setFontSize(14); + doc.text("Tabel Jasa Medis Perawat", 20, 95, null, null, null); + const totalPagesExp = "{total_pages_count_string}"; + doc.autoTable({ + html: '#tbl_lihat_perawat', + startY: 105, + margin: { + left: 20, + right: 20 + }, + styles: { + fontSize: 10, + cellPadding: 5 + }, + didDrawPage: data => { + let footerStr = "Page " + doc.internal.getNumberOfPages(); + if (typeof doc.putTotalPages === 'function') { + footerStr = footerStr + " of " + totalPagesExp; + } + doc.setFontSize(10); + doc.text(footerStr, data.settings.margin.left, doc.internal.pageSize.height - 10); + } + }); + if (typeof doc.putTotalPages === 'function') { + doc.putTotalPages(totalPagesExp); + } + window.open(doc.output('bloburl'), '_blank',"toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no,modal=yes"); + }); + + // =========================================== + // Ketika tombol export xlsx dokter di tekan + // =========================================== + $("#export_xlsx_dokter").click(function () { + let tbl1 = document.getElementById("tbl_lihat_dokter"); + let worksheet_tmp1 = XLSX.utils.table_to_sheet(tbl1); + let a = XLSX.utils.sheet_to_json(worksheet_tmp1, { header: 1 }); + let worksheet1 = XLSX.utils.json_to_sheet(a, { skipHeader: true }); + const new_workbook = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(new_workbook, worksheet1, "Data dokter"); + XLSX.writeFile(new_workbook, 'jasa_medis_dokter.xls'); + }); + + // =========================================== + // Ketika tombol export xlsx perawat di tekan + // =========================================== + $("#export_xlsx_perawat").click(function () { + let tbl1 = document.getElementById("tbl_lihat_perawat"); + let worksheet_tmp1 = XLSX.utils.table_to_sheet(tbl1); + let a = XLSX.utils.sheet_to_json(worksheet_tmp1, { header: 1 }); + let worksheet1 = XLSX.utils.json_to_sheet(a, { skipHeader: true }); + const new_workbook = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(new_workbook, worksheet1, "Data perawat"); + XLSX.writeFile(new_workbook, 'jasa_medis_perawat.xls'); + }); +}); \ No newline at end of file diff --git a/plugins/jasa_medis/view/admin/dokter.html b/plugins/jasa_medis/view/admin/dokter.html new file mode 100644 index 000000000..0e9000817 --- /dev/null +++ b/plugins/jasa_medis/view/admin/dokter.html @@ -0,0 +1,119 @@ +
                                    +
                                    +
                                    +
                                    +

                                    Jasa Medis Dokter

                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    +
                                    +
                                    + + + + + + + + + + + + + + + +
                                    +
                                    +
                                    +
                                    + + + + + + + + + {loop: isset_or($jasa_medis.dokter, [])} + + + + + {loop: isset_or($value.rawat_jl_dr, []) as $data} + + + + + {loop: isset_or($data.detail, []) as $hasil} + + + + + {/loop} + + + + + {/loop} + + + + + {/loop} + + + + + +
                                    DokterDetail
                                    {?=isset_or($value.nm_dokter)?}
                                    Tanggal : {?=isset_or($data.tgl_perawatan)?}
                                    - {?=isset_or($hasil.nm_perawatan)?} : Rp. {?=number_format($hasil.tarif_tindakandr,0,',','.')?}
                                    Sub Total : Rp. {?=number_format($data.subtotal,0,',','.')?}
                                    Total : Rp. {?=number_format($value.total,0,',','.')?}
                                    Grand TotalRp. {?=number_format($jasa_medis.grandtotal,0,',','.')?}
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + + + + \ No newline at end of file diff --git a/plugins/jasa_medis/view/admin/manage.html b/plugins/jasa_medis/view/admin/manage.html new file mode 100644 index 000000000..bdf53d77c --- /dev/null +++ b/plugins/jasa_medis/view/admin/manage.html @@ -0,0 +1,21 @@ +
                                    +
                                    + +
                                    +
                                    diff --git a/plugins/jasa_medis/view/admin/perawat.html b/plugins/jasa_medis/view/admin/perawat.html new file mode 100644 index 000000000..bccc67b79 --- /dev/null +++ b/plugins/jasa_medis/view/admin/perawat.html @@ -0,0 +1,119 @@ +
                                    +
                                    +
                                    +
                                    +

                                    Jasa Medis Perawat

                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    + + + + + + + + + + + + + +
                                    +
                                    +
                                    +
                                    +
                                    + + + + + + + + + {loop: isset_or($jasa_medis.petugas, [])} + + + + + {loop: isset_or($value.rawat_jl_pr, []) as $data} + + + + + {loop: isset_or($data.detail, []) as $hasil} + + + + + {/loop} + + + + + {/loop} + + + + + {/loop} + + + + + +
                                    PetugasDetail
                                    {?=isset_or($value.nama)?}
                                    Tanggal : {?=isset_or($data.tgl_perawatan)?}
                                    - {?=isset_or($hasil.nm_perawatan)?} : Rp. {?=number_format($hasil.tarif_tindakanpr,0,',','.')?}
                                    Sub Total : Rp. {?=number_format($data.subtotal,0,',','.')?}
                                    Total : Rp. {?=number_format($value.total,0,',','.')?}
                                    Grand TotalRp. {?=number_format($jasa_medis.grandtotal,0,',','.')?}
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + + + + \ No newline at end of file diff --git a/plugins/jkn_mobile/Admin.php b/plugins/jkn_mobile/Admin.php index 32b14feb0..950f9854e 100644 --- a/plugins/jkn_mobile/Admin.php +++ b/plugins/jkn_mobile/Admin.php @@ -27,6 +27,8 @@ public function navigation() { return [ 'Kelola' => 'manage', + 'WS BPJS' => 'wsbpjs', + 'WS RS' => 'wsrs', 'Katalog' => 'index', 'Mapping Poliklinik' => 'mappingpoli', 'Add Mapping Poliklinik' => 'addmappingpoli', @@ -45,7 +47,8 @@ public function getManage() { $sub_modules = [ ['name' => 'Katalog', 'url' => url([ADMIN, 'jkn_mobile', 'index']), 'icon' => 'tasks', 'desc' => 'Index JKN Mobile'], - ['name' => 'Referensi', 'url' => url([ADMIN, 'jkn_mobile', 'ref']), 'icon' => 'tasks', 'desc' => 'Referensi JKN Mobile'], + ['name' => 'WS BPJS', 'url' => url([ADMIN, 'jkn_mobile', 'wsbpjs']), 'icon' => 'tasks', 'desc' => 'WS BPJS JKN Mobile'], + ['name' => 'WS RS', 'url' => url([ADMIN, 'jkn_mobile', 'wsrs']), 'icon' => 'tasks', 'desc' => 'WS RS JKN Mobile'], ['name' => 'Mapping Poliklinik', 'url' => url([ADMIN, 'jkn_mobile', 'mappingpoli']), 'icon' => 'tasks', 'desc' => 'Mapping Poliklinik JKN Mobile'], ['name' => 'Add Mapping Poliklinik', 'url' => url([ADMIN, 'jkn_mobile', 'addmappingpoli']), 'icon' => 'tasks', 'desc' => 'Add mapping poliklinik JKN Mobile'], ['name' => 'Mapping Dokter', 'url' => url([ADMIN, 'jkn_mobile', 'mappingdokter']), 'icon' => 'tasks', 'desc' => 'Mapping Dokter JKN Mobile'], @@ -53,12 +56,13 @@ public function getManage() ['name' => 'Jadwal Dokter HFIS', 'url' => url([ADMIN, 'jkn_mobile', 'jadwaldokter']), 'icon' => 'tasks', 'desc' => 'Jadwal Dokter HFIS JKN Mobile'], ['name' => 'Data Booking Antrol', 'url' => url([ADMIN, 'jkn_mobile', 'bookingantrol']), 'icon' => 'list', 'desc' => 'Booking Antrol JKN Mobile'], ['name' => 'Task ID', 'url' => url([ADMIN, 'jkn_mobile', 'taskid']), 'icon' => 'tasks', 'desc' => 'Task ID JKN Mobile'], + ['name' => 'Log Task ID', 'url' => url([ADMIN, 'jkn_mobile', 'logtaskid']), 'icon' => 'tasks', 'desc' => 'Log Task ID JKN Mobile'], ['name' => 'Quality Rate', 'url' => url([ADMIN, 'jkn_mobile', 'qrantrol']), 'icon' => 'tasks', 'desc' => 'Quality Rate Antrian Online BPJS'], ['name' => 'Dashboard Antrol BPJS', 'url' => url([ADMIN, 'jkn_mobile', 'antrol']), 'icon' => 'tasks', 'desc' => 'Antrian Online BPJS'], - ['name' => 'Dashboard Antrol Local BPJS', 'url' => url([ADMIN, 'jkn_mobile_v2', 'antrollocal']), 'icon' => 'tasks', 'desc' => 'Antrian Online Local BPJS'], + ['name' => 'Dashboard Antrol Local BPJS', 'url' => url([ADMIN, 'jkn_mobile', 'antrollocal']), 'icon' => 'tasks', 'desc' => 'Antrian Online Local BPJS'], ['name' => 'Pengaturan', 'url' => url([ADMIN, 'jkn_mobile', 'settings']), 'icon' => 'tasks', 'desc' => 'Pengaturan JKN Mobile'], ]; - return $this->draw('manage.html', ['sub_modules' => $sub_modules]); + return $this->draw('manage.html', ['sub_modules' => htmlspecialchars_array($sub_modules)]); } public function getIndex() @@ -66,9 +70,72 @@ public function getIndex() return $this->draw('index.html'); } - public function getRef() + public function getWSBpjs() { - return $this->draw('ref.html'); + $this->getCssCard(); + $parsedown = new \Systems\Lib\Parsedown(); + $readme_file = MODULES . '/jkn_mobile/README.md'; + $readme = $parsedown->text($this->tpl->noParse(file_get_contents($readme_file))); + return $this->draw('wsbpjs.html', ['readme' => $readme]); + } + + public function getWSRS() + { + $this->getCssCard(); + $referensi_poli = $this->db('maping_poli_bpjs')->toArray(); + $referensi_dokter = $this->db('maping_dokter_dpjpvclaim')->toArray(); + return $this->draw('wsrs.html', [ + 'referensi_poli' => $referensi_poli, + 'referensi_dokter' => $referensi_dokter, + 'header_username' => $this->settings->get('jkn_mobile.header_username'), + 'header_password' => $this->settings->get('jkn_mobile.header_password'), + 'x_username' => $this->settings->get('jkn_mobile.x_username'), + 'x_password' => $this->settings->get('jkn_mobile.x_password'), + 'header_token' => $this->settings->get('jkn_mobile.header_token'), + 'token' => $this->settings->get('jkn_mobile.token') + ]); + } + + public function postWsRequest() + { + $endpoint = $_POST['endpoint']; + $method = $_POST['method']; + $data = $_POST['data'] ?? null; + + date_default_timezone_set('UTC'); + $tStamp = strval(time() - strtotime("1970-01-01 00:00:00")); + $key = $this->consid . $this->secretkey . $tStamp; + + $url = $this->bpjsurl . $endpoint; + + $output = ''; + if ($method == 'GET') { + $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, $tStamp); + } elseif ($method == 'POST') { + $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, $tStamp); + } elseif ($method == 'PUT') { + $output = BpjsService::put($url, $data, $this->consid, $this->secretkey, $this->user_key, $tStamp); + } elseif ($method == 'DELETE') { + $output = BpjsService::delete($url, $data, $this->consid, $this->secretkey, $this->user_key, $tStamp); + } + + $json = json_decode($output, true); + + // Jika json tidak berbentuk array (gagal decode / response kosong) jadikan array kosong agar tidak error di htmlspecialchars_array + if (!is_array($json)) { + $json = []; + } + + if (isset($json['response']) && !is_array($json['response'])) { + $stringDecrypt = stringDecrypt($key, $json['response']); + $decompress = \LZCompressor\LZString::decompressFromEncodedURIComponent($stringDecrypt); + if ($decompress) { + $json['response'] = json_decode($decompress, true); + } + } + + echo json_encode(htmlspecialchars_array($json)); + exit(); } public function getRefPoliFinger() @@ -110,7 +177,7 @@ public function getRefPoli() $url = $this->bpjsurl.'ref/poli'; $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, $tStamp); $json = json_decode($output, true); - //echo json_encode($json); + //echo json_encode(htmlspecialchars_array($json)); $code = $json['metadata']['code']; $message = $json['metadata']['message']; $stringDecrypt = stringDecrypt($key, $json['response']); @@ -146,7 +213,7 @@ public function getAddMappingPoli() { $this->_addHeaderFiles(); $this->assign['poliklinik'] = $this->db('poliklinik')->where('status','1')->toArray(); - return $this->draw('form.mappingpoli.html', ['row' => $this->assign]); + return $this->draw('form.mappingpoli.html', ['row' => htmlspecialchars_array($this->assign)]); } public function postPoliklinik_Save() @@ -190,7 +257,7 @@ public function getRefDokter() $url = $this->bpjsurl.'ref/dokter'; $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, $tStamp); $json = json_decode($output, true); - //echo json_encode($json); + //echo json_encode(htmlspecialchars_array($json)); $code = $json['metadata']['code']; $message = $json['metadata']['message']; $stringDecrypt = stringDecrypt($key, $json['response']); @@ -227,7 +294,7 @@ public function getAddMappingDokter() { $this->_addHeaderFiles(); $this->assign['dokter'] = $this->db('dokter')->where('status','1')->toArray(); - return $this->draw('form.mappingdokter.html', ['row' => $this->assign]); + return $this->draw('form.mappingdokter.html', ['row' => htmlspecialchars_array($this->assign)]); } public function postDokter_Save() @@ -264,7 +331,8 @@ public function getDokter_Delete($id) public function getJadwalDokter() { - $poli = $this->db('maping_poli_bpjs')->group('kd_poli_bpjs')->toArray(); + $this->getCssCard(); + $poli = $this->db('maping_poli_bpjs')->toArray(); return $this->draw('jadwaldokter.html',['poli'=>$poli]); } @@ -280,18 +348,26 @@ public function postHfis() { $url = $this->bpjsurl . 'jadwaldokter/kodepoli/'.$kodepoli.'/tanggal/'.$tanggal; $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, $tStamp); $json = json_decode($output, true); - $code = $json['metadata']['code']; - $message = $json['metadata']['message']; - $stringDecrypt = stringDecrypt($key, $json['response']); - $decompress = '""'; - if (!empty($stringDecrypt)) { - $decompress = \LZCompressor\LZString::decompressFromEncodedURIComponent(($stringDecrypt)); - } - if ($json['metadata']['code'] == '200') { - $response = $decompress; + + if (isset($json['metadata']['code'])) { + $code = $json['metadata']['code']; + $message = $json['metadata']['message']; + + if ($code == '200' && isset($json['response'])) { + $stringDecrypt = stringDecrypt($key, $json['response']); + $decompress = ''; + if (!empty($stringDecrypt)) { + $decompress = \LZCompressor\LZString::decompressFromEncodedURIComponent(($stringDecrypt)); + } + $response = json_decode($decompress, true); + } else { + $response = []; // Empty array if not found or error + } + } else { + $response = []; // Empty array if invalid response } - $response = json_decode($response, true); - echo json_encode($response); + + echo json_encode(htmlspecialchars_array($response)); exit(); } @@ -304,9 +380,9 @@ public function anyTaskID() $date = $_POST['periode_antrol']; $exclude_taskid = str_replace(",","','", $this->settings->get('jkn_mobile.exclude_taskid')); $query = $this->db()->pdo()->prepare("SELECT pasien.no_peserta,pasien.no_rkm_medis,pasien.no_ktp,pasien.no_tlp,reg_periksa.no_reg,reg_periksa.no_rawat,reg_periksa.tgl_registrasi,reg_periksa.kd_dokter,dokter.nm_dokter,reg_periksa.kd_poli,poliklinik.nm_poli,reg_periksa.stts_daftar,reg_periksa.no_rkm_medis - FROM reg_periksa INNER JOIN pasien ON reg_periksa.no_rkm_medis=pasien.no_rkm_medis INNER JOIN dokter ON reg_periksa.kd_dokter=dokter.kd_dokter INNER JOIN poliklinik ON reg_periksa.kd_poli=poliklinik.kd_poli WHERE reg_periksa.tgl_registrasi='$date' AND reg_periksa.kd_poli NOT IN ('$exclude_taskid') + FROM reg_periksa INNER JOIN pasien ON reg_periksa.no_rkm_medis=pasien.no_rkm_medis INNER JOIN dokter ON reg_periksa.kd_dokter=dokter.kd_dokter INNER JOIN poliklinik ON reg_periksa.kd_poli=poliklinik.kd_poli WHERE reg_periksa.tgl_registrasi=? AND reg_periksa.kd_poli NOT IN (?) ORDER BY concat(reg_periksa.tgl_registrasi,' ',reg_periksa.jam_reg)"); - $query->execute(); + $query->execute([$date, $exclude_taskid]); $query = $query->fetchAll(\PDO::FETCH_ASSOC);; $rows = []; @@ -321,13 +397,13 @@ public function anyTaskID() if(!$mlite_antrian_referensi) { $mlite_antrian_referensi = $this->db('mlite_antrian_referensi')->where('tanggal_periksa', $q['tgl_registrasi'])->where('no_rkm_medis', $q['no_rkm_medis'])->oneArray(); } - $mutasi_berkas = $this->db('mutasi_berkas')->select('dikirim')->where('no_rawat', $reg_periksa['no_rawat'])->where('dikirim', '<>', '0000-00-00 00:00:00')->oneArray(); - $mutasi_berkas2 = $this->db('mutasi_berkas')->select('diterima')->where('no_rawat', $reg_periksa['no_rawat'])->where('diterima', '<>', '0000-00-00 00:00:00')->oneArray(); + $mutasi_berkas = $this->db('mutasi_berkas')->select('dikirim')->where('no_rawat', $reg_periksa['no_rawat'])->where('dikirim', '>', '1970-01-01 00:00:00')->oneArray(); + $mutasi_berkas2 = $this->db('mutasi_berkas')->select('diterima')->where('no_rawat', $reg_periksa['no_rawat'])->where('diterima', '>', '1970-01-01 00:00:00')->oneArray(); $pemeriksaan_ralan = $this->db('pemeriksaan_ralan')->select(['datajam' => 'concat(tgl_perawatan," ",jam_rawat)'])->where('no_rawat', $reg_periksa['no_rawat'])->oneArray(); $resep_obat = $this->db('resep_obat')->select(['datajam' => 'concat(tgl_perawatan," ",jam)'])->where('no_rawat', $reg_periksa['no_rawat'])->oneArray(); $resep_obat2 = $this->db('resep_obat')->select(['datajam' => 'concat(tgl_peresepan," ",jam_peresepan)'])->where('no_rawat', $reg_periksa['no_rawat'])->where('concat(tgl_perawatan," ",jam)', '<>', 'concat(tgl_peresepan," ",jam_peresepan)')->oneArray(); - $mlite_antrian_loket = $this->db('mlite_antrian_loket')->where('postdate', $date)->where('no_rkm_medis', $q['no_rkm_medis'])->oneArray(); + $mlite_antrian_loket = $this->db('mlite_antrian_loket')->where('postdate', $date)->where('type','Loket')->where('no_rkm_medis', $q['no_rkm_medis'])->oneArray(); $task1 = ''; $task2 = ''; if($mlite_antrian_loket) { @@ -352,6 +428,7 @@ public function anyTaskID() $taskid5['waktu'] = ''; $taskid6['waktu'] = ''; $taskid7['waktu'] = ''; + $taskid99['waktu'] = ''; if(!empty($q['nomor_referensi'])) { $taskid1 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', '1')->oneArray(); @@ -461,8 +538,8 @@ public function getTaskIDInput($no_rawat) $taskid['99'] = date('Y-m-d H:i:s', $taskid99['waktu'] / 1000 ); $mlite_antrian_loket = $this->db('mlite_antrian_loket')->where('no_rkm_medis', $pasien['no_rkm_medis'])->where('postdate', $pasien['tgl_registrasi'])->oneArray(); - $berkas_dikirim = $this->db('mutasi_berkas')->select('dikirim')->where('no_rawat', $pasien['no_rawat'])->where('dikirim', '<>', '0000-00-00 00:00:00')->oneArray(); - $berkas_diterima = $this->db('mutasi_berkas')->select('diterima')->where('no_rawat', $pasien['no_rawat'])->where('diterima', '<>', '0000-00-00 00:00:00')->oneArray(); + $berkas_dikirim = $this->db('mutasi_berkas')->select('dikirim')->where('no_rawat', $pasien['no_rawat'])->where('dikirim', '>', '1970-01-01 00:00:00')->oneArray(); + $berkas_diterima = $this->db('mutasi_berkas')->select('diterima')->where('no_rawat', $pasien['no_rawat'])->where('diterima', '>', '1970-01-01 00:00:00')->oneArray(); $pemeriksaan_ralan = $this->db('pemeriksaan_ralan')->select(['datajam' => 'concat(tgl_perawatan," ",jam_rawat)'])->where('no_rawat', $pasien['no_rawat'])->oneArray(); $resep_obat = $this->db('resep_obat')->select(['datajam' => 'concat(tgl_peresepan," ",jam_peresepan)', 'datajam2' => 'concat(tgl_perawatan," ",jam)', 'no_resep' => 'no_resep'])->where('no_rawat', $pasien['no_rawat'])->oneArray(); @@ -481,19 +558,19 @@ public function getTaskIDInput($no_rawat) $taskid['2'] = isset_or($mlite_antrian_loket['postdate'], $pasien['tgl_registrasi']).' '.isset_or($mlite_antrian_loket['end_time'], $pasien['jam_reg']); } if($taskid3['waktu'] == '') { - $taskid['3'] = isset_or($berkas_dikirim['dikirim'], $datetime_reg_periksa); + $taskid['3'] = isset_or($berkas_dikirim['dikirim'], ''); } if($taskid4['waktu'] == '') { - $taskid['4'] = isset_or($berkas_diterima['diterima'], $datetime_reg_periksa); + $taskid['4'] = isset_or($berkas_diterima['diterima'], ''); } if($taskid5['waktu'] == '') { - $taskid['5'] = isset_or($pemeriksaan_ralan['datajam'], $datetime_reg_periksa); + $taskid['5'] = isset_or($pemeriksaan_ralan['datajam'], ''); } if($taskid6['waktu'] == '') { - $taskid['6'] = isset_or($resep_obat['datajam'], $datetime_reg_periksa); + $taskid['6'] = isset_or($resep_obat['datajam'], ''); } if($taskid7['waktu'] == '') { - $taskid['7'] = isset_or($resep_obat['datajam2'], $datetime_reg_periksa); + $taskid['7'] = isset_or($resep_obat['datajam2'], ''); } if($taskid99['waktu'] == '') { $taskid['99'] = ''; @@ -523,87 +600,101 @@ public function postSaveTaskIDInput() ]); } else { if(!empty($_POST['taskid1'])) { - $this->db('mlite_antrian_referensi_taskid') - ->save([ - 'tanggal_periksa' => $_POST['tgl_registrasi'], - 'nomor_referensi' => $_POST['nomor_referensi'], - 'taskid' => 1, - 'waktu' => strtotime($_POST['taskid1']) * 1000, - 'status' => 'Belum', - 'keterangan' => '' - ]); + if(!$this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $_POST['nomor_referensi'])->where('taskid','1')->where('status','Sudah')->oneArray()){ + $this->db('mlite_antrian_referensi_taskid') + ->save([ + 'tanggal_periksa' => $_POST['tgl_registrasi'], + 'nomor_referensi' => $_POST['nomor_referensi'], + 'taskid' => 1, + 'waktu' => strtotime($_POST['taskid1']) * 1000, + 'status' => 'Belum', + 'keterangan' => '' + ]); + } } if(!empty($_POST['taskid2'])) { - $this->db('mlite_antrian_referensi_taskid') - ->save([ - 'tanggal_periksa' => $_POST['tgl_registrasi'], - 'nomor_referensi' => $_POST['nomor_referensi'], - 'taskid' => 2, - 'waktu' => strtotime($_POST['taskid2']) * 1000, - 'status' => 'Belum', - 'keterangan' => '' - ]); + if(!$this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $_POST['nomor_referensi'])->where('taskid','2')->where('status','Sudah')->oneArray()){ + $this->db('mlite_antrian_referensi_taskid') + ->save([ + 'tanggal_periksa' => $_POST['tgl_registrasi'], + 'nomor_referensi' => $_POST['nomor_referensi'], + 'taskid' => 2, + 'waktu' => strtotime($_POST['taskid2']) * 1000, + 'status' => 'Belum', + 'keterangan' => '' + ]); + } } if(!empty($_POST['taskid3'])) { - $this->db('mlite_antrian_referensi_taskid') - ->save([ - 'tanggal_periksa' => $_POST['tgl_registrasi'], - 'nomor_referensi' => $_POST['nomor_referensi'], - 'taskid' => 3, - 'waktu' => strtotime($_POST['taskid3']) * 1000, - 'status' => 'Belum', - 'keterangan' => '' - ]); + if(!$this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $_POST['nomor_referensi'])->where('taskid','3')->where('status','Sudah')->oneArray()){ + $this->db('mlite_antrian_referensi_taskid') + ->save([ + 'tanggal_periksa' => $_POST['tgl_registrasi'], + 'nomor_referensi' => $_POST['nomor_referensi'], + 'taskid' => 3, + 'waktu' => strtotime($_POST['taskid3']) * 1000, + 'status' => 'Belum', + 'keterangan' => '' + ]); + } } if(!empty($_POST['taskid4'])) { - $this->db('mlite_antrian_referensi_taskid') - ->save([ - 'tanggal_periksa' => $_POST['tgl_registrasi'], - 'nomor_referensi' => $_POST['nomor_referensi'], - 'taskid' => 4, - 'waktu' => strtotime($_POST['taskid4']) * 1000, - 'status' => 'Belum', - 'keterangan' => '' - ]); + if(!$this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $_POST['nomor_referensi'])->where('taskid','4')->where('status','Sudah')->oneArray()){ + $this->db('mlite_antrian_referensi_taskid') + ->save([ + 'tanggal_periksa' => $_POST['tgl_registrasi'], + 'nomor_referensi' => $_POST['nomor_referensi'], + 'taskid' => 4, + 'waktu' => strtotime($_POST['taskid4']) * 1000, + 'status' => 'Belum', + 'keterangan' => '' + ]); + } } if(!empty($_POST['taskid5'])) { - $this->db('mlite_antrian_referensi_taskid') - ->save([ - 'tanggal_periksa' => $_POST['tgl_registrasi'], - 'nomor_referensi' => $_POST['nomor_referensi'], - 'taskid' => 5, - 'waktu' => strtotime($_POST['taskid5']) * 1000, - 'status' => 'Belum', - 'keterangan' => '' - ]); + if(!$this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $_POST['nomor_referensi'])->where('taskid','5')->where('status','Sudah')->oneArray()){ + $this->db('mlite_antrian_referensi_taskid') + ->save([ + 'tanggal_periksa' => $_POST['tgl_registrasi'], + 'nomor_referensi' => $_POST['nomor_referensi'], + 'taskid' => 5, + 'waktu' => strtotime($_POST['taskid5']) * 1000, + 'status' => 'Belum', + 'keterangan' => '' + ]); + } } if(!empty($_POST['taskid6'])) { - $this->db('mlite_antrian_referensi_taskid') - ->save([ - 'tanggal_periksa' => $_POST['tgl_registrasi'], - 'nomor_referensi' => $_POST['nomor_referensi'], - 'taskid' => 6, - 'waktu' => strtotime($_POST['taskid6']) * 1000, - 'status' => 'Belum', - 'keterangan' => '' - ]); + if(!$this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $_POST['nomor_referensi'])->where('taskid','6')->where('status','Sudah')->oneArray()){ + $this->db('mlite_antrian_referensi_taskid') + ->save([ + 'tanggal_periksa' => $_POST['tgl_registrasi'], + 'nomor_referensi' => $_POST['nomor_referensi'], + 'taskid' => 6, + 'waktu' => strtotime($_POST['taskid6']) * 1000, + 'status' => 'Belum', + 'keterangan' => '' + ]); + } } if(!empty($_POST['taskid7'])) { - $this->db('mlite_antrian_referensi_taskid') - ->save([ - 'tanggal_periksa' => $_POST['tgl_registrasi'], - 'nomor_referensi' => $_POST['nomor_referensi'], - 'taskid' => 7, - 'waktu' => strtotime($_POST['taskid7']) * 1000, - 'status' => 'Belum', - 'keterangan' => '' - ]); + if(!$this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $_POST['nomor_referensi'])->where('taskid','7')->where('status','Sudah')->oneArray()){ + $this->db('mlite_antrian_referensi_taskid') + ->save([ + 'tanggal_periksa' => $_POST['tgl_registrasi'], + 'nomor_referensi' => $_POST['nomor_referensi'], + 'taskid' => 7, + 'waktu' => strtotime($_POST['taskid7']) * 1000, + 'status' => 'Belum', + 'keterangan' => '' + ]); + } } } @@ -711,7 +802,7 @@ public function getKirimAntrian($no_rawat) 'nomor_referensi' => $nomorreferensi, 'kode_booking' => $kodebooking ]; - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); $this->db('mlite_antrian_referensi')->save([ 'tanggal_periksa' => $reg_periksa['tgl_registrasi'], 'no_rkm_medis' => $reg_periksa['no_rkm_medis'], @@ -746,14 +837,14 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) } } - $taskid1 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '1')->oneArray(); - $taskid2 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '2')->oneArray(); - $taskid3 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '3')->oneArray(); - $taskid4 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '4')->oneArray(); - $taskid5 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '5')->oneArray(); - $taskid6 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '6')->oneArray(); - $taskid7 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '7')->oneArray(); - $taskid99 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '99')->oneArray(); + $taskid1 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '1')->where('status','Belum')->oneArray(); + $taskid2 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '2')->where('status','Belum')->oneArray(); + $taskid3 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '3')->where('status','Belum')->oneArray(); + $taskid4 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '4')->where('status','Belum')->oneArray(); + $taskid5 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '5')->where('status','Belum')->oneArray(); + $taskid6 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '6')->where('status','Belum')->oneArray(); + $taskid7 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '7')->where('status','Belum')->oneArray(); + $taskid99 = $this->db('mlite_antrian_referensi_taskid')->where('nomor_referensi', $kode_booking)->where('taskid', '99')->where('status','Belum')->oneArray(); if ($versi == 'batal') { $data1 = [ @@ -769,7 +860,7 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) $output1 = BpjsService::post($url, $data1, $this->consid, $this->secretkey, $this->user_key, NULL); $json1 = json_decode($output1, true); echo 'Response:
                                    '; - echo json_encode($json1); + echo json_encode(htmlspecialchars_array($json1)); if(isset($json1['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->where('nomor_referensi', $kode_booking) @@ -792,20 +883,11 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) echo 'Menjalankan WS taskid (1) mulai tunggu admisi
                                    '; echo '-------------------------------------
                                    '; $data = []; - if($versi == 'v2') { - $data1 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 1, - 'waktu' => $taskid1['waktu'] - ]; - } - if($versi == 'v3') { - $data1 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 1, - 'waktu' => $taskid1['waktu'], - ]; - } + $data1 = [ + 'kodebooking' => $mlite_antrian_referensi['kodebooking'], + 'taskid' => 1, + 'waktu' => $taskid1['waktu'], + ]; $data1 = json_encode($data1); echo 'Request:
                                    '; echo $data1; @@ -814,7 +896,7 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) $output1 = BpjsService::post($url, $data1, $this->consid, $this->secretkey, $this->user_key, NULL); $json1 = json_decode($output1, true); echo 'Response:
                                    '; - echo json_encode($json1); + echo json_encode(htmlspecialchars_array($json1)); if(isset($json1['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->where('nomor_referensi', $kode_booking) @@ -836,20 +918,11 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) echo 'Menjalankan WS taskid (2) mulai pelayanan admisi
                                    '; echo '-------------------------------------
                                    '; $data = []; - if($versi == 'v2') { - $data2 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 2, - 'waktu' => $taskid2['waktu'] - ]; - } - if($versi == 'v3') { - $data2 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 2, - 'waktu' => $taskid2['waktu'], - ]; - } + $data2 = [ + 'kodebooking' => $mlite_antrian_referensi['kodebooking'], + 'taskid' => 2, + 'waktu' => $taskid2['waktu'], + ]; $data2 = json_encode($data2); echo 'Request:
                                    '; echo $data2; @@ -858,14 +931,14 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) $output2 = BpjsService::post($url, $data2, $this->consid, $this->secretkey, $this->user_key, NULL); $json2 = json_decode($output2, true); echo 'Response:
                                    '; - echo json_encode($json2); + echo json_encode(htmlspecialchars_array($json2)); if(isset($json2['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->where('nomor_referensi', $kode_booking) ->where('taskid', 2) ->save([ 'status' => 'Sudah', - 'keterangan' => $json1['metadata']['message'] + 'keterangan' => $json2['metadata']['message'] ]); } else { $this->db('mlite_antrian_referensi_taskid') @@ -880,20 +953,11 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) echo 'Menjalankan WS taskid (3) mulai tunggu poli
                                    '; echo '-------------------------------------
                                    '; $data = []; - if($versi == 'v2') { - $data3 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 3, - 'waktu' => $taskid3['waktu'] - ]; - } - if($versi == 'v3') { - $data3 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 3, - 'waktu' => $taskid3['waktu'], - ]; - } + $data3 = [ + 'kodebooking' => $mlite_antrian_referensi['kodebooking'], + 'taskid' => 3, + 'waktu' => $taskid3['waktu'], + ]; $data3 = json_encode($data3); echo 'Request:
                                    '; echo $data3; @@ -902,14 +966,14 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) $output3 = BpjsService::post($url, $data3, $this->consid, $this->secretkey, $this->user_key, NULL); $json3 = json_decode($output3, true); echo 'Response:
                                    '; - echo json_encode($json3); + echo json_encode(htmlspecialchars_array($json3)); if(isset($json3['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->where('nomor_referensi', $kode_booking) ->where('taskid', 3) ->save([ 'status' => 'Sudah', - 'keterangan' => $json1['metadata']['message'] + 'keterangan' => $json3['metadata']['message'] ]); } else { $this->db('mlite_antrian_referensi_taskid') @@ -924,20 +988,11 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) echo 'Menjalankan WS taskid (4) mulai pelayanan poli
                                    '; echo '-------------------------------------
                                    '; $data = []; - if($versi == 'v2') { - $data4 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 4, - 'waktu' => $taskid4['waktu'] - ]; - } - if($versi == 'v3') { - $data4 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 4, - 'waktu' => $taskid4['waktu'], - ]; - } + $data4 = [ + 'kodebooking' => $mlite_antrian_referensi['kodebooking'], + 'taskid' => 4, + 'waktu' => $taskid4['waktu'], + ]; $data4 = json_encode($data4); echo 'Request:
                                    '; echo $data4; @@ -946,14 +1001,14 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) $output4 = BpjsService::post($url, $data4, $this->consid, $this->secretkey, $this->user_key, NULL); $json4 = json_decode($output4, true); echo 'Response:
                                    '; - echo json_encode($json4); + echo json_encode(htmlspecialchars_array($json4)); if(isset($json4['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->where('nomor_referensi', $kode_booking) ->where('taskid', 4) ->save([ 'status' => 'Sudah', - 'keterangan' => $json1['metadata']['message'] + 'keterangan' => $json4['metadata']['message'] ]); } else { $this->db('mlite_antrian_referensi_taskid') @@ -991,14 +1046,14 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) $output5 = BpjsService::post($url, $data5, $this->consid, $this->secretkey, $this->user_key, NULL); $json5 = json_decode($output5, true); echo 'Response:
                                    '; - echo json_encode($json5); + echo json_encode(htmlspecialchars_array($json5)); if(isset($json5['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->where('nomor_referensi', $kode_booking) ->where('taskid', 5) ->save([ 'status' => 'Sudah', - 'keterangan' => $json1['metadata']['message'] + 'keterangan' => $json5['metadata']['message'] ]); } else { $this->db('mlite_antrian_referensi_taskid') @@ -1013,20 +1068,11 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) echo 'Menjalankan WS taskid (6) permintaan resep apotek
                                    '; echo '-------------------------------------
                                    '; $data = []; - if($versi == 'v2') { - $data6 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 6, - 'waktu' => $taskid6['waktu'] - ]; - } - if($versi == 'v3') { - $data6 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 6, - 'waktu' => $taskid6['waktu'], - ]; - } + $data6 = [ + 'kodebooking' => $mlite_antrian_referensi['kodebooking'], + 'taskid' => 6, + 'waktu' => $taskid6['waktu'], + ]; $data6 = json_encode($data6); echo 'Request:
                                    '; echo $data6; @@ -1035,14 +1081,14 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) $output6 = BpjsService::post($url, $data6, $this->consid, $this->secretkey, $this->user_key, NULL); $json6 = json_decode($output6, true); echo 'Response:
                                    '; - echo json_encode($json6); + echo json_encode(htmlspecialchars_array($json6)); if(isset($json6['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->where('nomor_referensi', $kode_booking) ->where('taskid', 6) ->save([ 'status' => 'Sudah', - 'keterangan' => $json1['metadata']['message'] + 'keterangan' => $json6['metadata']['message'] ]); } else { $this->db('mlite_antrian_referensi_taskid') @@ -1057,20 +1103,11 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) echo 'Menjalankan WS taskid (7) selesai pelayanan apotek
                                    '; echo '-------------------------------------
                                    '; $data = []; - if($versi == 'v2') { - $data7 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 7, - 'waktu' => $taskid7['waktu'] - ]; - } - if($versi == 'v3') { - $data7 = [ - 'kodebooking' => $mlite_antrian_referensi['kodebooking'], - 'taskid' => 7, - 'waktu' => $taskid7['waktu'], - ]; - } + $data7 = [ + 'kodebooking' => $mlite_antrian_referensi['kodebooking'], + 'taskid' => 7, + 'waktu' => $taskid7['waktu'], + ]; $data7 = json_encode($data7); echo 'Request:
                                    '; echo $data7; @@ -1079,14 +1116,14 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) $output7 = BpjsService::post($url, $data7, $this->consid, $this->secretkey, $this->user_key, NULL); $json7 = json_decode($output7, true); echo 'Response:
                                    '; - echo json_encode($json7); + echo json_encode(htmlspecialchars_array($json7)); if(isset($json7['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->where('nomor_referensi', $kode_booking) ->where('taskid', 7) ->save([ 'status' => 'Sudah', - 'keterangan' => $json1['metadata']['message'] + 'keterangan' => $json7['metadata']['message'] ]); } else { $this->db('mlite_antrian_referensi_taskid') @@ -1102,6 +1139,41 @@ public function getUpdateWaktu($nomor_referensi, $kode_booking, $versi) exit(); } + public function anyLogTaskID() + { + $this->_addHeaderFiles(); + $this->getCssCard(); + $date = date('Y-m'); + if(isset($_POST['periode_antrol']) && $_POST['periode_antrol'] !='') + $date = $_POST['periode_antrol']; + $query = $this->db()->pdo()->prepare("SELECT COUNT(*) as jumlah, keterangan FROM mlite_antrian_referensi WHERE tanggal_periksa LIKE ? GROUP BY keterangan"); + $query->execute([$date.'%']); + $query = $query->fetchAll(\PDO::FETCH_ASSOC); + + $rows = []; + $a = []; + $a['jumlah'] = 0; + $a['keterangan'] = ''; + foreach ($query as $q) { + if (strpos($q['keterangan'], 'Rujukan nomor ') !== false) { + $s = explode(" ", $q['keterangan']); + unset($s[2]); + $s = implode(" ", $s); + $a['keterangan'] = $s; + $a['jumlah'] = $a['jumlah'] + 1; + } else if ($q['keterangan'] == null){ + $q['keterangan'] = 'NULL'; + $rows[] = $q; + } else { + $rows[] = $q; + } + } + $rows[] = $a; + + $taskid = $rows; + return $this->draw('logtaskid.html', ['taskid' => $taskid,'tgl'=>$date]); + } + public function anyAntrolLocal() { $this->_addHeaderFiles(); @@ -1125,6 +1197,10 @@ public function anyAntrolLocal() public function getSettings() { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'jkn_mobile', 'index'])); + } $this->_addHeaderFiles(); $this->assign['title'] = 'Pengaturan Modul JKN Mobile'; $this->assign['propinsi'] = $this->db('propinsi')->where('kd_prop', $this->settings->get('jkn_mobile.kdprop'))->oneArray(); @@ -1140,13 +1216,27 @@ public function getSettings() $this->assign['penjab'] = $this->db('penjab')->where('status', '1')->toArray(); $this->assign['jkn_mobile'] = htmlspecialchars_array($this->settings('jkn_mobile')); - return $this->draw('settings.html', ['settings' => $this->assign]); + return $this->draw('settings.html', ['settings' => htmlspecialchars_array($this->assign)]); } public function postSaveSettings() { - $_POST['jkn_mobile']['display'] = implode(',', $_POST['jkn_mobile']['display']); - $_POST['jkn_mobile']['exclude_taskid'] = implode(',', $_POST['jkn_mobile']['exclude_taskid']); + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'jkn_mobile', 'index'])); + } + if (isset($_POST['jkn_mobile']['display']) && is_array($_POST['jkn_mobile']['display'])) { + $_POST['jkn_mobile']['display'] = implode(',', $_POST['jkn_mobile']['display']); + } else { + $_POST['jkn_mobile']['display'] = ''; + } + + if (isset($_POST['jkn_mobile']['exclude_taskid']) && is_array($_POST['jkn_mobile']['exclude_taskid'])) { + $_POST['jkn_mobile']['exclude_taskid'] = implode(',', $_POST['jkn_mobile']['exclude_taskid']); + } else { + $_POST['jkn_mobile']['exclude_taskid'] = ''; + } + foreach ($_POST['jkn_mobile'] as $key => $val) { $this->settings('jkn_mobile', $key, $val); } @@ -1204,23 +1294,23 @@ public function anyAntrol() $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); $response = []; - if($json['metadata']['code'] == '200') { + if($json && isset($json['metadata']['code']) && $json['metadata']['code'] == '200') { $response = $json['response']['list']; } $this->assign['list'] = $response; - echo $this->draw('antrol.display.html', ['row' => $this->assign]); + echo $this->draw('antrol.display.html', ['row' => htmlspecialchars_array($this->assign)]); } else { $url = $depanUrlTanggal . $tahun . '-' . $bulan . '-' . $tanggal . '/waktu/server'; $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); $response = []; - if($json['metadata']['code'] == '200') { + if($json && isset($json['metadata']['code']) && $json['metadata']['code'] == '200') { $response = $json['response']['list']; } $this->assign['list'] = $response; - return $this->draw('antrol.html', ['row' => $this->assign]); + return $this->draw('antrol.html', ['row' => htmlspecialchars_array($this->assign)]); } exit(); } @@ -1234,9 +1324,9 @@ public function getQrAntrol(){ } else { $tanggal = date('Y-m-d'); } - $sql = "SELECT * FROM bridging_sep WHERE tglsep = '$tanggal' AND jnspelayanan = '2' AND kdpolitujuan NOT IN ('IGD','HDL')"; + $sql = "SELECT * FROM bridging_sep WHERE tglsep = ? AND jnspelayanan = '2' AND kdpolitujuan NOT IN ('IGD','HDL')"; $query = $this->db()->pdo()->prepare($sql); - $query->execute(); + $query->execute([$tanggal]); $sep_terbit = $query->fetchAll(); $jml_sep = 1; $jml_antrol = 1; @@ -1404,10 +1494,10 @@ public function getAjax() $data = $data->fetchAll(); // create json format - $datatable['draw'] = isset($_GET['draw']) ? $_GET['draw'] : 1; - $datatable['recordsTotal'] = $totaldata; - $datatable['recordsFiltered'] = $totaldata; - $datatable['data'] = array(); + $datatable['draw'] = isset($_GET['draw']) ? intval(htmlspecialchars($_GET['draw'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')) : 1; + $datatable['recordsTotal'] = $totaldata; + $datatable['recordsFiltered'] = $totaldata; + $datatable['data'] = array(); foreach ($data as $row) { @@ -1418,7 +1508,7 @@ public function getAjax() } - echo json_encode($datatable); + echo json_encode(htmlspecialchars_array($datatable)); break; diff --git a/plugins/jkn_mobile/Info.php b/plugins/jkn_mobile/Info.php index 9460ebe70..199780d30 100644 --- a/plugins/jkn_mobile/Info.php +++ b/plugins/jkn_mobile/Info.php @@ -4,8 +4,9 @@ 'name' => 'JKN Mobile', 'description' => 'Modul mLITE JKN Mobile API', 'author' => 'Basoro', + 'category' => 'bridging', 'version' => '1.0', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'tasks', 'pages' => ['JKN Mobile' => 'jknmobile'], 'install' => function () use ($core) { diff --git a/plugins/jkn_mobile/README.md b/plugins/jkn_mobile/README.md new file mode 100644 index 000000000..ec53f55fb --- /dev/null +++ b/plugins/jkn_mobile/README.md @@ -0,0 +1,73 @@ +# Plugin JKN Mobile + +Dokumentasi singkat penggunaan modul **JKN Mobile** di mLITE. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **JKN Mobile**. +- Pilih submenu sesuai kebutuhan: + - Kelola (halaman utama) + - WS BPJS + - WS RS + - Katalog + - Mapping Poliklinik + - Mapping Dokter + - Jadwal Dokter HFIS + - Data Booking Antrol + - Task ID + - Quality Rate + - Dashboard Antrol BPJS + - Pengaturan + +## Panduan Pengguna (Petugas) + +1. **Dashboard Antrol BPJS** + - Buka submenu **Dashboard Antrol BPJS** untuk melihat daftar antrian online pasien BPJS yang masuk dari aplikasi Mobile JKN. + - Filter antrian berdasarkan tanggal, poliklinik, atau status antrian. + - Gunakan tombol **Kirim Antrian** pada baris pasien untuk mendaftarkan pasien ke sistem RS. + - Gunakan tombol **Batal Antrol** untuk membatalkan antrian bila diperlukan. + +2. **Data Booking Antrol** + - Pantau data booking antrian online dari pasien. + - Lihat detail booking termasuk nomor referensi, kode booking, dan jadwal kunjungan. + +3. **Task ID** + - Buka submenu **Task ID** untuk mengelola task pengiriman antrian ke BPJS. + - Input task ID baru melalui tombol yang tersedia pada baris data pasien. + - Pantau log task ID melalui submenu **Log Task ID** untuk memverifikasi status pengiriman. + +4. **Quality Rate** + - Lihat laporan quality rate antrian untuk memantau kualitas layanan antrian BPJS. + +5. **Jadwal Dokter HFIS** + - Buka submenu **Jadwal Dokter HFIS** untuk sinkronisasi jadwal dokter dari sistem HFIS BPJS. + +## Panduan Admin + +1. **Pengaturan** + - Buka submenu **Pengaturan**. + - Isi kredensial API BPJS: **BpjsConsID**, **BpjsSecretKey**, dan **BpjsUserKey**. + - Atur URL endpoint antrian BPJS (`BpjsAntrianUrl`); gunakan URL dev untuk testing dan URL produksi untuk live. + - Isi **kd_pj_bpjs** (kode penanggung jawab BPJS), dan atur opsi `kirimantrian` (aktif/tidak). + - Simpan konfigurasi sebelum menggunakan fitur antrian. + +2. **Mapping Poliklinik** + - Buka submenu **Mapping Poliklinik**. + - Tambahkan mapping antara kode poli di sistem RS dengan kode poli di BPJS. + - Tanpa mapping yang benar, antrian tidak dapat dikirimkan ke poli yang tepat. + +3. **Mapping Dokter** + - Buka submenu **Mapping Dokter**. + - Tambahkan mapping antara kode dokter di sistem RS dengan kode dokter di BPJS (HFIS). + +4. **WS BPJS & WS RS** + - Gunakan submenu **WS BPJS** untuk menguji koneksi web service ke server BPJS. + - Gunakan submenu **WS RS** untuk memverifikasi respons web service dari sisi RS. + +## Catatan + +- Konfigurasi **BpjsConsID**, **BpjsSecretKey**, dan **BpjsUserKey** wajib diisi sebelum plugin dapat berkomunikasi dengan API BPJS. +- Gunakan URL dev (`apijkn-dev.bpjs-kesehatan.go.id`) saat testing; ganti ke URL produksi sebelum go-live. +- Mapping poliklinik dan dokter harus lengkap agar pengiriman antrian ke BPJS tidak gagal. +- Log task ID tersimpan untuk memudahkan penelusuran jika terjadi kegagalan pengiriman antrian. diff --git a/plugins/jkn_mobile/Site.php b/plugins/jkn_mobile/Site.php index 1b24c3f8e..99ca7f6e6 100644 --- a/plugins/jkn_mobile/Site.php +++ b/plugins/jkn_mobile/Site.php @@ -33,8 +33,8 @@ public function routes() $this->route('jknmobile/antrian/statusfarmasi', 'getStatusAntrianFarmasi'); $this->route('jknmobile/antrian/sisa', 'getSisaAntrian'); $this->route('jknmobile/antrian/batal', 'getBatalAntrian'); + $this->route('jknmobile/antrian/checkin', 'getPasienCheckIn'); $this->route('jknmobile/pasien/baru', 'getPasienBaru'); - $this->route('jknmobile/pasien/checkin', 'getPasienCheckIn'); $this->route('jknmobile/operasi/rs', 'getOperasiRS'); $this->route('jknmobile/operasi/pasien', 'getOperasiPasien'); $this->route('jknmobile/antrian/add', '_getAntreanAdd'); @@ -55,6 +55,19 @@ public function routes() $this->route('jknmobile/aplicare/(:str)', 'getAplicare'); $this->route('jknmobile/aplicare/(:str)/(:str)', 'getAplicare'); + /* Klinik Permata Bunda */ + $this->route('vclaim-queue/auth', 'getToken'); + $this->route('vclaim-queue/antrean', 'getAmbilAntrian'); + $this->route('vclaim-queue/antrean/status', 'getStatusAntrian'); + $this->route('vclaim-queue/antrean/sisa', 'getSisaAntrian'); + $this->route('vclaim-queue/antrean/batal', 'getBatalAntrian'); + $this->route('vclaim-queue/antrean/checkin', 'getPasienCheckIn'); + $this->route('vclaim-queue/antrean/farmasi/add', 'getAmbilAntrianFarmasi'); + $this->route('vclaim-queue/antrean/farmasi/status', 'getStatusAntrianFarmasi'); + $this->route('vclaim-queue/peserta', 'getPasienBaru'); + $this->route('vclaim-queue/jadwaloperasi/rs', 'getOperasiRS'); + $this->route('vclaim-queue/jadwaloperasi/pasien', 'getOperasiPasien'); + /* Start Old school routing */ $this->route('jknmobile_v2', 'getIndex'); $this->route('jknmobile_v2/token', 'getToken'); @@ -83,6 +96,7 @@ public function routes() $this->route('jknmobile_v2/jadwal/(:str)/(:str)', '_getJadwal'); $this->route('jknmobile_v2/antrian/pertanggal/(:str)', 'getListAntrol'); + $this->route('jknmobile_v2/aplicare', 'getAplicareManajemen'); $this->route('jknmobile_v2/aplicare/(:str)', 'getAplicare'); $this->route('jknmobile_v2/aplicare/(:str)/(:str)', 'getAplicare'); /* End Old school routing */ @@ -95,7 +109,7 @@ public function getIndex() $kelas = []; $sql = "SELECT kamar.kelas, kamar.kd_bangsal FROM kamar JOIN bangsal ON kamar.kd_bangsal = bangsal.kd_bangsal WHERE kamar.statusdata = '1'"; // $sql .= " AND kamar.kelas = 'Kelas $kelas' AND kamar.kd_bangsal LIKE '%$bangsal%'"; - $sql .= " GROUP BY kamar.kd_bangsal "; + $sql .= " GROUP BY kamar.kd_bangsal, kamar.kelas "; $query = $this->db()->pdo()->prepare($sql); $query->execute(); $bedlist = $query->fetchAll(); @@ -119,7 +133,24 @@ private function _resultToken() $konten = trim(file_get_contents("php://input")); $header = apache_request_headers(); $response = array(); - if ($header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username') && $header[$this->settings->get('jkn_mobile.header_password')] == $this->settings->get('jkn_mobile.x_password')) { + + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + $passwordHeader = $this->settings->get('jkn_mobile.header_password'); + $usernameValue = $this->settings->get('jkn_mobile.x_username'); + $passwordValue = $this->settings->get('jkn_mobile.x_password'); + + $usernameMatch = false; + $passwordMatch = false; + + if (isset($header[$usernameHeader]) && $header[$usernameHeader] == $usernameValue) { + $usernameMatch = true; + } + + if (isset($header[$passwordHeader]) && $header[$passwordHeader] == $passwordValue) { + $passwordMatch = true; + } + + if ($usernameMatch && $passwordMatch) { $response = array( 'response' => array( 'token' => $this->_getToken() @@ -132,12 +163,12 @@ private function _resultToken() } else { $response = array( 'metadata' => array( - 'message' => 'Access denied', + 'message' => 'Username atau Password Tidak Sesuai', 'code' => 201 ) ); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getAmbilAntrian() @@ -159,15 +190,19 @@ private function _resultAmbilAntrian() $konten = trim(file_get_contents("php://input")); $decode = json_decode($konten, true); $response = array(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { $tanggal=$decode['tanggalperiksa']; $tentukan_hari=date('D',strtotime($tanggal)); @@ -194,31 +229,57 @@ private function _resultAmbilAntrian() $data_pasien = $this->db('pasien')->where('no_peserta', $decode['nomorkartu'])->oneArray(); $poli = $this->db('maping_poli_bpjs')->where('kd_poli_bpjs', $decode['kodepoli'])->oneArray(); - $dokter = $this->db('maping_dokter_dpjpvclaim')->where('kd_dokter_bpjs', $decode['kodedokter'])->oneArray(); + + // Check if kodedokter is present before using it + $kodedokter = isset($decode['kodedokter']) ? $decode['kodedokter'] : ''; + if (!empty($kodedokter)) { + $dokter = $this->db('maping_dokter_dpjpvclaim')->where('kd_dokter_bpjs', $kodedokter)->oneArray(); + } else { + $dokter = null; + } if(strtotime($decode['tanggalperiksa']) == strtotime(date('Y-m-d'))) { - $cek_kuota = $this->db()->pdo()->prepare("SELECT jadwal.kuota - (SELECT COUNT(reg_periksa.tgl_registrasi) + $sql = "SELECT jadwal.kuota - (SELECT COUNT(reg_periksa.tgl_registrasi) FROM reg_periksa WHERE reg_periksa.tgl_registrasi='$decode[tanggalperiksa]' AND reg_periksa.kd_dokter=jadwal.kd_dokter) as sisa_kuota, jadwal.kd_dokter, jadwal.kd_poli, jadwal.jam_mulai as jam_mulai, poliklinik.nm_poli, dokter.nm_dokter, jadwal.kuota - FROM jadwal INNER JOIN maping_poli_bpjs ON maping_poli_bpjs.kd_poli_rs=jadwal.kd_poli INNER JOIN maping_dokter_dpjpvclaim ON maping_dokter_dpjpvclaim.kd_dokter_rs=jadwal.kd_dokter INNER JOIN poliklinik ON poliklinik.kd_poli=jadwal.kd_poli INNER JOIN dokter ON dokter.kd_dokter=jadwal.kd_dokter - WHERE jadwal.hari_kerja='$hari' AND maping_poli_bpjs.kd_poli_bpjs='$decode[kodepoli]' AND maping_dokter_dpjpvclaim.kd_dokter_bpjs='$decode[kodedokter]' GROUP BY jadwal.kd_dokter HAVING sisa_kuota > 0 ORDER BY sisa_kuota DESC LIMIT 1"); + FROM jadwal INNER JOIN maping_poli_bpjs ON maping_poli_bpjs.kd_poli_rs=jadwal.kd_poli INNER JOIN maping_dokter_dpjpvclaim ON maping_dokter_dpjpvclaim.kd_dokter=jadwal.kd_dokter INNER JOIN poliklinik ON poliklinik.kd_poli=jadwal.kd_poli INNER JOIN dokter ON dokter.kd_dokter=jadwal.kd_dokter + WHERE jadwal.hari_kerja='$hari' AND maping_poli_bpjs.kd_poli_bpjs='$decode[kodepoli]'"; + + if (!empty($kodedokter)) { + $sql .= " AND maping_dokter_dpjpvclaim.kd_dokter_bpjs='$kodedokter'"; + } + + $sql .= " GROUP BY jadwal.kd_dokter, jadwal.kd_poli, jadwal.jam_mulai, jadwal.kuota, poliklinik.nm_poli, dokter.nm_dokter HAVING sisa_kuota > 0 ORDER BY sisa_kuota DESC LIMIT 1"; + + $cek_kuota = $this->db()->pdo()->prepare($sql); } else { - $cek_kuota = $this->db()->pdo()->prepare("SELECT jadwal.kuota - (SELECT COUNT(booking_registrasi.tanggal_periksa) + $sql = "SELECT jadwal.kuota - (SELECT COUNT(booking_registrasi.tanggal_periksa) FROM booking_registrasi WHERE booking_registrasi.tanggal_periksa='$decode[tanggalperiksa]' AND booking_registrasi.kd_dokter=jadwal.kd_dokter) as sisa_kuota, jadwal.kd_dokter, jadwal.kd_poli, jadwal.jam_mulai as jam_mulai, poliklinik.nm_poli, dokter.nm_dokter, jadwal.kuota FROM jadwal INNER JOIN maping_poli_bpjs ON maping_poli_bpjs.kd_poli_rs=jadwal.kd_poli INNER JOIN maping_dokter_dpjpvclaim ON maping_dokter_dpjpvclaim.kd_dokter=jadwal.kd_dokter INNER JOIN poliklinik ON poliklinik.kd_poli=jadwal.kd_poli INNER JOIN dokter ON dokter.kd_dokter=jadwal.kd_dokter - WHERE jadwal.hari_kerja='$hari' AND maping_poli_bpjs.kd_poli_bpjs='$decode[kodepoli]' AND maping_dokter_dpjpvclaim.kd_dokter_bpjs='$decode[kodedokter]' GROUP BY jadwal.kd_dokter HAVING sisa_kuota > 0 ORDER BY sisa_kuota DESC LIMIT 1"); + WHERE jadwal.hari_kerja='$hari' AND maping_poli_bpjs.kd_poli_bpjs='$decode[kodepoli]'"; + + if (!empty($kodedokter)) { + $sql .= " AND maping_dokter_dpjpvclaim.kd_dokter_bpjs='$kodedokter'"; + } + + $sql .= " GROUP BY jadwal.kd_dokter, jadwal.kd_poli, jadwal.jam_mulai, jadwal.kuota, poliklinik.nm_poli, dokter.nm_dokter HAVING sisa_kuota > 0 ORDER BY sisa_kuota DESC LIMIT 1"; + + $cek_kuota = $this->db()->pdo()->prepare($sql); } $cek_kuota->execute(); $cek_kuota = $cek_kuota->fetch(); - $jadwal = $this->db('jadwal') + + $jadwal_q = $this->db('jadwal') ->join('maping_dokter_dpjpvclaim', 'maping_dokter_dpjpvclaim.kd_dokter=jadwal.kd_dokter') - ->where('maping_dokter_dpjpvclaim.kd_dokter_bpjs', $decode['kodedokter']) - ->where('hari_kerja', $hari) - // ->where('jam_mulai', strtok($decode['jampraktek'], '-').':00') - // ->where('jam_selesai', substr($decode['jampraktek'], strpos($decode['jampraktek'], "-") + 1).':00') - ->oneArray(); + ->where('hari_kerja', $hari); + + if (!empty($kodedokter)) { + $jadwal_q->where('maping_dokter_dpjpvclaim.kd_dokter_bpjs', $kodedokter); + } + + $jadwal = $jadwal_q->oneArray(); $cek_referensi = $this->db('mlite_antrian_referensi')->where('nomor_referensi', $decode['nomorreferensi'])->where('tanggal_periksa', $decode['tanggalperiksa'])->oneArray(); $cek_referensi_noka = $this->db('mlite_antrian_referensi')->where('nomor_kartu', $decode['nomorkartu'])->where('tanggal_periksa', $decode['tanggalperiksa'])->oneArray(); @@ -256,7 +317,7 @@ private function _resultAmbilAntrian() if (!empty($decode['tanggalperiksa']) && !preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$decode['tanggalperiksa'])) { $errors[] = 'Format tanggal periksa tidak sesuai'; } - if(!empty($decode['tanggalperiksa']) && $decode['tanggalperiksa'] == $cek_referensi['tanggal_periksa']) { + if(!empty($decode['tanggalperiksa']) && isset($cek_referensi['tanggal_periksa']) && $decode['tanggalperiksa'] == $cek_referensi['tanggal_periksa']) { $errors[] = 'Anda sudah terdaftar dalam antrian ditanggal '.$decode['tanggalperiksa']; } if(empty($decode['kodepoli'])) { @@ -271,19 +332,18 @@ private function _resultAmbilAntrian() if(!empty($decode['kodedokter']) && $dokter == 0) { $errors[] = 'Kode dokter tidak ditemukan'; } - if(!empty($decode['jeniskunjungan']) && $decode['jeniskunjungan'] < 1 || $decode['jeniskunjungan'] > 4) { + if(isset($decode['jeniskunjungan']) && ($decode['jeniskunjungan'] < 1 || $decode['jeniskunjungan'] > 4)) { $errors[] = 'Jenis kunjungan tidak ditemukan'; } if(!empty($errors)) { - foreach($errors as $error) { - $response = array( - 'metadata' => array( - 'message' => $this->_getErrors($error), - 'code' => 201 - ) - ); - }; + $errorMessage = implode(', ', $errors); + $response = array( + 'metadata' => array( + 'message' => $errorMessage, + 'code' => 201 + ) + ); http_response_code(201); } else { @@ -303,74 +363,15 @@ private function _resultAmbilAntrian() $minutes = $no_urut_reg * 10; $cek_kuota['jam_mulai'] = date('H:i:s',strtotime('+'.$minutes.' minutes',strtotime($cek_kuota['jam_mulai']))); $keterangan = 'Peserta harap datang 30 menit lebih awal.'; - + $estimasi = strtotime($decode['tanggalperiksa'].' '.$cek_kuota['jam_mulai']) * 1000; + $pasienbaru = '1'; + if ($data_pasien['tgl_daftar'] != $decode['tanggalperiksa']) { + $pasienbaru = '0'; + } if(strtotime($decode['tanggalperiksa']) == strtotime(date('Y-m-d'))) { - - $no_reg = $this->core->setNoReg($jadwal['kd_dokter'], $jadwal['kd_poli']); - - $cek_stts_daftar = $this->db('reg_periksa')->where('no_rkm_medis', $data_pasien['no_rkm_medis'])->count(); - $_POST['stts_daftar'] = 'Baru'; - if($cek_stts_daftar > 0) { - $_POST['stts_daftar'] = 'Lama'; - } - - $biaya_reg = $this->db('poliklinik')->where('kd_poli', $jadwal['kd_poli'])->oneArray(); - $_POST['biaya_reg'] = $biaya_reg['registrasi']; - if($_POST['stts_daftar'] == 'Lama') { - $_POST['biaya_reg'] = $biaya_reg['registrasilama']; - } - - $cek_status_poli = $this->db('reg_periksa')->where('no_rkm_medis', $data_pasien['no_rkm_medis'])->where('kd_poli', $jadwal['kd_poli'])->count(); - $_POST['status_poli'] = 'Baru'; - if($cek_status_poli > 0) { - $_POST['status_poli'] = 'Lama'; - } - - // set umur - $tanggal = new \DateTime($this->core->getPasienInfo('tgl_lahir', $data_pasien['no_rkm_medis'])); - $today = new \DateTime(date('Y-m-d')); - $y = $today->diff($tanggal)->y; - $m = $today->diff($tanggal)->m; - $d = $today->diff($tanggal)->d; - - $umur="0"; - $sttsumur="Th"; - if($y>0){ - $umur=$y; - $sttsumur="Th"; - }else if($y==0){ - if($m>0){ - $umur=$m; - $sttsumur="Bl"; - }else if($m==0){ - $umur=$d; - $sttsumur="Hr"; - } - } - - $insert = $this->db('reg_periksa') - ->save([ - 'no_reg' => $no_reg, - 'no_rawat' => $this->core->setNoRawat(date('Y-m-d')), - 'tgl_registrasi' => date('Y-m-d'), - 'jam_reg' => date('H:i:s'), - 'kd_dokter' => $jadwal['kd_dokter'], - 'no_rkm_medis' => $data_pasien['no_rkm_medis'], - 'kd_poli' => $jadwal['kd_poli'], - 'p_jawab' => $this->core->getPasienInfo('namakeluarga', $data_pasien['no_rkm_medis']), - 'almt_pj' => $this->core->getPasienInfo('alamatpj', $data_pasien['no_rkm_medis']), - 'hubunganpj' => $this->core->getPasienInfo('keluarga', $data_pasien['no_rkm_medis']), - 'biaya_reg' => $_POST['biaya_reg'], - 'stts' => 'Belum', - 'stts_daftar' => $_POST['stts_daftar'], - 'status_lanjut' => 'Ralan', - 'kd_pj' => $this->settings->get('jkn_mobile.kd_pj_bpjs'), - 'umurdaftar' => $umur, - 'sttsumur' => $sttsumur, - 'status_bayar' => 'Belum Bayar', - 'status_poli' => $_POST['status_poli'] - ]); - if($insert) { + $jam = date('H:i:s',strtotime('+'.$minutes.' minutes',strtotime(date('H:i:s')))); + $estimasi = strtotime($decode['tanggalperiksa'].' '.$jam) * 1000; + $no_reg = $this->core->setNoReg($jadwal['kd_dokter'], $jadwal['kd_poli']); $query = $this->db('booking_registrasi')->save([ 'tanggal_booking' => date('Y-m-d'), 'jam_booking' => date('H:i:s'), @@ -382,9 +383,8 @@ private function _resultAmbilAntrian() 'kd_pj' => $this->settings->get('jkn_mobile.kd_pj_bpjs'), 'limit_reg' => 1, 'waktu_kunjungan' => $decode['tanggalperiksa'].' '.$cek_kuota['jam_mulai'], - 'status' => 'Terdaftar' + 'status' => 'Belum' ]); - } } else { $query = $this->db('booking_registrasi')->save([ 'tanggal_booking' => date('Y-m-d'), @@ -407,15 +407,15 @@ private function _resultAmbilAntrian() 'nomorantrean' => $decode['kodepoli'].'-'.$no_reg, 'angkaantrean' => $no_reg, 'kodebooking' => $kodebooking, - 'pasienbaru'=>0, + 'pasienbaru' => $pasienbaru, 'norm' => $data_pasien['no_rkm_medis'], 'namapoli' => $cek_kuota['nm_poli'], 'namadokter' => $jadwal['nm_dokter_bpjs'], - 'estimasidilayani' => strtotime($decode['tanggalperiksa'].' '.$cek_kuota['jam_mulai']) * 1000, + 'estimasidilayani' => $estimasi, 'sisakuotajkn' => ($cek_kuota['sisa_kuota']-1), - 'kuotajkn' => intval($cek_kuota['kuota']), + 'kuotajkn' => ($cek_kuota['sisa_kuota']-1), 'sisakuotanonjkn' => ($cek_kuota['sisa_kuota']-1), - 'kuotanonjkn' => intval($cek_kuota['kuota']), + 'kuotanonjkn' => ($cek_kuota['sisa_kuota']-1), 'keterangan' => $keterangan ), 'metadata' => array( @@ -432,7 +432,7 @@ private function _resultAmbilAntrian() 'nomor_kartu' => $decode['nomorkartu'], 'nomor_referensi' => $decode['nomorreferensi'], 'kodebooking' => $kodebooking, - 'jenis_kunjungan' => $decode['jeniskunjungan'], + 'jenis_kunjungan' => isset($decode['jeniskunjungan']) ? $decode['jeniskunjungan'] : 1, // Default to 1 (Rujukan FKTP) if missing 'status_kirim' => 'Belum', 'keterangan' => '' ]); @@ -464,7 +464,7 @@ private function _resultAmbilAntrian() ); http_response_code(201); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getStatusAntrian() @@ -494,17 +494,22 @@ private function _resultStatusAntrian() $hari=$day[$tentukan_hari]; $kdpoli = $this->db('maping_poli_bpjs')->where('kd_poli_bpjs', $decode['kodepoli'])->oneArray(); - $kddokter = $this->db('maping_dokter_dpjpvclaim')->where('kd_dokter_bpjs', $decode['kodedokter'])->oneArray(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + $kodedokter = isset($decode['kodedokter']) ? $decode['kodedokter'] : ''; + $kddokter = $this->db('maping_dokter_dpjpvclaim')->where('kd_dokter_bpjs', $kodedokter)->oneArray(); + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { - if(!$this->db('maping_poli_bpjs')->where('kd_poli_bpjs', $decode['kodepoli'])->oneArray()){ + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { + if(!$kdpoli){ $response = array( 'metadata' => array( 'message' => 'Poli Tidak Ditemukan', @@ -512,7 +517,7 @@ private function _resultStatusAntrian() ) ); http_response_code(201); - }else if(!$this->db('maping_dokter_dpjpvclaim')->where('kd_dokter_bpjs', $decode['kodedokter'])->oneArray()){ + }else if(!empty($kodedokter) && !$kddokter){ $response = array( 'metadata' => array( 'message' => 'Dokter Tidak Ditemukan', @@ -530,10 +535,8 @@ private function _resultStatusAntrian() http_response_code(201); }else if(!$this->db('jadwal') ->join('maping_dokter_dpjpvclaim', 'maping_dokter_dpjpvclaim.kd_dokter=jadwal.kd_dokter') - ->where('maping_dokter_dpjpvclaim.kd_dokter_bpjs', $decode['kodedokter']) + ->where('maping_dokter_dpjpvclaim.kd_dokter_bpjs', $kodedokter) ->where('hari_kerja', $hari) - ->where('jam_mulai', strtok($decode['jampraktek'], '-').':00') - ->where('jam_selesai', substr($decode['jampraktek'], strpos($decode['jampraktek'], "-") + 1).':00') ->oneArray()){ $response = array( 'metadata' => array( @@ -551,17 +554,31 @@ private function _resultStatusAntrian() ); http_response_code(201); }else{ - $kuota = $this->db()->pdo()->prepare("SELECT jadwal.kuota - (SELECT COUNT(booking_registrasi.tanggal_periksa) FROM booking_registrasi WHERE booking_registrasi.tanggal_periksa='$decode[tanggalperiksa]' AND booking_registrasi.kd_dokter=jadwal.kd_dokter) as sisa_kuota, jadwal.kd_dokter, jadwal.kd_poli, jadwal.jam_mulai as jam_mulai, poliklinik.nm_poli, dokter.nm_dokter, jadwal.kuota FROM jadwal INNER JOIN maping_poli_bpjs ON maping_poli_bpjs.kd_poli_rs=jadwal.kd_poli INNER JOIN poliklinik ON poliklinik.kd_poli=jadwal.kd_poli INNER JOIN dokter ON dokter.kd_dokter=jadwal.kd_dokter WHERE jadwal.hari_kerja='$hari' AND maping_poli_bpjs.kd_poli_bpjs='$decode[kodepoli]' GROUP BY jadwal.kd_dokter HAVING sisa_kuota > 0 ORDER BY sisa_kuota DESC LIMIT 1"); + $kuota = $this->db()->pdo()->prepare("SELECT jadwal.kuota - (SELECT COUNT(booking_registrasi.tanggal_periksa) FROM booking_registrasi WHERE booking_registrasi.tanggal_periksa='$decode[tanggalperiksa]' AND booking_registrasi.kd_dokter=jadwal.kd_dokter) as sisa_kuota, jadwal.kd_dokter, jadwal.kd_poli, jadwal.jam_mulai as jam_mulai, poliklinik.nm_poli, dokter.nm_dokter, jadwal.kuota FROM jadwal INNER JOIN maping_poli_bpjs ON maping_poli_bpjs.kd_poli_rs=jadwal.kd_poli INNER JOIN poliklinik ON poliklinik.kd_poli=jadwal.kd_poli INNER JOIN dokter ON dokter.kd_dokter=jadwal.kd_dokter WHERE jadwal.hari_kerja='$hari' AND maping_poli_bpjs.kd_poli_bpjs='$decode[kodepoli]' GROUP BY jadwal.kd_dokter, jadwal.kd_poli, jadwal.jam_mulai, jadwal.kuota, poliklinik.nm_poli, dokter.nm_dokter HAVING sisa_kuota > 0 ORDER BY sisa_kuota DESC LIMIT 1"); $kuota->execute(); $kuota = $kuota->fetch(); - $max_antrian = $this->db()->pdo()->prepare("SELECT booking_registrasi.no_reg FROM booking_registrasi WHERE booking_registrasi.status='Belum' AND booking_registrasi.kd_dokter='$kddokter[kd_dokter]' AND booking_registrasi.kd_poli='$kdpoli[kd_poli_rs]' AND booking_registrasi.tanggal_periksa='$decode[tanggalperiksa]' ORDER BY CONVERT(RIGHT(booking_registrasi.no_reg,3),signed) LIMIT 1 "); + $table = ($decode['tanggalperiksa'] == date('Y-m-d')) + ? 'reg_periksa' + : 'booking_registrasi'; + + $q = $this->db($table) + ->select(['no_reg']) + ->where('stts', 'Belum') + ->where('kd_dokter', $kddokter['kd_dokter']) + ->where('kd_poli', $kdpoli['kd_poli_rs']); - if($decode['tanggalperiksa'] == date('Y-m-d')) { - $max_antrian = $this->db()->pdo()->prepare("SELECT reg_periksa.no_reg FROM reg_periksa WHERE reg_periksa.stts='Belum' AND reg_periksa.kd_dokter='$kddokter[kd_dokter]' AND reg_periksa.kd_poli='$kdpoli[kd_poli_rs]' AND reg_periksa.tgl_registrasi='$decode[tanggalperiksa]' ORDER BY CONVERT(RIGHT(reg_periksa.no_reg,3),signed) LIMIT 1 "); + if ($table === 'reg_periksa') { + $q->where('tgl_registrasi', $decode['tanggalperiksa']); + } else { + $q->where('tanggal_periksa', $decode['tanggalperiksa']); } - $max_antrian->execute(); - $max_antrian = $max_antrian->fetch(); + + $max_antrian = $q + ->orderBy('no_reg', 'ASC') + ->limit(1) + ->oneArray(); + if(strtotime($decode['tanggalperiksa']) == strtotime(date('Y-m-d'))) { $data = $this->db()->pdo()->prepare("SELECT poliklinik.nm_poli,COUNT(reg_periksa.kd_poli) as total_antrean,dokter.nm_dokter, @@ -583,14 +600,14 @@ private function _resultStatusAntrian() $response = array( 'response' => array( 'namapoli' => $data['nm_poli'], - 'namadokter' => $data['nm_dokter'], + 'namadokter' => $kddokter['nm_dokter'], 'totalantrean' => $data['total_antrean'], - 'sisaantrean' => ($data['sisa_antrean']>0?$data['sisa_antrean']:0), + 'sisaantrean' => (int)$data['sisa_antrean'], 'antreanpanggil' => "A-".$max_antrian['no_reg'], 'sisakuotajkn' => ($kuota['kuota']-$data['total_antrean']), - 'kuotajkn' => intval($kuota['kuota']), + 'kuotajkn' => ($kuota['kuota']-$data['total_antrean']), 'sisakuotanonjkn' => ($kuota['kuota']-$data['total_antrean']), - 'kuotanonjkn' => intval($kuota['kuota']), + 'kuotanonjkn' => ($kuota['kuota']-$data['total_antrean']), 'keterangan' => $data['keterangan'] ), 'metadata' => array( @@ -601,12 +618,24 @@ private function _resultStatusAntrian() http_response_code(200); } else { $response = array( + 'response' => array( + 'namapoli' => $kdpoli['nm_poli_bpjs'], + 'namadokter' => $data['nm_dokter'], + 'totalantrean' => $data['total_antrean'], + 'sisaantrean' => (int)$data['sisa_antrean'], + 'antreanpanggil' => "A-0", + 'sisakuotajkn' => ($kuota['kuota']-$data['total_antrean']), + 'kuotajkn' => ($kuota['kuota']-$data['total_antrean']), + 'sisakuotanonjkn' => ($kuota['kuota']-$data['total_antrean']), + 'kuotanonjkn' => ($kuota['kuota']-$data['total_antrean']), + 'keterangan' => $data['keterangan'] + ), 'metadata' => array( - 'message' => 'Maaf belum ada antrian ditanggal ' . $decode['tanggalperiksa'], - 'code' => 201 + 'message' => 'Ok', + 'code' => 200 ) ); - http_response_code(201); + http_response_code(200); } } } else { @@ -617,7 +646,7 @@ private function _resultStatusAntrian() ) ); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getAmbilAntrianFarmasi() @@ -633,15 +662,19 @@ private function _resultAmbilAntrianFarmasi() $konten = trim(file_get_contents("php://input")); $decode = json_decode($konten, true); $response = array(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { if(empty($decode['kodebooking'])) { $response = array( 'metadata' => array( @@ -748,7 +781,7 @@ private function _resultAmbilAntrianFarmasi() ); http_response_code(201); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getStatusAntrianFarmasi() @@ -764,15 +797,19 @@ private function _resultStatusAntrianFarmasi() $konten = trim(file_get_contents("php://input")); $decode = json_decode($konten, true); $response = array(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { if(empty($decode['kodebooking'])) { $response = array( 'metadata' => array( @@ -863,13 +900,13 @@ private function _resultStatusAntrianFarmasi() if($resep_racikan) { $jenis_resep = 'Racikan'; } - + $panggil = $mlite_antrian_loket['count'] - $mlite_antrian_loket_sisaantrean['count']; $response = array( 'response' => array( 'jenisresep' => $jenis_resep, 'totalantrean' => $mlite_antrian_loket['count'], 'sisaantrean' => $mlite_antrian_loket_sisaantrean['count'], - 'antreanpanggil' => $this->settings->get('anjungan.panggil_apotek_nomor')-1, + 'antreanpanggil' => $panggil, 'keterangan' => "" ), 'metadata' => array( @@ -892,7 +929,7 @@ private function _resultStatusAntrianFarmasi() ); http_response_code(201); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getSisaAntrian() @@ -908,15 +945,19 @@ private function _resultSisaAntrian() $konten = trim(file_get_contents("php://input")); $decode = json_decode($konten, true); $response = array(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { if(empty($decode['kodebooking'])) { $response = array( 'metadata' => array( @@ -972,9 +1013,15 @@ private function _resultSisaAntrian() }else if($booking_registrasi['status']=='Terdaftar'){ $noreg = $this->db('reg_periksa')->where('no_rkm_medis', $pasien['no_rkm_medis'])->where('tgl_registrasi', $booking_registrasi['tanggal_periksa'])->oneArray(); - $max_antrian = $this->db()->pdo()->prepare("SELECT reg_periksa.no_reg FROM reg_periksa WHERE reg_periksa.stts='Belum' AND reg_periksa.kd_dokter='$booking_registrasi[kd_dokter]' AND reg_periksa.kd_poli='$booking_registrasi[kd_poli]' AND reg_periksa.tgl_registrasi='$booking_registrasi[tanggal_periksa]' ORDER BY CONVERT(RIGHT(reg_periksa.no_reg,3),signed) LIMIT 1 "); - $max_antrian->execute(); - $max_antrian = $max_antrian->fetch(); + $max_antrian = $this->db('reg_periksa') + ->select(['no_reg']) + ->where('stts', 'Belum') + ->where('kd_dokter', $booking_registrasi['kd_dokter']) + ->where('kd_poli', $booking_registrasi['kd_poli']) + ->where('tgl_registrasi', $booking_registrasi['tanggal_periksa']) + ->orderByRightNumber('no_reg', 3, 'ASC') + ->limit(1) + ->oneArray(); $data = $this->db()->pdo()->prepare("SELECT reg_periksa.kd_poli,poliklinik.nm_poli,dokter.nm_dokter, reg_periksa.no_reg,COUNT(reg_periksa.no_rawat) as total_antrean, @@ -992,7 +1039,7 @@ private function _resultSisaAntrian() 'namapoli' => $data['nm_poli'], 'namadokter' => $data['nm_dokter'], 'sisaantrean' => ($data['sisa_antrean']>0?$data['sisa_antrean']:0), - 'antreanpanggil' => "A-".$max_antrian['no_reg'], + 'antreanpanggil' => "A-".$max_antrian['no_reg'] ?? '000', 'waktutunggu' => (($data['sisa_antrean']*10)*1000), 'keterangan' => "Datanglah Minimal 30 Menit, jika no antrian anda terlewat, silakan konfirmasi ke layanan pelanggan, Terima Kasih .." ), @@ -1023,7 +1070,7 @@ private function _resultSisaAntrian() ); http_response_code(201); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getBatalAntrian() @@ -1039,15 +1086,19 @@ private function _resultBatalAntrian() $konten = trim(file_get_contents("php://input")); $decode = json_decode($konten, true); $response = array(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { if(empty($decode['kodebooking'])) { $response = array( 'metadata' => array( @@ -1154,7 +1205,7 @@ private function _resultBatalAntrian() ); http_response_code(201); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getPasienBaru() @@ -1170,15 +1221,19 @@ private function _resultPasienBaru() $konten = trim(file_get_contents("php://input")); $decode = json_decode($konten, true); $response = array(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { if (empty($decode['nomorkartu'])){ $response = array( 'metadata' => array( @@ -1467,7 +1522,7 @@ private function _resultPasienBaru() ) ); http_response_code(201); - }else if(empty($decode['rw'])) { + }else if(empty(isset($decode['rw']))) { $response = array( 'metadata' => array( 'message' => 'RW tidak boleh kosong', @@ -1483,7 +1538,7 @@ private function _resultPasienBaru() ) ); http_response_code(201); - }else if(empty($decode['rt'])) { + }else if(empty(isset($decode['rt']))) { $response = array( 'metadata' => array( 'message' => 'RT tidak boleh kosong', @@ -1560,7 +1615,7 @@ private function _resultPasienBaru() 'norm' => $_POST['no_rkm_medis'] ), 'metadata' => array( - 'message' => 'Pasien berhasil mendapatkann nomor RM, silahkan lanjutkan ke booking. Pasien tidak perlu ke admisi.', + 'message' => 'Pasien berhasil mendapatkan nomor RM, silahkan lanjutkan ke booking. Pasien tidak perlu ke admisi.', 'code' => 200 ) ); @@ -1576,7 +1631,7 @@ private function _resultPasienBaru() ); http_response_code(201); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getPasienCheckIn() @@ -1592,15 +1647,19 @@ private function _resultPasienCheckIn() $konten = trim(file_get_contents("php://input")); $decode = json_decode($konten, true); $response = array(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { $tanggal=date("Y-m-d", ($decode['waktu']/1000)); $jam = date("H:i:s",($decode['waktu']/1000)); if(empty($decode['kodebooking'])) { @@ -1766,6 +1825,45 @@ private function _resultPasienCheckIn() 'status_poli' => $_POST['status_poli'] ]); if($insert){ + $reg_periksa = $this->db('reg_periksa')->where('no_rkm_medis',$booking_registrasi['no_rkm_medis'])->where('tgl_registrasi',$booking_registrasi['tanggal_periksa'])->oneArray(); + $mlite_antrian_loket = $this->db('mlite_antrian_loket')->where('no_rkm_medis', $booking_registrasi['no_rkm_medis'])->where('postdate', $booking_registrasi['tanggal_periksa'])->oneArray(); + if ($_POST['stts_daftar'] == 'Baru') { + $result = $this->db('mlite_antrian_loket')->select('noantrian')->where('type', 'Loket')->where('postdate', date('Y-m-d'))->desc('start_time')->oneArray(); + $noantrian = ''; + if($result) { + $noantrian = $result['noantrian']; + } + if($noantrian > 0) { + $next_antrian = $noantrian + 1; + } else { + $next_antrian = 1; + } + if (!$mlite_antrian_loket['postdate']) { + $this->db('mlite_antrian_loket') + ->save([ + 'type' => 'Loket', + 'noantrian' => $next_antrian, + 'no_rkm_medis' => $booking_registrasi['no_rkm_medis'], + 'postdate' => date('Y-m-d'), + 'start_time' => date('H:i:s'), + 'end_time' => '00:00:00', + 'status' => '0', + 'loket' => '0' + ]); + } + } + if(!$this->db('mutasi_berkas')->where('no_rawat', $reg_periksa['no_rawat'])->oneArray()) { + $datetime = date('Y-m-d H:i:s'); + $this->db('mutasi_berkas')->save([ + 'no_rawat' => $reg_periksa['no_rawat'], + 'status' => 'Sudah Dikirim', + 'dikirim' => $datetime, + 'diterima' => '0000-00-00 00:00:00', + 'kembali' => '0000-00-00 00:00:00', + 'tidakada' => '0000-00-00 00:00:00', + 'ranap' => '0000-00-00 00:00:00' + ]); + } $response = array( 'metadata' => array( 'message' => 'Ok 1', @@ -1878,7 +1976,7 @@ private function _resultPasienCheckIn() ); http_response_code(201); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getOperasiRS() @@ -1894,15 +1992,19 @@ private function _resultOperasiRS() $konten = trim(file_get_contents("php://input")); $decode = json_decode($konten, true); $response = array(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { $data = array(); $sql = $this->db()->pdo()->prepare("SELECT booking_operasi.no_rawat AS kodebooking, booking_operasi.tanggal AS tanggaloperasi, paket_operasi.nm_perawatan AS jenistindakan, maping_poli_bpjs.kd_poli_bpjs AS kodepoli, poliklinik.nm_poli AS namapoli, booking_operasi.status AS terlaksana, pasien.no_peserta AS nopeserta FROM pasien, booking_operasi, paket_operasi, reg_periksa, jadwal, poliklinik, maping_poli_bpjs WHERE booking_operasi.no_rawat = reg_periksa.no_rawat AND pasien.no_rkm_medis = reg_periksa.no_rkm_medis AND booking_operasi.kode_paket = paket_operasi.kode_paket AND booking_operasi.kd_dokter = jadwal.kd_dokter AND jadwal.kd_poli = poliklinik.kd_poli AND jadwal.kd_poli=maping_poli_bpjs.kd_poli_rs AND booking_operasi.tanggal BETWEEN '$decode[tanggalawal]' AND '$decode[tanggalakhir]' GROUP BY booking_operasi.no_rawat"); $sql->execute(); @@ -1977,7 +2079,7 @@ private function _resultOperasiRS() ); http_response_code(201); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function getOperasiPasien() @@ -1993,15 +2095,19 @@ private function _resultOperasiPasien() $konten = trim(file_get_contents("php://input")); $decode = json_decode($konten, true); $response = array(); - if($header[$this->settings->get('jkn_mobile.header_token')] == false) { + + $tokenHeader = $this->settings->get('jkn_mobile.header_token'); + $usernameHeader = $this->settings->get('jkn_mobile.header_username'); + + if(!isset($header[$tokenHeader]) || $header[$tokenHeader] == false) { $response = array( 'metadata' => array( - 'message' => 'Token expired', + 'message' => 'Token expired or missing', 'code' => 201 ) ); http_response_code(201); - } else if ($header[$this->settings->get('jkn_mobile.header_token')] == $this->_getToken() && $header[$this->settings->get('jkn_mobile.header_username')] == $this->settings->get('jkn_mobile.x_username')) { + } else if ($header[$tokenHeader] == $this->_getToken() && isset($header[$usernameHeader]) && $header[$usernameHeader] == $this->settings->get('jkn_mobile.x_username')) { $data = array(); $cek_nopeserta = $this->db('pasien')->where('no_peserta', $decode['nopeserta'])->oneArray(); $sql = $this->db()->pdo()->prepare("SELECT booking_operasi.no_rawat AS kodebooking, booking_operasi.tanggal AS tanggaloperasi, paket_operasi.nm_perawatan AS jenistindakan, maping_poli_bpjs.kd_poli_bpjs AS kodepoli, poliklinik.nm_poli AS namapoli, booking_operasi.status AS terlaksana FROM pasien, booking_operasi, paket_operasi, reg_periksa, jadwal, poliklinik, maping_poli_bpjs WHERE booking_operasi.no_rawat = reg_periksa.no_rawat AND pasien.no_rkm_medis = reg_periksa.no_rkm_medis AND booking_operasi.kode_paket = paket_operasi.kode_paket AND booking_operasi.kd_dokter = jadwal.kd_dokter AND jadwal.kd_poli = poliklinik.kd_poli AND jadwal.kd_poli=maping_poli_bpjs.kd_poli_rs AND pasien.no_peserta = '$decode[nopeserta]' GROUP BY booking_operasi.no_rawat"); @@ -2076,7 +2182,7 @@ private function _resultOperasiPasien() ); http_response_code(201); } - echo json_encode($response); + echo json_encode(htmlspecialchars_array($response)); } public function _getJadwal($kodepoli, $tanggal) @@ -2099,17 +2205,12 @@ public function _getJadwal($kodepoli, $tanggal) if($json != null) { echo '{ "metaData": { - "code": "'.$code.'", - "message": "'.$message.'" + "code": "'.htmlspecialchars($code, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'", + "message": "'.htmlspecialchars($message, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'" }, "response": '.$decompress.'}'; } else { - echo '{ - "metaData": { - "code": "5000", - "message": "ERROR" - }, - "response": "ADA KESALAHAN ATAU SAMBUNGAN KE SERVER BPJS TERPUTUS."}'; + echo htmlspecialchars($json['metaData']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); } exit(); } @@ -2158,7 +2259,7 @@ public function _getUpdateJadwal($data = []) $url = $this->bpjsurl.'updatejadwaldokter'; $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); exit(); } @@ -2333,7 +2434,7 @@ public function _getAntreanAdd() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $data = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($data)." "; + echo json_encode(htmlspecialchars_array($data))." "; echo $data['metadata']['code']; if($data['metadata']['code'] == 200 || $data['metadata']['code'] == 208){ @@ -2386,12 +2487,12 @@ public function _getAntreanAdd() 'kodebooking' => $kodebooking, 'jenis_kunjungan' => $jeniskunjungan, 'status_kirim' => 'Sudah', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi')->where('nomor_referensi', $q['nomor_referensi'])->save([ 'status_kirim' => 'Sudah', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } } @@ -2404,12 +2505,12 @@ public function _getAntreanAdd() 'kodebooking' => $kodebooking, 'jenis_kunjungan' => $jeniskunjungan, 'status_kirim' => 'Sudah', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi')->where('nomor_referensi', $q['nomor_referensi'])->save([ 'status_kirim' => 'Sudah', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } } @@ -2424,12 +2525,12 @@ public function _getAntreanAdd() 'kodebooking' => $kodebooking, 'jenis_kunjungan' => $jeniskunjungan, 'status_kirim' => 'Gagal', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi')->where('nomor_referensi', $q['nomor_referensi'])->save([ 'status_kirim' => 'Gagal', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } } @@ -2442,12 +2543,12 @@ public function _getAntreanAdd() 'kodebooking' => $kodebooking, 'jenis_kunjungan' => $jeniskunjungan, 'status_kirim' => 'Gagal', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi')->where('nomor_referensi', $q['nomor_referensi'])->save([ 'status_kirim' => 'Gagal', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } } @@ -2627,14 +2728,14 @@ public function _getAntreanAddAusy() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $data = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($data)." "; + echo json_encode(htmlspecialchars_array($data))." "; echo $data['metadata']['code']; if($data['metadata']['code'] == 200 || $data['metadata']['code'] == 208){ if($jenispasien == 'JKN') { $this->db('mlite_antrian_referensi')->where('nomor_referensi', $q['nomor_referensi'])->save([ 'status_kirim' => 'Sudah', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } @@ -2652,7 +2753,7 @@ public function _getAntreanAddAusy() $this->db('mlite_antrian_referensi')->where('nomor_referensi', $q['nomor_referensi'])->save([ 'status_kirim' => 'Gagal', - 'keterangan' => $data['metadata']['message'] + 'keterangan' => htmlspecialchars($data['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } @@ -2714,7 +2815,7 @@ public function _getAntreanBatal() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); echo '
                                    -------------------------------------

                                    '; } @@ -2772,8 +2873,7 @@ public function _getAntreanUpdateWaktu() $data = [ 'kodebooking' => $q['kodebooking'], 'taskid' => 1, - 'waktu' => strtotime($mlite_antrian_loket['postdate'].' '.$mlite_antrian_loket['start_time']) * 1000, - 'jenisresep' => '' + 'waktu' => strtotime($mlite_antrian_loket['postdate'].' '.$mlite_antrian_loket['start_time']) * 1000 ]; $data = json_encode($data); echo 'Request:
                                    '; @@ -2784,16 +2884,16 @@ public function _getAntreanUpdateWaktu() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if(isset($json['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->save([ 'tanggal_periksa' => $date, - 'nomor_referensi' => $q['nomor_referensi'], + 'nomor_referensi' => $q['kodebooking'], 'taskid' => 1, 'waktu' => strtotime($mlite_antrian_loket['postdate'].' '.$mlite_antrian_loket['start_time']) * 1000, 'status' => 'Sudah', - 'keterangan' => 'Mulai tunggu admisi.' + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -2818,8 +2918,7 @@ public function _getAntreanUpdateWaktu() $data = [ 'kodebooking' => $q['kodebooking'], 'taskid' => 2, - 'waktu' => strtotime($mlite_antrian_loket['end_time']) * 1000, - 'jenisresep' => '' + 'waktu' => strtotime($mlite_antrian_loket['end_time']) * 1000 ]; $data = json_encode($data); echo 'Request:
                                    '; @@ -2830,16 +2929,16 @@ public function _getAntreanUpdateWaktu() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if(isset($json['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->save([ 'tanggal_periksa' => $date, - 'nomor_referensi' => $q['nomor_referensi'], + 'nomor_referensi' => $q['kodebooking'], 'taskid' => 2, 'waktu' => strtotime($mlite_antrian_loket['postdate'].' '.$mlite_antrian_loket['end_time']) * 1000, 'status' => 'Sudah', - 'keterangan' => 'Mulai pelayanan admisi.' + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -2858,14 +2957,13 @@ public function _getAntreanUpdateWaktu() $q['no_rkm_medis'] = $pasien['no_rkm_medis']; } $reg_periksa = $this->db('reg_periksa')->where('tgl_registrasi', $date)->where('no_rkm_medis', $q['no_rkm_medis'])->oneArray(); - $mutasi_berkas = $this->db('mutasi_berkas')->select('dikirim')->where('no_rawat', $reg_periksa['no_rawat'])->where('dikirim', '<>', '0000-00-00 00:00:00')->oneArray(); + $mutasi_berkas = $this->db('mutasi_berkas')->select('dikirim')->where('no_rawat', $reg_periksa['no_rawat'])->where('dikirim', '>', '1970-01-01 00:00:00')->oneArray(); if($mutasi_berkas){ date_default_timezone_set($this->settings->get('settings.timezone')); $data = [ 'kodebooking' => $q['kodebooking'], 'taskid' => 3, - 'waktu' => strtotime($mutasi_berkas['dikirim']) * 1000, - 'jenisresep' => '' + 'waktu' => strtotime($mutasi_berkas['dikirim']) * 1000 ]; $data = json_encode($data); echo 'Request:
                                    '; @@ -2876,16 +2974,16 @@ public function _getAntreanUpdateWaktu() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if(isset($json['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->save([ 'tanggal_periksa' => $date, - 'nomor_referensi' => $q['nomor_referensi'], + 'nomor_referensi' => $q['kodebooking'], 'taskid' => 3, 'waktu' => strtotime($mutasi_berkas['dikirim']) * 1000, 'status' => 'Sudah', - 'keterangan' => 'Selesai pelayanan admisi atau mulai tunggu poli.' + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -2904,14 +3002,13 @@ public function _getAntreanUpdateWaktu() $q['no_rkm_medis'] = $pasien['no_rkm_medis']; } $reg_periksa = $this->db('reg_periksa')->where('tgl_registrasi', $date)->where('no_rkm_medis', $q['no_rkm_medis'])->oneArray(); - $mutasi_berkas = $this->db('mutasi_berkas')->select('diterima')->where('no_rawat', $reg_periksa['no_rawat'])->where('diterima', '<>', '0000-00-00 00:00:00')->oneArray(); + $mutasi_berkas = $this->db('mutasi_berkas')->select('diterima')->where('no_rawat', $reg_periksa['no_rawat'])->where('diterima', '>', '1970-01-01 00:00:00')->oneArray(); if($mutasi_berkas){ date_default_timezone_set($this->settings->get('settings.timezone')); $data = [ 'kodebooking' => $q['kodebooking'], 'taskid' => 4, - 'waktu' => strtotime($mutasi_berkas['diterima']) * 1000, - 'jenisresep' => '' + 'waktu' => strtotime($mutasi_berkas['diterima']) * 1000 ]; $data = json_encode($data); echo 'Request:
                                    '; @@ -2922,16 +3019,16 @@ public function _getAntreanUpdateWaktu() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if(isset($json['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->save([ 'tanggal_periksa' => $date, - 'nomor_referensi' => $q['nomor_referensi'], + 'nomor_referensi' => $q['kodebooking'], 'taskid' => 4, 'waktu' => strtotime($mutasi_berkas['diterima']) * 1000, 'status' => 'Sudah', - 'keterangan' => 'Mulai pelayanan poli.' + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -2951,13 +3048,19 @@ public function _getAntreanUpdateWaktu() } $reg_periksa = $this->db('reg_periksa')->where('tgl_registrasi', $date)->where('no_rkm_medis', $q['no_rkm_medis'])->oneArray(); $pemeriksaan_ralan = $this->db('pemeriksaan_ralan')->select(['datajam' => 'concat(tgl_perawatan," ",jam_rawat)'])->where('no_rawat', $reg_periksa['no_rawat'])->oneArray(); + $resep_obat = $this->db('resep_obat')->select(['datajam' => 'concat(tgl_peresepan," ",jam_peresepan)', 'no_resep' => 'no_resep'])->where('no_rawat', $reg_periksa['no_rawat'])->oneArray(); + $jenisresep = 'Non racikan'; + $resep_dokter_racikan = $this->db('resep_dokter_racikan')->where('no_resep', $resep_obat['no_resep'])->oneArray(); + if(!empty($resep_dokter_racikan)) { + $jenisresep = 'Racikan'; + } if($pemeriksaan_ralan){ date_default_timezone_set($this->settings->get('settings.timezone')); $data = [ 'kodebooking' => $q['kodebooking'], 'taskid' => 5, 'waktu' => strtotime($pemeriksaan_ralan['datajam']) * 1000, - 'jenisresep' => 'Tidak ada' + 'jenisresep' => $jenisresep ]; $data = json_encode($data); echo 'Request:
                                    '; @@ -2968,16 +3071,16 @@ public function _getAntreanUpdateWaktu() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if(isset($json['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->save([ 'tanggal_periksa' => $date, - 'nomor_referensi' => $q['nomor_referensi'], + 'nomor_referensi' => $q['kodebooking'], 'taskid' => 5, 'waktu' => strtotime($pemeriksaan_ralan['datajam']) * 1000, 'status' => 'Sudah', - 'keterangan' => 'Selesai pelayanan poli.' + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3008,8 +3111,7 @@ public function _getAntreanUpdateWaktu() $data = [ 'kodebooking' => $q['kodebooking'], 'taskid' => 6, - 'waktu' => strtotime($resep_obat['datajam']) * 1000, - 'jenisresep' => $jenisresep + 'waktu' => strtotime($resep_obat['datajam']) * 1000 ]; $data = json_encode($data); echo 'Request:
                                    '; @@ -3020,16 +3122,16 @@ public function _getAntreanUpdateWaktu() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if(isset($json['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->save([ 'tanggal_periksa' => $date, - 'nomor_referensi' => $q['nomor_referensi'], + 'nomor_referensi' => $q['kodebooking'], 'taskid' => 6, 'waktu' => strtotime($resep_obat['datajam']) * 1000, 'status' => 'Sudah', - 'keterangan' => 'Mulai pelayanan apotek. ' + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3060,8 +3162,7 @@ public function _getAntreanUpdateWaktu() $data = [ 'kodebooking' => $q['kodebooking'], 'taskid' => 7, - 'waktu' => strtotime($resep_obat['datajam']) * 1000, - 'jenisresep' => '' + 'waktu' => strtotime($resep_obat['datajam']) * 1000 ]; $data = json_encode($data); echo 'Request:
                                    '; @@ -3072,16 +3173,16 @@ public function _getAntreanUpdateWaktu() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if(isset($json['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->save([ 'tanggal_periksa' => $date, - 'nomor_referensi' => $q['nomor_referensi'], + 'nomor_referensi' => $q['kodebooking'], 'taskid' => 7, 'waktu' => strtotime($resep_obat['datajam']) * 1000, 'status' => 'Sudah', - 'keterangan' => 'Selesai pelayanan apotek.' + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3115,12 +3216,12 @@ public function _getAntreanUpdateWaktu() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if(isset($json['metadata']['code']) == 200){ $this->db('mlite_antrian_referensi_taskid') ->save([ 'tanggal_periksa' => $date, - 'nomor_referensi' => $q['nomor_referensi'], + 'nomor_referensi' => $q['kodebooking'], 'taskid' => 99, 'waktu' => strtotime(date('Y-m-d H:i:s')) * 1000, 'status' => 'Sudah', @@ -3238,7 +3339,7 @@ public function _getAntreanUpdateWaktuAusy() } $reg_periksa = $this->db('reg_periksa')->where('tgl_registrasi', $date)->where('no_rkm_medis', $q['no_rkm_medis'])->oneArray(); echo $q['no_rkm_medis'].'
                                    '; - $mutasi_berkas = $this->db('mutasi_berkas')->select('dikirim')->where('no_rawat', $reg_periksa['no_rawat'])->where('dikirim', '<>', '0000-00-00 00:00:00')->oneArray(); + $mutasi_berkas = $this->db('mutasi_berkas')->select('dikirim')->where('no_rawat', $reg_periksa['no_rawat'])->where('dikirim', '>', '1970-01-01 00:00:00')->oneArray(); if($mutasi_berkas){ echo 'A '; date_default_timezone_set($this->settings->get('settings.timezone')); @@ -3270,7 +3371,7 @@ public function _getAntreanUpdateWaktuAusy() $q['no_rkm_medis'] = $pasien['no_rkm_medis']; } $reg_periksa = $this->db('reg_periksa')->where('tgl_registrasi', $date)->where('no_rkm_medis', $q['no_rkm_medis'])->oneArray(); - $mutasi_berkas = $this->db('mutasi_berkas')->select('diterima')->where('no_rawat', $reg_periksa['no_rawat'])->where('diterima', '<>', '0000-00-00 00:00:00')->oneArray(); + $mutasi_berkas = $this->db('mutasi_berkas')->select('diterima')->where('no_rawat', $reg_periksa['no_rawat'])->where('diterima', '>', '1970-01-01 00:00:00')->oneArray(); if($mutasi_berkas){ date_default_timezone_set($this->settings->get('settings.timezone')); $this->db('mlite_antrian_referensi_taskid') @@ -3401,18 +3502,18 @@ public function _getAntreanUpdateWaktuAusy() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if($json['metadata']['code'] == 200 || $json['metadata']['code'] == 208){ $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 1) ->save([ 'status' => 'Sudah', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 1) ->save([ 'status' => 'Gagal', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3441,18 +3542,18 @@ public function _getAntreanUpdateWaktuAusy() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if($json['metadata']['code'] == 200 || $json['metadata']['code'] == 208){ $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 2) ->save([ 'status' => 'Sudah', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 2) ->save([ 'status' => 'Gagal', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3481,18 +3582,18 @@ public function _getAntreanUpdateWaktuAusy() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if($json['metadata']['code'] == 200 || $json['metadata']['code'] == 208){ $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 3) ->save([ 'status' => 'Sudah', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 3) ->save([ 'status' => 'Gagal', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3521,18 +3622,18 @@ public function _getAntreanUpdateWaktuAusy() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if($json['metadata']['code'] == 200 || $json['metadata']['code'] == 208){ $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 4) ->save([ 'status' => 'Sudah', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 4) ->save([ 'status' => 'Gagal', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3560,18 +3661,18 @@ public function _getAntreanUpdateWaktuAusy() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if($json['metadata']['code'] == 200 || $json['metadata']['code'] == 208){ $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 5) ->save([ 'status' => 'Sudah', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 5) ->save([ 'status' => 'Gagal', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3600,18 +3701,18 @@ public function _getAntreanUpdateWaktuAusy() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if($json['metadata']['code'] == 200 || $json['metadata']['code'] == 208){ $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 6) ->save([ 'status' => 'Sudah', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 6) ->save([ 'status' => 'Gagal', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3638,18 +3739,18 @@ public function _getAntreanUpdateWaktuAusy() $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); echo 'Response:
                                    '; - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); if($json['metadata']['code'] == 200 || $json['metadata']['code'] == 208){ $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 7) ->save([ 'status' => 'Sudah', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } else { $this->db('mlite_antrian_referensi_taskid')->where('tanggal_periksa', $date)->where('nomor_referensi', $q['nomor_referensi'])->where('taskid', 7) ->save([ 'status' => 'Gagal', - 'keterangan' => $json['metadata']['message'] + 'keterangan' => htmlspecialchars($json['metadata']['message'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ]); } echo '
                                    -------------------------------------

                                    '; @@ -3693,7 +3794,7 @@ public function _getAntreanWaktuTunggu() $url = $this->bpjsurl.'dashboard/waktutunggu/bulan/'.$slug[3].'/tahun/'.$slug[4].'/waktu/'.$slug[5]; $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); exit(); } @@ -3703,7 +3804,7 @@ public function _getAntreanWaktuTungguTanggal() $url = $this->bpjsurl.'dashboard/waktutunggu/tanggal/'.$slug[3].'/waktu/'.$slug[4]; $output = BpjsService::get($url, NULL, $this->consid, $this->secretkey, $this->user_key, NULL); $json = json_decode($output, true); - echo json_encode($json); + echo json_encode(htmlspecialchars_array($json)); exit(); } diff --git a/plugins/jkn_mobile/view/admin/antrol.display.html b/plugins/jkn_mobile/view/admin/antrol.display.html index f90d90ed3..22ecfa5b4 100644 --- a/plugins/jkn_mobile/view/admin/antrol.display.html +++ b/plugins/jkn_mobile/view/admin/antrol.display.html @@ -5,49 +5,49 @@
                                    {if: $value.tanggal} -

                                    {$value.tanggal}

                                    +

                                    {?=isset_or($value.tanggal)?}

                                    {/if} -

                                    - {$value.namapoli} +

                                    + {?=isset_or($value.namapoli)?}

                                    Jumlah Antrean :
                                    - {$value.jumlah_antrean}
                                    + {?=isset_or($value.jumlah_antrean)?}

                                    Waktu Layanan


                                    Rata - Rata Waktu Tunggu Loket :
                                    - {$value.avg_waktu_task1} + {?=isset_or($value.avg_waktu_task1)?}
                                    Rata - Rata Waktu Layanan Loket :
                                    - {$value.avg_waktu_task2}
                                    + {?=isset_or($value.avg_waktu_task2)?}
                                    Rata - Rata Waktu Tunggu Poli :
                                    - {$value.avg_waktu_task3} + {?=isset_or($value.avg_waktu_task3)?}
                                    Rata - Rata Waktu Layanan Poli :
                                    - {$value.avg_waktu_task4}
                                    + {?=isset_or($value.avg_waktu_task4)?}
                                    Rata - Rata Waktu Tunggu Farmasi :
                                    - {$value.avg_waktu_task5}
                                    + {?=isset_or($value.avg_waktu_task5)?}
                                    Rata - Rata Waktu Layanan Farmasi :
                                    - {$value.avg_waktu_task6}
                                    + {?=isset_or($value.avg_waktu_task6)?}
                                    @@ -56,7 +56,7 @@

                                    diff --git a/plugins/jkn_mobile/view/admin/antrol.html b/plugins/jkn_mobile/view/admin/antrol.html index a8f2d92af..237256804 100644 --- a/plugins/jkn_mobile/view/admin/antrol.html +++ b/plugins/jkn_mobile/view/admin/antrol.html @@ -48,48 +48,48 @@

                                    Antrian Online BPJS

                                    -

                                    {$value.tanggal}

                                    -

                                    - {$value.namapoli} +

                                    {?=isset_or($value.tanggal)?}

                                    +

                                    + {?=isset_or($value.namapoli)?}

                                    Jumlah Antrean :
                                    - {$value.jumlah_antrean}
                                    + {?=isset_or($value.jumlah_antrean)?}

                                    Waktu Layanan


                                    Rata - Rata Waktu Tunggu Loket :
                                    - {$value.avg_waktu_task1} + {?=isset_or($value.avg_waktu_task1)?}
                                    Rata - Rata Waktu Layanan Loket :
                                    - {$value.avg_waktu_task2}
                                    + {?=isset_or($value.avg_waktu_task2)?}
                                    Rata - Rata Waktu Tunggu Poli :
                                    - {$value.avg_waktu_task3} + {?=isset_or($value.avg_waktu_task3)?}
                                    Rata - Rata Waktu Layanan Poli :
                                    - {$value.avg_waktu_task4}
                                    + {?=isset_or($value.avg_waktu_task4)?}
                                    Rata - Rata Waktu Tunggu Farmasi :
                                    - {$value.avg_waktu_task5}
                                    + {?=isset_or($value.avg_waktu_task5)?}
                                    Rata - Rata Waktu Layanan Farmasi :
                                    - {$value.avg_waktu_task6}
                                    + {?=isset_or($value.avg_waktu_task6)?}
                                    @@ -98,7 +98,7 @@

                                    diff --git a/plugins/jkn_mobile/view/admin/antrollocal.html b/plugins/jkn_mobile/view/admin/antrollocal.html index 4472c977b..81718de5f 100755 --- a/plugins/jkn_mobile/view/admin/antrollocal.html +++ b/plugins/jkn_mobile/view/admin/antrollocal.html @@ -43,12 +43,12 @@

                                    Dashboard Antrian Online Local JKN Mobile

                                    {loop: $taskid} - {$value.no_rkm_medis} {$value.nm_pasien} - {$value.tanggal_periksa} - {$value.no_rawat} - {$value.keterangan} - {$value.nomor_referensi} - {$value.kodebooking} + {?=isset_or($value.no_rkm_medis)?} {?=isset_or($value.nm_pasien)?} + {?=isset_or($value.tanggal_periksa)?} + {?=isset_or($value.no_rawat)?} + {?=isset_or($value.keterangan)?} + {?=isset_or($value.nomor_referensi)?} + {?=isset_or($value.kodebooking)?} {/loop} diff --git a/plugins/jkn_mobile/view/admin/batalantrol.html b/plugins/jkn_mobile/view/admin/batalantrol.html index 146a60e65..e7a2781e1 100644 --- a/plugins/jkn_mobile/view/admin/batalantrol.html +++ b/plugins/jkn_mobile/view/admin/batalantrol.html @@ -9,7 +9,7 @@
                                    - +
                                    diff --git a/plugins/jkn_mobile/view/admin/bookingantrol.html b/plugins/jkn_mobile/view/admin/bookingantrol.html index 242490cdf..14da27906 100644 --- a/plugins/jkn_mobile/view/admin/bookingantrol.html +++ b/plugins/jkn_mobile/view/admin/bookingantrol.html @@ -19,10 +19,10 @@

                                    Data Booking Antrian Online

                                    {loop: $row} - {$value.tanggal_periksa} - {$value.nomor_kartu} - {$value.nomor_referensi} - {$value.kodebooking} + {?=isset_or($value.tanggal_periksa)?} + {?=isset_or($value.nomor_kartu)?} + {?=isset_or($value.nomor_referensi)?} + {?=isset_or($value.kodebooking)?} diff --git a/plugins/jkn_mobile/view/admin/form.mappingdokter.html b/plugins/jkn_mobile/view/admin/form.mappingdokter.html index f6c500c35..9c16d78ea 100644 --- a/plugins/jkn_mobile/view/admin/form.mappingdokter.html +++ b/plugins/jkn_mobile/view/admin/form.mappingdokter.html @@ -1,4 +1,4 @@ -
                                    +
                                    @@ -20,7 +20,7 @@

                                    Kelola Dokter

                                    @@ -32,4 +32,4 @@

                                    Kelola Dokter

                                    -
                                    +
                                    diff --git a/plugins/jkn_mobile/view/admin/form.mappingpoli.html b/plugins/jkn_mobile/view/admin/form.mappingpoli.html index 2b7b927f6..336bff3c9 100644 --- a/plugins/jkn_mobile/view/admin/form.mappingpoli.html +++ b/plugins/jkn_mobile/view/admin/form.mappingpoli.html @@ -1,4 +1,4 @@ -
                                    +
                                    @@ -20,7 +20,7 @@

                                    Kelola Dokter

                                    @@ -32,4 +32,4 @@

                                    Kelola Dokter

                                    -
                                    +
                                    diff --git a/plugins/jkn_mobile/view/admin/form.onsite.html b/plugins/jkn_mobile/view/admin/form.onsite.html index 4b67733b6..b5ddd0e5e 100644 --- a/plugins/jkn_mobile/view/admin/form.onsite.html +++ b/plugins/jkn_mobile/view/admin/form.onsite.html @@ -8,7 +8,7 @@
                                    - +
                                    Pilih Rujukan
                                    @@ -38,7 +38,7 @@

                                    - + \ No newline at end of file diff --git a/plugins/jkn_mobile/view/admin/manage.html b/plugins/jkn_mobile/view/admin/manage.html index c51320c69..bdf53d77c 100644 --- a/plugins/jkn_mobile/view/admin/manage.html +++ b/plugins/jkn_mobile/view/admin/manage.html @@ -1,21 +1,21 @@ - + diff --git a/plugins/jkn_mobile/view/admin/manage.qurate.html b/plugins/jkn_mobile/view/admin/manage.qurate.html index e74f51cab..3d6fe0ebb 100644 --- a/plugins/jkn_mobile/view/admin/manage.qurate.html +++ b/plugins/jkn_mobile/view/admin/manage.qurate.html @@ -31,7 +31,7 @@ }

                                    - Antrian Online Tanggal {$stats.tanggal} + Antrian Online Tanggal {?=isset_or($stats.tanggal)?}
                                    @@ -51,7 +51,7 @@

                                    SEP Terbit
                                    - {$stats.jml_sep} + {?=isset_or($stats.jml_sep)?}
                                    @@ -65,7 +65,7 @@

                                    Tambah Antrian
                                    - {$stats.jml_antrol} + {?=isset_or($stats.jml_antrol)?}
                                    @@ -79,7 +79,7 @@

                                    Quality Rate
                                    - {$stats.qr_manual} % + {?=isset_or($stats.qr_manual)?} %
                                    diff --git a/plugins/jkn_mobile/view/admin/mappingdokter.html b/plugins/jkn_mobile/view/admin/mappingdokter.html index a3adf65b1..0370cd2ae 100644 --- a/plugins/jkn_mobile/view/admin/mappingdokter.html +++ b/plugins/jkn_mobile/view/admin/mappingdokter.html @@ -18,9 +18,9 @@

                                    Data Mapping Dokter

                                    {loop: $row} - {$value.kd_dokter} - {$value.kd_dokter_bpjs} - {$value.nm_dokter_bpjs} + {?=isset_or($value.kd_dokter)?} + {?=isset_or($value.kd_dokter_bpjs)?} + {?=isset_or($value.nm_dokter_bpjs)?} diff --git a/plugins/jkn_mobile/view/admin/mappingpoli.html b/plugins/jkn_mobile/view/admin/mappingpoli.html index 458e9e24d..4a3185492 100644 --- a/plugins/jkn_mobile/view/admin/mappingpoli.html +++ b/plugins/jkn_mobile/view/admin/mappingpoli.html @@ -18,9 +18,9 @@

                                    Data Mapping Poliklinik

                                    {loop: $row} - {$value.kd_poli_rs} - {$value.kd_poli_bpjs} - {$value.nm_poli_bpjs} + {?=isset_or($value.kd_poli_rs)?} + {?=isset_or($value.kd_poli_bpjs)?} + {?=isset_or($value.nm_poli_bpjs)?}
                                    diff --git a/plugins/jkn_mobile/view/admin/ref.html b/plugins/jkn_mobile/view/admin/ref.html deleted file mode 100644 index ea5519d78..000000000 --- a/plugins/jkn_mobile/view/admin/ref.html +++ /dev/null @@ -1,184 +0,0 @@ -
                                    -
                                    -
                                    -
                                    -

                                    Katalog

                                    -
                                    - -
                                    -
                                    -
                                    -
                                    -
                                    -

                                    Referensi

                                    -
                                    -
                                    -
                                    -
                                    -
                                    - - -
                                    - -
                                    -
                                    -
                                    - -
                                    - - -
                                    -
                                    - - -
                                    - -
                                    - {if: isset($_GET['no_kartu']) && $_GET['no_kartu']!='' && isset($_GET['tgl_pelayanan']) && $_GET['tgl_pelayanan']!=''} -

                                    Respons result

                                    -
                                    -                                  
                                    - {/if} -
                                    -
                                    -
                                    - -
                                    -
                                    -

                                    - Hapus SEP -

                                    -
                                    -
                                    -
                                    -
                                    - -
                                    - - -
                                    -
                                    - - -
                                    - -
                                    - {if: isset($_GET['no_kartu']) && $_GET['no_kartu']!='' && isset($_GET['tgl_pelayanan']) && $_GET['tgl_pelayanan']!=''} -

                                    Respons result

                                    -
                                    -                                  
                                    - {/if} -
                                    -
                                    -
                                    - -
                                    -
                                    -

                                    - Cari SEP -

                                    -
                                    -
                                    -
                                    -
                                    - -
                                    - - -
                                    - -
                                    - {if: isset($_GET['sep']) && $_GET['sep']!=''} -

                                    Respons result

                                    -
                                    -                                
                                    - {/if} -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    -
                                    - - diff --git a/plugins/jkn_mobile/view/admin/settings.html b/plugins/jkn_mobile/view/admin/settings.html index 588180e6c..0d7dc1d36 100644 --- a/plugins/jkn_mobile/view/admin/settings.html +++ b/plugins/jkn_mobile/view/admin/settings.html @@ -1,52 +1,52 @@ -
                                    +
                                    -

                                    {$settings.title}

                                    +

                                    {?=isset_or($settings.title)?}

                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    @@ -54,7 +54,7 @@

                                    {$settings.title}

                                    @@ -73,7 +73,7 @@

                                    {$settings.title}

                                    @@ -82,8 +82,8 @@

                                    {$settings.title}

                                    - - + + @@ -94,8 +94,8 @@

                                    {$settings.title}

                                    - - + + @@ -108,8 +108,8 @@

                                    {$settings.title}

                                    - - + + @@ -120,8 +120,8 @@

                                    {$settings.title}

                                    - - + + @@ -135,7 +135,7 @@

                                    {$settings.title}

                                    @@ -145,7 +145,7 @@

                                    {$settings.title}

                                    @@ -157,7 +157,7 @@

                                    {$settings.title}

                                    @@ -167,7 +167,7 @@

                                    {$settings.title}

                                    @@ -178,7 +178,7 @@

                                    {$settings.title}

                                    -
                                    + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/jkn_mobile_fktp/view/antrian.html b/plugins/jkn_mobile_fktp/view/antrian.html new file mode 100644 index 000000000..e3bbe02db --- /dev/null +++ b/plugins/jkn_mobile_fktp/view/antrian.html @@ -0,0 +1,239 @@ + + + + + + + + Display Anjungan Pasien Mandiri + + + + + + + + + + + + + + + + +

                                      

                                    +

                                    Anjungan Pasien Mandiri {$fktp}

                                    +
                                    +
                                    +
                                    +
                                    + + + +
                                    +
                                    +
                                    +
                                    +
                                    + + + + + + \ No newline at end of file diff --git a/plugins/jkn_mobile_fktp/view/display.html b/plugins/jkn_mobile_fktp/view/display.html index 2e035a4c0..e015b35a7 100644 --- a/plugins/jkn_mobile_fktp/view/display.html +++ b/plugins/jkn_mobile_fktp/view/display.html @@ -1,63 +1,156 @@ - - - - + + + - - {$title} - {$settings.nama_instansi} - + + Display Antrian Loket + + - + - - - - -
                                    -

                                    Antrian Poliklinik {$settings.nama_instansi}

                                    - - - - - - - - - - {loop: $display} - - - - - - {/loop} - -
                                    Dokter/KlinikDalam PemeriksaanNomor Urut Berikutnya
                                    {$value.nm_dokter} - {$value.nm_poli}
                                    [ Antrian: {$value.dalam_antrian.jumlah} - Terlayani: {$value.sudah_dilayani.jumlah} ]
                                    {if: empty($value.dalam_pemeriksaan)}Kosong{else}{$value.dalam_pemeriksaan.no_reg} - {$value.dalam_pemeriksaan.nm_pasien}{/if} - - {if: !empty($value.selanjutnya)} - {loop: $value.selanjutnya as $data} - - {$data.nm_pasien} ({$data.no_reg} - {$value.jam_mulai_selanjutnya}) - {/loop} - {/if} - -
                                    -
                                    - - + + + + + +

                                    Faskes Tingkat I {?=isset_or($fktp)?}   

                                    +
                                    +
                                    +
                                    +
                                    +
                                    +

                                    Antrian Dipanggil

                                    +
                                    +
                                    +
                                    + {?=isset_or($antrean)?} +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +

                                    Sisa Antrean

                                    +
                                    +
                                    + {?=isset_or($sisa_antrean)?} +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +

                                    Total Antrean

                                    +
                                    +
                                    + {?=isset_or($total_antrean)?} +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    +
                                    +
                                    + {?=isset_or($running_text)?} +
                                    +
                                    +
                                    + + + + \ No newline at end of file diff --git a/plugins/jkn_mobile_fktp/view/index.html b/plugins/jkn_mobile_fktp/view/index.html index ed514e786..3fb3bf3cb 100644 --- a/plugins/jkn_mobile_fktp/view/index.html +++ b/plugins/jkn_mobile_fktp/view/index.html @@ -344,9 +344,9 @@

                                    referensi poli

                                    {loop: $referensi_poli} - {$value.kd_poli_rs} - {$value.kd_poli_pcare} - {$value.nm_poli_pcare} + {?=isset_or($value.kd_poli_rs)?} + {?=isset_or($value.kd_poli_pcare)?} + {?=isset_or($value.nm_poli_pcare)?} {/loop} diff --git a/plugins/kasir_rawat_inap/Admin.php b/plugins/kasir_rawat_inap/Admin.php index 182cfef7f..16ad77322 100644 --- a/plugins/kasir_rawat_inap/Admin.php +++ b/plugins/kasir_rawat_inap/Admin.php @@ -9,14 +9,706 @@ class Admin extends AdminModule { + public $assign = []; + + protected function userIsAdmin() + { + $role = $this->core->getUserInfo('role', null, true); + + if (is_array($role)) { + return in_array('admin', array_map('trim', $role), true); + } + + if (is_string($role) && trim($role) !== '') { + $decoded = json_decode($role, true); + if (is_array($decoded)) { + return in_array('admin', array_map('trim', $decoded), true); + } + + $roles = array_map('trim', explode(',', $role)); + return in_array('admin', $roles, true); + } + + return $this->core->getUserInfo('role') === 'admin'; + } public function navigation() { return [ 'Kelola' => 'manage', + 'Kasir' => 'shift', + 'Laporan' => 'report', ]; } + protected function getBillingClosingState($noRawat) + { + $noRawat = trim((string) $noRawat); + if ($noRawat === '') { + return [ + 'exists' => false, + 'billing_exists' => false, + 'edit_locked' => true, + 'print_locked' => true, + 'message' => 'Nomor rawat tidak valid.' + ]; + } + + $registration = $this->db('reg_periksa')->where('no_rawat', $noRawat)->oneArray(); + if (!$registration) { + return [ + 'exists' => false, + 'billing_exists' => false, + 'edit_locked' => true, + 'print_locked' => true, + 'message' => 'Data registrasi pasien tidak ditemukan.' + ]; + } + + $billingExists = (bool) $this->db('mlite_billing') + ->where('no_rawat', $noRawat) + ->like('kd_billing', 'RI%') + ->oneArray(); + + if ($this->userIsAdmin()) { + return [ + 'exists' => true, + 'registration' => $registration, + 'billing_exists' => $billingExists, + 'is_paid' => (($registration['status_bayar'] ?? '') === 'Sudah Bayar'), + 'is_exam_closed' => (($registration['stts'] ?? '') === 'Sudah'), + 'edit_locked' => false, + 'print_locked' => false, + 'message' => '' + ]; + } + + $splitLock = $this->getSplitBillSummaryForLocking($noRawat, 'Ranap'); + $isPaid = (($registration['status_bayar'] ?? '') === 'Sudah Bayar'); + if ($splitLock !== null) { + $isPaid = ((float) ($splitLock['total_sisa'] ?? 0) <= 0) && ((float) ($splitLock['total_tagihan'] ?? 0) > 0); + } + $isExamClosed = (($registration['stts'] ?? '') === 'Sudah'); + + $message = ''; + if ($isPaid) { + $message = 'Billing sudah closing. Semua transaksi yang berkaitan dengan uang dikunci karena status bayar sudah lunas.'; + } elseif (!$isExamClosed) { + $message = 'Billing belum dapat diproses. Status periksa belum selesai, sehingga kasir tidak dapat membuat nota atau bukti pembayaran.'; + } elseif ($splitLock !== null && ((float) ($splitLock['total_sisa'] ?? 0) > 0) && (($registration['status_bayar'] ?? '') === 'Sudah Bayar')) { + $message = 'Terdapat tagihan susulan. Kasir dapat memproses pembayaran parsial per kelompok billing.'; + } + + return [ + 'exists' => true, + 'registration' => $registration, + 'billing_exists' => $billingExists, + 'is_paid' => $isPaid, + 'is_exam_closed' => $isExamClosed, + 'edit_locked' => ($isPaid || !$isExamClosed), + 'print_locked' => (!$billingExists && !$isExamClosed), + 'message' => $message + ]; + } + + protected function respondBillingLock(array $billingControl, $json = false) + { + $message = $billingControl['message'] ?? 'Billing sedang dikunci.'; + + if ($json) { + header('Content-Type: application/json'); + echo json_encode([ + 'status' => 'error', + 'message' => $message + ]); + } else { + echo $message; + } + exit(); + } + + protected function isBillingParsialEnabled() + { + $val = $this->settings->get('settings.billing_parsial'); + if ($val === null || $val === '') { + return true; + } + return ((string) $val) === 'true'; + } + + protected function getSplitBillPaidByKelompok($noRawat) + { + try { + $stmt = $this->core->db()->pdo()->prepare("SELECT d.kelompok, SUM(d.jumlah_alokasi) AS total + FROM mlite_billing_pembayaran_detail d + INNER JOIN mlite_billing_pembayaran h ON h.id = d.pembayaran_id + WHERE h.no_rawat = ? + GROUP BY d.kelompok"); + $stmt->execute([$noRawat]); + $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC); + $result = []; + foreach ($rows as $r) { + $k = strtoupper(trim((string) ($r['kelompok'] ?? ''))); + if ($k === '') { + continue; + } + $result[$k] = (float) ($r['total'] ?? 0); + } + return $result; + } catch (\Exception $e) { + return []; + } + } + + protected function getSplitBillHistory($noRawat) + { + try { + $stmt = $this->core->db()->pdo()->prepare("SELECT h.id, h.tgl_bayar, h.jam_bayar, h.metode, h.jumlah_bayar, h.id_user, h.keterangan, + GROUP_CONCAT(DISTINCT d.kelompok ORDER BY d.id SEPARATOR ', ') AS kelompok, + GROUP_CONCAT(DISTINCT CASE d.kelompok + WHEN 'ADMIN' THEN 'Administrasi/Kamar' + WHEN 'TINDAKAN' THEN 'Tindakan' + WHEN 'OBAT' THEN 'Obat & BHP' + WHEN 'LAB' THEN 'Laboratorium' + WHEN 'RAD' THEN 'Radiologi' + WHEN 'OPERASI' THEN 'Operasi' + WHEN 'TAMBAHAN' THEN 'Tambahan/Lain-lain' + ELSE d.kelompok + END ORDER BY d.id SEPARATOR ', ') AS kelompok_label + FROM mlite_billing_pembayaran h + LEFT JOIN mlite_billing_pembayaran_detail d ON d.pembayaran_id = h.id + WHERE h.no_rawat = ? + GROUP BY h.id + ORDER BY h.tgl_bayar DESC, h.jam_bayar DESC, h.id DESC"); + $stmt->execute([$noRawat]); + return $stmt->fetchAll(\PDO::FETCH_ASSOC); + } catch (\Exception $e) { + return []; + } + } + + protected function buildSplitBillSummary($noRawat, array $totals) + { + $paid = $this->getSplitBillPaidByKelompok($noRawat); + + $map = [ + 'ADMIN' => 'Administrasi/Kamar', + 'TINDAKAN' => 'Tindakan', + 'OBAT' => 'Obat & BHP', + 'LAB' => 'Laboratorium', + 'RAD' => 'Radiologi', + 'OPERASI' => 'Operasi', + 'TAMBAHAN' => 'Tambahan/Lain-lain' + ]; + + $groups = []; + $totalTagihan = 0; + $totalTerbayar = 0; + $totalSisa = 0; + + foreach ($map as $code => $label) { + $total = (float) ($totals[$code] ?? 0); + $paidAmt = (float) ($paid[$code] ?? 0); + $remaining = $total - $paidAmt; + if ($remaining < 0) { + $remaining = 0; + } + + $groups[] = [ + 'kelompok' => $code, + 'label' => $label, + 'total' => $total, + 'paid' => $paidAmt, + 'remaining' => $remaining, + 'status' => ($remaining <= 0 ? 'Lunas' : ($paidAmt > 0 ? 'Parsial' : 'Open')) + ]; + + $totalTagihan += $total; + $totalTerbayar += $paidAmt; + $totalSisa += $remaining; + } + + return [ + 'groups' => $groups, + 'total_tagihan' => $totalTagihan, + 'total_terbayar' => $totalTerbayar, + 'total_sisa' => $totalSisa + ]; + } + + protected function calculateSplitBillGroupTotals($noRawat, $status = 'Ranap') + { + try { + $pdo = $this->core->db()->pdo(); + + $stmt = $pdo->prepare("SELECT COALESCE(SUM(ttl_biaya),0) AS total FROM kamar_inap WHERE no_rawat = ?"); + $stmt->execute([$noRawat]); + $kamar = (float) ($stmt->fetchColumn() ?: 0); + + $stmt = $pdo->prepare("SELECT COALESCE(SUM(biaya_rawat),0) AS total FROM rawat_inap_dr WHERE no_rawat = ?"); + $stmt->execute([$noRawat]); + $tindakan = (float) ($stmt->fetchColumn() ?: 0); + $stmt = $pdo->prepare("SELECT COALESCE(SUM(biaya_rawat),0) AS total FROM rawat_inap_pr WHERE no_rawat = ?"); + $stmt->execute([$noRawat]); + $tindakan += (float) ($stmt->fetchColumn() ?: 0); + $stmt = $pdo->prepare("SELECT COALESCE(SUM(biaya_rawat),0) AS total FROM rawat_inap_drpr WHERE no_rawat = ?"); + $stmt->execute([$noRawat]); + $tindakan += (float) ($stmt->fetchColumn() ?: 0); + + $stmt = $pdo->prepare("SELECT COALESCE(SUM(total + embalase + tuslah),0) AS total FROM detail_pemberian_obat WHERE no_rawat = ? AND status = ?"); + $stmt->execute([$noRawat, $status]); + $obat = (float) ($stmt->fetchColumn() ?: 0); + + $stmt = $pdo->prepare("SELECT COALESCE(SUM(biaya),0) AS total FROM periksa_lab WHERE no_rawat = ? AND status = ?"); + $stmt->execute([$noRawat, $status]); + $lab = (float) ($stmt->fetchColumn() ?: 0); + + $stmt = $pdo->prepare("SELECT COALESCE(SUM(biaya),0) AS total FROM periksa_radiologi WHERE no_rawat = ? AND status = ?"); + $stmt->execute([$noRawat, $status]); + $rad = (float) ($stmt->fetchColumn() ?: 0); + + $stmt = $pdo->prepare("SELECT COALESCE(SUM( + biayaoperator1+biayaoperator2+biayaoperator3+ + biayaasisten_operator1+biayaasisten_operator2+ + biayadokter_anak+biayaperawaat_resusitas+ + biayadokter_anestesi+biayaasisten_anestesi+ + biayabidan+biayaperawat_luar + ),0) AS total FROM operasi WHERE no_rawat = ? AND status = ?"); + $stmt->execute([$noRawat, $status]); + $operasi = (float) ($stmt->fetchColumn() ?: 0); + + $stmt = $pdo->prepare("SELECT COALESCE(SUM(hargasatuan * jumlah),0) AS total FROM beri_obat_operasi WHERE no_rawat = ?"); + $stmt->execute([$noRawat]); + $operasiObat = (float) ($stmt->fetchColumn() ?: 0); + + $stmt = $pdo->prepare("SELECT COALESCE(SUM(total),0) AS total FROM resep_pulang WHERE no_rawat = ?"); + $stmt->execute([$noRawat]); + $obatPulang = (float) ($stmt->fetchColumn() ?: 0); + + $stmt = $pdo->prepare("SELECT COALESCE(SUM(besar_biaya),0) AS total FROM tambahan_biaya WHERE no_rawat = ?"); + $stmt->execute([$noRawat]); + $tambahan = (float) ($stmt->fetchColumn() ?: 0); + + return [ + 'ADMIN' => $kamar, + 'TINDAKAN' => $tindakan, + 'OBAT' => $obat, + 'LAB' => $lab, + 'RAD' => $rad, + 'OPERASI' => ($operasi + $operasiObat), + 'TAMBAHAN' => ($obatPulang + $tambahan) + ]; + } catch (\Exception $e) { + return []; + } + } + + protected function getSplitBillSummaryForLocking($noRawat, $status = 'Ranap') + { + try { + if (!$this->isBillingParsialEnabled()) { + return null; + } + $totals = $this->calculateSplitBillGroupTotals($noRawat, $status); + if (!$totals) { + return null; + } + return $this->buildSplitBillSummary($noRawat, $totals); + } catch (\Exception $e) { + return null; + } + } + + protected function updateStatusBayarFromSplitSummary($noRawat, array $summary) + { + $totalSisa = (float) ($summary['total_sisa'] ?? 0); + $totalTagihan = (float) ($summary['total_tagihan'] ?? 0); + $statusBayar = ($totalTagihan > 0 && $totalSisa <= 0) ? 'Sudah Bayar' : 'Belum Bayar'; + try { + $this->db('reg_periksa')->where('no_rawat', $noRawat)->save(['status_bayar' => $statusBayar]); + } catch (\Exception $e) { + } + } + + public function apiBilling($no_rawat) + { + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'kasir_rawat_inap')) { + echo json_encode(['status' => 'error', 'message' => 'You do not have permission to access this resource']); + exit; + } + $no_rawat = revertNorawat($no_rawat); + $all = isset($_GET['all']) && $_GET['all'] == 'true'; + + $query = $this->db('mlite_billing') + ->where('no_rawat', $no_rawat) + ->like('kd_billing', 'RI%'); + + if (isset($_GET['tgl_awal']) && isset($_GET['tgl_akhir'])) { + $query->where('tgl_billing', '>=', $_GET['tgl_awal']) + ->where('tgl_billing', '<=', $_GET['tgl_akhir']); + } + + if ($all) { + $billing = $query + ->desc('tgl_billing') + ->desc('jam_billing') + ->toArray(); + } else { + $billing = $query + ->desc('tgl_billing') + ->desc('jam_billing') + ->oneArray(); + } + + header('Content-Type: application/json'); + echo json_encode([ + 'status' => 'success', + 'data' => $billing + ], JSON_PRETTY_PRINT); + exit; + } + + public function apiBillingList() + { + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'kasir_rawat_inap')) { + echo json_encode(['status' => 'error', 'message' => 'You do not have permission to access this resource']); + exit; + } + + $page = $_GET['page'] ?? 1; + $per_page = $_GET['per_page'] ?? 10; + $offset = ($page - 1) * $per_page; + $search = $_GET['s'] ?? ''; + $tgl_awal = $_GET['tgl_awal'] ?? date('Y-m-d'); + $tgl_akhir = $_GET['tgl_akhir'] ?? date('Y-m-d'); + + $query = $this->db('mlite_billing') + ->join('reg_periksa', 'reg_periksa.no_rawat = mlite_billing.no_rawat') + ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') + ->join('dokter', 'dokter.kd_dokter = reg_periksa.kd_dokter') + ->join('poliklinik', 'poliklinik.kd_poli = reg_periksa.kd_poli') + ->join('penjab', 'penjab.kd_pj = reg_periksa.kd_pj') + ->where('mlite_billing.tgl_billing', '>=', $tgl_awal) + ->where('mlite_billing.tgl_billing', '<=', $tgl_akhir) + ->like('mlite_billing.kd_billing', 'RI%'); + + if ($search) { + $query->where(function($q) use ($search) { + $q->where('reg_periksa.no_rawat', 'LIKE', "%$search%") + ->orWhere('pasien.nm_pasien', 'LIKE', "%$search%") + ->orWhere('pasien.no_rkm_medis', 'LIKE', "%$search%"); + }); + } + + $total = $query->count(); + $data = $query->select('mlite_billing.*') + ->select('reg_periksa.no_rkm_medis') + ->select('reg_periksa.status_bayar') + ->select('pasien.nm_pasien') + ->select('dokter.nm_dokter') + ->select('poliklinik.nm_poli') + ->select('penjab.png_jawab') + ->offset($offset) + ->limit($per_page) + ->desc('mlite_billing.tgl_billing') + ->desc('mlite_billing.jam_billing') + ->toArray(); + + foreach ($data as &$row) { + $row['total_tagihan'] = $row['jumlah_harus_bayar']; + + // Get Room Info if available + $kamar = $this->db('kamar_inap') + ->join('kamar', 'kamar.kd_kamar = kamar_inap.kd_kamar') + ->join('bangsal', 'bangsal.kd_bangsal = kamar.kd_bangsal') + ->where('no_rawat', $row['no_rawat']) + ->desc('tgl_masuk') + ->limit(1) + ->oneArray(); + + $row['nm_bangsal'] = $kamar['nm_bangsal'] ?? '-'; + $row['kd_kamar'] = $kamar['kd_kamar'] ?? '-'; + } + + header('Content-Type: application/json'); + echo json_encode([ + 'status' => 'success', + 'data' => htmlspecialchars_array($data), + 'total' => $total, + 'page' => $page, + 'per_page' => $per_page + ]); + exit; + } + + public function apiBillingDetail($no_rawat) + { + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'kasir_rawat_inap')) { + echo json_encode(['status' => 'error', 'message' => 'You do not have permission to access this resource']); + exit; + } + $no_rawat = revertNorawat($no_rawat); + $billingControl = $this->getBillingClosingState($no_rawat); + + // Basic Info + $reg_periksa = $this->db('reg_periksa') + ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') + ->where('reg_periksa.no_rawat', $no_rawat) + ->oneArray(); + + if (!$reg_periksa) { + echo json_encode(['status' => 'error', 'message' => 'Data not found']); + exit; + } + + $kamar_inap = $this->db('kamar_inap') + ->join('kamar', 'kamar.kd_kamar = kamar_inap.kd_kamar') + ->join('bangsal', 'bangsal.kd_bangsal = kamar.kd_bangsal') + ->where('no_rawat', $no_rawat) + ->desc('tgl_masuk') + ->limit(1) + ->oneArray(); + + $details = []; + $total_biaya = 0; + + // 1. Registrasi (Usually for Ranap, is there registration fee? Maybe just Room charge) + // Check if there is a 'registrasi' component or if it's covered by Kamar + + // 2. Kamar (Room Charge) + if ($kamar_inap) { + // Calculate days + $masuk = new \DateTime($kamar_inap['tgl_masuk'] . ' ' . $kamar_inap['jam_masuk']); + $keluar = $kamar_inap['tgl_keluar'] == '0000-00-00' ? new \DateTime() : new \DateTime($kamar_inap['tgl_keluar'] . ' ' . $kamar_inap['jam_keluar']); + $interval = $masuk->diff($keluar); + $days = $interval->days; + if ($days == 0) $days = 1; // Minimum 1 day + + $biaya_kamar = $kamar_inap['trf_kamar']; + $total_kamar = $biaya_kamar * $days; + + $details[] = [ + 'kategori' => 'Kamar', + 'nama' => $kamar_inap['nm_bangsal'] . ' (' . $days . ' hari)', + 'biaya' => $biaya_kamar, + 'jumlah' => $days, + 'subtotal' => $total_kamar + ]; + $total_biaya += $total_kamar; + } + + // 3. Tindakan Dokter + $tindakan_dr = $this->db('rawat_inap_dr') + ->join('jns_perawatan_inap', 'jns_perawatan_inap.kd_jenis_prw = rawat_inap_dr.kd_jenis_prw') + ->where('no_rawat', $no_rawat)->toArray(); + foreach ($tindakan_dr as $t) { + $details[] = [ + 'kategori' => 'Tindakan Dokter', + 'nama' => $t['nm_perawatan'], + 'biaya' => $t['biaya_rawat'], + 'jumlah' => 1, + 'subtotal' => $t['biaya_rawat'] + ]; + $total_biaya += $t['biaya_rawat']; + } + + // 4. Tindakan Perawat + $tindakan_pr = $this->db('rawat_inap_pr') + ->join('jns_perawatan_inap', 'jns_perawatan_inap.kd_jenis_prw = rawat_inap_pr.kd_jenis_prw') + ->where('no_rawat', $no_rawat)->toArray(); + foreach ($tindakan_pr as $t) { + $details[] = [ + 'kategori' => 'Tindakan Perawat', + 'nama' => $t['nm_perawatan'], + 'biaya' => $t['biaya_rawat'], + 'jumlah' => 1, + 'subtotal' => $t['biaya_rawat'] + ]; + $total_biaya += $t['biaya_rawat']; + } + + // 5. Tindakan Dokter & Perawat + $tindakan_drpr = $this->db('rawat_inap_drpr') + ->join('jns_perawatan_inap', 'jns_perawatan_inap.kd_jenis_prw = rawat_inap_drpr.kd_jenis_prw') + ->where('no_rawat', $no_rawat)->toArray(); + foreach ($tindakan_drpr as $t) { + $details[] = [ + 'kategori' => 'Tindakan Dokter & Perawat', + 'nama' => $t['nm_perawatan'], + 'biaya' => $t['biaya_rawat'], + 'jumlah' => 1, + 'subtotal' => $t['biaya_rawat'] + ]; + $total_biaya += $t['biaya_rawat']; + } + + // 6. Obat & BHP + $obat = $this->db('detail_pemberian_obat') + ->join('databarang', 'databarang.kode_brng = detail_pemberian_obat.kode_brng') + ->where('no_rawat', $no_rawat) + ->where('detail_pemberian_obat.status', 'Ranap') + ->toArray(); + + foreach ($obat as $o) { + $details[] = [ + 'kategori' => 'Obat & BHP', + 'nama' => $o['nama_brng'], + 'biaya' => $o['biaya_obat'], + 'jumlah' => $o['jml'], + 'subtotal' => $o['total'] + $o['embalase'] + $o['tuslah'], + 'kode_brng' => $o['kode_brng'], + 'tgl_peresepan' => $o['tgl_perawatan'], + 'jam_peresepan' => $o['jam'], + 'kd_bangsal' => $o['kd_bangsal'], + 'type' => 'obat' + ]; + $total_biaya += ($o['total'] + $o['embalase'] + $o['tuslah']); + } + + // 7. Laboratorium + $lab = $this->db('periksa_lab') + ->join('jns_perawatan_lab', 'jns_perawatan_lab.kd_jenis_prw = periksa_lab.kd_jenis_prw') + ->where('no_rawat', $no_rawat) + ->where('periksa_lab.status', 'Ranap') + ->toArray(); + foreach ($lab as $l) { + $details[] = [ + 'kategori' => 'Laboratorium', + 'nama' => $l['nm_perawatan'], + 'biaya' => $l['biaya'], + 'jumlah' => 1, + 'subtotal' => $l['biaya'] + ]; + $total_biaya += $l['biaya']; + } + + // 8. Radiologi + $rad = $this->db('periksa_radiologi') + ->join('jns_perawatan_radiologi', 'jns_perawatan_radiologi.kd_jenis_prw = periksa_radiologi.kd_jenis_prw') + ->where('no_rawat', $no_rawat) + ->where('periksa_radiologi.status', 'Ranap') + ->toArray(); + foreach ($rad as $r) { + $details[] = [ + 'kategori' => 'Radiologi', + 'nama' => $r['nm_perawatan'], + 'biaya' => $r['biaya'], + 'jumlah' => 1, + 'subtotal' => $r['biaya'] + ]; + $total_biaya += $r['biaya']; + } + + // 9. Tambahan Biaya + $tambahan = $this->db('tambahan_biaya')->where('no_rawat', $no_rawat)->toArray(); + foreach ($tambahan as $t) { + $details[] = [ + 'kategori' => 'Tambahan', + 'nama' => $t['nama_biaya'], + 'biaya' => $t['besar_biaya'], + 'jumlah' => 1, + 'subtotal' => $t['besar_biaya'] + ]; + $total_biaya += $t['besar_biaya']; + } + + // 10. Obat Pulang + $resep_pulang = $this->db('resep_pulang') + ->join('databarang', 'databarang.kode_brng = resep_pulang.kode_brng') + ->where('resep_pulang.no_rawat', $no_rawat) + ->toArray(); + foreach ($resep_pulang as $r) { + $details[] = [ + 'kategori' => 'Obat Pulang', + 'nama' => $r['nama_brng'], + 'biaya' => $r['harga'], + 'jumlah' => $r['jml_barang'], + 'subtotal' => $r['total'], + 'kode_brng' => $r['kode_brng'], + 'tanggal' => $r['tanggal'], + 'jam' => $r['jam'], + 'type' => 'obat_pulang' + ]; + $total_biaya += $r['total']; + } + + header('Content-Type: application/json'); + echo json_encode([ + 'status' => 'success', + 'data' => [ + 'registrasi' => $reg_periksa, + 'kamar_inap' => $kamar_inap, + 'details' => $details, + 'total' => $total_biaya, + 'billing_control' => $billingControl + ] + ], JSON_PRETTY_PRINT); + exit; + } + + public function apiHapusItem() + { + try { + $payload = json_decode(file_get_contents('php://input'), true); + $billingControl = $this->getBillingClosingState($payload['no_rawat'] ?? ''); + if ($billingControl['edit_locked']) { + $this->respondBillingLock($billingControl, true); + } + + $type = $payload['type'] ?? ''; + + if ($type === 'obat') { + $payload['jml'] = $payload['jml'] ?? $payload['jumlah'] ?? 0; + $kd_bangsal = $payload['kd_bangsal'] ?? $this->settings->get('farmasi.deporanap'); + $get_gudangbarang = $this->db('gudangbarang')->where('kode_brng', $payload['kode_brng'])->where('kd_bangsal', $kd_bangsal)->oneArray(); + + $this->db('gudangbarang') + ->where('kode_brng', $payload['kode_brng']) + ->where('kd_bangsal', $kd_bangsal) + ->update([ + 'stok' => $get_gudangbarang['stok'] + $payload['jml'] + ]); + + $this->db('riwayat_barang_medis') + ->save([ + 'kode_brng' => $payload['kode_brng'], + 'stok_awal' => $get_gudangbarang['stok'], + 'masuk' => $payload['jml'], + 'keluar' => '0', + 'stok_akhir' => $get_gudangbarang['stok'] + $payload['jml'], + 'posisi' => 'Pemberian Obat', + 'tanggal' => $payload['tgl_peresepan'], + 'jam' => $payload['jam_peresepan'], + 'petugas' => $this->core->getUserInfo('fullname', null, true), + 'kd_bangsal' => $kd_bangsal, + 'status' => 'Hapus', + 'no_batch' => $get_gudangbarang['no_batch'], + 'no_faktur' => $get_gudangbarang['no_faktur'], + 'keterangan' => $payload['no_rawat'] . ' ' . $this->core->getRegPeriksaInfo('no_rkm_medis', $payload['no_rawat']) . ' ' . $this->core->getPasienInfo('nm_pasien', $this->core->getRegPeriksaInfo('no_rkm_medis', $payload['no_rawat'])) + ]); + + $this->db('detail_pemberian_obat') + ->where('tgl_perawatan', $payload['tgl_peresepan']) + ->where('jam', $payload['jam_peresepan']) + ->where('no_rawat', $payload['no_rawat']) + ->where('kode_brng', $payload['kode_brng']) + ->where('jml', $payload['jml']) + ->where('status', 'Ranap') + ->where('kd_bangsal', $kd_bangsal) + ->delete(); + } + + echo json_encode(['status' => 'success']); + + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); + } + exit; + } + public function anyManage() { $tgl_masuk = ''; @@ -38,7 +730,7 @@ public function anyManage() } $cek_vclaim = $this->db('mlite_modules')->where('dir', 'vclaim')->oneArray(); $this->_Display($tgl_masuk, $tgl_masuk_akhir, $status_pulang, $status_periksa); - return $this->draw('manage.html', ['rawat_inap' => $this->assign, 'cek_vclaim' => $cek_vclaim]); + return $this->draw('manage.html', ['rawat_inap' => htmlspecialchars_array($this->assign), 'cek_vclaim' => htmlspecialchars_array($cek_vclaim)]); } public function anyDisplay() @@ -62,7 +754,7 @@ public function anyDisplay() } $cek_vclaim = $this->db('mlite_modules')->where('dir', 'vclaim')->oneArray(); $this->_Display($tgl_masuk, $tgl_masuk_akhir, $status_pulang, $status_periksa); - echo $this->draw('display.html', ['rawat_inap' => $this->assign, 'cek_vclaim' => $cek_vclaim]); + echo $this->draw('display.html', ['rawat_inap' => htmlspecialchars_array($this->assign), 'cek_vclaim' => htmlspecialchars_array($cek_vclaim)]); exit(); } @@ -147,8 +839,99 @@ public function _Display($tgl_masuk='', $tgl_masuk_akhir='', $status_pulang='', } + public function anyShift() + { + $this->_addHeaderFiles(); + $user_id = $this->core->getUserInfo('id'); + $open_shift = $this->db('mlite_kasir_shift')->where('user_id', $user_id)->isNull('waktu_tutup')->desc('id_shift')->oneArray(); + return $this->draw('shift.html', ['open_shift' => $open_shift]); + } + + public function postOpenKasir() + { + $user_id = $this->core->getUserInfo('id'); + $cek = $this->db('mlite_kasir_shift')->where('user_id', $user_id)->isNull('waktu_tutup')->oneArray(); + if ($cek) { + $this->notify('danger', 'Shift kasir masih terbuka'); + redirect(url([ADMIN, 'kasir_rawat_inap', 'shift'])); + } + $kas_awal = floatval($_POST['kas_awal'] ?? 0); + $this->db('mlite_kasir_shift')->save([ + 'user_id' => $user_id, + 'waktu_buka' => date('Y-m-d H:i:s'), + 'waktu_tutup' => null, + 'kas_awal' => $kas_awal, + 'keterangan' => $_POST['keterangan'] ?? '' + ]); + $this->notify('success', 'Shift kasir dibuka'); + redirect(url([ADMIN, 'kasir_rawat_inap', 'shift'])); + } + + public function postCloseKasir() + { + $user_id = $this->core->getUserInfo('id'); + $shift = $this->db('mlite_kasir_shift')->where('user_id', $user_id)->isNull('waktu_tutup')->desc('id_shift')->oneArray(); + if (!$shift) { + $this->notify('danger', 'Tidak ada shift terbuka'); + redirect(url([ADMIN, 'kasir_rawat_inap', 'shift'])); + } + $kas_akhir = floatval($_POST['kas_akhir'] ?? 0); + $pdo = $this->db()->pdo(); + $stmt = $pdo->prepare("SELECT IFNULL(SUM(jumlah_harus_bayar),0) as total FROM mlite_billing WHERE id_user = ? AND CONCAT(tgl_billing,' ',jam_billing) BETWEEN ? AND ?"); + $stmt->execute([$user_id, $shift['waktu_buka'], date('Y-m-d H:i:s')]); + $row = $stmt->fetch(); + $total = floatval($row[0] ?? 0); + $selisih = $kas_akhir - ($shift['kas_awal'] + $total); + $this->db('mlite_kasir_shift')->where('id_shift', $shift['id_shift'])->save([ + 'waktu_tutup' => date('Y-m-d H:i:s'), + 'kas_akhir' => $kas_akhir, + 'total_transaksi' => $total, + 'selisih' => $selisih + ]); + $this->notify('success', 'Shift kasir ditutup'); + redirect(url([ADMIN, 'kasir_rawat_inap', 'shift'])); + } + + public function anyReport() + { + $this->_addHeaderFiles(); + $awal = isset($_GET['awal']) ? $_GET['awal'] : date('Y-m-d').' 00:00:00'; + $akhir = isset($_GET['akhir']) ? $_GET['akhir'] : date('Y-m-d').' 23:59:59'; + $pdo = $this->db()->pdo(); + $stmt = $pdo->prepare("SELECT b.id_user, COALESCE(p.nama, u.fullname) AS nama_kasir, COUNT(*) transaksi, IFNULL(SUM(b.jumlah_harus_bayar),0) total, MIN(CONCAT(b.tgl_billing,' ',b.jam_billing)) mulai, MAX(CONCAT(b.tgl_billing,' ',b.jam_billing)) selesai FROM mlite_billing b INNER JOIN ( SELECT no_rawat, MAX(CONCAT(tgl_billing,' ',jam_billing)) AS max_waktu FROM mlite_billing WHERE kd_billing LIKE 'RI%' AND CONCAT(tgl_billing,' ',jam_billing) BETWEEN ? AND ? GROUP BY no_rawat ) latest ON latest.no_rawat=b.no_rawat AND CONCAT(b.tgl_billing,' ',b.jam_billing)=latest.max_waktu LEFT JOIN mlite_users u ON u.id=b.id_user LEFT JOIN pegawai p ON p.nik=u.username WHERE b.kd_billing LIKE 'RI%' GROUP BY b.id_user, nama_kasir"); + $stmt->execute([$awal, $akhir]); + $rows = $stmt->fetchAll(); + + $detailStmt = $pdo->prepare("SELECT b.id_user, COALESCE(p.nama, u.fullname) AS nama_kasir, b.kd_billing, b.no_rawat, b.jumlah_harus_bayar, CONCAT(b.tgl_billing,' ',b.jam_billing) AS waktu, b.keterangan FROM mlite_billing b INNER JOIN ( SELECT no_rawat, MAX(CONCAT(tgl_billing,' ',jam_billing)) AS max_waktu FROM mlite_billing WHERE kd_billing LIKE 'RI%' AND CONCAT(tgl_billing,' ',jam_billing) BETWEEN ? AND ? GROUP BY no_rawat ) latest ON latest.no_rawat=b.no_rawat AND CONCAT(b.tgl_billing,' ',b.jam_billing)=latest.max_waktu LEFT JOIN mlite_users u ON u.id=b.id_user LEFT JOIN pegawai p ON p.nik=u.username WHERE b.kd_billing LIKE 'RI%' ORDER BY waktu ASC"); + $detailStmt->execute([$awal, $akhir]); + $details = $detailStmt->fetchAll(); + + return $this->draw('report.html', ['awal' => $awal, 'akhir' => $akhir, 'rows' => $rows, 'details' => $details]); + } + + public function anyReportExport() + { + $awal = isset($_GET['awal']) ? $_GET['awal'] : date('Y-m-d').' 00:00:00'; + $akhir = isset($_GET['akhir']) ? $_GET['akhir'] : date('Y-m-d').' 23:59:59'; + header('Content-Type: text/csv'); + header('Content-Disposition: attachment; filename="laporan_kasir_inap.csv"'); + $pdo = $this->db()->pdo(); + $stmt = $pdo->prepare("SELECT b.id_user, COALESCE(p.nama, u.fullname) AS nama_kasir, b.kd_billing, b.jumlah_harus_bayar, CONCAT(b.tgl_billing,' ',b.jam_billing) waktu FROM mlite_billing b INNER JOIN ( SELECT no_rawat, MAX(CONCAT(tgl_billing,' ',jam_billing)) AS max_waktu FROM mlite_billing WHERE kd_billing LIKE 'RI%' AND CONCAT(tgl_billing,' ',jam_billing) BETWEEN ? AND ? GROUP BY no_rawat ) latest ON latest.no_rawat=b.no_rawat AND CONCAT(b.tgl_billing,' ',b.jam_billing)=latest.max_waktu LEFT JOIN mlite_users u ON u.id=b.id_user LEFT JOIN pegawai p ON p.nik=u.username WHERE b.kd_billing LIKE 'RI%' ORDER BY waktu ASC"); + $stmt->execute([$awal, $akhir]); + echo "id_user,nama_kasir,kd_billing,jumlah_harus_bayar,waktu\n"; + while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) { + echo $row['id_user'].",".($row['nama_kasir'] ?? '').",".$row['kd_billing'].",".$row['jumlah_harus_bayar'].",".$row['waktu']."\n"; + } + exit(); + } + public function postSaveDetail() { + $billingControl = $this->getBillingClosingState($_POST['no_rawat'] ?? ''); + if ($billingControl['edit_locked']) { + $this->respondBillingLock($billingControl, true); + } + if($_POST['kat'] == 'tindakan') { $jns_perawatan = $this->db('jns_perawatan_inap')->where('kd_jenis_prw', $_POST['kd_jenis_prw'])->oneArray(); if($_POST['provider'] == 'rawat_inap_dr') { @@ -209,6 +992,7 @@ public function postSaveDetail() if($_POST['kat'] == 'obat') { $get_gudangbarang = $this->db('gudangbarang')->where('kode_brng', $_POST['kd_jenis_prw'])->where('kd_bangsal', $this->settings->get('farmasi.deporanap'))->oneArray(); + $get_databarang = $this->db('databarang')->where('kode_brng', $_POST['kd_jenis_prw'])->oneArray(); $this->db('gudangbarang') ->where('kode_brng', $_POST['kd_jenis_prw']) @@ -241,7 +1025,7 @@ public function postSaveDetail() 'jam' => $_POST['jam_rawat'], 'no_rawat' => $_POST['no_rawat'], 'kode_brng' => $_POST['kd_jenis_prw'], - 'h_beli' => $_POST['biaya'], + 'h_beli' => $get_databarang['h_beli'], 'biaya_obat' => $_POST['biaya'], 'jml' => $_POST['jml'], 'embalase' => '0', @@ -318,11 +1102,18 @@ public function postSaveDetail() ]); } + header('Content-Type: application/json'); + echo json_encode(['status' => 'success']); exit(); } public function postHapusDetail() { + $billingControl = $this->getBillingClosingState($_POST['no_rawat'] ?? ''); + if ($billingControl['edit_locked']) { + $this->respondBillingLock($billingControl, true); + } + if($_POST['provider'] == 'rawat_inap_dr') { $this->db('rawat_inap_dr') ->where('no_rawat', $_POST['no_rawat']) @@ -347,11 +1138,18 @@ public function postHapusDetail() ->where('jam_rawat', $_POST['jam_rawat']) ->delete(); } + header('Content-Type: application/json'); + echo json_encode(['status' => 'success']); exit(); } public function postHapusLaboratorium() { + $billingControl = $this->getBillingClosingState($_POST['no_rawat'] ?? ''); + if ($billingControl['edit_locked']) { + $this->respondBillingLock($billingControl, true); + } + $this->db('periksa_lab') ->where('no_rawat', $_POST['no_rawat']) ->where('kd_jenis_prw', $_POST['kd_jenis_prw']) @@ -359,11 +1157,18 @@ public function postHapusLaboratorium() ->where('jam', $_POST['jam_rawat']) ->where('status', 'Ranap') ->delete(); + header('Content-Type: application/json'); + echo json_encode(['status' => 'success']); exit(); } public function postHapusRadiologi() { + $billingControl = $this->getBillingClosingState($_POST['no_rawat'] ?? ''); + if ($billingControl['edit_locked']) { + $this->respondBillingLock($billingControl, true); + } + $this->db('periksa_radiologi') ->where('no_rawat', $_POST['no_rawat']) ->where('kd_jenis_prw', $_POST['kd_jenis_prw']) @@ -371,20 +1176,34 @@ public function postHapusRadiologi() ->where('jam', $_POST['jam_rawat']) ->where('status', 'Ranap') ->delete(); + header('Content-Type: application/json'); + echo json_encode(['status' => 'success']); exit(); } public function postHapusTambahanBiaya() { + $billingControl = $this->getBillingClosingState($_POST['no_rawat'] ?? ''); + if ($billingControl['edit_locked']) { + $this->respondBillingLock($billingControl, true); + } + $this->db('tambahan_biaya') ->where('no_rawat', $_POST['no_rawat']) ->where('nama_biaya', $_POST['nama_biaya']) ->delete(); + header('Content-Type: application/json'); + echo json_encode(['status' => 'success']); exit(); } public function postHapusObat() { + $billingControl = $this->getBillingClosingState($_POST['no_rawat'] ?? ''); + if ($billingControl['edit_locked']) { + $this->respondBillingLock($billingControl, true); + } + $get_gudangbarang = $this->db('gudangbarang')->where('kode_brng', $_POST['kode_brng'])->where('kd_bangsal', $this->settings->get('farmasi.deporanap'))->oneArray(); $this->db('gudangbarang') @@ -422,11 +1241,14 @@ public function postHapusObat() ->where('kd_bangsal', $this->settings->get('farmasi.deporanap')) ->delete(); + header('Content-Type: application/json'); + echo json_encode(['status' => 'success']); exit(); } public function anyRincian() { + $billingControl = $this->getBillingClosingState($_POST['no_rawat'] ?? ''); $rows_bangsal = $this->db('bangsal') ->join('kamar', 'kamar.kd_bangsal=bangsal.kd_bangsal') @@ -490,22 +1312,137 @@ public function anyRincian() $tindakan[] = $row; } - $rows_pemberian_obat = $this->db('detail_pemberian_obat') - ->where('no_rawat', $_POST['no_rawat']) - ->where('detail_pemberian_obat.status', 'Ranap') - ->toArray(); + // $rows_pemberian_obat = $this->db('detail_pemberian_obat') + // ->where('no_rawat', $_POST['no_rawat']) + // ->where('detail_pemberian_obat.status', 'Ranap') + // ->toArray(); + + // $detail_pemberian_obat = []; + // $jumlah_total_obat = 0; + // $jumlah_total_embalase = 0; + // $jumlah_total_tuslah = 0; + // $no_obat = 1; + // foreach ($rows_pemberian_obat as $row) { + // $row['nomor'] = $no_obat++; + // $databarang = $this->db('databarang')->where('kode_brng', $row['kode_brng'])->oneArray(); + // $row['nama_brng'] = $databarang['nama_brng']; + // $jumlah_total_obat += floatval($row['total']); + // $jumlah_total_embalase += floatval($row['embalase']); + // $jumlah_total_tuslah += floatval($row['tuslah']); + // $detail_pemberian_obat[] = $row; + // } + + // Collect racikan timestamps to exclude from detail_pemberian_obat + $exclude_jams = []; + $racikan_jams = $this->db('detail_obat_racikan')->where('no_rawat', $_POST['no_rawat'])->toArray(); + foreach($racikan_jams as $rj) { + $exclude_jams[] = $rj['jam']; + } + + $query_pemberian = $this->db('detail_pemberian_obat') + ->where('detail_pemberian_obat.no_rawat', $_POST['no_rawat']) + ->where('detail_pemberian_obat.status', 'Ranap'); + + if(!empty($exclude_jams)) { + $query_pemberian->notIn('jam', $exclude_jams); + } + + $rows_pemberian_obat = $query_pemberian->toArray(); $detail_pemberian_obat = []; $jumlah_total_obat = 0; + $jumlah_total_embalase = 0; + $jumlah_total_tuslah = 0; $no_obat = 1; foreach ($rows_pemberian_obat as $row) { $row['nomor'] = $no_obat++; $databarang = $this->db('databarang')->where('kode_brng', $row['kode_brng'])->oneArray(); $row['nama_brng'] = $databarang['nama_brng']; $jumlah_total_obat += floatval($row['total']); + $jumlah_total_embalase += floatval($row['embalase']); + $jumlah_total_tuslah += floatval($row['tuslah']); $detail_pemberian_obat[] = $row; } + // Fetch detail_obat_racikan linked with riwayat_barang_medis for quantity + $rows_obat_racikan = $this->db('obat_racikan') + ->where('no_rawat', $_POST['no_rawat']) + ->toArray(); + + foreach ($rows_obat_racikan as $header) { + $ingredients_map = $this->db('detail_obat_racikan') + ->where('no_rawat', $header['no_rawat']) + ->where('no_racik', $header['no_racik']) + ->where('tgl_perawatan', $header['tgl_perawatan']) + ->where('jam', $header['jam']) + ->toArray(); + + $total_racikan = 0; + $total_embalase_racikan = 0; + $total_tuslah_racikan = 0; + $ingredient_rows = []; + + foreach ($ingredients_map as $map) { + $row = $this->db('detail_pemberian_obat') + ->join('databarang', 'databarang.kode_brng=detail_pemberian_obat.kode_brng') + ->where('detail_pemberian_obat.no_rawat', $map['no_rawat']) + ->where('detail_pemberian_obat.kode_brng', $map['kode_brng']) + ->where('detail_pemberian_obat.tgl_perawatan', $map['tgl_perawatan']) + ->where('detail_pemberian_obat.jam', $map['jam']) + ->where('detail_pemberian_obat.status', 'Ranap') + ->oneArray(); + + if ($row) { + $subtotal = $row['total']; + + $total_racikan += $subtotal; + $total_embalase_racikan += $row['embalase']; + $total_tuslah_racikan += $row['tuslah']; + + // Prepare ingredient row (hide prices) + $row['nomor'] = ''; + $row['nama_brng'] = str_repeat("\u{00A0}", 4) . ' - ' . $row['nama_brng']; + $row['total'] = 0; + $row['embalase'] = 0; + $row['tuslah'] = 0; + $row['biaya_obat'] = 0; + $row['jml'] = 0; + + $ingredient_rows[] = $row; + } + } + + $header_row = []; + $header_row['nomor'] = $no_obat++; + $header_row['nama_brng'] = ">> Racikan " . $header['no_racik'] . ": " . $header['nama_racik'] . " (" . $header['jml_dr'] . " Bungkus)"; + $header_row['jml'] = $header['jml_dr']; + + // Calculate unit price for display: total / qty + if ($header['jml_dr'] > 0) { + $header_row['biaya_obat'] = $total_racikan / $header['jml_dr']; + } else { + $header_row['biaya_obat'] = $total_racikan; + } + + $header_row['total'] = $total_racikan; + $header_row['embalase'] = $total_embalase_racikan; + $header_row['tuslah'] = $total_tuslah_racikan; + $header_row['no_rawat'] = $header['no_rawat']; + $header_row['tgl_perawatan'] = $header['tgl_perawatan']; + $header_row['jam'] = $header['jam']; + $header_row['kode_brng'] = '-'; + + $jumlah_total_obat += $total_racikan; + $jumlah_total_embalase += $total_embalase_racikan; + $jumlah_total_tuslah += $total_tuslah_racikan; + + $detail_pemberian_obat[] = $header_row; + + foreach ($ingredient_rows as $row) { + $detail_pemberian_obat[] = $row; + } + } + $rows_periksa_lab = $this->db('periksa_lab') ->join('jns_perawatan_lab', 'jns_perawatan_lab.kd_jenis_prw=periksa_lab.kd_jenis_prw') ->where('no_rawat', $_POST['no_rawat']) @@ -561,6 +1498,61 @@ public function anyRincian() $tambahan_biaya[] = $row; } + $rows_resep_pulang = $this->db('resep_pulang') + ->join('databarang', 'databarang.kode_brng=resep_pulang.kode_brng') + ->where('resep_pulang.no_rawat', $_POST['no_rawat']) + ->toArray(); + $resep_pulang = []; + $no_resep_pulang = 1; + $jumlah_total_obat_pulang = 0; + foreach ($rows_resep_pulang as $row) { + $row['nomor'] = $no_resep_pulang++; + $jumlah_total_obat_pulang += $row['total']; + $resep_pulang[] = $row; + } + + $totalTagihan = (float) $jumlah_total_bangsal + + (float) $jumlah_total + + (float) $jumlah_total_obat + + (float) $jumlah_total_embalase + + (float) $jumlah_total_tuslah + + (float) $jumlah_total_lab + + (float) $jumlah_total_radiologi + + (float) $jumlah_total_operasi + + (float) $jumlah_total_obat_operasi + + (float) $jumlah_total_obat_pulang + + (float) $jumlah_total_tambahan; + + $billingTerakhir = $this->db('mlite_billing') + ->where('no_rawat', $_POST['no_rawat']) + ->like('kd_billing', 'RI%') + ->desc('id_billing') + ->oneArray(); + + $potonganAktif = (float) ($billingTerakhir['potongan'] ?? 0); + $jumlahHarusBayarAktif = isset($billingTerakhir['jumlah_harus_bayar']) + ? (float) $billingTerakhir['jumlah_harus_bayar'] + : max(0, $totalTagihan - $potonganAktif); + $jumlahBayarAktif = (float) ($billingTerakhir['jumlah_bayar'] ?? 0); + $kembalianAktif = $jumlahBayarAktif - $jumlahHarusBayarAktif; + + $billingParsialEnabled = $this->isBillingParsialEnabled(); + $splitBill = null; + $splitHistory = []; + if ($billingParsialEnabled) { + $splitTotals = [ + 'ADMIN' => (float) $jumlah_total_bangsal, + 'TINDAKAN' => (float) $jumlah_total, + 'OBAT' => (float) ($jumlah_total_obat + $jumlah_total_embalase + $jumlah_total_tuslah), + 'LAB' => (float) $jumlah_total_lab, + 'RAD' => (float) $jumlah_total_radiologi, + 'OPERASI' => (float) ($jumlah_total_operasi + $jumlah_total_obat_operasi), + 'TAMBAHAN' => (float) ($jumlah_total_obat_pulang + $jumlah_total_tambahan) + ]; + $splitBill = $this->buildSplitBillSummary($_POST['no_rawat'], $splitTotals); + $splitHistory = $this->getSplitBillHistory($_POST['no_rawat']); + } + echo $this->draw('rincian.html', [ 'rawat_inap_dr' => $rawat_inap_dr, 'rawat_inap_pr' => $rawat_inap_pr, @@ -568,18 +1560,32 @@ public function anyRincian() 'tindakan' => $tindakan, 'jumlah_total' => $jumlah_total, 'jumlah_total_obat' => $jumlah_total_obat, + 'jumlah_total_embalase' => $jumlah_total_embalase, + 'jumlah_total_tuslah' => $jumlah_total_tuslah, 'bangsal' => $bangsal, 'jumlah_total_bangsal' => $jumlah_total_bangsal, - 'detail_pemberian_obat' => $detail_pemberian_obat, + 'detail_pemberian_obat' => htmlspecialchars_array($detail_pemberian_obat), 'periksa_lab' => $periksa_lab, 'jumlah_total_lab' => $jumlah_total_lab, 'periksa_radiologi' => $periksa_radiologi, 'jumlah_total_radiologi' => $jumlah_total_radiologi, 'tambahan_biaya' => $tambahan_biaya, 'jumlah_total_tambahan' => $jumlah_total_tambahan, + 'resep_pulang' => htmlspecialchars_array($resep_pulang), + 'jumlah_total_obat_pulang' => $jumlah_total_obat_pulang, 'jumlah_total_operasi' => $jumlah_total_operasi, 'jumlah_total_obat_operasi' => $jumlah_total_obat_operasi, - 'no_rawat' => $_POST['no_rawat'] + 'total_tagihan' => $totalTagihan, + 'billing_terakhir' => htmlspecialchars_array($billingTerakhir ?? []), + 'potongan_aktif' => $potonganAktif, + 'jumlah_harus_bayar_aktif' => $jumlahHarusBayarAktif, + 'jumlah_bayar_aktif' => $jumlahBayarAktif, + 'kembalian_aktif' => $kembalianAktif > 0 ? $kembalianAktif : 0, + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'billing_control' => htmlspecialchars_array($billingControl), + 'billing_parsial_enabled' => $billingParsialEnabled ? 'true' : 'false', + 'split_bill' => $splitBill, + 'split_history' => $splitHistory ]); exit(); } @@ -588,10 +1594,10 @@ public function anyLayanan() { $layanan = $this->db('jns_perawatan_inap') ->where('status', '1') - ->like('nm_perawatan', '%'.$_POST['layanan'].'%') + ->like('nm_perawatan', '%'.htmlspecialchars($_POST['layanan'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('layanan.html', ['layanan' => $layanan]); + echo $this->draw('layanan.html', ['layanan' => htmlspecialchars_array($layanan)]); exit(); } @@ -601,17 +1607,17 @@ public function anyObat() ->join('gudangbarang', 'gudangbarang.kode_brng=databarang.kode_brng') ->where('kd_bangsal', $this->settings->get('farmasi.deporanap')) ->where('status', '1') - ->like('databarang.nama_brng', '%'.$_POST['obat'].'%') + ->like('databarang.nama_brng', '%'.htmlspecialchars($_POST['obat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('obat.html', ['obat' => $obat]); + echo $this->draw('obat.html', ['obat' => htmlspecialchars_array($obat)]); exit(); } public function anyTambahanBiaya() { $tambahan_biaya = $this->db('tambahan_biaya') - ->like('nama_biaya', '%'.$_POST['tambahan_biaya'].'%') + ->like('nama_biaya', '%'.htmlspecialchars($_POST['tambahan_biaya'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); echo $this->draw('tambahan_biaya.html', ['tambahan_biaya' => $tambahan_biaya]); @@ -622,10 +1628,10 @@ public function anyLaboratorium() { $laboratorium = $this->db('jns_perawatan_lab') ->where('status', '1') - ->like('nm_perawatan', '%'.$_POST['laboratorium'].'%') + ->like('nm_perawatan', '%'.htmlspecialchars($_POST['laboratorium'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('laboratorium.html', ['laboratorium' => $laboratorium]); + echo $this->draw('laboratorium.html', ['laboratorium' => htmlspecialchars_array($laboratorium)]); exit(); } @@ -633,10 +1639,10 @@ public function anyRadiologi() { $radiologi = $this->db('jns_perawatan_radiologi') ->where('status', '1') - ->like('nm_perawatan', '%'.$_POST['radiologi'].'%') + ->like('nm_perawatan', '%'.htmlspecialchars($_POST['radiologi'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('radiologi.html', ['radiologi' => $radiologi]); + echo $this->draw('radiologi.html', ['radiologi' => htmlspecialchars_array($radiologi)]); exit(); } @@ -650,7 +1656,7 @@ public function postAturanPakai() $output = ''; if(count($rows)){ foreach ($rows as $row) { - $output .= ''; + $output .= ''; } } echo $output; @@ -670,7 +1676,7 @@ public function postProviderList() $output = ''; if(count($rows)){ foreach ($rows as $row) { - $output .= ''; + $output .= ''; } } echo $output; @@ -690,7 +1696,7 @@ public function postProviderList2() $output = ''; if(count($rows)){ foreach ($rows as $row) { - $output .= ''; + $output .= ''; } } echo $output; @@ -700,13 +1706,111 @@ public function postProviderList2() } + public function postSplitpay() + { + if (!$this->isBillingParsialEnabled()) { + header('Content-Type: application/json'); + echo json_encode(['status' => 'error', 'message' => 'Fitur billing parsial/split bill tidak diaktifkan.']); + exit(); + } + + $billingControl = $this->getBillingClosingState($_POST['no_rawat'] ?? ''); + if (!$billingControl['exists']) { + $this->respondBillingLock($billingControl, true); + } + + if (!$this->userIsAdmin() && !($billingControl['is_exam_closed'] ?? false)) { + $this->respondBillingLock($billingControl, true); + } + + if (!$this->userIsAdmin() && ($billingControl['edit_locked'] ?? false) && ($billingControl['is_paid'] ?? false)) { + $this->respondBillingLock($billingControl, true); + } + + $noRawat = trim((string) ($_POST['no_rawat'] ?? '')); + $kelompok = strtoupper(trim((string) ($_POST['kelompok'] ?? ''))); + $metode = trim((string) ($_POST['metode'] ?? 'Tunai')); + $jumlah = (float) str_replace(',', '.', (string) ($_POST['jumlah_bayar'] ?? 0)); + + $allowed = ['ADMIN', 'TINDAKAN', 'OBAT', 'LAB', 'RAD', 'OPERASI', 'TAMBAHAN']; + if ($noRawat === '' || $kelompok === '' || !in_array($kelompok, $allowed, true) || $jumlah <= 0) { + header('Content-Type: application/json'); + echo json_encode(['status' => 'error', 'message' => 'Data pembayaran split bill tidak valid.']); + exit(); + } + + $totals = $this->calculateSplitBillGroupTotals($noRawat, 'Ranap'); + $summary = $this->buildSplitBillSummary($noRawat, $totals); + $remaining = 0; + foreach (($summary['groups'] ?? []) as $g) { + if (($g['kelompok'] ?? '') === $kelompok) { + $remaining = (float) ($g['remaining'] ?? 0); + break; + } + } + if ($remaining <= 0) { + header('Content-Type: application/json'); + echo json_encode(['status' => 'error', 'message' => 'Kelompok billing sudah lunas.']); + exit(); + } + if ($jumlah > $remaining) { + $jumlah = $remaining; + } + + try { + $pdo = $this->core->db()->pdo(); + $pdo->beginTransaction(); + + $stmt = $pdo->prepare("INSERT INTO mlite_billing_pembayaran (no_rawat, tgl_bayar, jam_bayar, metode, jumlah_bayar, id_user, keterangan) + VALUES (?, ?, ?, ?, ?, ?, ?)"); + $stmt->execute([ + $noRawat, + date('Y-m-d'), + date('H:i:s'), + $metode !== '' ? $metode : 'Tunai', + $jumlah, + (int) $this->core->getUserInfo('id'), + 'Split bill' + ]); + + $pembayaranId = (int) $pdo->lastInsertId(); + + $stmt = $pdo->prepare("INSERT INTO mlite_billing_pembayaran_detail (pembayaran_id, kelompok, jumlah_alokasi) VALUES (?, ?, ?)"); + $stmt->execute([$pembayaranId, $kelompok, $jumlah]); + + $pdo->commit(); + } catch (\Exception $e) { + try { $this->core->db()->pdo()->rollBack(); } catch (\Exception $x) {} + header('Content-Type: application/json'); + echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan pembayaran split bill.']); + exit(); + } + + $summary = $this->buildSplitBillSummary($noRawat, $this->calculateSplitBillGroupTotals($noRawat, 'Ranap')); + $this->updateStatusBayarFromSplitSummary($noRawat, $summary); + + header('Content-Type: application/json'); + echo json_encode(['status' => 'success', 'message' => 'Pembayaran split bill berhasil disimpan.']); + exit(); + } + public function postSave() { + $billingControl = $this->getBillingClosingState($_POST['no_rawat'] ?? ''); + if ($billingControl['edit_locked']) { + $this->respondBillingLock($billingControl, true); + } + $_POST['id_user'] = $this->core->getUserInfo('id'); $query = $this->db('mlite_billing')->save($_POST); if($query) { $this->db('reg_periksa')->where('no_rawat', $_POST['no_rawat'])->update(['status_bayar' => 'Sudah Bayar']); } + header('Content-Type: application/json'); + echo json_encode([ + 'status' => $query ? 'success' : 'error', + 'message' => $query ? 'Billing berhasil disimpan.' : 'Billing gagal disimpan.' + ]); exit(); } @@ -715,13 +1819,36 @@ public function anyFaktur() $settings = $this->settings('settings'); $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($settings))); $show = isset($_GET['show']) ? $_GET['show'] : ""; + $noRawat = isset($_GET['no_rawat']) ? $_GET['no_rawat'] : ($_POST['no_rawat'] ?? ''); + $billingControl = $this->getBillingClosingState($noRawat); switch($show){ default: - if($this->db('mlite_billing')->where('no_rawat', $_POST['no_rawat'])->like('kd_billing', 'RI%')->oneArray()) { - echo 'OK'; + header('Content-Type: application/json'); + if ($billingControl['print_locked']) { + echo json_encode([ + 'status' => 'error', + 'message' => $billingControl['message'] + ]); + exit(); + } + + if($billingControl['billing_exists']) { + echo json_encode([ + 'status' => 'success', + 'message' => 'OK' + ]); + } else { + echo json_encode([ + 'status' => 'error', + 'message' => 'Data faktur belum disimpan. Silahkan simpan dulu sebelum mencetak.' + ]); } break; case "besar": + if (!$billingControl['billing_exists']) { + echo 'Data faktur belum disimpan. Silahkan simpan dulu sebelum mencetak.'; + exit(); + } $result = $this->db('mlite_billing')->where('no_rawat', $_GET['no_rawat'])->like('kd_billing', 'RI%')->desc('id_billing')->oneArray(); $result_detail['kamar_inap'] = $this->db('kamar_inap') @@ -781,6 +1908,11 @@ public function anyFaktur() ->where('no_rawat', $_GET['no_rawat']) ->toArray(); + $result_detail['resep_pulang'] = $this->db('resep_pulang') + ->join('databarang', 'databarang.kode_brng=resep_pulang.kode_brng') + ->where('resep_pulang.no_rawat', $_GET['no_rawat']) + ->toArray(); + $jumlah_total_operasi = 0; $operasis = $this->db('operasi')->join('paket_operasi', 'paket_operasi.kode_paket=operasi.kode_paket')->where('no_rawat', $_GET['no_rawat'])->where('operasi.status', 'Ranap')->toArray(); $result_detail['operasi'] = []; @@ -801,64 +1933,184 @@ public function anyFaktur() $reg_periksa = $this->db('reg_periksa')->where('no_rawat', $_GET['no_rawat'])->oneArray(); $pasien = $this->db('pasien')->where('no_rkm_medis', $reg_periksa['no_rkm_medis'])->oneArray(); - $qr=QRCode::getMinimumQRCode($this->core->getUserInfo('fullname', null, true),QR_ERROR_CORRECT_LEVEL_L); - $im=$qr->createImage(4,4); - imagepng($im,BASE_DIR.'/'.ADMIN.'/tmp/qrcode.png'); + /* =============================== + * QR CODE + * =============================== */ + $qr = QRCode::getMinimumQRCode( + $this->core->getUserInfo('fullname', null, true), + QR_ERROR_CORRECT_LEVEL_L + ); + $im = $qr->createImage(4,4); + imagepng($im, BASE_DIR.'/'.ADMIN.'/tmp/qrcode.png'); imagedestroy($im); - $image = BASE_DIR."/".ADMIN."/tmp/qrcode.png"; $qrCode = url()."/".ADMIN."/tmp/qrcode.png"; + /* =============================== + * PREPARE TEMPLATE DATA + * =============================== */ + $this->tpl->set('billing_obat', $this->settings->get('settings.billing_obat')); + $this->tpl->set('wagateway', $this->settings->get('wagateway')); + $this->tpl->set('billing', $result); + // $this->tpl->set('total_billing_obat', $total_detail_pemberian_obat); + $this->tpl->set('billing_besar_detail', $result_detail); + $this->tpl->set('pasien', $pasien); + $this->tpl->set('qrCode', $qrCode); + $this->tpl->set('fullname', $this->core->getUserInfo('fullname', null, true)); + + /* =============================== + * RENDER HTML SEKALI + * =============================== */ + $html = $this->draw('billing.besar.html'); + + /* =============================== + * GENERATE PDF + * =============================== */ if (file_exists(UPLOADS.'/invoices/'.$result['kd_billing'].'.pdf')) { - unlink(UPLOADS.'/invoices/'.$result['kd_billing'].'.pdf'); + unlink(UPLOADS.'/invoices/'.$result['kd_billing'].'.pdf'); } $mpdf = new \Mpdf\Mpdf([ - 'mode' => 'utf-8', - 'format' => 'A4', - 'orientation' => 'P' + 'mode' => 'utf-8', + 'format' => 'A4', + 'orientation' => 'P' ]); - - $css = ' - - '; - - $url = url('admin/tmp/billing.besar.html'); - $html = file_get_contents($url); - $mpdf->WriteHTML($this->core->setPrintCss(),\Mpdf\HTMLParserMode::HEADER_CSS); - $mpdf->WriteHTML($css); + + $mpdf->WriteHTML( + $this->core->setPrintCss(), + \Mpdf\HTMLParserMode::HEADER_CSS + ); + $mpdf->WriteHTML($html); - - // Output a PDF file save to server - $mpdf->Output(UPLOADS.'/invoices/'.$result['kd_billing'].'.pdf','F'); - - echo $this->draw('billing.besar.html', ['wagateway' => $this->settings->get('wagateway'), 'billing' => $result, 'billing_besar_detail' => $result_detail, 'jumlah_total_operasi' => $jumlah_total_operasi, 'pasien' => $pasien, 'qrCode' => $qrCode, 'fullname' => $this->core->getUserInfo('fullname', null, true)]); + + $mpdf->Output( + UPLOADS.'/invoices/'.$result['kd_billing'].'.pdf', + 'F' + ); + + /* =============================== + * OUTPUT HTML (PREVIEW) + * =============================== */ + echo $html; break; case "kecil": + if (!$billingControl['billing_exists']) { + echo 'Data faktur belum disimpan. Silahkan simpan dulu sebelum mencetak.'; + exit(); + } $result = $this->db('mlite_billing')->where('no_rawat', $_GET['no_rawat'])->like('kd_billing', 'RI%')->desc('id_billing')->oneArray(); $reg_periksa = $this->db('reg_periksa')->where('no_rawat', $_GET['no_rawat'])->oneArray(); $pasien = $this->db('pasien')->where('no_rkm_medis', $reg_periksa['no_rkm_medis'])->oneArray(); - echo $this->draw('billing.kecil.html', ['billing' => $result, 'pasien' => $pasien, 'fullname' => $this->core->getUserInfo('fullname', null, true)]); + echo $this->draw('billing.kecil.html', ['billing' => htmlspecialchars_array($result), 'pasien' => $pasien, 'fullname' => $this->core->getUserInfo('fullname', null, true)]); break; } exit(); } + public function anyKuitansiSplit() + { + $settings = $this->settings('settings'); + $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($settings))); + + $pembayaranId = (int) ($_GET['pembayaran_id'] ?? 0); + if ($pembayaranId <= 0) { + echo 'ID pembayaran tidak valid.'; + exit(); + } + + $pdo = $this->core->db()->pdo(); + + try { + $stmt = $pdo->prepare("SELECT h.id, h.no_rawat, h.tgl_bayar, h.jam_bayar, h.metode, h.jumlah_bayar, h.id_user, h.keterangan, + COALESCE(p.nama, u.fullname) AS nama_kasir + FROM mlite_billing_pembayaran h + LEFT JOIN mlite_users u ON u.id = h.id_user + LEFT JOIN pegawai p ON p.nik = u.username + WHERE h.id = ?"); + $stmt->execute([$pembayaranId]); + $pembayaran = $stmt->fetch(\PDO::FETCH_ASSOC); + } catch (\Exception $e) { + $pembayaran = null; + } + + if (!$pembayaran) { + echo 'Data pembayaran tidak ditemukan.'; + exit(); + } + + $noRawat = (string) ($pembayaran['no_rawat'] ?? ''); + $billingControl = $this->getBillingClosingState($noRawat); + if (!$billingControl['exists']) { + $this->respondBillingLock($billingControl, false); + } + + if (!$this->userIsAdmin() && !($billingControl['is_exam_closed'] ?? false)) { + $this->respondBillingLock($billingControl, false); + } + + try { + $stmt = $pdo->prepare("SELECT kelompok, jumlah_alokasi FROM mlite_billing_pembayaran_detail WHERE pembayaran_id = ? ORDER BY id ASC"); + $stmt->execute([$pembayaranId]); + $detail = $stmt->fetchAll(\PDO::FETCH_ASSOC); + } catch (\Exception $e) { + $detail = []; + } + + $labelMap = [ + 'ADMIN' => 'Administrasi/Kamar', + 'TINDAKAN' => 'Tindakan', + 'OBAT' => 'Obat & BHP', + 'LAB' => 'Laboratorium', + 'RAD' => 'Radiologi', + 'OPERASI' => 'Operasi', + 'TAMBAHAN' => 'Tambahan/Lain-lain' + ]; + + $detailDisplay = []; + $totalDetail = 0; + foreach ($detail as $d) { + $kelompok = strtoupper(trim((string) ($d['kelompok'] ?? ''))); + $jumlah = (float) ($d['jumlah_alokasi'] ?? 0); + $totalDetail += $jumlah; + $detailDisplay[] = [ + 'kelompok' => $kelompok, + 'label' => $labelMap[$kelompok] ?? $kelompok, + 'jumlah_alokasi' => $jumlah + ]; + } + + $reg = $this->db('reg_periksa')->where('no_rawat', $noRawat)->oneArray(); + $pasien = []; + if (!empty($reg['no_rkm_medis'])) { + $pasien = $this->db('pasien')->where('no_rkm_medis', $reg['no_rkm_medis'])->oneArray(); + } + + $namaKasir = trim((string) ($pembayaran['nama_kasir'] ?? '')); + if ($namaKasir === '') { + $namaKasir = $this->core->getUserInfo('fullname', null, true); + } + + $show = isset($_GET['show']) ? (string) $_GET['show'] : 'kecil'; + if ($show === 'besar') { + echo $this->draw('kuitansi_split.besar.html', [ + 'pembayaran' => htmlspecialchars_array($pembayaran), + 'detail' => htmlspecialchars_array($detailDisplay), + 'pasien' => htmlspecialchars_array($pasien), + 'nama_kasir' => htmlspecialchars($namaKasir, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'total_detail' => $totalDetail + ]); + } else { + echo $this->draw('kuitansi_split.kecil.html', [ + 'pembayaran' => htmlspecialchars_array($pembayaran), + 'detail' => htmlspecialchars_array($detailDisplay), + 'pasien' => htmlspecialchars_array($pasien), + 'nama_kasir' => htmlspecialchars($namaKasir, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'total_detail' => $totalDetail + ]); + } + exit(); + } + public function postKirimEmail() { $email = $_POST['email']; $nama_lengkap = $_POST['receiver']; @@ -872,7 +2124,7 @@ private function sendEmail($email, $receiver, $file) $binary_content = file_get_contents($file); if ($binary_content === false) { - throw new Exception("Could not fetch remote content from: '$file'"); + throw new \Exception("Could not fetch remote content from: '$file'"); } $mail = new PHPMailer(true); diff --git a/plugins/kasir_rawat_inap/Help.md b/plugins/kasir_rawat_inap/Help.md deleted file mode 100644 index 1bc8f49e1..000000000 --- a/plugins/kasir_rawat_inap/Help.md +++ /dev/null @@ -1,3 +0,0 @@ -
                                    - -
                                    \ No newline at end of file diff --git a/plugins/kasir_rawat_inap/Info.php b/plugins/kasir_rawat_inap/Info.php index 275909238..cd2d4da37 100644 --- a/plugins/kasir_rawat_inap/Info.php +++ b/plugins/kasir_rawat_inap/Info.php @@ -4,8 +4,9 @@ 'name' => 'Kasir Rawat Inap', 'description' => 'Modul kasir rawat inap untuk mLITE', 'author' => 'Basoro', + 'category' => 'keuangan', 'version' => '1.0', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'money', 'install' => function () use ($core) { }, diff --git a/plugins/kasir_rawat_inap/README.md b/plugins/kasir_rawat_inap/README.md new file mode 100644 index 000000000..5384397d4 --- /dev/null +++ b/plugins/kasir_rawat_inap/README.md @@ -0,0 +1,90 @@ +# Plugin Kasir Rawat Inap + +Dokumentasi singkat penggunaan modul **Kasir Rawat Inap** di mLITE. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Kasir Rawat Inap**. +- Pilih submenu sesuai kebutuhan: + - Kelola (daftar pasien rawat inap) + - Kasir (buka/tutup shift) + - Laporan + +## Panduan Pengguna (Petugas) + +1. **Buka Shift Kasir** + - Sebelum memulai transaksi, buka submenu **Kasir**. + - Klik **Buka Kasir**, isi modal awal, lalu konfirmasi. + - Shift hanya bisa dibuka sekali per sesi; pastikan modal awal sesuai dengan uang kas fisik. + +2. **Proses Pembayaran Pasien Rawat Inap** + - Dari submenu **Kelola**, cari pasien berdasarkan tanggal masuk atau status pulang. + - Klik nama pasien untuk membuka halaman **Rincian Billing**. + - Rincian menampilkan komponen biaya: **Layanan**, **Obat**, **Laboratorium**, **Radiologi**, dan **Tambahan Biaya**. + - Tambah atau hapus item pada masing-masing komponen bila diperlukan. + - Setelah rincian lengkap, klik **Proses Bayar** untuk membuat faktur. + - Pilih metode pembayaran, isi jumlah yang diterima, lalu simpan transaksi. + - Cetak **Billing Kecil** (struk) atau **Billing Besar** (rincian lengkap) untuk diberikan ke pasien. + +3. **Tambahan Biaya** + - Pada halaman rincian, gunakan panel **Tambahan Biaya** untuk menambahkan biaya di luar paket standar (misal: biaya administrasi, akomodasi khusus). + - Isi nama biaya, jumlah, lalu simpan. + +4. **Tutup Shift Kasir** + - Di akhir sesi, buka submenu **Kasir** lalu klik **Tutup Kasir**. + - Sistem akan merekap total transaksi selama shift berjalan. + - Konfirmasi penutupan shift setelah kas fisik dicocokkan. + +5. **Laporan** + - Buka submenu **Laporan** untuk melihat rekap transaksi kasir rawat inap. + - Filter berdasarkan rentang tanggal. + - Gunakan tombol **Export** untuk mengunduh laporan dalam format Excel atau cetak langsung. + +## Panduan Admin + +1. **Kelola Daftar Pasien** + - Submenu **Kelola** menampilkan semua pasien rawat inap beserta status (masih dirawat/sudah pulang). + - Filter berdasarkan tanggal masuk, tanggal keluar, status pulang, atau status periksa. + +2. **Verifikasi Komponen Billing** + - Pastikan data layanan, obat, laboratorium, dan radiologi sudah terisi lengkap dari modul terkait sebelum proses pembayaran. + - Item billing dapat ditambah/dihapus manual dari halaman rincian jika terdapat koreksi. + +3. **Pengiriman Email Faktur** + - Sistem mendukung pengiriman faktur via email setelah pembayaran selesai. + - Pastikan konfigurasi email (SMTP) sudah diatur di pengaturan sistem mLITE. + +## Fitur Lock Billing + +- Modul kasir rawat inap sekarang memiliki mekanisme **closing billing** untuk mencegah perubahan transaksi setelah kondisi tertentu terpenuhi. +- Lock ini berlaku pada proses yang berkaitan dengan uang, seperti: + - tambah rincian billing manual + - hapus rincian billing + - simpan billing/faktur + - pembuatan nota + - pencetakan bukti pembayaran/invoice baru + +### Aturan Lock + +- Jika `reg_periksa.status_bayar = Sudah Bayar`, maka seluruh transaksi yang berkaitan dengan uang akan dikunci. +- Jika `reg_periksa.stts != Sudah`, maka kasir tidak dapat membuat billing baru, nota, atau bukti pembayaran. +- Jika billing sudah pernah tersimpan sebelumnya, cetak ulang billing tetap dapat dilakukan selama tidak terkena pembatasan proses baru. + +### Bypass Admin + +- Jika user yang login memiliki role `admin`, maka sistem **mengabaikan lock billing**. +- Admin tetap dapat: + - menambah rincian + - menghapus rincian + - menyimpan billing + - membuat nota + - mencetak invoice +- Bypass ini dibuat agar admin tetap bisa melakukan koreksi atau intervensi operasional bila diperlukan. + +## Catatan + +- Shift kasir harus dibuka terlebih dahulu sebelum transaksi pembayaran dapat diproses. +- Setiap transaksi tercatat dengan nomor rawat dan waktu billing; duplikasi billing dapat dihindari dengan memverifikasi rincian sebelum menyimpan. +- Billing besar dan billing kecil dapat dicetak ulang dari halaman rincian pasien selama data masih tersimpan. +- Jika tombol simpan atau cetak nonaktif, periksa lebih dulu `status_bayar`, `stts` pemeriksaan, dan role user yang sedang login. diff --git a/plugins/kasir_rawat_inap/js/admin/kasir_rawat_inap.js b/plugins/kasir_rawat_inap/js/admin/kasir_rawat_inap.js index edf65c313..95f3fcce9 100644 --- a/plugins/kasir_rawat_inap/js/admin/kasir_rawat_inap.js +++ b/plugins/kasir_rawat_inap/js/admin/kasir_rawat_inap.js @@ -4,6 +4,74 @@ $("#notif").hide(); $('#provider').hide(); $('#aturan_pakai').hide(); +function parseKasirResponse(data) { + if (typeof data === 'object' && data !== null) { + return data; + } + + if (typeof data === 'string') { + try { + return JSON.parse(data); + } catch (e) { + return null; + } + } + + return null; +} + +function showKasirNotif(type, message) { + var alertType = type === 'success' ? 'success' : (type === 'warning' ? 'warning' : 'danger'); + $("#notif").html("
                                    " + + message + + "" + + "
                                    ").show(); +} + +function getKasirBillingState() { + var panel = $("#rincian .dokter_ralan_view").first(); + return { + editLocked: panel.data("edit-locked") === true || panel.data("edit-locked") === 1 || panel.data("edit-locked") === "1", + printLocked: panel.data("print-locked") === true || panel.data("print-locked") === 1 || panel.data("print-locked") === "1", + message: panel.data("lock-message") || "" + }; +} + +function applyKasirFormLock() { + var state = getKasirBillingState(); + var selectors = [ + 'input[name=tambahan_biaya]', + 'input[name=layanan]', + 'input[name=obat]', + 'input[name=laboratorium]', + 'input[name=radiologi]', + 'input[name=nm_perawatan]', + 'input[name=biaya]', + 'input[name=nama_provider]', + 'input[name=nama_provider2]', + 'input[name=kode_provider]', + 'input[name=kode_provider2]', + 'input[name=aturan_pakai]', + 'input[name=jml]', + 'input[name=jml_tindakan]', + 'select[name=provider]' + ].join(','); + + $("#form_rincian").find(selectors).prop('disabled', state.editLocked); + $("#form_rincian #simpan_rincian").prop('disabled', state.editLocked); +} + +function refreshKasirRincian(baseURL, no_rawat, callback) { + var url = baseURL + '/kasir_rawat_inap/rincian?t=' + mlite.token; + $.post(url, {no_rawat : no_rawat}, function(data) { + $("#rincian").html(data).show(); + applyKasirFormLock(); + if (typeof callback === 'function') { + callback(); + } + }); +} + $('#manage').on('click', '#submit_periode_rawat_inap', function(event){ var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); @@ -162,6 +230,7 @@ $("#display").on("click", ".layanan_obat", function(event){ $("#form").hide(); $("#notif").hide(); $("#rincian").html(data).show(); + applyKasirFormLock(); }); }); @@ -316,7 +385,7 @@ $("#obat").on("click", ".pilih_obat", function(event){ var kode_brng = $(this).attr("data-kode_brng"); var nama_brng = $(this).attr("data-nama_brng"); - var biaya = $(this).attr("data-ralan"); + var biaya = $(this).attr("data-dasar"); var kat = $(this).attr("data-kat"); $('input:hidden[name=kd_jenis_prw]').val(kode_brng); @@ -413,16 +482,14 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ jml : jml, jml_tindakan : jml_tindakan }, function(data) { - console.log(data); - // tampilkan data + var response = parseKasirResponse(data); + if (response && response.status === 'error') { + showKasirNotif('danger', response.message); + return; + } + $("#display").hide(); - var url = baseURL + '/kasir_rawat_inap/rincian?t=' + mlite.token; - $.post(url, {no_rawat : no_rawat, - }, function(data) { - // tampilkan data - // console.log(data); - $("#rincian").html(data).show(); - }); + refreshKasirRincian(baseURL, no_rawat); $("#rawat_inap_dr").hide(); $("#rawat_inap_pr").hide(); $('#biaya').attr("readonly", true); @@ -436,10 +503,7 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ $('input:text[name=kode_provider]').val(""); $('input:text[name=kode_provider2]').val(""); $('input:text[name=jml_tindakan]').val(1); - $('#notif').html("
                                    "+ - "Data pasien telah disimpan!"+ - ""+ - "
                                    ").show(); + showKasirNotif('success', 'Data pasien telah disimpan!'); }); }); @@ -466,16 +530,13 @@ $("#rincian").on("click",".hapus_detail", function(event){ jam_rawat: jam_rawat, provider: provider } ,function(data) { - var url = baseURL + '/kasir_rawat_inap/rincian?t=' + mlite.token; - $.post(url, {no_rawat : no_rawat, - }, function(data) { - // tampilkan data - $("#rincian").html(data).show(); - }); - $('#notif').html("
                                    "+ - "Data rincian rawat inap telah dihapus!"+ - ""+ - "
                                    ").show(); + var response = parseKasirResponse(data); + if (response && response.status === 'error') { + showKasirNotif('danger', response.message); + return; + } + refreshKasirRincian(baseURL, no_rawat); + showKasirNotif('success', 'Data rincian rawat inap telah dihapus!'); }); } }); @@ -506,16 +567,13 @@ $("#rincian").on("click",".hapus_obat", function(event){ jam_peresepan: jam_peresepan, jml: jml } ,function(data) { - var url = baseURL + '/kasir_rawat_inap/rincian?t=' + mlite.token; - $.post(url, {no_rawat : no_rawat, - }, function(data) { - // tampilkan data - $("#rincian").html(data).show(); - }); - $('#notif').html("
                                    "+ - "Data rincian obat rawat inap telah dihapus!"+ - ""+ - "
                                    ").show(); + var response = parseKasirResponse(data); + if (response && response.status === 'error') { + showKasirNotif('danger', response.message); + return; + } + refreshKasirRincian(baseURL, no_rawat); + showKasirNotif('success', 'Data rincian obat rawat inap telah dihapus!'); }); } }); @@ -544,16 +602,13 @@ $("#rincian").on("click",".hapus_laboratorium", function(event){ jam_rawat: jam_rawat, provider: provider } ,function(data) { - var url = baseURL + '/kasir_rawat_inap/rincian?t=' + mlite.token; - $.post(url, {no_rawat : no_rawat, - }, function(data) { - // tampilkan data - $("#rincian").html(data).show(); - }); - $('#notif').html("
                                    "+ - "Data rincian rawat inap telah dihapus!"+ - ""+ - "
                                    ").show(); + var response = parseKasirResponse(data); + if (response && response.status === 'error') { + showKasirNotif('danger', response.message); + return; + } + refreshKasirRincian(baseURL, no_rawat); + showKasirNotif('success', 'Data rincian laboratorium rawat inap telah dihapus!'); }); } }); @@ -582,16 +637,13 @@ $("#rincian").on("click",".hapus_radiologi", function(event){ jam_rawat: jam_rawat, provider: provider } ,function(data) { - var url = baseURL + '/kasir_rawat_inap/rincian?t=' + mlite.token; - $.post(url, {no_rawat : no_rawat, - }, function(data) { - // tampilkan data - $("#rincian").html(data).show(); - }); - $('#notif').html("
                                    "+ - "Data rincian rawat inap telah dihapus!"+ - ""+ - "
                                    ").show(); + var response = parseKasirResponse(data); + if (response && response.status === 'error') { + showKasirNotif('danger', response.message); + return; + } + refreshKasirRincian(baseURL, no_rawat); + showKasirNotif('success', 'Data rincian radiologi rawat inap telah dihapus!'); }); } }); @@ -614,16 +666,13 @@ $("#rincian").on("click",".hapus_tambahan_biaya", function(event){ nama_biaya: nama_biaya, no_rawat: no_rawat } ,function(data) { - var url = baseURL + '/kasir_rawat_inap/rincian?t=' + mlite.token; - $.post(url, {no_rawat : no_rawat, - }, function(data) { - // tampilkan data - $("#rincian").html(data).show(); - }); - $('#notif').html("
                                    "+ - "Data tambahan biaya rawat inap telah dihapus!"+ - ""+ - "
                                    ").show(); + var response = parseKasirResponse(data); + if (response && response.status === 'error') { + showKasirNotif('danger', response.message); + return; + } + refreshKasirRincian(baseURL, no_rawat); + showKasirNotif('success', 'Data tambahan biaya rawat inap telah dihapus!'); }); } }); @@ -690,6 +739,45 @@ $("#rincian").on("input","#jumlah_bayar2", function(event){ }); // end jumlah bayar +$("#rincian").on("keyup", ".split_amount", function(event){ + event.preventDefault(); + this.value = formatRupiah(this.value, 'Rp.'); +}); + +$("#rincian").on("click", ".split_pay", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $('input:text[name=no_rawat]').val(); + var kelompok = $(this).attr('data-kelompok'); + var metode = $('#split_metode').val() || 'Tunai'; + var jumlah_bayar = $(this).closest('.input-group').find('.split_amount').val(); + jumlah_bayar = (jumlah_bayar || '0').replace(/\.|R|p/g,''); + if (Number(jumlah_bayar) <= 0) { + alert('Jumlah bayar wajib diisi.'); + return; + } + + bootbox.confirm("Simpan pembayaran split bill untuk kelompok ini?", function(result){ + if (result) { + var url = baseURL + '/kasir_rawat_inap/splitpay?t=' + mlite.token; + $.post(url, { + no_rawat: no_rawat, + kelompok: kelompok, + metode: metode, + jumlah_bayar: jumlah_bayar + }, function(data) { + var response = parseKasirResponse(data); + if (response && response.status === 'error') { + showKasirNotif('danger', response.message); + return; + } + refreshKasirRincian(baseURL, no_rawat); + showKasirNotif('success', (response && response.message) ? response.message : 'Pembayaran split bill berhasil disimpan.'); + }); + } + }); +}); + // tombol simpan semua yang dibawah di klick $("#rincian").on("click","#simpan_billing", function(event){ var baseURL = mlite.url + '/' + mlite.admin; @@ -734,17 +822,13 @@ $("#rincian").on("click","#simpan_billing", function(event){ jumlah_bayar : jumlah_bayar, keterangan : keterangan, } ,function(data) { - var url = baseURL + '/kasir_rawat_inap/rincian?t=' + mlite.token; - $.post(url, {no_rawat : no_rawat, - }, function(data) { - // tampilkan data - $("#rincian").html(data).show(); - }); - $('#notif').html("
                                    "+ - "Data rincian faktur rawat inap telah disimpan!"+ - ""+ - "
                                    ").show(); - + var response = parseKasirResponse(data); + if (response && response.status === 'error') { + showKasirNotif('danger', response.message); + return; + } + refreshKasirRincian(baseURL, no_rawat); + showKasirNotif('success', 'Data rincian faktur rawat inap telah disimpan!'); }); } }); @@ -761,16 +845,15 @@ $("#rincian").on("click","#cetak_billing", function(event){ var no_rawat = $(this).attr("data-no_rawat"); $.post(url, {no_rawat : no_rawat, }, function(data) { - // tampilkan data - if(data == 'OK') { + var response = parseKasirResponse(data); + if((response && response.status === 'success') || data == 'OK') { bootbox.confirm("Apakah data faktur sudah sesuai? Jika berbeda, silahkan simpan dulu sebelum mencetak!", function(result){ - // ketika ditekan tombol ok if (result){ window.open(baseURL + '/kasir_rawat_inap/faktur?show=besar&no_rawat=' + no_rawat + '&t=' + mlite.token); } }); } else { - bootbox.alert("Data faktur belum disimpan. Silahkan simpan dulu sebelum mencetak?"); + bootbox.alert(response && response.message ? response.message : "Data faktur belum disimpan. Silahkan simpan dulu sebelum mencetak."); } }); }); @@ -783,16 +866,15 @@ $("#rincian").on("click","#cetak_billing_kecil", function(event){ var no_rawat = $(this).attr("data-no_rawat"); $.post(url, {no_rawat : no_rawat, }, function(data) { - // tampilkan data - if(data == 'OK') { + var response = parseKasirResponse(data); + if((response && response.status === 'success') || data == 'OK') { bootbox.confirm("Apakah data faktur sudah sesuai? Jika berbeda, silahkan simpan dulu sebelum mencetak!", function(result){ - // ketika ditekan tombol ok if (result){ window.open(baseURL + '/kasir_rawat_inap/faktur?show=kecil&no_rawat=' + no_rawat + '&t=' + mlite.token); } }); } else { - bootbox.alert("Data faktur belum disimpan. Silahkan simpan dulu sebelum mencetak!"); + bootbox.alert(response && response.message ? response.message : "Data faktur belum disimpan. Silahkan simpan dulu sebelum mencetak."); } }); }); diff --git a/plugins/kasir_rawat_inap/view/admin/billing.besar.html b/plugins/kasir_rawat_inap/view/admin/billing.besar.html index 161fc0776..5a667897c 100644 --- a/plugins/kasir_rawat_inap/view/admin/billing.besar.html +++ b/plugins/kasir_rawat_inap/view/admin/billing.besar.html @@ -31,25 +31,25 @@ + {?=isset_or($settings.alamat)?}
                                    + Telp : {?=isset_or($settings.nomor_telepon)?}
                                    + E-Mail : {?=isset_or($settings.email)?}
                                    + Website : {?=isset_or($settings.website)?}

                                    - {$settings.nama_instansi} + {?=isset_or($settings.nama_instansi)?}
                                    - +

                                    - {$settings.alamat}
                                    - Telp : {$settings.nomor_telepon}
                                    - E-Mail : {$settings.email}
                                    - Website : {$settings.website}

                                    BUKTI PEMBAYARAN

                                    - Kode Faktur : {$billing.kd_billing}
                                    - Nama Pasien : {$pasien.nm_pasien}
                                    - No RM : {$pasien.no_rkm_medis}
                                    - Alamat : {$pasien.alamat}

                                    + Kode Faktur : {?=isset_or($billing.kd_billing)?}
                                    + Nama Pasien : {?=isset_or($pasien.nm_pasien)?}
                                    + No RM : {?=isset_or($pasien.no_rkm_medis)?}
                                    + Alamat : {?=isset_or($pasien.alamat)?}

                                    @@ -71,9 +71,9 @@ - - {$billing_besar_detail.kamar_inap.kd_kamar} + - {?=isset_or($billing_besar_detail.kamar_inap.kd_kamar)?} Rp. {?= number_format($billing_besar_detail.kamar_inap.trf_kamar,2,',','.')?} - {$billing_besar_detail.kamar_inap.lama} + {?=isset_or($billing_besar_detail.kamar_inap.lama)?} Rp. {?= number_format($billing_besar_detail.kamar_inap.ttl_biaya,2,',','.')?} @@ -88,18 +88,12 @@ - {if: $billing_besar_detail.detail_pemberian_obat} - - - Non Racikan - - {/if} {loop: $billing_besar_detail.detail_pemberian_obat as $data} - - {$data.nama_brng} +   {?=isset_or($data.nama_brng)?} Rp. {?= number_format($data.biaya_obat,2,',','.')?} - {$data.jml} + {?=isset_or($data.jml)?} Rp. {?= number_format($data.total,2,',','.')?} {/loop} @@ -120,9 +114,9 @@ {loop: $billing_besar_detail.rawat_inap_dr as $data} - - {$data.nm_perawatan} + - {?=isset_or($data.nm_perawatan)?} Rp. {?= number_format($data.biaya_rawat,2,',','.')?} - {$data.jml} + {?=isset_or($data.jml)?} Rp. {?= number_format($data.total_biaya_rawat_dr,2,',','.')?} {/loop} @@ -143,9 +137,9 @@ {loop: $billing_besar_detail.rawat_inap_pr as $data} - - {$data.nm_perawatan} + - {?=isset_or($data.nm_perawatan)?} Rp. {?= number_format($data.biaya_rawat,2,',','.')?} - {$data.jml} + {?=isset_or($data.jml)?} Rp. {?= number_format($data.total_biaya_rawat_pr,2,',','.')?} {/loop} @@ -166,9 +160,9 @@ {loop: $billing_besar_detail.rawat_inap_drpr as $data} - - {$data.nm_perawatan} + - {?=isset_or($data.nm_perawatan)?} Rp. {?= number_format($data.biaya_rawat,2,',','.')?} - {$data.jml} + {?=isset_or($data.jml)?} Rp. {?= number_format($data.total_biaya_rawat_drpr,2,',','.')?} {/loop} @@ -189,7 +183,7 @@ {loop: $billing_besar_detail.periksa_lab as $data} - - {$data.nm_perawatan} + - {?=isset_or($data.nm_perawatan)?} Rp. {?= number_format($data.biaya,2,',','.')?} Rp. {?= number_format($data.biaya,2,',','.')?} @@ -212,7 +206,7 @@ {loop: $billing_besar_detail.periksa_radiologi as $data} - - {$data.nm_perawatan} + - {?=isset_or($data.nm_perawatan)?} Rp. {?= number_format($data.biaya,2,',','.')?} Rp. {?= number_format($data.biaya,2,',','.')?} @@ -235,7 +229,7 @@ {loop: $billing_besar_detail.operasi as $data} - - {$data.nm_perawatan} + - {?=isset_or($data.nm_perawatan)?} Rp. {?= number_format($data.jumlah,2,',','.')?} 1 Rp. {?= number_format($jumlah_total_operasi,2,',','.')?} @@ -258,9 +252,9 @@ {loop: $billing_besar_detail.obat_operasi as $data} - - {$data.nm_obat} + - {?=isset_or($data.nm_obat)?} Rp. {?= number_format($data.hargasatuan,2,',','.')?} - {$data.jumlah} + {?=isset_or($data.jumlah)?} Rp. {?= number_format($data.harga,2,',','.')?} {/loop} @@ -273,7 +267,30 @@ {/if} X - Biaya Tambahan + Obat Pulang + + + + + {loop: $billing_besar_detail.resep_pulang} + + + - {?=isset_or($value.nama_brng)?} + Rp. {?= number_format($value.harga,2,',','.')?} + {?=isset_or($value.jml_barang)?} + Rp. {?= number_format($value.total,2,',','.')?} + + {/loop} + {if: $billing_besar_detail.resep_pulang} + + + Sub total + Rp. {?= number_format(array_sum(array_column($billing_besar_detail.resep_pulang, 'total')),2,',','.')?} + + {/if} + + XI + Biaya Tambahan (termasuk UTD) @@ -281,7 +298,7 @@ {loop: $billing_besar_detail.tambahan_biaya} - - {$value.nama_biaya} + - {?=isset_or($value.nama_biaya)?} Rp. {?= number_format($value.besar_biaya,2,',','.')?} 1 Rp. {?= number_format($value.besar_biaya,2,',','.')?} @@ -319,11 +336,11 @@

                                    -

                                    {$settings.kota}, {?=date('d-m-Y')?}
                                    +

                                    {?=isset_or($settings.kota)?}, {?=date('d-m-Y')?}
                                    Kasir

                                    - +

                                    - {$fullname}
                                    + {?=isset_or($fullname)?}

                                    @@ -349,7 +366,7 @@ - - - - - - diff --git a/plugins/pasien/view/admin/pcare.bynik.html b/plugins/pasien/view/admin/pcare.bynik.html index 7dfb8bb25..6279795bc 100644 --- a/plugins/pasien/view/admin/pcare.bynik.html +++ b/plugins/pasien/view/admin/pcare.bynik.html @@ -27,18 +27,6 @@

                                    Detail data kepesertan BPJS

                                    Tanggal Lahir : null - - Umur - : - - - Umur Saat Pelayanan - : null - - - Umur Sekarang - : null - Hak Kelas : @@ -64,20 +52,28 @@

                                    Detail data kepesertan BPJS

                                    : null + Provider Gigi + : + + + Kode Provider + : null + + + Nama Provider + : null + + Informasi : - Dinsos - : null - - - Nomor SKTM - : null + Peserta Prb + : null - Prolanis PRB - : null + Peserta Prolanis + : null Jenis Peserta @@ -92,27 +88,7 @@

                                    Detail data kepesertan BPJS

                                    : null - Status Peserta - : - - - Keterangan - : null - - - Kode - : null - - - Rekam Medik - : - - - Nomor MR - : null - - - Nomor Telepon + Nomor Telepon : null @@ -127,26 +103,10 @@

                                    Detail data kepesertan BPJS

                                    Nomor Asuransi : null - - Tanggal TAT - : null - - - Tanggal TMT - : null - - - Tanggal Cetak Kartu - : null - Tanggal TAT : null - - Tanggal TMT - : null - @@ -157,7 +117,7 @@

                                    Detail data kepesertan BPJS

                                    diff --git a/plugins/pasien/view/admin/pcare.bynokartu.html b/plugins/pasien/view/admin/pcare.bynokartu.html index 7dfb8bb25..6279795bc 100644 --- a/plugins/pasien/view/admin/pcare.bynokartu.html +++ b/plugins/pasien/view/admin/pcare.bynokartu.html @@ -27,18 +27,6 @@

                                    Detail data kepesertan BPJS

                                    Tanggal Lahir : null - - Umur - : - - - Umur Saat Pelayanan - : null - - - Umur Sekarang - : null - Hak Kelas : @@ -64,20 +52,28 @@

                                    Detail data kepesertan BPJS

                                    : null + Provider Gigi + : + + + Kode Provider + : null + + + Nama Provider + : null + + Informasi : - Dinsos - : null - - - Nomor SKTM - : null + Peserta Prb + : null - Prolanis PRB - : null + Peserta Prolanis + : null Jenis Peserta @@ -92,27 +88,7 @@

                                    Detail data kepesertan BPJS

                                    : null - Status Peserta - : - - - Keterangan - : null - - - Kode - : null - - - Rekam Medik - : - - - Nomor MR - : null - - - Nomor Telepon + Nomor Telepon : null @@ -127,26 +103,10 @@

                                    Detail data kepesertan BPJS

                                    Nomor Asuransi : null - - Tanggal TAT - : null - - - Tanggal TMT - : null - - - Tanggal Cetak Kartu - : null - Tanggal TAT : null - - Tanggal TMT - : null - @@ -157,7 +117,7 @@

                                    Detail data kepesertan BPJS

                                    diff --git a/plugins/pasien/view/admin/riwayat.perawatan.html b/plugins/pasien/view/admin/riwayat.perawatan.html index b28fa929d..fd22a1128 100644 --- a/plugins/pasien/view/admin/riwayat.perawatan.html +++ b/plugins/pasien/view/admin/riwayat.perawatan.html @@ -20,57 +20,57 @@

                                    Data Riwayat Perawatan Pasien

                                    No.RM : - {$riwayat.pasien.no_rkm_medis} + {?=isset_or($riwayat.pasien.no_rkm_medis)?} Nama Pasien : - {$riwayat.pasien.nm_pasien} + {?=isset_or($riwayat.pasien.nm_pasien)?} Alamat : - {$riwayat.pasien.alamat} + {?=isset_or($riwayat.pasien.alamat)?} Umur : - {$riwayat.pasien.umur} Tahun ({if: $riwayat.pasien.jk == 'L'}Laki-Laki{else}Perempuan{/if}) + {?=isset_or($riwayat.pasien.umur)?} Tahun ({if: $riwayat.pasien.jk == 'L'}Laki-Laki{else}Perempuan{/if}) Tanggal Lahir : - {$riwayat.pasien.tgl_lahir} + {?=isset_or($riwayat.pasien.tgl_lahir)?} Ibu Kandung : - {$riwayat.pasien.nm_ibu} + {?=isset_or($riwayat.pasien.nm_ibu)?} Golongan Darah : - {$riwayat.pasien.gol_darah} + {?=isset_or($riwayat.pasien.gol_darah)?} Status Nikah : - {$riwayat.pasien.stts_nikah} + {?=isset_or($riwayat.pasien.stts_nikah)?} Agama : - {$riwayat.pasien.agama} + {?=isset_or($riwayat.pasien.agama)?} Pendidikan Terakhir : - {$riwayat.pasien.pnd} + {?=isset_or($riwayat.pasien.pnd)?} Pertama Daftar : - {$riwayat.pasien.tgl_daftar} + {?=isset_or($riwayat.pasien.tgl_daftar)?} @@ -81,37 +81,37 @@

                                    Data Riwayat

                                    No.Rawat : - {$value.no_rawat} + {?=isset_or($value.no_rawat)?} No.Registrasi : - {$value.no_reg} + {?=isset_or($value.no_reg)?} Tanggal Registrasi : - {$value.tgl_registrasi} + {?=isset_or($value.tgl_registrasi)?} Unit/Poliklinik : - {$value.nm_poli} + {?=isset_or($value.nm_poli)?} Dokter : - {$value.nm_dokter} + {?=isset_or($value.nm_dokter)?} Penjamin : - {$value.png_jawab} + {?=isset_or($value.png_jawab)?} Status : - {$value.status_lanjut} + {?=isset_or($value.status_lanjut)?} {if: $value.diagnosa_pasien} @@ -126,9 +126,9 @@

                                    Data Riwayat

                                    {loop: $value.diagnosa_pasien as $data} - {$data.kd_penyakit} - {$data.nm_penyakit} - {$data.prioritas} + {?=isset_or($data.kd_penyakit)?} + {?=isset_or($data.nm_penyakit)?} + {?=isset_or($data.prioritas)?} {/loop} @@ -148,9 +148,9 @@

                                    Data Riwayat

                                    {loop: $value.prosedur_pasien as $data} - {$data.kode} - {$data.deskripsi_panjang} - {$data.prioritas} + {?=isset_or($data.kode)?} + {?=isset_or($data.deskripsi_panjang)?} + {?=isset_or($data.prioritas)?} {/loop} @@ -173,9 +173,9 @@

                                    Data Riwayat

                                    {loop: $value.penilaian_medis_ralan as $data} Rawat Jalan - {$data.tanggal} - {$data.nm_dokter} - {$data.anamnesis},{$data.hubungan} + {?=isset_or($data.tanggal)?} + {?=isset_or($data.nm_dokter)?} + {?=isset_or($data.anamnesis)?},{?=isset_or($data.hubungan)?} @@ -184,27 +184,27 @@

                                    Data Riwayat

                                    Riwayat Keluhan Utama - : {$data.keluhan_utama} + : {?=isset_or($data.keluhan_utama)?} Riwayat Penyakit Sekarang - : {$data.rps} + : {?=isset_or($data.rps)?} Riwayat Penyakit Dahulu - : {$data.rpd} + : {?=isset_or($data.rpd)?} Riwayat Penyakit Keluarga - : {$data.rpk} + : {?=isset_or($data.rpk)?} Riwayat Alergi - : {$data.rpk} + : {?=isset_or($data.rpk)?} Riwayat Penggunaan Obat - : {$data.rpk} + : {?=isset_or($data.rpk)?} @@ -226,18 +226,18 @@

                                    Data Riwayat

                                    Gigi & Mulut - {$data.keadaan} - {$data.kesadaran} - {$data.gcs} - {$data.tb} - {$data.bb} - {$data.td} - {$data.nadi} - {$data.rr} - {$data.suhu} - {$data.spo} - {$data.kepala} - {$data.gigi} + {?=isset_or($data.keadaan)?} + {?=isset_or($data.kesadaran)?} + {?=isset_or($data.gcs)?} + {?=isset_or($data.tb)?} + {?=isset_or($data.bb)?} + {?=isset_or($data.td)?} + {?=isset_or($data.nadi)?} + {?=isset_or($data.rr)?} + {?=isset_or($data.suhu)?} + {?=isset_or($data.spo)?} + {?=isset_or($data.kepala)?} + {?=isset_or($data.gigi)?} @@ -250,13 +250,13 @@

                                    Data Riwayat

                                    Keterangan Fisik - {$data.tht} - {$data.thoraks} - {$data.abdomen} - {$data.genital} - {$data.ekstremitas} - {$data.kulit} - {$data.ket_fisik} + {?=isset_or($data.tht)?} + {?=isset_or($data.thoraks)?} + {?=isset_or($data.abdomen)?} + {?=isset_or($data.genital)?} + {?=isset_or($data.ekstremitas)?} + {?=isset_or($data.kulit)?} + {?=isset_or($data.ket_fisik)?} @@ -266,7 +266,7 @@

                                    Data Riwayat

                                    Keterangan - : {$data.ket_lokalis} + : {?=isset_or($data.ket_lokalis)?} @@ -276,7 +276,7 @@

                                    Data Riwayat

                                    PENUNJANG - : {$data.penunjang} + : {?=isset_or($data.penunjang)?} @@ -286,7 +286,7 @@

                                    Data Riwayat

                                    Diagnosis - : {$data.diagnosis} + : {?=isset_or($data.diagnosis)?} @@ -296,7 +296,7 @@

                                    Data Riwayat

                                    Tatalaksana - : {$data.tata} + : {?=isset_or($data.tata)?} @@ -306,7 +306,7 @@

                                    Data Riwayat

                                    Konsul/Rujuk - : {$data.konsulrujuk} + : {?=isset_or($data.konsulrujuk)?} @@ -342,34 +342,34 @@

                                    Data Riwayat

                                    Rawat Jalan - {$data.tgl_perawatan} - {$data.jam_rawat} - {$data.suhu_tubuh} - {$data.tensi} - {$data.nadi} - {$data.respirasi} - {$data.tinggi} - {$data.berat} - {$data.gcs} - {$data.spo2} - {$data.alergi} - {$data.kesadaran} + {?=isset_or($data.tgl_perawatan)?} + {?=isset_or($data.jam_rawat)?} + {?=isset_or($data.suhu_tubuh)?} + {?=isset_or($data.tensi)?} + {?=isset_or($data.nadi)?} + {?=isset_or($data.respirasi)?} + {?=isset_or($data.tinggi)?} + {?=isset_or($data.berat)?} + {?=isset_or($data.gcs)?} + {?=isset_or($data.spo2)?} + {?=isset_or($data.alergi)?} + {?=isset_or($data.kesadaran)?} Subjek - : {$data.keluhan} + : {?=isset_or($data.keluhan)?} Objek - : {$data.pemeriksaan} + : {?=isset_or($data.pemeriksaan)?} Asesment - : {$data.penilaian} + : {?=isset_or($data.penilaian)?} Plan - : {$data.rtl} + : {?=isset_or($data.rtl)?} {/loop} {/if} @@ -394,34 +394,34 @@

                                    Data Riwayat

                                    Rawat Inap - {$data.tgl_perawatan} - {$data.jam_rawat} - {$data.suhu_tubuh} - {$data.tensi} - {$data.nadi} - {$data.respirasi} - {$data.tinggi} - {$data.berat} - {$data.gcs} - {$data.spo2} - {$data.alergi} - {$data.kesadaran} + {?=isset_or($data.tgl_perawatan)?} + {?=isset_or($data.jam_rawat)?} + {?=isset_or($data.suhu_tubuh)?} + {?=isset_or($data.tensi)?} + {?=isset_or($data.nadi)?} + {?=isset_or($data.respirasi)?} + {?=isset_or($data.tinggi)?} + {?=isset_or($data.berat)?} + {?=isset_or($data.gcs)?} + {?=isset_or($data.spo2)?} + {?=isset_or($data.alergi)?} + {?=isset_or($data.kesadaran)?} Subjek - : {$data.keluhan} + : {?=isset_or($data.keluhan)?} Objek - : {$data.pemeriksaan} + : {?=isset_or($data.pemeriksaan)?} Asesment - : {$data.penilaian} + : {?=isset_or($data.penilaian)?} Plan - : {$data.rtl} + : {?=isset_or($data.rtl)?} {/loop} {/if} @@ -431,7 +431,7 @@

                                    Data Riwayat

                                    {if: $value.rawat_jl_dr || $value.rawat_jl_pr || $value.rawat_jl_drpr} - Tindakan Perawatan + Tindakan Rawat Jalan : @@ -461,16 +461,16 @@

                                    Data Riwayat

                                    {loop: $value.rawat_jl_dr as $data} - {$data.tgl_perawatan} {$data.jam_rawat} + {?=isset_or($data.tgl_perawatan)?} {?=isset_or($data.jam_rawat)?} - {$data.kd_jenis_prw} + {?=isset_or($data.kd_jenis_prw)?} - {$data.nm_perawatan} + {?=isset_or($data.nm_perawatan)?} - {$data.nm_dokter} + {?=isset_or($data.nm_dokter)?} {/loop} @@ -500,16 +500,16 @@

                                    Data Riwayat

                                    {loop: $value.rawat_jl_pr as $data} - {$data.tgl_perawatan} {$data.jam_rawat} + {?=isset_or($data.tgl_perawatan)?} {?=isset_or($data.jam_rawat)?} - {$data.kd_jenis_prw} + {?=isset_or($data.kd_jenis_prw)?} - {$data.nm_perawatan} + {?=isset_or($data.nm_perawatan)?} - {$data.nama} + {?=isset_or($data.nama)?} {/loop} @@ -542,24 +542,37 @@

                                    Data Riwayat

                                    {loop: $value.rawat_jl_drpr as $data} - {$data.tgl_perawatan} {$data.jam_rawat} + {?=isset_or($data.tgl_perawatan)?} {?=isset_or($data.jam_rawat)?} - {$data.kd_jenis_prw} + {?=isset_or($data.kd_jenis_prw)?} - {$data.nm_perawatan} + {?=isset_or($data.nm_perawatan)?} - {$data.nm_dokter} + {?=isset_or($data.nm_dokter)?} - {$data.nama} + {?=isset_or($data.nama)?} {/loop} {/if} + + + {/if} + + {if: $value.rawat_inap_dr || $value.rawat_inap_pr || $value.rawat_inap_drpr} + + + Tindakan Rawat Inap + + + : + + {if: $value.rawat_inap_dr} @@ -584,16 +597,16 @@

                                    Data Riwayat

                                    {loop: $value.rawat_inap_dr as $data} {/loop} @@ -623,16 +636,16 @@

                                    Data Riwayat

                                    {loop: $value.rawat_inap_pr as $data} {/loop} @@ -641,7 +654,7 @@

                                    Data Riwayat

                                    {if: $value.rawat_inap_drpr}
                                    - {$data.tgl_perawatan} {$data.jam_rawat} + {?=isset_or($data.tgl_perawatan)?} {?=isset_or($data.jam_rawat)?} - {$data.kd_jenis_prw} + {?=isset_or($data.kd_jenis_prw)?} - {$data.nm_perawatan} + {?=isset_or($data.nm_perawatan)?} - {$data.nm_dokter} + {?=isset_or($data.nm_dokter)?}
                                    - {$data.tgl_perawatan} {$data.jam_rawat} + {?=isset_or($data.tgl_perawatan)?} {?=isset_or($data.jam_rawat)?} - {$data.kd_jenis_prw} + {?=isset_or($data.kd_jenis_prw)?} - {$data.nm_perawatan} + {?=isset_or($data.nm_perawatan)?} - {$data.nama} + {?=isset_or($data.nama)?}
                                    - @@ -652,7 +665,7 @@

                                    Data Riwayat

                                    - {/loop} @@ -699,7 +712,7 @@

                                    Data Riwayat

                                    {loop: $value.pemberian_obat as $data1} - + {loop: $value.periksa_lab as $data1} - - + + {loop: $data1.detail_periksa_lab as $data2} - - + + @@ -772,7 +785,7 @@

                                    Data Riwayat

                                    {loop: $value.periksa_radiologi as $data} - + @@ -801,13 +814,14 @@

                                    Data Riwayat

                                    {loop: $data.gambar_radiologi as $data2} {/loop} + @@ -816,10 +830,31 @@

                                    Data Riwayat

                                    {/if} {/loop} + {if: $value.mini_pacs} + +
                                    + {loop: $value.mini_pacs as $mp} + {loop: $mp.series as $s} + {loop: $s.instances as $ins} +
                                    + {if: file_exists(UPLOADS.'/pacs/'.$ins.sop_instance_uid.'_thumb.jpg')} + + {else} + {if: $this->core->getSettings('mini_pacs', 'is_mono') == '0'}{/if} + {/if} +
                                    + {/loop} + {/loop} + {/loop} +
                                    + + {/if}
                                    + Tindakan Rawat Inap Dokter & Perawat
                                    Kode + Nama Tindakan/Perawatan @@ -665,19 +678,19 @@

                                    Data Riwayat

                                    {loop: $value.rawat_inap_drpr as $data}
                                    - {$data.tgl_perawatan} {$data.jam_rawat} + {?=isset_or($data.tgl_perawatan)?} {?=isset_or($data.jam_rawat)?} - {$data.kd_jenis_prw} + {?=isset_or($data.kd_jenis_prw)?} - {$data.nm_perawatan} + {?=isset_or($data.nm_perawatan)?} - {$data.nm_dokter} + {?=isset_or($data.nm_dokter)?} - {$data.nama} + {?=isset_or($data.nama)?}
                                    {$data1.tgl_perawatan} {$data1.jam}
                                    {$data1.status}
                                    {?=isset_or($data1.tgl_perawatan)?} {?=isset_or($data1.jam)?}
                                    {?=isset_or($value.status_lanjut)?}
                                    @@ -708,8 +721,8 @@

                                    Data Riwayat

                                    {loop: $data1.data_pemberian_obat as $data2} - - + + {/loop}
                                    {$data2.nama_brng}{$data2.jml}{?=isset_or($data2.nama_brng)?}{?=isset_or($data2.jml)?}
                                    @@ -737,20 +750,20 @@

                                    Data Riwayat

                                    {$data1.tgl_periksa}{$data1.nm_perawatan}{?=isset_or($data1.tgl_periksa)?}{?=isset_or($data1.nm_perawatan)?}
                                    {$data2.Pemeriksaan}{$data2.nilai} {$data2.satuan}{?=isset_or($data2.Pemeriksaan)?}{?=isset_or($data2.nilai)?} {?=isset_or($data2.satuan)?} - {if: $riwayat.pasien.jk == 'L' && $value.umurdaftar < '16'}{$data2.nilai_rujukan_la}{/if} - {if: $riwayat.pasien.jk == 'L' && $value.umurdaftar >= '16'}{$data2.nilai_rujukan_ld}{/if} - {if: $riwayat.pasien.jk == 'P' && $value.umurdaftar < '16'}{$data2.nilai_rujukan_pa}{/if} - {if: $riwayat.pasien.jk == 'P' && $value.umurdaftar >= '16'}{$data2.nilai_rujukan_pd}{/if} - {$data2.satuan} + {if: $riwayat.pasien.jk == 'L' && $value.umurdaftar < '16'}{?=isset_or($data2.nilai_rujukan_la)?}{/if} + {if: $riwayat.pasien.jk == 'L' && $value.umurdaftar >= '16'}{?=isset_or($data2.nilai_rujukan_ld)?}{/if} + {if: $riwayat.pasien.jk == 'P' && $value.umurdaftar < '16'}{?=isset_or($data2.nilai_rujukan_pa)?}{/if} + {if: $riwayat.pasien.jk == 'P' && $value.umurdaftar >= '16'}{?=isset_or($data2.nilai_rujukan_pd)?}{/if} + {?=isset_or($data2.satuan)?} {?=nl2br($data2.keterangan)?}
                                    {$data.tgl_periksa} {$data.jam}{?=isset_or($data.tgl_periksa)?} {?=isset_or($data.jam)?}
                                    Pemeriksaan
                                    {/if} + {if: $value.operasi} Operasi @@ -832,8 +867,8 @@

                                    Data Riwayat

                                    {loop: $value.operasi as $data} - {$data.tgl_operasi} - {$data.nm_perawatan} + {?=isset_or($data.tgl_operasi)?} + {?=isset_or($data.nm_perawatan)?} {/loop} @@ -853,9 +888,9 @@

                                    Data Riwayat

                                    {loop: $value.obat_operasi as $data} - {$data.tanggal} - {$data.nm_obat} - {$data.jumlah} + {?=isset_or($data.tanggal)?} + {?=isset_or($data.nm_obat)?} + {?=isset_or($data.jumlah)?} {/loop} @@ -880,7 +915,7 @@

                                    Data Riwayat

                                    - {$data.nama} + {?=isset_or($data.nama)?}
                                    {/loop} @@ -892,6 +927,1435 @@

                                    Data Riwayat

                                    {/if} + {if: $value.triase_igd} + + Triase IGD + : + + {loop: $value.triase_igd as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {if: $value.lokalis} + + + + + + + {/if} + + + + + + + + + + + +
                                    INFORMASI TRIASE IGD
                                    Tanggal/Jam Triase{?=isset_or($data.tgl_triase)?}Petugas{?=isset_or($data.petugas_id)?}
                                    No. Rawat{?=isset_or($data.no_rawat)?}No. RM{?=isset_or($data.no_rkm_medis)?}
                                    KELUHAN & DIAGNOSA
                                    Keluhan Utama{?=isset_or($data.keluhan_utama)?}
                                    Diagnosa Awal{?=isset_or($data.diagnosa_awal)?}
                                    KESADARAN & GCS
                                    Kesadaran{?=isset_or($data.kesadaran)?}GCS + {if: $data.gcs_e || $data.gcs_v || $data.gcs_m} + E: {?=isset_or($data.gcs_e)?} | V: {?=isset_or($data.gcs_v)?} | M: {?=isset_or($data.gcs_m)?} +
                                    Total: {?=(isset_or($data.gcs_e) + isset_or($data.gcs_v) + isset_or($data.gcs_m))?} + {else} + - + {/if} +
                                    VITAL SIGN
                                    Tekanan Darah{?=isset_or($data.tekanan_darah)?} mmHgNadi{?=isset_or($data.nadi)?} x/menit
                                    Respirasi{?=isset_or($data.respirasi)?} x/menitSuhu{?=isset_or($data.suhu)?} °C
                                    SpO2{?=isset_or($data.spo2)?}%
                                    PRIMARY SURVEY (ABC)
                                    Airway + + {?=isset_or($data.airway)?} + + Breathing + + {?=isset_or($data.breathing)?} + +
                                    Circulation + + {?=isset_or($data.circulation)?} + +
                                    KATEGORI TRIASE
                                    Kategori + + {?=isset_or($data.kategori)?} + + Skala Triase + + {?=isset_or($data.skala_triase)?} + +
                                    STATUS LOKALIS
                                    Lokalis
                                    WAKTU PENCATATAN
                                    Dibuat{?=isset_or($data.created_at)?}Diperbarui{?=isset_or($data.updated_at)?}
                                    + {/loop} + + + {/if} + {if: $value.penilaian_keperawatan_igd} + + Penilaian Awal Keperawatan IGD + : + + {loop: $value.penilaian_keperawatan_igd as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {if: $data.rencana} + + + + + + + {/if} +
                                    INFORMASI DASAR
                                    Tanggal/Jam{?=isset_or($data.tanggal)?}Petugas{?=isset_or($data.nama)?}
                                    Informasi{?=isset_or($data.informasi)?}Status Kehamilan + {?=isset_or($data.status_kehamilan)?} + {if: $data.status_kehamilan == 'Hamil'} +
                                    G: {?=isset_or($data.gravida)?} P: {?=isset_or($data.para)?} A: {?=isset_or($data.abortus)?} +
                                    HPHT: {?=isset_or($data.hpht)?} + {/if} +
                                    ANAMNESIS
                                    Keluhan Utama{?=isset_or($data.keluhan_utama)?}
                                    Riwayat Penyakit Dahulu{?=isset_or($data.rpd)?}
                                    Riwayat Penyakit Obat{?=isset_or($data.rpo)?}
                                    PEMERIKSAAN FISIK
                                    Tekanan Darah{?=isset_or($data.tekanan)?}Pupil{?=isset_or($data.pupil)?}
                                    Neurosensorik{?=isset_or($data.neurosensorik)?}Integumen{?=isset_or($data.integumen)?}
                                    Turgor{?=isset_or($data.turgor)?}Edema{?=isset_or($data.edema)?}
                                    Mukosa{?=isset_or($data.mukosa)?}Perdarahan + {?=isset_or($data.perdarahan)?} + {if: $data.perdarahan == 'Ada'} +
                                    Jumlah: {?=isset_or($data.jumlah_perdarahan)?} +
                                    Warna: {?=isset_or($data.warna_perdarahan)?} + {/if} +
                                    Intoksikasi{?=isset_or($data.intoksikasi)?}
                                    ELIMINASI
                                    BAB + {if: $data.bab}Frekuensi: {?=isset_or($data.bab)?}x/{?=isset_or($data.xbab)?}
                                    {/if} + {if: $data.kbab}Konsistensi: {?=isset_or($data.kbab)?}
                                    {/if} + {if: $data.wbab}Warna: {?=isset_or($data.wbab)?}{/if} +
                                    BAK + {if: $data.bak}Frekuensi: {?=isset_or($data.bak)?}x/{?=isset_or($data.xbak)?}
                                    {/if} + {if: $data.wbak}Warna: {?=isset_or($data.wbak)?}
                                    {/if} + {if: $data.lbak}Lain-lain: {?=isset_or($data.lbak)?}{/if} +
                                    PSIKOSOSIAL
                                    Kondisi Psikologis{?=isset_or($data.psikologis)?}Gangguan Jiwa{?=isset_or($data.jiwa)?}
                                    Perilaku + {?=isset_or($data.perilaku)?} + {if: $data.perilaku != '-'} +
                                    Dilaporkan: {?=isset_or($data.dilaporkan)?} +
                                    Sebutkan: {?=isset_or($data.sebutkan)?} + {/if} +
                                    Hubungan Keluarga{?=isset_or($data.hubungan)?}
                                    Tinggal Dengan + {?=isset_or($data.tinggal_dengan)?} + {if: $data.ket_tinggal}
                                    Ket: {?=isset_or($data.ket_tinggal)?}{/if} +
                                    Budaya + {?=isset_or($data.budaya)?} + {if: $data.budaya == 'Ada'}
                                    Ket: {?=isset_or($data.ket_budaya)?}{/if} +
                                    Pendidikan PJ + {?=isset_or($data.pendidikan_pj)?} + {if: $data.ket_pendidikan_pj}
                                    Ket: {?=isset_or($data.ket_pendidikan_pj)?}{/if} +
                                    Edukasi + {?=isset_or($data.edukasi)?} + {if: $data.ket_edukasi}
                                    Ket: {?=isset_or($data.ket_edukasi)?}{/if} +
                                    AKTIVITAS & MOBILITAS
                                    Kemampuan{?=isset_or($data.kemampuan)?}Aktivitas{?=isset_or($data.aktifitas)?}
                                    Alat Bantu + {?=isset_or($data.alat_bantu)?} + {if: $data.alat_bantu == 'Ya'}
                                    Ket: {?=isset_or($data.ket_bantu)?}{/if} +
                                    Risiko Jatuh + A: {?=isset_or($data.berjalan_a)?} | B: {?=isset_or($data.berjalan_b)?} | C: {?=isset_or($data.berjalan_c)?}
                                    + {?=isset_or($data.hasil)?} + {if: $data.lapor == 'Ya'}
                                    Dilaporkan: {?=isset_or($data.ket_lapor)?}{/if} +
                                    PENILAIAN NYERI
                                    Status Nyeri + {?=isset_or($data.nyeri)?} + {if: $data.nyeri != 'Tidak Ada Nyeri'} +
                                    Skala: {?=isset_or($data.skala_nyeri)?}/10 +
                                    Lokasi: {?=isset_or($data.lokasi)?} +
                                    Durasi: {?=isset_or($data.durasi)?} +
                                    Menyebar: {?=isset_or($data.menyebar)?} +
                                    Provokes: {?=isset_or($data.provokes)?} ({?=isset_or($data.ket_provokes)?}) +
                                    Quality: {?=isset_or($data.quality)?} ({?=isset_or($data.ket_quality)?}) +
                                    Nyeri Hilang: {?=isset_or($data.nyeri_hilang)?} ({?=isset_or($data.ket_nyeri)?}) +
                                    Dilaporkan ke Dokter: {?=isset_or($data.pada_dokter)?} ({?=isset_or($data.ket_dokter)?}) + {/if} +
                                    RENCANA KEPERAWATAN
                                    {?=isset_or($data.rencana)?}
                                    + {/loop} + + + {/if} + {if: $value.penilaian_awal_keperawatan_ralan} + + Penilaian Awal Keperawatan Rawat Jalan + : + + {loop: $value.penilaian_awal_keperawatan_ralan as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    INFORMASI DASAR
                                    Tanggal{?=isset_or($data.tanggal)?}Petugas{?=isset_or($data.nama)?}
                                    Informasi{?=isset_or($data.informasi)?}Keluhan Utama{?=isset_or($data.keluhan_utama)?}
                                    RIWAYAT KESEHATAN
                                    Riwayat Penyakit Dahulu{if: $data.rpd}{?=isset_or($data.rpd)?}{else}-{/if}
                                    Riwayat Penyakit Keluarga{if: $data.rpk}{?=isset_or($data.rpk)?}{else}-{/if}
                                    Riwayat Penyakit Operasi{if: $data.rpo}{?=isset_or($data.rpo)?}{else}-{/if}
                                    Riwayat Alergi{if: $data.alergi}{?=isset_or($data.alergi)?}{else}-{/if}
                                    PEMERIKSAAN FISIK
                                    GCS{if: $data.gcs}{?=isset_or($data.gcs)?}{else}-{/if}BMI{if: $data.bmi}{?=isset_or($data.bmi)?}{else}-{/if}
                                    Tekanan Darah{if: $data.td}{?=isset_or($data.td)?} mmHg{else}-{/if}Nadi{if: $data.nadi}{?=isset_or($data.nadi)?} x/menit{else}-{/if}
                                    Respirasi{if: $data.rr}{?=isset_or($data.rr)?} x/menit{else}-{/if}Suhu{if: $data.suhu}{?=isset_or($data.suhu)?} °C{else}-{/if}
                                    Tinggi Badan{if: $data.tb}{?=isset_or($data.tb)?} cm{else}-{/if}Berat Badan{if: $data.bb}{?=isset_or($data.bb)?} kg{else}-{/if}
                                    Status Psikologis{if: $data.status_psiko}{?=isset_or($data.status_psiko)?}{else}-{/if}Keterangan{if: $data.ket_psiko}{?=isset_or($data.ket_psiko)?}{else}-{/if}
                                    PENILAIAN NYERI
                                    Status Nyeri{if: $data.nyeri}{?=isset_or($data.nyeri)?}{else}-{/if}Skala Nyeri{if: $data.skala_nyeri}{?=isset_or($data.skala_nyeri)?}/10{else}-{/if}
                                    Lokasi{if: $data.lokasi}{?=isset_or($data.lokasi)?}{else}-{/if}Durasi{if: $data.durasi}{?=isset_or($data.durasi)?}{else}-{/if}
                                    RENCANA KEPERAWATAN
                                    Rencana Keperawatan{if: $data.rencana}{?=isset_or($data.rencana)?}{else}-{/if}
                                    + {/loop} + + + {/if} + {if: $value.penilaian_awal_keperawatan_ranap} + + Penilaian Awal Keperawatan Rawat Inap + : + + {loop: $value.penilaian_awal_keperawatan_ranap as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    INFORMASI DASAR
                                    Tanggal{?=isset_or($data.tanggal)?}Petugas{?=isset_or($data.nama)?}
                                    Informasi{if: $data.informasi}{?=isset_or($data.informasi)?}{else}-{/if}Cara Masuk{if: $data.cara_masuk}{?=isset_or($data.cara_masuk)?}{else}-{/if}
                                    RIWAYAT KESEHATAN
                                    Riwayat Penyakit Sekarang{if: $data.rps}{?=isset_or($data.rps)?}{else}-{/if}
                                    Riwayat Penyakit Dahulu{if: $data.rpd}{?=isset_or($data.rpd)?}{else}-{/if}
                                    Riwayat Penyakit Keluarga{if: $data.rpk}{?=isset_or($data.rpk)?}{else}-{/if}
                                    Riwayat Alergi{if: $data.riwayat_alergi}{?=isset_or($data.riwayat_alergi)?}{else}-{/if}
                                    PEMERIKSAAN FISIK
                                    Keadaan Umum{if: $data.pemeriksaan_keadaan_umum}{?=isset_or($data.pemeriksaan_keadaan_umum)?}{else}-{/if}GCS{if: $data.pemeriksaan_gcs}{?=isset_or($data.pemeriksaan_gcs)?}{else}-{/if}
                                    Tekanan Darah{if: $data.pemeriksaan_td}{?=isset_or($data.pemeriksaan_td)?} mmHg{else}-{/if}Nadi{if: $data.pemeriksaan_nadi}{?=isset_or($data.pemeriksaan_nadi)?} x/menit{else}-{/if}
                                    Respirasi{if: $data.pemeriksaan_rr}{?=isset_or($data.pemeriksaan_rr)?} x/menit{else}-{/if}Suhu{if: $data.pemeriksaan_suhu}{?=isset_or($data.pemeriksaan_suhu)?} °C{else}-{/if}
                                    SpO2{if: $data.pemeriksaan_spo2}{?=isset_or($data.pemeriksaan_spo2)?}%{else}-{/if}Berat Badan{if: $data.pemeriksaan_bb}{?=isset_or($data.pemeriksaan_bb)?} kg{else}-{/if}
                                    Tinggi Badan{if: $data.pemeriksaan_tb}{?=isset_or($data.pemeriksaan_tb)?} cm{else}-{/if}Mental{if: $data.pemeriksaan_mental}{?=isset_or($data.pemeriksaan_mental)?}{else}-{/if}
                                    PEMERIKSAAN SISTEM
                                    Susunan Kepala{if: $data.pemeriksaan_susunan_kepala}{?=isset_or($data.pemeriksaan_susunan_kepala)?}{else}-{/if}Susunan Wajah{if: $data.pemeriksaan_susunan_wajah}{?=isset_or($data.pemeriksaan_susunan_wajah)?}{else}-{/if}
                                    Kardiovaskular - Denyut Nadi{if: $data.pemeriksaan_kardiovaskuler_denyut_nadi}{?=isset_or($data.pemeriksaan_kardiovaskuler_denyut_nadi)?}{else}-{/if}Kardiovaskular - Sirkulasi{if: $data.pemeriksaan_kardiovaskuler_sirkulasi}{?=isset_or($data.pemeriksaan_kardiovaskuler_sirkulasi)?}{else}-{/if}
                                    Respirasi - Pola Nafas{if: $data.pemeriksaan_respirasi_pola_nafas}{?=isset_or($data.pemeriksaan_respirasi_pola_nafas)?}{else}-{/if}Respirasi - Suara Nafas{if: $data.pemeriksaan_respirasi_suara_nafas}{?=isset_or($data.pemeriksaan_respirasi_suara_nafas)?}{else}-{/if}
                                    PENILAIAN NYERI
                                    Status Nyeri{if: $data.penilaian_nyeri}{?=isset_or($data.penilaian_nyeri)?}{else}-{/if}Skala Nyeri{if: $data.penilaian_nyeri_skala}{?=isset_or($data.penilaian_nyeri_skala)?}/10{else}-{/if}
                                    Lokasi Nyeri{if: $data.penilaian_nyeri_lokasi}{?=isset_or($data.penilaian_nyeri_lokasi)?}{else}-{/if}Waktu Nyeri{if: $data.penilaian_nyeri_waktu}{?=isset_or($data.penilaian_nyeri_waktu)?}{else}-{/if}
                                    SKRINING GIZI
                                    Penurunan BB{if: $data.skrining_gizi1}{?=isset_or($data.skrining_gizi1)?}{else}-{/if}Asupan Makan{if: $data.skrining_gizi2}{?=isset_or($data.skrining_gizi2)?}{else}-{/if}
                                    Total Skor{if: $data.nilai_total_gizi}{?=isset_or($data.nilai_total_gizi)?}{else}-{/if}Diagnosa Khusus{if: $data.skrining_gizi_diagnosa_khusus}{?=isset_or($data.skrining_gizi_diagnosa_khusus)?}{else}-{/if}
                                    RENCANA KEPERAWATAN
                                    Rencana Keperawatan{if: $data.rencana}{?=isset_or($data.rencana)?}{else}-{/if}
                                    + {/loop} + + + {/if} + {if: $value.catatan_adime_gizi} + + Catatan ADIME Gizi + : + + {loop: $value.catatan_adime_gizi as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    INFORMASI CATATAN ADIME GIZI
                                    Tanggal Catatan{?=isset_or($data.tanggal)?}Petugas{?=isset_or($data.nama)?}
                                    Asesmen{if: $data.asesmen}{?=isset_or($data.asesmen)?}{else}-{/if}
                                    Diagnosis{if: $data.diagnosis}{?=isset_or($data.diagnosis)?}{else}-{/if}
                                    Intervensi{if: $data.intervensi}{?=isset_or($data.intervensi)?}{else}-{/if}
                                    Monitoring{if: $data.monitoring}{?=isset_or($data.monitoring)?}{else}-{/if}
                                    Evaluasi{if: $data.evaluasi}{?=isset_or($data.evaluasi)?}{else}-{/if}
                                    Instruksi{if: $data.instruksi}{?=isset_or($data.instruksi)?}{else}-{/if}
                                    + {/loop} + + + {/if} + {if: $value.penilaian_ulang_nyeri} + + Penilaian Ulang Nyeri + : + + {loop: $value.penilaian_ulang_nyeri as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    PENILAIAN ULANG NYERI
                                    Tanggal Penilaian{?=isset_or($data.tanggal)?}Petugas{?=isset_or($data.nama)?}
                                    PENILAIAN NYERI (PQRST)
                                    Status Nyeri{if: $data.nyeri}{?=isset_or($data.nyeri)?}{else}-{/if}Skala Nyeri{if: $data.skala_nyeri}{?=isset_or($data.skala_nyeri)?}/10{else}-{/if}
                                    Provokes (P) - Pencetus{if: $data.provokes}{?=isset_or($data.provokes)?}{else}-{/if}Keterangan Provokes{if: $data.ket_provokes}{?=isset_or($data.ket_provokes)?}{else}-{/if}
                                    Quality (Q) - Kualitas{if: $data.quality}{?=isset_or($data.quality)?}{else}-{/if}Keterangan Quality{if: $data.ket_quality}{?=isset_or($data.ket_quality)?}{else}-{/if}
                                    Region (R) - Lokasi{if: $data.lokasi}{?=isset_or($data.lokasi)?}{else}-{/if}Menyebar{if: $data.menyebar}{?=isset_or($data.menyebar)?}{else}-{/if}
                                    Timing (T) - Durasi{if: $data.durasi}{?=isset_or($data.durasi)?}{else}-{/if}Nyeri Hilang Dengan{if: $data.nyeri_hilang}{?=isset_or($data.nyeri_hilang)?}{else}-{/if}
                                    Keterangan Tambahan{if: $data.ket_nyeri}{?=isset_or($data.ket_nyeri)?}{else}-{/if}
                                    + {/loop} + + + {/if} + {if: $value.resume_pasien} + + Resume Pasien + : + + {loop: $value.resume_pasien as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {if: $data.diagnosa_sekunder2} + + + + + + + {/if} + {if: $data.diagnosa_sekunder3} + + + + + + + {/if} + {if: $data.diagnosa_sekunder4} + + + + + + + {/if} + + + + + + + + + + + + + + + + + + {if: $data.prosedur_sekunder2} + + + + + + + {/if} + {if: $data.prosedur_sekunder3} + + + + + + + {/if} + + + + + + + + + +
                                    RESUME PASIEN
                                    Dokter{if: $data.nm_dokter}{?=isset_or($data.nm_dokter)?}{else}-{/if}Kondisi Pulang{if: $data.kondisi_pulang}{?=isset_or($data.kondisi_pulang)?}{else}-{/if}
                                    KELUHAN DAN RIWAYAT
                                    Keluhan Utama{if: $data.keluhan_utama}{?=isset_or($data.keluhan_utama)?}{else}-{/if}
                                    Jalannya Penyakit{if: $data.jalannya_penyakit}{?=isset_or($data.jalannya_penyakit)?}{else}-{/if}
                                    PEMERIKSAAN
                                    Pemeriksaan Penunjang{if: $data.pemeriksaan_penunjang}{?=isset_or($data.pemeriksaan_penunjang)?}{else}-{/if}
                                    Hasil Laboratorium{if: $data.hasil_laborat}{?=isset_or($data.hasil_laborat)?}{else}-{/if}
                                    DIAGNOSA
                                    Diagnosa Utama{if: $data.diagnosa_utama}{?=isset_or($data.diagnosa_utama)?}{else}-{/if}Kode ICD-10{if: $data.kd_diagnosa_utama}{?=isset_or($data.kd_diagnosa_utama)?}{else}-{/if}
                                    Diagnosa Sekunder{if: $data.diagnosa_sekunder}{?=isset_or($data.diagnosa_sekunder)?}{else}-{/if}Kode ICD-10{if: $data.kd_diagnosa_sekunder}{?=isset_or($data.kd_diagnosa_sekunder)?}{else}-{/if}
                                    Diagnosa Sekunder 2{?=isset_or($data.diagnosa_sekunder2)?}Kode ICD-10{if: $data.kd_diagnosa_sekunder2}{?=isset_or($data.kd_diagnosa_sekunder2)?}{else}-{/if}
                                    Diagnosa Sekunder 3{?=isset_or($data.diagnosa_sekunder3)?}Kode ICD-10{if: $data.kd_diagnosa_sekunder3}{?=isset_or($data.kd_diagnosa_sekunder3)?}{else}-{/if}
                                    Diagnosa Sekunder 4{?=isset_or($data.diagnosa_sekunder4)?}Kode ICD-10{if: $data.kd_diagnosa_sekunder4}{?=isset_or($data.kd_diagnosa_sekunder4)?}{else}-{/if}
                                    PROSEDUR
                                    Prosedur Utama{if: $data.prosedur_utama}{?=isset_or($data.prosedur_utama)?}{else}-{/if}Kode ICD-9{if: $data.kd_prosedur_utama}{?=isset_or($data.kd_prosedur_utama)?}{else}-{/if}
                                    Prosedur Sekunder{if: $data.prosedur_sekunder}{?=isset_or($data.prosedur_sekunder)?}{else}-{/if}Kode ICD-9{if: $data.kd_prosedur_sekunder}{?=isset_or($data.kd_prosedur_sekunder)?}{else}-{/if}
                                    Prosedur Sekunder 2{?=isset_or($data.prosedur_sekunder2)?}Kode ICD-9{if: $data.kd_prosedur_sekunder2}{?=isset_or($data.kd_prosedur_sekunder2)?}{else}-{/if}
                                    Prosedur Sekunder 3{?=isset_or($data.prosedur_sekunder3)?}Kode ICD-9{if: $data.kd_prosedur_sekunder3}{?=isset_or($data.kd_prosedur_sekunder3)?}{else}-{/if}
                                    OBAT PULANG
                                    Obat Pulang{if: $data.obat_pulang}{?=isset_or($data.obat_pulang)?}{else}-{/if}
                                    + {/loop} + + + {/if} + {if: $value.penilaian_medis_ralan} + + Penilaian Medis Rawat Jalan + : + + {loop: $value.penilaian_medis_ralan as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    PENILAIAN MEDIS RAWAT JALAN
                                    Tanggal{if: $data.tanggal}{?=isset_or($data.tanggal)?}{else}-{/if}Dokter{if: $data.nm_dokter}{?=isset_or($data.nm_dokter)?}{else}-{/if}
                                    Anamnesis{if: $data.anamnesis}{?=isset_or($data.anamnesis)?}{else}-{/if}Hubungan{if: $data.hubungan}{?=isset_or($data.hubungan)?}{else}-{/if}
                                    KELUHAN DAN RIWAYAT
                                    Keluhan Utama{if: $data.keluhan_utama}{?=isset_or($data.keluhan_utama)?}{else}-{/if}
                                    RPS (Riwayat Penyakit Sekarang){if: $data.rps}{?=isset_or($data.rps)?}{else}-{/if}
                                    RPD (Riwayat Penyakit Dahulu){if: $data.rpd}{?=isset_or($data.rpd)?}{else}-{/if}RPK (Riwayat Penyakit Keluarga){if: $data.rpk}{?=isset_or($data.rpk)?}{else}-{/if}
                                    RPO (Riwayat Pengobatan){if: $data.rpo}{?=isset_or($data.rpo)?}{else}-{/if}Alergi{if: $data.alergi}{?=isset_or($data.alergi)?}{else}-{/if}
                                    PEMERIKSAAN FISIK
                                    Keadaan Umum{if: $data.keadaan}{?=isset_or($data.keadaan)?}{else}-{/if}Kesadaran{if: $data.kesadaran}{?=isset_or($data.kesadaran)?}{else}-{/if}
                                    GCS{if: $data.gcs}{?=isset_or($data.gcs)?}{else}-{/if}TD{if: $data.td}{?=isset_or($data.td)?} mmHg{else}-{/if}
                                    Nadi{if: $data.nadi}{?=isset_or($data.nadi)?} x/menit{else}-{/if}RR{if: $data.rr}{?=isset_or($data.rr)?} x/menit{else}-{/if}
                                    Suhu{if: $data.suhu}{?=isset_or($data.suhu)?} °C{else}-{/if}SpO2{if: $data.spo}{?=isset_or($data.spo)?}%{else}-{/if}
                                    BB{if: $data.bb}{?=isset_or($data.bb)?} kg{else}-{/if}TB{if: $data.tb}{?=isset_or($data.tb)?} cm{else}-{/if}
                                    PEMERIKSAAN SISTEM
                                    Kepala{if: $data.kepala}{?=isset_or($data.kepala)?}{else}-{/if}Gigi{if: $data.gigi}{?=isset_or($data.gigi)?}{else}-{/if}
                                    THT{if: $data.tht}{?=isset_or($data.tht)?}{else}-{/if}Thoraks{if: $data.thoraks}{?=isset_or($data.thoraks)?}{else}-{/if}
                                    Abdomen{if: $data.abdomen}{?=isset_or($data.abdomen)?}{else}-{/if}Genital{if: $data.genital}{?=isset_or($data.genital)?}{else}-{/if}
                                    Ekstremitas{if: $data.ekstremitas}{?=isset_or($data.ekstremitas)?}{else}-{/if}Kulit{if: $data.kulit}{?=isset_or($data.kulit)?}{else}-{/if}
                                    KETERANGAN DAN DIAGNOSIS
                                    Keterangan Fisik{if: $data.ket_fisik}{?=isset_or($data.ket_fisik)?}{else}-{/if}
                                    Keterangan Lokalis{if: $data.ket_lokalis}{?=isset_or($data.ket_lokalis)?}{else}-{/if}
                                    Pemeriksaan Penunjang{if: $data.penunjang}{?=isset_or($data.penunjang)?}{else}-{/if}
                                    Diagnosis{if: $data.diagnosis}{?=isset_or($data.diagnosis)?}{else}-{/if}
                                    RENCANA TINDAK LANJUT
                                    Tatalaksana{if: $data.tata}{?=isset_or($data.tata)?}{else}-{/if}
                                    Konsul/Rujuk{if: $data.konsulrujuk}{?=isset_or($data.konsulrujuk)?}{else}-{/if}
                                    + {/loop} + + + {/if} + {if: $value.penilaian_medis_igd} + + Penilaian Medis IGD + : + + {loop: $value.penilaian_medis_igd as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    PENILAIAN MEDIS IGD
                                    Tanggal{if: $data.tanggal}{?=isset_or($data.tanggal)?}{else}-{/if}Dokter{if: $data.nm_dokter}{?=isset_or($data.nm_dokter)?}{else}-{/if}
                                    Anamnesis{if: $data.anamnesis}{?=isset_or($data.anamnesis)?}{else}-{/if}Hubungan{if: $data.hubungan}{?=isset_or($data.hubungan)?}{else}-{/if}
                                    KELUHAN DAN RIWAYAT
                                    Keluhan Utama{if: $data.keluhan_utama}{?=isset_or($data.keluhan_utama)?}{else}-{/if}
                                    RPS (Riwayat Penyakit Sekarang){if: $data.rps}{?=isset_or($data.rps)?}{else}-{/if}
                                    RPD (Riwayat Penyakit Dahulu){if: $data.rpd}{?=isset_or($data.rpd)?}{else}-{/if}RPK (Riwayat Penyakit Keluarga){if: $data.rpk}{?=isset_or($data.rpk)?}{else}-{/if}
                                    RPO (Riwayat Pengobatan){if: $data.rpo}{?=isset_or($data.rpo)?}{else}-{/if}Alergi{if: $data.alergi}{?=isset_or($data.alergi)?}{else}-{/if}
                                    PEMERIKSAAN FISIK
                                    Keadaan Umum{if: $data.keadaan}{?=isset_or($data.keadaan)?}{else}-{/if}Kesadaran{if: $data.kesadaran}{?=isset_or($data.kesadaran)?}{else}-{/if}
                                    GCS{if: $data.gcs}{?=isset_or($data.gcs)?}{else}-{/if}TD{if: $data.td}{?=isset_or($data.td)?} mmHg{else}-{/if}
                                    Nadi{if: $data.nadi}{?=isset_or($data.nadi)?} x/menit{else}-{/if}RR{if: $data.rr}{?=isset_or($data.rr)?} x/menit{else}-{/if}
                                    Suhu{if: $data.suhu}{?=isset_or($data.suhu)?} °C{else}-{/if}SpO2{if: $data.spo}{?=isset_or($data.spo)?}%{else}-{/if}
                                    BB{if: $data.bb}{?=isset_or($data.bb)?} kg{else}-{/if}TB{if: $data.tb}{?=isset_or($data.tb)?} cm{else}-{/if}
                                    PEMERIKSAAN SISTEM
                                    Kepala{if: $data.kepala}{?=isset_or($data.kepala)?}{else}-{/if}Mata{if: $data.mata}{?=isset_or($data.mata)?}{else}-{/if}
                                    Gigi{if: $data.gigi}{?=isset_or($data.gigi)?}{else}-{/if}Leher{if: $data.leher}{?=isset_or($data.leher)?}{else}-{/if}
                                    Thoraks{if: $data.thoraks}{?=isset_or($data.thoraks)?}{else}-{/if}Abdomen{if: $data.abdomen}{?=isset_or($data.abdomen)?}{else}-{/if}
                                    Genital{if: $data.genital}{?=isset_or($data.genital)?}{else}-{/if}Ekstremitas{if: $data.ekstremitas}{?=isset_or($data.ekstremitas)?}{else}-{/if}
                                    KETERANGAN DAN DIAGNOSIS
                                    Keterangan Fisik{if: $data.ket_fisik}{?=isset_or($data.ket_fisik)?}{else}-{/if}
                                    Keterangan Lokalis{if: $data.ket_lokalis}{?=isset_or($data.ket_lokalis)?}{else}-{/if}
                                    EKG{if: $data.ekg}{?=isset_or($data.ekg)?}{else}-{/if}Radiologi{if: $data.rad}{?=isset_or($data.rad)?}{else}-{/if}
                                    Laboratorium{if: $data.lab}{?=isset_or($data.lab)?}{else}-{/if}
                                    Diagnosis{if: $data.diagnosis}{?=isset_or($data.diagnosis)?}{else}-{/if}
                                    RENCANA TINDAK LANJUT
                                    Tatalaksana{if: $data.tata}{?=isset_or($data.tata)?}{else}-{/if}
                                    + {/loop} + + + {/if} + {if: $value.penilaian_medis_ranap} + + Penilaian Medis Rawat Inap + : + + {loop: $value.penilaian_medis_ranap as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    PENILAIAN MEDIS RAWAT INAP
                                    Tanggal{if: $data.tanggal}{?=isset_or($data.tanggal)?}{else}-{/if}Dokter{if: $data.nm_dokter}{?=isset_or($data.nm_dokter)?}{else}-{/if}
                                    Anamnesis{if: $data.anamnesis}{?=isset_or($data.anamnesis)?}{else}-{/if}
                                    KELUHAN DAN RIWAYAT
                                    Keluhan Utama{if: $data.keluhan_utama}{?=isset_or($data.keluhan_utama)?}{else}-{/if}
                                    RPS (Riwayat Penyakit Sekarang){if: $data.rps}{?=isset_or($data.rps)?}{else}-{/if}
                                    RPD (Riwayat Penyakit Dahulu){if: $data.rpd}{?=isset_or($data.rpd)?}{else}-{/if}RPK (Riwayat Penyakit Keluarga){if: $data.rpk}{?=isset_or($data.rpk)?}{else}-{/if}
                                    RPO (Riwayat Pengobatan){if: $data.rpo}{?=isset_or($data.rpo)?}{else}-{/if}Alergi{if: $data.alergi}{?=isset_or($data.alergi)?}{else}-{/if}
                                    PEMERIKSAAN FISIK
                                    Keadaan Umum{if: $data.keadaan}{?=isset_or($data.keadaan)?}{else}-{/if}Kesadaran{if: $data.kesadaran}{?=isset_or($data.kesadaran)?}{else}-{/if}
                                    GCS{if: $data.gcs}{?=isset_or($data.gcs)?}{else}-{/if}TD{if: $data.td}{?=isset_or($data.td)?} mmHg{else}-{/if}
                                    Nadi{if: $data.nadi}{?=isset_or($data.nadi)?} x/menit{else}-{/if}RR{if: $data.rr}{?=isset_or($data.rr)?} x/menit{else}-{/if}
                                    Suhu{if: $data.suhu}{?=isset_or($data.suhu)?} °C{else}-{/if}SpO2{if: $data.spo}{?=isset_or($data.spo)?}%{else}-{/if}
                                    BB{if: $data.bb}{?=isset_or($data.bb)?} kg{else}-{/if}TB{if: $data.tb}{?=isset_or($data.tb)?} cm{else}-{/if}
                                    PEMERIKSAAN SISTEM
                                    Mata{if: $data.mata}{?=isset_or($data.mata)?}{else}-{/if}Gigi{if: $data.gigi}{?=isset_or($data.gigi)?}{else}-{/if}
                                    THT{if: $data.tht}{?=isset_or($data.tht)?}{else}-{/if}Thoraks{if: $data.thoraks}{?=isset_or($data.thoraks)?}{else}-{/if}
                                    Jantung{if: $data.jantung}{?=isset_or($data.jantung)?}{else}-{/if}Paru{if: $data.paru}{?=isset_or($data.paru)?}{else}-{/if}
                                    Abdomen{if: $data.abdomen}{?=isset_or($data.abdomen)?}{else}-{/if}Genital{if: $data.genital}{?=isset_or($data.genital)?}{else}-{/if}
                                    Ekstremitas{if: $data.ekstremitas}{?=isset_or($data.ekstremitas)?}{else}-{/if}Kulit{if: $data.kulit}{?=isset_or($data.kulit)?}{else}-{/if}
                                    KETERANGAN DAN DIAGNOSIS
                                    Keterangan Fisik{if: $data.ket_fisik}{?=isset_or($data.ket_fisik)?}{else}-{/if}
                                    Keterangan Lokalis{if: $data.ket_lokalis}{?=isset_or($data.ket_lokalis)?}{else}-{/if}
                                    Laboratorium{if: $data.lab}{?=isset_or($data.lab)?}{else}-{/if}Radiologi{if: $data.rad}{?=isset_or($data.rad)?}{else}-{/if}
                                    Penunjang{if: $data.penunjang}{?=isset_or($data.penunjang)?}{else}-{/if}
                                    Diagnosis{if: $data.diagnosis}{?=isset_or($data.diagnosis)?}{else}-{/if}
                                    RENCANA TINDAK LANJUT
                                    Tatalaksana{if: $data.tata}{?=isset_or($data.tata)?}{else}-{/if}
                                    Edukasi{if: $data.edukasi}{?=isset_or($data.edukasi)?}{else}-{/if}
                                    + {/loop} + + + {/if} + {if: $value.laporan_operasi} + + Laporan Operasi + : + + {loop: $value.laporan_operasi as $data} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    LAPORAN OPERASI
                                    Tanggal Operasi{if: $data.tanggal}{?=isset_or($data.tanggal)?}{else}-{/if}Selesai Operasi{if: $data.selesaioperasi}{?=isset_or($data.selesaioperasi)?}{else}-{/if}
                                    DIAGNOSA
                                    Diagnosa Pre-Operasi{if: $data.diagnosa_preop}{?=isset_or($data.diagnosa_preop)?}{else}-{/if}
                                    Diagnosa Post-Operasi{if: $data.diagnosa_postop}{?=isset_or($data.diagnosa_postop)?}{else}-{/if}
                                    DETAIL OPERASI
                                    Jaringan yang Dieksekusi{if: $data.jaringan_dieksekusi}{?=isset_or($data.jaringan_dieksekusi)?}{else}-{/if}
                                    Permintaan PA{if: $data.permintaan_pa}{?=isset_or($data.permintaan_pa)?}{else}-{/if}
                                    CATATAN OPERASI
                                    Laporan Operasi{if: $data.laporan_operasi}{?=isset_or($data.laporan_operasi)?}{else}-{/if}
                                    + {/loop} + + + {/if} + {if: $value.mlite_odontogram} + + Riwayat Odontogram + : + + + + + + + + + + + + {loop: $value.mlite_odontogram as $data} + + + + + + + {/loop} + +
                                    Tanggal InputElemen GigiKondisiCatatan
                                    {if: $data.tgl_input}{?=isset_or($data.tgl_input)?}{else}-{/if}{if: $data.pemeriksaan}{?=isset_or($data.pemeriksaan)?}{else}-{/if}{if: $data.kondisi}{?=isset_or($data.kondisi)?}{else}-{/if}{if: $data.catatan}{?=isset_or($data.catatan)?}{else}-{/if}
                                    + + + {/if} + {if: $value.rsgm_data} + + Data-Data + : + + {loop: $value.rsgm_data as $table_data} +
                                    +
                                    {?=ucwords(str_replace(['rsgm__', '_'], ['',' '], $key))?}
                                    + {loop: $table_data as $row_data} + + {loop: $row_data} + + + + + {/loop} +
                                    {?=ucwords(str_replace('_', ' ', $key))?}{?=isset_or($value)?}
                                    + {/loop} +
                                    + {/loop} + + + {/if}
                                    {/loop} diff --git a/plugins/pasien/view/admin/settings.html b/plugins/pasien/view/admin/settings.html index 75c7e6143..295521486 100644 --- a/plugins/pasien/view/admin/settings.html +++ b/plugins/pasien/view/admin/settings.html @@ -1,4 +1,4 @@ -
                                    +
                                    @@ -8,11 +8,11 @@

                                    Pengaturan No RM Terakhir

                                    - +
                                    -
                                    + diff --git a/plugins/pasien/view/admin/uploadphoto.html b/plugins/pasien/view/admin/uploadphoto.html index 510b6b135..727812d81 100644 --- a/plugins/pasien/view/admin/uploadphoto.html +++ b/plugins/pasien/view/admin/uploadphoto.html @@ -16,7 +16,7 @@ function SimpanFoto() { - var no_rkm_medis = '{$no_rkm_medis}'; + var no_rkm_medis = '{?=isset_or($no_rkm_medis)?}'; var shutter = new Audio(); shutter.autoplay = false; shutter.src = navigator.userAgent.match(/Firefox/) ? '{?=url()?}/plugins/pasien/audio/shutter.ogg' : '{?=url()?}/plugins/pasien/audio/shutter.mp3'; diff --git a/plugins/pasien/view/admin/vclaim.bynik.html b/plugins/pasien/view/admin/vclaim.bynik.html index 7dfb8bb25..ffc185097 100644 --- a/plugins/pasien/view/admin/vclaim.bynik.html +++ b/plugins/pasien/view/admin/vclaim.bynik.html @@ -157,7 +157,7 @@

                                    Detail data kepesertan BPJS

                                    diff --git a/plugins/pcare/view/admin/bridgingpcare.html b/plugins/pcare/view/admin/bridgingpcare.html index f16c41bdd..e2ef164b0 100644 --- a/plugins/pcare/view/admin/bridgingpcare.html +++ b/plugins/pcare/view/admin/bridgingpcare.html @@ -15,19 +15,19 @@
                                    - +
                                    - +
                                    - +
                                    @@ -71,55 +71,55 @@
                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    - +
                                    @@ -156,16 +156,28 @@

                                      -
                                      +
                                      +
                                      + + +
                                      +
                                      +
                                      - +
                                      -
                                      +
                                      +
                                      + + +
                                      +
                                      +
                                      - - + +
                                      @@ -220,15 +232,15 @@

                                      - -
                                        + +
                                          - -
                                            + +

                                              @@ -309,7 +321,7 @@

                                              - +

                                              @@ -399,24 +411,24 @@

                                              Data Pendaftaran

                                              {loop: $bridging_pcare} - {$value.tgl_kunjungan} - {$value.no_rawat} - {$value.no_rkm_medis} - {$value.nm_pasien} - {$value.nomor_jaminan} - {$value.nama_poli} - {$value.subyektif} + {?=isset_or($value.tgl_kunjungan)?} + {?=isset_or($value.no_rawat)?} + {?=isset_or($value.no_rkm_medis)?} + {?=isset_or($value.nm_pasien)?} + {?=isset_or($value.nomor_jaminan)?} + {?=isset_or($value.nama_poli)?} + {?=isset_or($value.subyektif)?} {?=($value.kunjungan_sakit === 'true') ? 'Kunjungan Sakit' : 'Kunjungan Sehat'?} - {$value.sistole} - {$value.diastole} - {$value.berat} - {$value.tinggi} - {$value.respirasi} - {$value.lingkar_perut} - {$value.nadi} - {$value.terapi} - {$value.nomor_urut} - {$value.status_kirim} + {?=isset_or($value.sistole)?} + {?=isset_or($value.diastole)?} + {?=isset_or($value.berat)?} + {?=isset_or($value.tinggi)?} + {?=isset_or($value.respirasi)?} + {?=isset_or($value.lingkar_perut)?} + {?=isset_or($value.nadi)?} + {?=isset_or($value.terapi)?} + {?=isset_or($value.nomor_urut)?} + {?=isset_or($value.status_kirim)?} {/loop} @@ -534,6 +546,14 @@

                                              Data Pendaftaran

                                              var anamnesa = $('textarea[name=anamnesa]').val(); var getStatusPulang = $('input:text[name=getStatusPulang]').val(); var getKesadaran = $('input:text[name=getKesadaran]').val(); + var getAlergi1 = $('input:text[name=getAlergi1]').val(); + var getAlergi2 = $('input:text[name=getAlergi2]').val(); + var getAlergi3 = $('input:text[name=getAlergi3]').val(); + var getPrognosa = $('input:text[name=getPrognosa]').val(); + + var terapiObat = $('input:text[name=terapiObat]').val(); + var terapiNonObat = $('input:text[name=terapiNonObat]').val(); + var getDiagnosa1 = $('input:text[name=getDiagnosa1]').val(); var getDiagnosa2 = $('input:text[name=getDiagnosa2]').val(); var getDiagnosa3 = $('input:text[name=getDiagnosa3]').val(); @@ -587,6 +607,12 @@

                                              Data Pendaftaran

                                              anamnesa: anamnesa, getStatusPulang: getStatusPulang, getKesadaran: getKesadaran, + getAlergi1: getAlergi1, + getAlergi2: getAlergi2, + getAlergi3: getAlergi3, + getPrognosa: getPrognosa, + terapiObat: terapiObat, + terapiNonObat: terapiNonObat, getDiagnosa1: getDiagnosa1, getDiagnosa2: getDiagnosa2, getDiagnosa3: getDiagnosa3, @@ -601,7 +627,8 @@

                                              Data Pendaftaran

                                              getFaskesKhusus: getFaskesKhusus, catatan: catatan, getTACC: getTACC, - alasanTacc: alasanTacc + alasanTacc: alasanTacc, + pendaftaran: 'false' } ,function(data) { console.log(data); // data = JSON.parse(data); @@ -609,6 +636,127 @@

                                              Data Pendaftaran

                                              $('.tampildatapendaftaran').load(baseURL + '/pcare/bridgingpcarependaftarantampil/' + id_pasien + '?t=' + mlite.token); }); }); + $(".editbridging").click(function(){ + var baseURL = mlite.url + '/' + mlite.admin; + var id_pasien = $('input:text[name=id_pasien_bridging]').val(); + var id_pendaftaran = $('input:text[name=id_pendaftaran_bridging]').val(); + var noKartu = $('input:text[name=noKartu]').val(); + var kdProviderPeserta = $('input:text[name=kdProviderPeserta]').val(); + var tglDaftar = $('#tglDaftar').val(); + var kunjSakit = $('select[name=kunjSakit]').val(); + var getPoli = $('input:text[name=getPoli]').val(); + var kode_tkp = $('select[name=kdTkp]').val(); + var keluhan = $('textarea[name=keluhan]').val(); + var sistole = $('input:text[name=sistole_bridging]').val(); + var diastole = $('input:text[name=diastole_bridging]').val(); + var nadi = $('input:text[name=nadi_bridging]').val(); + var respirasi = $('input:text[name=respirasi_bridging]').val(); + var suhu_tubuh = $('input:text[name=suhu_tubuh_bridging]').val(); + var tinggi = $('input:text[name=tinggi_bridging]').val(); + var berat = $('input:text[name=berat_bridging]').val(); + var lingkar_perut = $('input:text[name=lingkar_perut_bridging]').val(); + if($('#kunjungan_bridging').is(':checked')){ + var kunjungan = 'true'; + } + else{ + var kunjungan = 'false'; + } + var tglPulang = $('#tglPulang').val(); + var tglKunjungan = $('input:text[name=tglKunjungan]').val(); + var getDokter = $('input:text[name=getDokter]').val(); + var anamnesa = $('textarea[name=anamnesa]').val(); + var terapi = $('textarea[name=terapi_bridging]').val(); + var getStatusPulang = $('input:text[name=getStatusPulang]').val(); + var getKesadaran = $('input:text[name=getKesadaran]').val(); + + var getAlergi1 = $('input:text[name=getAlergi1]').val(); + var getAlergi2 = $('input:text[name=getAlergi2]').val(); + var getAlergi3 = $('input:text[name=getAlergi3]').val(); + var getPrognosa = $('input:text[name=getPrognosa]').val(); + + var terapiObat = $('input:text[name=terapiObat]').val(); + var terapiNonObat = $('input:text[name=terapiNonObat]').val(); + + var getDiagnosa1 = $('input:text[name=getDiagnosa1]').val(); + var getDiagnosa2 = $('input:text[name=getDiagnosa2]').val(); + var getDiagnosa3 = $('input:text[name=getDiagnosa3]').val(); + if($('#rujukanlanjut').is(':checked')){ + var rujukanlanjut = 'true'; + } + else{ + var rujukanlanjut = 'false'; + } + if($('#rujukankhusus').is(':checked')){ + var rujukankhusus = 'true'; + } + else{ + var rujukankhusus = 'false'; + } + var getReferensiSpesialis = $('input:text[name=getReferensiSpesialis]').val(); + var getReferensiSubSpesialis = $('input:text[name=getReferensiSubSpesialis]').val(); + var getReferensiSarana = $('input:text[name=getReferensiSarana]').val(); + var tglEstRujuk = $('#tglEstRujuk').val(); + var getReferensiFaskesSpesialis = $('input:text[name=getReferensiFaskesSpesialis]').val(); + var getReferensiKhusus = $('input:text[name=getReferensiKhusus]').val(); + var getFaskesKhusus = $('input:text[name=getFaskesKhusus]').val(); + var catatan = $('textarea[name=catatan]').val(); + var getTACC = $('select[name=getTACC]').val(); + var alasanTacc = $('#getTACC option:selected').text(); + var url = baseURL + '/pcare/bridgingpcareedit/?t=' + mlite.token; + //alert(tglPulang + ' - ' + sistole); + $.post(url,{ + id_pasien: id_pasien, + id_pendaftaran: id_pendaftaran, + noKartu: noKartu, + kdProviderPeserta: kdProviderPeserta, + tglDaftar: tglDaftar, + kunjSakit: kunjSakit, + getPoli: getPoli, + keluhan: keluhan, + kode_tkp: kode_tkp, + sistole: sistole, + diastole: diastole, + nadi: nadi, + respirasi: respirasi, + suhu_tubuh: suhu_tubuh, + tinggi: tinggi, + berat: berat, + lingkar_perut: lingkar_perut, + kunjungan: kunjungan, + tglPulang: tglPulang, + tglKunjungan: tglKunjungan, + getDokter: getDokter, + anamnesa: anamnesa, + terapi: terapi, + getStatusPulang: getStatusPulang, + getKesadaran: getKesadaran, + getAlergi1: getAlergi1, + getAlergi2: getAlergi2, + getAlergi3: getAlergi3, + getPrognosa: getPrognosa, + terapiObat: terapiObat, + terapiNonObat: terapiNonObat, + getDiagnosa1: getDiagnosa1, + getDiagnosa2: getDiagnosa2, + getDiagnosa3: getDiagnosa3, + rujukanlanjut: rujukanlanjut, + rujukankhusus: rujukankhusus, + getReferensiSpesialis: getReferensiSpesialis, + getReferensiSubSpesialis: getReferensiSubSpesialis, + getReferensiSarana: getReferensiSarana, + tglEstRujuk: tglEstRujuk, + getReferensiFaskesSpesialis: getReferensiFaskesSpesialis, + getReferensiKhusus: getReferensiKhusus, + getFaskesKhusus: getFaskesKhusus, + catatan: catatan, + getTACC: getTACC, + alasanTacc: alasanTacc + } ,function(data) { + console.log(data); + bootbox.alert(data); + $('.tampildatapendaftaran').load(baseURL + '/pcare/bridgingpcarependaftarantampil/' + id_pasien + '?t=' + mlite.token); + }); + }); $(".deletependaftaran").click(function(){ var baseURL = mlite.url + '/' + mlite.admin; var id_pasien = $('input:text[name=id_pasien_bridging]').val(); @@ -744,9 +892,9 @@

                                              Data Pendaftaran

                                              var json_obj = [data]; var output=''; if(json_obj[0].metaData.code == 200) { - var kesadaran = json_obj[0].response.list; - for (var i in kesadaran) { - output+='
                                            • ' + kesadaran[i].kdSadar + ': ' + kesadaran[i].nmSadar + '
                                            • '; + var response = json_obj[0].response.list; + for (var i in response) { + output+='
                                            • ' + response[i].kdAlergi + ': ' + response[i].nmAlergi + '
                                            • '; } } else { output+='
                                            • ' + json_obj[0].metaData.message + '
                                            • '; @@ -761,9 +909,80 @@

                                              Data Pendaftaran

                                              }); $('#alergiList1').on('click', 'li', function(){ $('#getAlergi1').val($(this).text()); - var getKesadaran = $('#getAlergi1').val(); + var getAlergi1 = $('#getAlergi1').val(); $('#alergiList1').fadeOut(); }); + + $('#getAlergi2').keyup(function(){ + var query = $(this).val(); + if(query != '') + { + $.ajax({ + url: '{?=url()?}/{?=ADMIN?}/pcare/alergi/02?t={?=$_SESSION['token']?}', + method:"GET", + data:{}, + success:function(data) + { + var data = JSON.parse(data); + var json_obj = [data]; + var output=''; + if(json_obj[0].metaData.code == 200) { + var response = json_obj[0].response.list; + for (var i in response) { + output+='
                                            • ' + response[i].kdAlergi + ': ' + response[i].nmAlergi + '
                                            • '; + } + } else { + output+='
                                            • ' + json_obj[0].metaData.message + '
                                            • '; + } + output+=''; + //console.log(output); + $('#alergiList2').fadeIn(); + $('#alergiList2').html(output).show(); + } + }); + } + }); + $('#alergiList2').on('click', 'li', function(){ + $('#getAlergi2').val($(this).text()); + var getAlergi2 = $('#getAlergi2').val(); + $('#alergiList2').fadeOut(); + }); + + $('#getAlergi3').keyup(function(){ + var query = $(this).val(); + if(query != '') + { + $.ajax({ + url: '{?=url()?}/{?=ADMIN?}/pcare/alergi/03?t={?=$_SESSION['token']?}', + method:"GET", + data:{}, + success:function(data) + { + var data = JSON.parse(data); + var json_obj = [data]; + var output=''; + if(json_obj[0].metaData.code == 200) { + var response = json_obj[0].response.list; + for (var i in response) { + output+='
                                            • ' + response[i].kdAlergi + ': ' + response[i].nmAlergi + '
                                            • '; + } + } else { + output+='
                                            • ' + json_obj[0].metaData.message + '
                                            • '; + } + output+=''; + //console.log(output); + $('#alergiList3').fadeIn(); + $('#alergiList3').html(output).show(); + } + }); + } + }); + $('#alergiList3').on('click', 'li', function(){ + $('#getAlergi3').val($(this).text()); + var getAlergi3 = $('#getAlergi3').val(); + $('#alergiList3').fadeOut(); + }); + diff --git a/plugins/pcare/view/admin/bridgingpcare.kunjungan.tampil.html b/plugins/pcare/view/admin/bridgingpcare.kunjungan.tampil.html index 80855ab27..5d7b08c36 100644 --- a/plugins/pcare/view/admin/bridgingpcare.kunjungan.tampil.html +++ b/plugins/pcare/view/admin/bridgingpcare.kunjungan.tampil.html @@ -34,36 +34,36 @@

                                              Data Kunjungan Tampil

                                              {loop: $bridging_pcare} - {$value.tgl_kunjungan} - {$value.nomor_kunjungan} - - - + {?=isset_or($value.tgl_kunjungan)?} + {?=isset_or($value.nomor_kunjungan)?} + + + - {$value.no_rawat} - {$value.no_rkm_medis} - {$value.nm_pasien} - {$value.nomor_jaminan} - {$value.nama_poli} - {$value.subyektif} + {?=isset_or($value.no_rawat)?} + {?=isset_or($value.no_rkm_medis)?} + {?=isset_or($value.nm_pasien)?} + {?=isset_or($value.nomor_jaminan)?} + {?=isset_or($value.nama_poli)?} + {?=isset_or($value.subyektif)?} {?=($value.kunjungan_sakit === 'true') ? 'Kunjungan Sakit' : 'Kunjungan Sehat'?} - {$value.sistole} - {$value.diastole} - {$value.berat} - {$value.tinggi} - {$value.respirasi} - {$value.lingkar_perut} - {$value.nadi} - {$value.terapi} - {$value.nomor_urut} - {$value.nama_kesadaran} - {$value.terapi} - {$value.nama_status_pulang} - {$value.tgl_pulang} - {$value.nama_dokter} - {$value.nama_diagnosa1} - {$value.nama_diagnosa2} - {$value.nama_diagnosa3} + {?=isset_or($value.sistole)?} + {?=isset_or($value.diastole)?} + {?=isset_or($value.berat)?} + {?=isset_or($value.tinggi)?} + {?=isset_or($value.respirasi)?} + {?=isset_or($value.lingkar_perut)?} + {?=isset_or($value.nadi)?} + {?=isset_or($value.terapi)?} + {?=isset_or($value.nomor_urut)?} + {?=isset_or($value.nama_kesadaran)?} + {?=isset_or($value.terapi)?} + {?=isset_or($value.nama_status_pulang)?} + {?=isset_or($value.tgl_pulang)?} + {?=isset_or($value.nama_dokter)?} + {?=isset_or($value.nama_diagnosa1)?} + {?=isset_or($value.nama_diagnosa2)?} + {?=isset_or($value.nama_diagnosa3)?} {/loop} diff --git a/plugins/pcare/view/admin/bridgingpcare.obat.html b/plugins/pcare/view/admin/bridgingpcare.obat.html index 551644142..c88f3ffc2 100644 --- a/plugins/pcare/view/admin/bridgingpcare.obat.html +++ b/plugins/pcare/view/admin/bridgingpcare.obat.html @@ -11,7 +11,7 @@
                                              diff --git a/plugins/pcare/view/admin/settings.html b/plugins/pcare/view/admin/settings.html index 4150315c6..8bbba862e 100644 --- a/plugins/pcare/view/admin/settings.html +++ b/plugins/pcare/view/admin/settings.html @@ -1,4 +1,4 @@ -
                                              +
                                              @@ -13,60 +13,64 @@

                                              Katalog

                                              -

                                              {$settings.title}

                                              +

                                              {?=isset_or($settings.title)?}

                                              - +
                                              - +
                                              - +
                                              - +
                                              - + +
                                              +
                                              + +
                                              - +
                                              - +
                                              - +
                                              - +
                                              - +
                                              - +
                                              - +
                                              -
                                              + diff --git a/plugins/pcare/view/admin/status.pulang.html b/plugins/pcare/view/admin/status.pulang.html index 14edc9697..056491617 100644 --- a/plugins/pcare/view/admin/status.pulang.html +++ b/plugins/pcare/view/admin/status.pulang.html @@ -56,7 +56,7 @@

                                              Respons result

                                              \ No newline at end of file + diff --git a/plugins/penjualan/view/admin/manage.html b/plugins/penjualan/view/admin/manage.html index c51320c69..bdf53d77c 100644 --- a/plugins/penjualan/view/admin/manage.html +++ b/plugins/penjualan/view/admin/manage.html @@ -1,21 +1,21 @@ - + diff --git a/plugins/penjualan/view/admin/order.html b/plugins/penjualan/view/admin/order.html index 0c2af6d1c..535d5e4ac 100644 --- a/plugins/penjualan/view/admin/order.html +++ b/plugins/penjualan/view/admin/order.html @@ -7,7 +7,7 @@

                                              Informasi Penjualan

                                              - +
                                              @@ -44,9 +44,9 @@

                                              Informasi Penjualan

                                              @@ -62,7 +62,7 @@

                                              Informasi Penjualan

                                              - +
                                              @@ -88,11 +88,11 @@

                                              Rincian Penjualan

                                              {loop: $rincian_penjualan} - {$value.no} - {$value.nama_barang} - {$value.jumlah} - {$value.harga} - + {?=isset_or($value.no)?} + {?=isset_or($value.nama_barang)?} + {?=isset_or($value.jumlah)?} + {?=isset_or($value.harga)?} + {/loop} @@ -104,7 +104,7 @@

                                              Rincian Penjualan

                                              - +
                                              @@ -117,7 +117,7 @@

                                              Rincian Penjualan

                                              - +
                                              @@ -234,6 +234,23 @@

                                              Rincian Penjualan

                                              }); }); +$("#rincian_penjualan").on("click",".hapus_rincian_penjualan", function(event) { + var id = $(this).attr("data-id"); + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + bootbox.confirm("Apakah ada ingin mengahous item dengan id = " + id + "?", function(result){ + // ketika ditekan tombol ok + if (result){ + // mengirimkan perintah penghapusan + var url = baseURL + '/penjualan/hapusitempenjualan?t=' + mlite.token; + $.post(url, {id : id + } ,function(data) { + location.reload(); + }); + } + }); +}); + $("#form_rincian_penjualan").on("click","#simpan_billing_penjualan", function(event){ var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); diff --git a/plugins/penjualan/view/admin/rincian.penjualan.html b/plugins/penjualan/view/admin/rincian.penjualan.html index 46330daf4..6b2743707 100644 --- a/plugins/penjualan/view/admin/rincian.penjualan.html +++ b/plugins/penjualan/view/admin/rincian.penjualan.html @@ -11,12 +11,12 @@ {loop: $rincian_penjualan} - {$value.no} - {$value.nama_barang} - {$value.jumlah} - {$value.harga} - - + {?=isset_or($value.no)?} + {?=isset_or($value.nama_barang)?} + {?=isset_or($value.jumlah)?} + {?=isset_or($value.harga)?} + + {/loop} - \ No newline at end of file + diff --git a/plugins/presensi/Admin.php b/plugins/presensi/Admin.php index 0593cd0a9..335962b9d 100644 --- a/plugins/presensi/Admin.php +++ b/plugins/presensi/Admin.php @@ -6,6 +6,7 @@ class Admin extends AdminModule { + public $assign; public function navigation() { @@ -14,7 +15,9 @@ public function navigation() 'Kelola' => 'manage', 'Presensi Masuk' => 'presensi', 'Rekap Presensi' => 'rekap_presensi', + 'Rekap Bulanan' => 'rekap_bulanan', 'Barcode Presensi' => 'barcode', + 'Jam Masuk' => 'jammasuk', 'Jam Jaga' => 'jamjaga', 'Jadwal Pegawai' => 'jadwal', 'Jadwal Tambahan' => 'jadwal_tambahan', @@ -25,6 +28,7 @@ public function navigation() 'Kelola' => 'manage', 'Presensi Masuk' => 'presensi', 'Rekap Presensi' => 'rekap_presensi', + 'Rekap Bulanan' => 'rekap_bulanan', 'Jadwal Pegawai' => 'jadwal', 'Jadwal Tambahan' => 'jadwal_tambahan' ]; @@ -37,7 +41,9 @@ public function getManage() $sub_modules = [ ['name' => 'Presensi', 'url' => url([ADMIN, 'presensi', 'presensi']), 'icon' => 'cubes', 'desc' => 'Presensi Pegawai'], ['name' => 'Rekap Presensi', 'url' => url([ADMIN, 'presensi', 'rekap_presensi']), 'icon' => 'cubes', 'desc' => 'Rekap Presensi Pegawai'], + ['name' => 'Rekap Bulanan', 'url' => url([ADMIN, 'presensi', 'rekap_bulanan']), 'icon' => 'cubes', 'desc' => 'Rekap Bulanan Presensi Pegawai'], ['name' => 'Barcode Presensi', 'url' => url([ADMIN, 'presensi', 'barcode']), 'icon' => 'cubes', 'desc' => 'Barcode Presensi Pegawai'], + ['name' => 'Jam Masuk', 'url' => url([ADMIN, 'presensi', 'jammasuk']), 'icon' => 'cubes', 'desc' => 'Jam Masuk Pegawai'], ['name' => 'Jam Jaga', 'url' => url([ADMIN, 'presensi', 'jamjaga']), 'icon' => 'cubes', 'desc' => 'Jam Jaga Pegawai'], ['name' => 'Jadwal', 'url' => url([ADMIN, 'presensi', 'jadwal']), 'icon' => 'cubes', 'desc' => 'Jadwal Pegawai'], ['name' => 'Jadwal Tambahan', 'url' => url([ADMIN, 'presensi', 'jadwal_tambahan']), 'icon' => 'cubes', 'desc' => 'Jadwal Tambahan Pegawai'], @@ -47,11 +53,12 @@ public function getManage() $sub_modules = [ ['name' => 'Presensi', 'url' => url([ADMIN, 'presensi', 'presensi']), 'icon' => 'cubes', 'desc' => 'Presensi Pegawai'], ['name' => 'Rekap Presensi', 'url' => url([ADMIN, 'presensi', 'rekap_presensi']), 'icon' => 'cubes', 'desc' => 'Rekap Presensi Pegawai'], + ['name' => 'Rekap Bulanan', 'url' => url([ADMIN, 'presensi', 'rekap_bulanan']), 'icon' => 'cubes', 'desc' => 'Rekap Bulanan Presensi Pegawai'], ['name' => 'Jadwal', 'url' => url([ADMIN, 'presensi', 'jadwal']), 'icon' => 'cubes', 'desc' => 'Jadwal Pegawai'], ['name' => 'Jadwal Tambahan', 'url' => url([ADMIN, 'presensi', 'jadwal_tambahan']), 'icon' => 'cubes', 'desc' => 'Jadwal Tambahan Pegawai'] ]; } - return $this->draw('manage.html', ['sub_modules' => $sub_modules]); + return $this->draw('manage.html', ['sub_modules' => htmlspecialchars_array($sub_modules)]); } public function getJamJaga($page = 1) @@ -70,8 +77,8 @@ public function getJamJaga($page = 1) $totalRecords = $this->db('jam_jaga') ->like('shift', '%' . $phrase . '%') ->orLike('dep_id', '%' . $phrase . '%') - ->toArray(); - $pagination = new \Systems\Lib\Pagination($page, count($totalRecords), 10, url([ADMIN, 'presensi', 'jamjaga', '%d'])); + ->count(); + $pagination = new \Systems\Lib\Pagination($page, $totalRecords, 10, url([ADMIN, 'presensi', 'jamjaga', '%d', '?s=' . $phrase . '&status=' . $status])); $this->assign['pagination'] = $pagination->nav('pagination', '5'); $this->assign['totalRecords'] = $totalRecords; @@ -88,19 +95,18 @@ public function getJamJaga($page = 1) if (count($rows)) { foreach ($rows as $row) { $row = htmlspecialchars_array($row); - // $row['editURL'] = url([ADMIN, 'master', 'petugasedit', $row['nip']]); - // $row['delURL'] = url([ADMIN, 'master', 'petugasdelete', $row['nip']]); - // $row['restoreURL'] = url([ADMIN, 'master', 'petugasrestore', $row['nip']]); - // $row['viewURL'] = url([ADMIN, 'master', 'petugasview', $row['nip']]); $this->assign['list'][] = $row; } } - $this->assign['getStatus'] = isset($_GET['status']); $this->assign['addURL'] = url([ADMIN, 'presensi', 'jagaadd']); - // $this->assign['printURL'] = url([ADMIN, 'master', 'petugasprint']); - return $this->draw('index.html', ['jamjaga' => $this->assign]); + $pagination = $this->assign['pagination']; + unset($this->assign['pagination']); + $jamjaga = htmlspecialchars_array($this->assign); + $jamjaga['pagination'] = $pagination; + + return $this->draw('jam_jaga.html', ['jamjaga' => $jamjaga]); } public function getJagaAdd() @@ -121,8 +127,9 @@ public function getJagaAdd() $this->assign['dep_id'] = $this->db('departemen')->toArray(); $this->assign['shift'] = $this->db('jam_masuk')->toArray(); + $this->assign['addURL'] = url([ADMIN, 'presensi', 'jagaadd']); - return $this->draw('jagaadd.form.html', ['jagaadd' => $this->assign]); + return $this->draw('jagaadd.form.html', ['jagaadd' => htmlspecialchars_array($this->assign)]); } public function postJagaSave($id = null) @@ -161,6 +168,24 @@ public function postJagaSave($id = null) redirect($location, $_POST); } + public function getJagaDel($id = null) + { + $this->_addHeaderFiles(); + if (!$id) { + $this->notify('failure', 'ID tidak ditemukan'); + redirect(url([ADMIN, 'presensi', 'jamjaga'])); + } + + $query = $this->db('jam_jaga')->where('no_id', $id)->delete(); + if ($query) { + $this->notify('success', 'Hapus sukses'); + } else { + $this->notify('failure', 'Hapus gagal'); + } + + redirect(url([ADMIN, 'presensi', 'jamjaga'])); + } + public function getJadwal($page = 1) { $this->_addHeaderFiles(); @@ -189,7 +214,7 @@ public function getJadwal($page = 1) ->where('jadwal_pegawai.tahun', $tahun) ->like('jadwal_pegawai.bulan', $bulan . '%') ->like('pegawai.nama', '%' . $phrase . '%') - ->toArray(); + ->count(); } else { $totalRecords = $this->db('jadwal_pegawai') ->join('pegawai', 'pegawai.id=jadwal_pegawai.id') @@ -198,9 +223,9 @@ public function getJadwal($page = 1) ->where('departemen', $this->core->getPegawaiInfo('departemen', $username)) ->where('bidang', $this->core->getPegawaiInfo('bidang', $username)) ->like('pegawai.nama', '%' . $phrase . '%') - ->toArray(); + ->count(); } - $pagination = new \Systems\Lib\Pagination($page, count($totalRecords), 10, url([ADMIN, 'presensi', 'jadwal', '%d?b=' . $bulan . '&s=' . $phrase])); + $pagination = new \Systems\Lib\Pagination($page, $totalRecords, 10, url([ADMIN, 'presensi', 'jadwal', '%d?b=' . $bulan . '&s=' . $phrase])); $this->assign['pagination'] = $pagination->nav('pagination', '5'); $this->assign['totalRecords'] = $totalRecords; @@ -232,9 +257,6 @@ public function getJadwal($page = 1) foreach ($rows as $row) { $row = htmlspecialchars_array($row); $row['editURL'] = url([ADMIN, 'presensi', 'jadwaledit', $row['id'], $bulan, $tahun]); - // $row['delURL'] = url([ADMIN, 'master', 'petugasdelete', $row['nip']]); - // $row['restoreURL'] = url([ADMIN, 'master', 'petugasrestore', $row['nip']]); - // $row['viewURL'] = url([ADMIN, 'master', 'petugasview', $row['nip']]); $this->assign['list'][] = $row; } } @@ -256,10 +278,22 @@ public function getJadwal($page = 1) '12' => 'DES', ); $this->assign['showBulan'] = $month[$bulan]; - // $this->assign['printURL'] = url([ADMIN, 'master', 'petugasprint']); $this->assign['bulan'] = array('', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); - $this->assign['tahun'] = array('', '2020', '2021', '2022', '2023', '2024', '2025'); - return $this->draw('jadwal.manage.html', ['jadwal' => $this->assign]); + $startYear = 2020; + $currentYear = date('Y'); + $endYear = $currentYear + 2; + $tahun = ['']; + for ($i = $startYear; $i <= $endYear; $i++) { + $tahun[] = (string)$i; + } + $this->assign['tahun'] = $tahun; + + $pagination = $this->assign['pagination']; + unset($this->assign['pagination']); + $jadwal = htmlspecialchars_array($this->assign); + $jadwal['pagination'] = $pagination; + + return $this->draw('jadwal.manage.html', ['jadwal' => $jadwal]); } public function getJadwalAdd() @@ -322,19 +356,29 @@ public function getJadwalAdd() } else { $this->assign['h1'] = $this->db('jam_jaga')->where('dep_id', $this->core->getPegawaiInfo('departemen', $username))->toArray(); } - $this->assign['tahun'] = array('', '2020', '2021', '2022', '2023', '2024', '2025'); + $startYear = 2020; + $currentYear = date('Y'); + $endYear = $currentYear + 2; + $tahun = ['']; + for ($i = $startYear; $i <= $endYear; $i++) { + $tahun[] = (string)$i; + } + $this->assign['tahun'] = $tahun; //$this->assign['tahun'] = date('Y'); $this->assign['bulan'] = array('', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); - return $this->draw('jadwal.form.html', ['jadwal' => $this->assign]); + return $this->draw('jadwal.form.html', ['jadwal' => htmlspecialchars_array($this->assign)]); } - public function getJadwalEdit($id, $bulan, $tahun) + public function getJadwalEdit($id = null, $bulan = null, $tahun = null) { $this->_addHeaderFiles(); if ($bulan == "") { $bulan = date('m'); } + if ($tahun == "") { + $tahun = date('Y'); + } $row = $this->db('jadwal_pegawai')->where('id', $id)->where('tahun', $tahun)->where('bulan', $bulan)->oneArray(); if (!empty($row)) { @@ -356,11 +400,18 @@ public function getJadwalEdit($id, $bulan, $tahun) } else { $this->assign['h1'] = $this->db('jam_jaga')->where('dep_id', $this->core->getPegawaiInfo('departemen', $username))->toArray(); } - $this->assign['tahun'] = array('', '2020', '2021', '2022', '2023', '2024', '2025'); + $startYear = 2020; + $currentYear = date('Y'); + $endYear = $currentYear + 2; + $tahun = ['']; + for ($i = $startYear; $i <= $endYear; $i++) { + $tahun[] = (string)$i; + } + $this->assign['tahun'] = $tahun; //$this->assign['tahun'] = $tahun; $this->assign['bulan'] = array('', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); - return $this->draw('jadwal.form.html', ['jadwal' => $this->assign]); + return $this->draw('jadwal.form.html', ['jadwal' => htmlspecialchars_array($this->assign)]); } else { redirect(url([ADMIN, 'presensi', 'jadwal'])); } @@ -373,7 +424,7 @@ public function postJadwalSave($id = null) if (!$id) { $location = url([ADMIN, 'presensi', 'jadwal']); } else { - $location = url([ADMIN, 'presensi', 'jadwaledit', $id]); + $location = url([ADMIN, 'presensi', 'jadwaledit', $id, $_POST['bulan'], $_POST['tahun']]); } //if (checkEmptyFields(['id'], $_POST)){ @@ -429,7 +480,7 @@ public function getJadwal_Tambahan($page = 1) ->where('jadwal_tambahan.tahun',$tahun) ->like('jadwal_tambahan.bulan',$bulan.'%') ->like('pegawai.nama', '%'.$phrase.'%') - ->toArray(); + ->count(); }else{ $totalRecords = $this->db('jadwal_tambahan') ->join('pegawai','pegawai.id=jadwal_tambahan.id') @@ -438,9 +489,9 @@ public function getJadwal_Tambahan($page = 1) ->where('departemen', $this->core->getPegawaiInfo('departemen',$username)) ->like('pegawai.nama', '%'.$phrase.'%') - ->toArray(); + ->count(); } - $pagination = new \Systems\Lib\Pagination($page, count($totalRecords), 10, url([ADMIN, 'presensi', 'jadwal_tambahan', '%d?b='.$bulan.'&s='.$phrase])); + $pagination = new \Systems\Lib\Pagination($page, $totalRecords, 10, url([ADMIN, 'presensi', 'jadwal_tambahan', '%d?b='.$bulan.'&s='.$phrase])); $this->assign['pagination'] = $pagination->nav('pagination','5'); $this->assign['totalRecords'] = $totalRecords; @@ -472,9 +523,6 @@ public function getJadwal_Tambahan($page = 1) foreach ($rows as $row) { $row = htmlspecialchars_array($row); $row['editURL'] = url([ADMIN, 'presensi', 'jadwaltambahedit', $row['id'] , $bulan , $tahun]); - // $row['delURL'] = url([ADMIN, 'master', 'petugasdelete', $row['nip']]); - // $row['restoreURL'] = url([ADMIN, 'master', 'petugasrestore', $row['nip']]); - // $row['viewURL'] = url([ADMIN, 'master', 'petugasview', $row['nip']]); $this->assign['list'][] = $row; } } @@ -496,10 +544,22 @@ public function getJadwal_Tambahan($page = 1) '12' => 'DES', ); $this->assign['showBulan'] = $month[$bulan]; - // $this->assign['printURL'] = url([ADMIN, 'master', 'petugasprint']); $this->assign['bulan'] = array('','01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); - $this->assign['tahun'] = array('', '2020', '2021', '2022', '2023', '2024', '2025'); - return $this->draw('jadwal_tambah.manage.html', ['jadwal_tambah' => $this->assign]); + $startYear = 2020; + $currentYear = date('Y'); + $endYear = $currentYear + 2; + $tahun = ['']; + for ($i = $startYear; $i <= $endYear; $i++) { + $tahun[] = (string)$i; + } + $this->assign['tahun'] = $tahun; + + $pagination = $this->assign['pagination']; + unset($this->assign['pagination']); + $jadwal_tambah = htmlspecialchars_array($this->assign); + $jadwal_tambah['pagination'] = $pagination; + + return $this->draw('jadwal_tambah.manage.html', ['jadwal_tambah' => $jadwal_tambah]); } public function getJadwalTambahAdd() @@ -562,15 +622,28 @@ public function getJadwalTambahAdd() }else{ $this->assign['h1'] = $this->db('jam_jaga')->where('dep_id', $this->core->getPegawaiInfo('departemen',$username))->toArray(); } - $this->assign['tahun'] = array('', '2020', '2021', '2022', '2023', '2024', '2025'); + $startYear = 2020; + $currentYear = date('Y'); + $endYear = $currentYear + 2; + $tahun = ['']; + for ($i = $startYear; $i <= $endYear; $i++) { + $tahun[] = (string)$i; + } + $this->assign['tahun'] = $tahun; $this->assign['bulan'] = array('','01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); - return $this->draw('jadwal_tambah.form.html', ['jadwal' => $this->assign]); + return $this->draw('jadwal_tambah.form.html', ['jadwal' => htmlspecialchars_array($this->assign)]); } - public function getJadwalTambahEdit($id,$bulan,$tahun) + public function getJadwalTambahEdit($id = null, $bulan = null, $tahun = null) { $this->_addHeaderFiles(); + if ($bulan == "") { + $bulan = date('m'); + } + if ($tahun == "") { + $tahun = date('Y'); + } $row = $this->db('jadwal_tambahan')->where('id', $id)->where('tahun', $tahun)->where('bulan', $bulan)->oneArray(); if (!empty($row)){ $username = $this->core->getUserInfo('username', null, true); @@ -590,10 +663,17 @@ public function getJadwalTambahEdit($id,$bulan,$tahun) } else { $this->assign['h1'] = $this->db('jam_jaga')->where('dep_id', $this->core->getPegawaiInfo('departemen', $username))->toArray(); } - $this->assign['tahun'] = array('', '2020', '2021', '2022', '2023', '2024', '2025'); + $startYear = 2020; + $currentYear = date('Y'); + $endYear = $currentYear + 2; + $tahun = ['']; + for ($i = $startYear; $i <= $endYear; $i++) { + $tahun[] = (string)$i; + } + $this->assign['tahun'] = $tahun; $this->assign['bulan'] = array('','01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); - return $this->draw('jadwal_tambah.form.html', ['jadwal' => $this->assign]); + return $this->draw('jadwal_tambah.form.html', ['jadwal' => htmlspecialchars_array($this->assign)]); } else { redirect(url([ADMIN,'presensi','jadwal_tambahan'])); } @@ -665,8 +745,7 @@ public function getRekap_Presensi($page = 1) ->where('jam_datang', '<=', $tgl_kunjungan_akhir . ' 23:59:59') ->like('bidang', '%' . $ruang . '%') ->like('nama', '%' . $phrase . '%') - ->asc('jam_datang') - ->toArray(); + ->count(); } else { $totalRecords = $this->db('rekap_presensi') ->join('pegawai', 'pegawai.id = rekap_presensi.id') @@ -675,10 +754,10 @@ public function getRekap_Presensi($page = 1) ->where('departemen', $this->core->getPegawaiInfo('departemen', $username)) ->where('bidang', $this->core->getPegawaiInfo('bidang', $username)) ->like('nama', '%' . $phrase . '%') - ->asc('jam_datang') - ->toArray(); + ->count(); } - $pagination = new \Systems\Lib\Pagination($page, count($totalRecords), 10, url([ADMIN, 'presensi', 'rekap_presensi', '%d?awal=' . $tgl_kunjungan . '&akhir=' . $tgl_kunjungan_akhir . '&ruang=' . $ruang . '&s=' . $phrase])); + $pagination = new \Systems\Lib\Pagination($page, $totalRecords, 10, url([ADMIN, 'presensi', 'rekap_presensi', '%d?awal=' . $tgl_kunjungan . '&akhir=' . $tgl_kunjungan_akhir . '&ruang=' . $ruang . '&s=' . $phrase . '&t=' . $_SESSION['token']])); + $this->assign['pagination'] = $pagination->nav('pagination', '5'); $this->assign['totalRecords'] = $totalRecords; @@ -740,633 +819,7 @@ public function getRekap_Presensi($page = 1) if (count($rows)) { foreach ($rows as $row) { $row = htmlspecialchars_array($row); - $row['mapURL'] = url([ADMIN, 'presensi', 'googlemap', $row['id'], date('Y-m-d', strtotime($row['jam_datang']))]); - - $day = array( - 'Sun' => 'AKHAD', - 'Mon' => 'SENIN', - 'Tue' => 'SELASA', - 'Wed' => 'RABU', - 'Thu' => 'KAMIS', - 'Fri' => 'JUMAT', - 'Sat' => 'SABTU' - ); - - $jam_datang = $this->db('rekap_presensi') - ->select([ - 'EXTRACT(MONTH FROM rekap_presensi.jam_datang) as month', - 'EXTRACT(YEAR FROM rekap_presensi.jam_datang) as year', - 'EXTRACT(DAY FROM rekap_presensi.jam_datang) as day', - 'shift' => 'rekap_presensi.shift' - ]) - ->join('pegawai', 'pegawai.id = rekap_presensi.id') - ->where('rekap_presensi.id', $row['id']) - ->where('rekap_presensi.jam_datang', $row['jam_datang']) - ->asc('jam_datang') - ->oneArray(); - $stts1 = ''; - $stts2 = ''; - - $s = $row['jam_datang']; - $dt = new \DateTime($s); - $tm = $dt->format('h:i:s'); - - $w = $row['jam_pulang']; - $dd = new \DateTime($w); - $tp = $dd->format('H:i:s'); - - $row['date'] = $day[date('D', strtotime(date($jam_datang['year'] . '-' . $jam_datang['month'] . '-' . $jam_datang['day'])))]; - switch (true) { - case ($row['date'] == 'SENIN' and $jam_datang['shift'] == 'Pagi'): - $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '08:11:00' and $tm < '08:30:00') { - $stts1 = 'TL1'; - } elseif ($tm > '08:31:00' and $tm < '09:00:00') { - $stts1 = 'TL2'; - } elseif ($tm > '09:01:00' and $tm < '09:30:00') { - $stts1 = 'TL3'; - } elseif ($tm > '09:31:00') { - $stts1 = 'TL4'; - } - if ($tp > '14:01:00' and $tp < '14:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '13:31:00' and $tp < '14:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '13:01:00' and $tp < '13:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '13:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'SENIN' and $jam_datang['shift'] == 'Siang'): - $interval = 'INTERVAL 5 HOUR'; - $efektif = 'INTERVAL 1 HOUR'; - break; - if ($tm > '14:41:00' and $tm < '15:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '15:01:00' and $tm < '15:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '15:31:00' and $tm < '16:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '16:00:00') { - $stts1 = 'TL4'; - } - if ($tp > '20:01:00' and $tp < '20:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '19:31:00' and $tp < '20:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '19:01:00' and $tp < '19:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '19:00:00') { - $stts2 = 'PSW4'; - } - case ($row['date'] == 'SENIN' and $jam_datang['shift'] == 'Siang - Gizi'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SENIN' and $jam_datang['shift'] == 'Malam'): - $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 2 HOUR'; - if ($tm > '20:41:00' and $tm < '21:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '21:01:00' and $tm < '21:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '21:31:00' and $tm < '22:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '22:01:00') { - $stts1 = 'TL4'; - } - if ($tp > '07:31:00' and $tp < '07:49:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '07:01:00' and $tp < '07:30:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '06:31:00' and $tp < '07:00:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '06:30:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'SENIN' and $jam_datang['shift'] == 'Malam - Gizi (Masak)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SENIN' and $jam_datang['shift'] == 'Malam - Gizi (Saji)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SENIN' and $jam_datang['shift'] == 'Malam - Gizi (Cuci)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SELASA' and $jam_datang['shift'] == 'Pagi'): - $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '08:11:00' and $tm < '08:30:00') { - $stts1 = 'TL1'; - } elseif ($tm > '08:31:00' and $tm < '09:00:00') { - $stts1 = 'TL2'; - } elseif ($tm > '09:01:00' and $tm < '09:30:00') { - $stts1 = 'TL3'; - } elseif ($tm > '09:31:00') { - $stts1 = 'TL4'; - } - if ($tp > '14:01:00' and $tp < '14:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '13:31:00' and $tp < '14:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '13:01:00' and $tp < '13:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '13:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'SELASA' and $jam_datang['shift'] == 'Siang'): - $interval = 'INTERVAL 5 HOUR'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '14:41:00' and $tm < '15:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '15:01:00' and $tm < '15:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '15:31:00' and $tm < '16:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '16:00:00') { - $stts1 = 'TL4'; - } - if ($tp > '20:01:00' and $tp < '20:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '19:31:00' and $tp < '20:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '19:01:00' and $tp < '19:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '19:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'SELASA' and $jam_datang['shift'] == 'Siang - Gizi'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SELASA' and $jam_datang['shift'] == 'Malam'): - $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 2 HOUR'; - if ($tm > '20:41:00' and $tm < '21:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '21:01:00' and $tm < '21:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '21:31:00' and $tm < '22:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '22:01:00') { - $stts1 = 'TL4'; - } - if ($tp > '07:31:00' and $tp < '07:49:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '07:01:00' and $tp < '07:30:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '06:31:00' and $tp < '07:00:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '06:30:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'SELASA' and $jam_datang['shift'] == 'Malam - Gizi (Masak)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SELASA' and $jam_datang['shift'] == 'Malam - Gizi (Saji)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SELASA' and $jam_datang['shift'] == 'Malam - Gizi (Cuci)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'RABU' and $jam_datang['shift'] == 'Pagi'): - $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '08:11:00' and $tm < '08:30:00') { - $stts1 = 'TL1'; - } elseif ($tm > '08:31:00' and $tm < '09:00:00') { - $stts1 = 'TL2'; - } elseif ($tm > '09:01:00' and $tm < '09:30:00') { - $stts1 = 'TL3'; - } elseif ($tm > '09:31:00') { - $stts1 = 'TL4'; - } - if ($tp > '14:01:00' and $tp < '14:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '13:31:00' and $tp < '14:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '13:01:00' and $tp < '13:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '13:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'RABU' and $jam_datang['shift'] == 'Siang'): - $interval = 'INTERVAL 5 HOUR'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '14:41:00' and $tm < '15:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '15:01:00' and $tm < '15:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '15:31:00' and $tm < '16:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '16:00:00') { - $stts1 = 'TL4'; - } - if ($tp > '20:01:00' and $tp < '20:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '19:31:00' and $tp < '20:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '19:01:00' and $tp < '19:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '19:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'RABU' and $jam_datang['shift'] == 'Siang - Gizi'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'RABU' and $jam_datang['shift'] == 'Malam'): - $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 2 HOUR'; - if ($tm > '20:41:00' and $tm < '21:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '21:01:00' and $tm < '21:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '21:31:00' and $tm < '22:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '22:01:00') { - $stts1 = 'TL4'; - } - if ($tp > '07:31:00' and $tp < '07:49:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '07:01:00' and $tp < '07:30:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '06:31:00' and $tp < '07:00:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '06:30:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'RABU' and $jam_datang['shift'] == 'Malam - Gizi (Masak)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'RABU' and $jam_datang['shift'] == 'Malam - Gizi (Saji)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'RABU' and $jam_datang['shift'] == 'Malam - Gizi (Cuci)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'KAMIS' and $jam_datang['shift'] == 'Pagi'): - $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '08:11:00' and $tm < '08:30:00') { - $stts1 = 'TL1'; - } elseif ($tm > '08:31:00' and $tm < '09:00:00') { - $stts1 = 'TL2'; - } elseif ($tm > '09:01:00' and $tm < '09:30:00') { - $stts1 = 'TL3'; - } elseif ($tm > '09:31:00') { - $stts1 = 'TL4'; - } - if ($tp > '14:01:00' and $tp < '14:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '13:31:00' and $tp < '14:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '13:01:00' and $tp < '13:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '13:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'KAMIS' and $jam_datang['shift'] == 'Siang'): - $interval = 'INTERVAL 5 HOUR'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '14:41:00' and $tm < '15:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '15:01:00' and $tm < '15:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '15:31:00' and $tm < '16:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '16:00:00') { - $stts1 = 'TL4'; - } - if ($tp > '20:01:00' and $tp < '20:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '19:31:00' and $tp < '20:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '19:01:00' and $tp < '19:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '19:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'KAMIS' and $jam_datang['shift'] == 'Siang - Gizi'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'KAMIS' and $jam_datang['shift'] == 'Malam'): - $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 2 HOUR'; - if ($tm > '20:41:00' and $tm < '21:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '21:01:00' and $tm < '21:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '21:31:00' and $tm < '22:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '22:01:00') { - $stts1 = 'TL4'; - } - if ($tp > '07:31:00' and $tp < '07:49:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '07:01:00' and $tp < '07:30:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '06:31:00' and $tp < '07:00:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '06:30:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'KAMIS' and $jam_datang['shift'] == 'Malam - Gizi (Masak)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'KAMIS' and $jam_datang['shift'] == 'Malam - Gizi (Saji)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'KAMIS' and $jam_datang['shift'] == 'Malam - Gizi (Cuci)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'JUMAT' and $jam_datang['shift'] == 'Pagi'): - $interval = 'INTERVAL 3 HOUR'; - $efektif = 'INTERVAL 30 MINUTE'; - if ($tm > '08:11:00' and $tm < '08:30:00') { - $stts1 = 'TL1'; - } elseif ($tm > '08:31:00' and $tm < '09:00:00') { - $stts1 = 'TL2'; - } elseif ($tm > '09:01:00' and $tm < '09:30:00') { - $stts1 = 'TL3'; - } elseif ($tm > '09:31:00') { - $stts1 = 'TL4'; - } - if ($tp > '10:30:00' and $tp < '10:49:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '10:01:00' and $tp < '10:30:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '09:30:00' and $tp < '10:00:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '09:29:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'JUMAT' and $jam_datang['shift'] == 'Siang'): - $interval = 'INTERVAL 5 HOUR'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '14:41:00' and $tm < '15:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '15:01:00' and $tm < '15:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '15:31:00' and $tm < '16:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '16:00:00') { - $stts1 = 'TL4'; - } - if ($tp > '20:01:00' and $tp < '20:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '19:31:00' and $tp < '20:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '19:01:00' and $tp < '19:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '19:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'JUMAT' and $jam_datang['shift'] == 'Siang - Gizi'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'JUMAT' and $jam_datang['shift'] == 'Malam'): - $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 2 HOUR'; - if ($tm > '20:41:00' and $tm < '21:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '21:01:00' and $tm < '21:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '21:31:00' and $tm < '22:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '22:01:00') { - $stts1 = 'TL4'; - } - if ($tp > '07:31:00' and $tp < '07:49:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '07:01:00' and $tp < '07:30:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '06:31:00' and $tp < '07:00:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '06:30:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'JUMAT' and $jam_datang['shift'] == 'Malam - Gizi (Masak)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'JUMAT' and $jam_datang['shift'] == 'Malam - Gizi (Saji)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'JUMAT' and $jam_datang['shift'] == 'Malam - Gizi (Cuci)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SABTU' and $jam_datang['shift'] == 'Pagi'): - $interval = 'INTERVAL 5 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '08:11:00' and $tm < '08:30:00') { - $stts1 = 'TL1'; - } elseif ($tm > '08:31:00' and $tm < '09:00:00') { - $stts1 = 'TL2'; - } elseif ($tm > '09:01:00' and $tm < '09:30:00') { - $stts1 = 'TL3'; - } elseif ($tm > '09:31:00') { - $stts1 = 'TL4'; - } - if ($tp > '13:00:00' and $tp < '13:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '13:31:00' and $tp < '14:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '13:01:00' and $tp < '13:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '13:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'SABTU' and $jam_datang['shift'] == 'Siang'): - $interval = 'INTERVAL 5 HOUR'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '14:41:00' and $tm < '15:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '15:01:00' and $tm < '15:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '15:31:00' and $tm < '16:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '16:00:00') { - $stts1 = 'TL4'; - } - if ($tp > '20:01:00' and $tp < '20:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '19:31:00' and $tp < '20:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '19:01:00' and $tp < '19:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '19:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'SABTU' and $jam_datang['shift'] == 'Siang - Gizi'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SABTU' and $jam_datang['shift'] == 'Malam'): - $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 2 HOUR'; - if ($tm > '20:41:00' and $tm < '21:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '21:01:00' and $tm < '21:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '21:31:00' and $tm < '22:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '22:01:00') { - $stts1 = 'TL4'; - } - if ($tp > '07:31:00' and $tp < '07:49:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '07:01:00' and $tp < '07:30:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '06:31:00' and $tp < '07:00:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '06:30:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'SABTU' and $jam_datang['shift'] == 'Malam - Gizi (Masak)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SABTU' and $jam_datang['shift'] == 'Malam - Gizi (Saji)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'SABTU' and $jam_datang['shift'] == 'Malam - Gizi (Cuci)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'AKHAD' and $jam_datang['shift'] == 'Pagi'): - $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '08:11:00' and $tm < '08:30:00') { - $stts1 = 'TL1'; - } elseif ($tm > '08:31:00' and $tm < '09:00:00') { - $stts1 = 'TL2'; - } elseif ($tm > '09:01:00' and $tm < '09:30:00') { - $stts1 = 'TL3'; - } elseif ($tm > '09:31:00') { - $stts1 = 'TL4'; - } - if ($tp > '14:01:00' and $tp < '14:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '13:31:00' and $tp < '14:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '13:01:00' and $tp < '13:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '13:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'AKHAD' and $jam_datang['shift'] == 'Siang'): - $interval = 'INTERVAL 5 HOUR'; - $efektif = 'INTERVAL 1 HOUR'; - if ($tm > '14:41:00' and $tm < '15:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '15:01:00' and $tm < '15:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '15:31:00' and $tm < '16:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '16:00:00') { - $stts1 = 'TL4'; - } - if ($tp > '20:01:00' and $tp < '20:19:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '19:31:00' and $tp < '20:00:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '19:01:00' and $tp < '19:30:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '19:00:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'AKHAD' and $jam_datang['shift'] == 'Siang - Gizi'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'AKHAD' and $jam_datang['shift'] == 'Malam'): - $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 2 HOUR'; - if ($tm > '20:41:00' and $tm < '21:00:00') { - $stts1 = 'TL1'; - } elseif ($tm > '21:01:00' and $tm < '21:30:00') { - $stts1 = 'TL2'; - } elseif ($tm > '21:31:00' and $tm < '22:00:00') { - $stts1 = 'TL3'; - } elseif ($tm > '22:01:00') { - $stts1 = 'TL4'; - } - if ($tp > '07:31:00' and $tp < '07:49:00') { - $stts2 = 'PSW1'; - } elseif ($tp > '07:01:00' and $tp < '07:30:00') { - $stts2 = 'PSW2'; - } elseif ($tp > '06:31:00' and $tp < '07:00:00') { - $stts2 = 'PSW3'; - } elseif ($tp < '06:30:00') { - $stts2 = 'PSW4'; - } - break; - case ($row['date'] == 'AKHAD' and $jam_datang['shift'] == 'Malam - Gizi (Masak)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'AKHAD' and $jam_datang['shift'] == 'Malam - Gizi (Saji)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - case ($row['date'] == 'AKHAD' and $jam_datang['shift'] == 'Malam - Gizi (Cuci)'): - $interval = 'INTERVAL 0 HOUR'; - $efektif = 'INTERVAL 0 HOUR'; - break; - default: - $interval = 'INTERVAL 5 * 60 + 30 MINUTE'; - $efektif = 'INTERVAL 1 HOUR'; - break; - } - - $row['efektif'] = $this->db('rekap_presensi') - ->select([ - 'efektif' => 'CAST(rekap_presensi.durasi as TIME) - ' . $efektif, - 'kurang' => 'CAST(rekap_presensi.durasi as TIME) - ' . $interval - ]) - ->where('rekap_presensi.id', $row['id']) - ->where('rekap_presensi.jam_datang', $row['jam_datang']) - ->oneArray(); - $row['stts1'] = $stts1; - $row['stts2'] = $stts2; + $row = $this->_calculateAttendanceDetails($row); $this->assign['list'][] = $row; } } @@ -1401,24 +854,301 @@ public function getRekap_Presensi($page = 1) $this->assign['totalminus'] = '-' . $timesplus; - $this->assign['totalplus'] = $timesminus; $this->assign['getStatus'] = isset($_GET['status']); - $this->assign['tahun'] = array('', '2020', '2021', '2022', '2023', '2024', '2025'); + $startYear = 2020; + $currentYear = date('Y'); + $endYear = $currentYear + 2; + $tahun = ['']; + for ($i = $startYear; $i <= $endYear; $i++) { + $tahun[] = (string)$i; + } + $this->assign['tahun'] = $tahun; $this->assign['bulan'] = array('', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); $this->assign['tanggal'] = array('', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31'); $this->assign['bidang'] = $this->db('bidang')->toArray(); - return $this->draw('rekap_presensi.html', ['rekap' => $this->assign]); + $this->assign['awal'] = $tgl_kunjungan; + $this->assign['akhir'] = $tgl_kunjungan_akhir; + $this->assign['phrase'] = $phrase; + $this->assign['ruang_sel'] = $ruang; + + $pagination = $this->assign['pagination']; + unset($this->assign['pagination']); + $rekap = htmlspecialchars_array($this->assign); + $rekap['pagination'] = $pagination; + + return $this->draw('rekap_presensi.html', ['rekap' => $rekap]); + } + + public function getCetak_Laporan() + { + $phrase = ''; + if (isset($_GET['s'])) + $phrase = $_GET['s']; + + $tgl_kunjungan = date('Y-m-d'); + $tgl_kunjungan_akhir = date('Y-m-d'); + + if (isset($_GET['awal'])) { + $tgl_kunjungan = $_GET['awal']; + } + if (isset($_GET['akhir'])) { + $tgl_kunjungan_akhir = $_GET['akhir']; + } + + $ruang = ''; + if (isset($_GET['ruang'])) { + $ruang = $_GET['ruang']; + } + + $username = $this->core->getUserInfo('username', null, true); + + if ($this->core->getUserInfo('role') == 'admin') { + $rows = $this->db('rekap_presensi') + ->select([ + 'nama' => 'pegawai.nama', + 'departemen' => 'pegawai.departemen', + 'jbtn' => 'pegawai.jbtn', + 'bidang' => 'pegawai.bidang', + 'id' => 'rekap_presensi.id', + 'shift' => 'rekap_presensi.shift', + 'jam_datang' => 'rekap_presensi.jam_datang', + 'jam_pulang' => 'rekap_presensi.jam_pulang', + 'status' => 'rekap_presensi.status', + 'durasi' => 'rekap_presensi.durasi', + 'photo' => 'rekap_presensi.photo' + ]) + ->join('pegawai', 'pegawai.id = rekap_presensi.id') + ->where('jam_datang', '>=', $tgl_kunjungan . ' 00:00:00') + ->where('jam_datang', '<=', $tgl_kunjungan_akhir . ' 23:59:59') + ->like('bidang', '%' . $ruang . '%') + ->like('nama', '%' . $phrase . '%') + ->asc('jam_datang') + ->toArray(); + } else { + $rows = $this->db('rekap_presensi') + ->select([ + 'nama' => 'pegawai.nama', + 'departemen' => 'pegawai.departemen', + 'jbtn' => 'pegawai.jbtn', + 'bidang' => 'pegawai.bidang', + 'id' => 'rekap_presensi.id', + 'shift' => 'rekap_presensi.shift', + 'jam_datang' => 'rekap_presensi.jam_datang', + 'jam_pulang' => 'rekap_presensi.jam_pulang', + 'status' => 'rekap_presensi.status', + 'durasi' => 'rekap_presensi.durasi', + 'photo' => 'rekap_presensi.photo' + ]) + ->join('pegawai', 'pegawai.id = rekap_presensi.id') + ->where('jam_datang', '>=', $tgl_kunjungan . ' 00:00:00') + ->where('jam_datang', '<=', $tgl_kunjungan_akhir . ' 23:59:59') + ->where('departemen', $this->core->getPegawaiInfo('departemen', $username)) + ->where('bidang', $this->core->getPegawaiInfo('bidang', $username)) + ->like('nama', '%' . $phrase . '%') + ->asc('jam_datang') + ->toArray(); + } + + $this->assign['list'] = []; + if (count($rows)) { + foreach ($rows as $row) { + $row = htmlspecialchars_array($row); + $row = $this->_calculateAttendanceDetails($row); + $this->assign['list'][] = $row; + } + } + $this->assign['awal'] = $tgl_kunjungan; + $this->assign['akhir'] = $tgl_kunjungan_akhir; + $this->assign['ruang'] = $ruang; + + echo $this->draw('cetak.rekap_presensi.html', ['rekap' => htmlspecialchars_array($this->assign)]); + exit(); + } + + public function getRekap_Bulanan() + { + $this->_addHeaderFiles(); + $bulan = date('m'); + if (isset($_GET['b'])) { + $bulan = $_GET['b']; + } + + $tahun = date('Y'); + if (isset($_GET['y'])) { + $tahun = $_GET['y']; + } + + $ruang = ''; + if (isset($_GET['ruang'])) { + $ruang = $_GET['ruang']; + } + + $phrase = ''; + if (isset($_GET['s'])) + $phrase = $_GET['s']; + + $username = $this->core->getUserInfo('username', null, true); + + if ($this->core->getUserInfo('role') == 'admin') { + $rows = $this->db('rekap_presensi') + ->select([ + 'id' => 'rekap_presensi.id', + 'nama' => 'pegawai.nama', + 'bidang' => 'pegawai.bidang', + 'jbtn' => 'pegawai.jbtn', + 'count' => 'COUNT(rekap_presensi.id)' + ]) + ->join('pegawai', 'pegawai.id = rekap_presensi.id') + ->where('jam_datang', 'LIKE', "$tahun-$bulan-%") + ->like('bidang', '%' . $ruang . '%') + ->like('nama', '%' . $phrase . '%') + ->group('rekap_presensi.id') + ->toArray(); + } else { + $rows = $this->db('rekap_presensi') + ->select([ + 'id' => 'rekap_presensi.id', + 'nama' => 'pegawai.nama', + 'bidang' => 'pegawai.bidang', + 'jbtn' => 'pegawai.jbtn', + 'count' => 'COUNT(rekap_presensi.id)' + ]) + ->join('pegawai', 'pegawai.id = rekap_presensi.id') + ->where('jam_datang', 'LIKE', "$tahun-$bulan-%") + ->where('departemen', $this->core->getPegawaiInfo('departemen', $username)) + ->where('bidang', $this->core->getPegawaiInfo('bidang', $username)) + ->like('nama', '%' . $phrase . '%') + ->group('rekap_presensi.id') + ->toArray(); + } + + $this->assign['list'] = htmlspecialchars_array($rows); + $this->assign['bulan_sel'] = $bulan; + $this->assign['tahun_sel'] = $tahun; + $this->assign['ruang_sel'] = $ruang; + $this->assign['bidang'] = $this->db('bidang')->toArray(); + + $month = array( + '01' => 'Januari', + '02' => 'Februari', + '03' => 'Maret', + '04' => 'April', + '05' => 'Mei', + '06' => 'Juni', + '07' => 'Juli', + '08' => 'Agustus', + '09' => 'September', + '10' => 'Oktober', + '11' => 'November', + '12' => 'Desember', + ); + $this->assign['show_bulan'] = $month[$bulan]; + $this->assign['bulan'] = array('', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'); + + $startYear = 2020; + $currentYear = date('Y'); + $endYear = $currentYear + 2; + $tahun_list = ['']; + for ($i = $startYear; $i <= $endYear; $i++) { + $tahun_list[] = (string)$i; + } + $this->assign['tahun'] = $tahun_list; + $this->assign['phrase'] = $phrase; + + return $this->draw('rekap_bulanan.html', ['rekap' => $this->assign]); + } + + public function getCetak_Rekap_Bulanan() + { + $bulan = date('m'); + if (isset($_GET['b'])) { + $bulan = $_GET['b']; + } + + $tahun = date('Y'); + if (isset($_GET['y'])) { + $tahun = $_GET['y']; + } + + $ruang = ''; + if (isset($_GET['ruang'])) { + $ruang = $_GET['ruang']; + } + + $phrase = ''; + if (isset($_GET['s'])) + $phrase = $_GET['s']; + + $username = $this->core->getUserInfo('username', null, true); + + if ($this->core->getUserInfo('role') == 'admin') { + $rows = $this->db('rekap_presensi') + ->select([ + 'id' => 'rekap_presensi.id', + 'nama' => 'pegawai.nama', + 'bidang' => 'pegawai.bidang', + 'jbtn' => 'pegawai.jbtn', + 'count' => 'COUNT(rekap_presensi.id)' + ]) + ->join('pegawai', 'pegawai.id = rekap_presensi.id') + ->where('jam_datang', 'LIKE', "$tahun-$bulan-%") + ->like('bidang', '%' . $ruang . '%') + ->like('nama', '%' . $phrase . '%') + ->group('rekap_presensi.id') + ->toArray(); + } else { + $rows = $this->db('rekap_presensi') + ->select([ + 'id' => 'rekap_presensi.id', + 'nama' => 'pegawai.nama', + 'bidang' => 'pegawai.bidang', + 'jbtn' => 'pegawai.jbtn', + 'count' => 'COUNT(rekap_presensi.id)' + ]) + ->join('pegawai', 'pegawai.id = rekap_presensi.id') + ->where('jam_datang', 'LIKE', "$tahun-$bulan-%") + ->where('departemen', $this->core->getPegawaiInfo('departemen', $username)) + ->where('bidang', $this->core->getPegawaiInfo('bidang', $username)) + ->like('nama', '%' . $phrase . '%') + ->group('rekap_presensi.id') + ->toArray(); + } + + $this->assign['list'] = htmlspecialchars_array($rows); + $this->assign['bulan_sel'] = $bulan; + $this->assign['tahun_sel'] = $tahun; + + $month = array( + '01' => 'Januari', + '02' => 'Februari', + '03' => 'Maret', + '04' => 'April', + '05' => 'Mei', + '06' => 'Juni', + '07' => 'Juli', + '08' => 'Agustus', + '09' => 'September', + '10' => 'Oktober', + '11' => 'November', + '12' => 'Desember', + ); + $this->assign['show_bulan'] = $month[$bulan]; + $this->assign['phrase'] = $phrase; + + echo $this->draw('cetak.rekap_bulanan.html', ['rekap' => $this->assign]); + exit(); } public function getGoogleMap($id, $tanggal) { - $geo = $this->db('mlite_geolocation_presensi')->where('id', $id)->where('tanggal', $tanggal)->oneArray(); - $pegawai = $this->db('pegawai')->where('id', $id)->oneArray(); + $geo = $this->db('mlite_geolocation_presensi')->where('id', $id)->where('tanggal', $tanggal)->oneArray() ?: []; + $pegawai = $this->db('pegawai')->where('id', $id)->oneArray() ?: []; $this->tpl->set('geo', $geo); $this->tpl->set('pegawai', $pegawai); + $this->tpl->set('tanggal', $tanggal); echo $this->tpl->draw(MODULES . '/presensi/view/admin/google_map.html', true); exit(); } @@ -1451,19 +1181,17 @@ public function getPresensi($page = 1) ->like('departemen', '%' . $dep . '%') ->like('bidang', '%' . $ruang . '%') ->like('nama', '%' . $phrase . '%') - ->asc('jam_datang') - ->toArray(); + ->count(); } else { $totalRecords = $this->db('temporary_presensi') ->join('pegawai', 'pegawai.id = temporary_presensi.id') ->where('departemen', $this->core->getPegawaiInfo('departemen', $username)) ->where('bidang', $this->core->getPegawaiInfo('bidang', $username)) ->like('nama', '%' . $phrase . '%') - ->asc('jam_datang') - ->toArray(); + ->count(); } - //$pagination = new \Systems\Lib\Pagination($page, count($totalRecords), 10, url([ADMIN, 'presensi', 'presensi', '%d'])); - $pagination = new \Systems\Lib\Pagination($page, count($totalRecords), 10, url([ADMIN, 'presensi', 'presensi', '%d', '?s=' . $phrase . '&ruang=' . $ruang . '&dep=' . $dep])); + //$pagination = new \Systems\Lib\Pagination($page, $totalRecords, 10, url([ADMIN, 'presensi', 'presensi', '%d'])); + $pagination = new \Systems\Lib\Pagination($page, $totalRecords, 10, url([ADMIN, 'presensi', 'presensi', '%d', '?s=' . $phrase . '&ruang=' . $ruang . '&dep=' . $dep])); $this->assign['pagination'] = $pagination->nav('pagination', '5'); $this->assign['totalRecords'] = $totalRecords; @@ -1517,10 +1245,15 @@ public function getPresensi($page = 1) $this->assign['list'][] = $row; } } - $this->assign['bidang'] = $this->db('bidang')->toArray(); - $this->assign['dep'] = $this->db('departemen')->toArray(); + $this->assign['bidang'] = htmlspecialchars_array($this->db('bidang')->toArray()); + $this->assign['dep'] = htmlspecialchars_array($this->db('departemen')->toArray()); + + $pagination = $this->assign['pagination']; + unset($this->assign['pagination']); + $presensi = htmlspecialchars_array($this->assign); + $presensi['pagination'] = $pagination; - return $this->draw('presensi.html', ['presensi' => $this->assign]); + return $this->draw('presensi.html', ['presensi' => $presensi]); } public function getPresensiPulang($id) @@ -1585,8 +1318,9 @@ public function getBarcode($page = 1) $totalRecords = $this->db('barcode') ->select('id') ->like('barcode', '%' . $phrase . '%') - ->toArray(); - $pagination = new \Systems\Lib\Pagination($page, count($totalRecords), 10, url([ADMIN, 'presensi', 'barcode', '%d'])); + ->count(); + $pagination = new \Systems\Lib\Pagination($page, $totalRecords, 10, url([ADMIN, 'presensi', 'barcode', '%d'])); + $this->assign['pagination'] = $pagination->nav('pagination', '5'); $this->assign['totalRecords'] = $totalRecords; @@ -1612,7 +1346,12 @@ public function getBarcode($page = 1) $this->assign['addURL'] = url([ADMIN, 'presensi', 'barcodeadd']); - return $this->draw('barcode.manage.html', ['barcode' => $this->assign]); + $pagination = $this->assign['pagination']; + unset($this->assign['pagination']); + $barcode = htmlspecialchars_array($this->assign); + $barcode['pagination'] = $pagination; + + return $this->draw('barcode.manage.html', ['barcode' => $barcode]); } public function getBarcodeAdd() @@ -1636,7 +1375,7 @@ public function getBarcodeAdd() ]) ->toArray(); - return $this->draw('barcode.form.html', ['barcode' => $this->assign]); + return $this->draw('barcode.form.html', ['barcode' => htmlspecialchars_array($this->assign)]); } public function getBarcodeEdit($id) @@ -1654,7 +1393,7 @@ public function getBarcodeEdit($id) ]) ->toArray(); - return $this->draw('barcode.form.html', ['barcode' => $this->assign]); + return $this->draw('barcode.form.html', ['barcode' => htmlspecialchars_array($this->assign)]); } else { redirect(url([ADMIN, 'presensi', 'barcode'])); } @@ -1706,16 +1445,164 @@ public function postBarcodeSave($id = null) redirect($location, $_POST); } - public function getSettings() + public function getJamMasuk($page = 1) { - $this->_addHeaderFiles(); - $this->assign['title'] = 'Pengaturan Presensi'; + $this->_addHeaderFiles(); + $perpage = '10'; + $phrase = ''; + if (isset($_GET['s'])) + $phrase = $_GET['s']; + + // pagination + $totalRecords = $this->db('jam_masuk') + ->like('shift', '%' . $phrase . '%') + ->count(); + $pagination = new \Systems\Lib\Pagination($page, $totalRecords, 10, url([ADMIN, 'presensi', 'jammasuk', '%d'])); + + $this->assign['pagination'] = $pagination->nav('pagination', '5'); + $this->assign['totalRecords'] = $totalRecords; + + // list + $offset = $pagination->offset(); + $rows = $this->db('jam_masuk') + ->like('shift', '%' . $phrase . '%') + ->offset($offset) + ->limit($perpage) + ->toArray(); + + $this->assign['list'] = []; + if (count($rows)) { + foreach ($rows as $row) { + $row = htmlspecialchars_array($row); + $row['editURL'] = url([ADMIN, 'presensi', 'jammasukedit', $row['shift']]); + $row['delURL'] = url([ADMIN, 'presensi', 'jammasukhapus', $row['shift']]); + $this->assign['list'][] = $row; + } + } + + $this->assign['getStatus'] = isset($_GET['status']); + $this->assign['addURL'] = url([ADMIN, 'presensi', 'jammasukadd']); + + $pagination = $this->assign['pagination']; + unset($this->assign['pagination']); + $jam_masuk = htmlspecialchars_array($this->assign); + $jam_masuk['pagination'] = $pagination; + + return $this->draw('jam_masuk.manage.html', ['jam_masuk' => $jam_masuk]); + } + + public function getJamMasukAdd() + { + $this->_addHeaderFiles(); + if (!empty($redirectData = getRedirectData())) { + $this->assign['form'] = filter_var_array($redirectData, FILTER_SANITIZE_STRING); + } else { + $this->assign['form'] = [ + 'shift' => '', + 'jam_masuk' => '', + 'jam_pulang' => '' + ]; + } + + $this->assign['title'] = 'Tambah Jam Masuk'; + $this->assign['shift_options'] = [ + 'Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10', + 'Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10', + 'Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10', + 'Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10', + 'Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10', + 'Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10' + ]; + + return $this->draw('jam_masuk.form.html', ['jam_masuk' => htmlspecialchars_array($this->assign)]); + } + + public function getJamMasukEdit($shift) + { + $this->_addHeaderFiles(); + $row = $this->db('jam_masuk')->where('shift', $shift)->oneArray(); + if (!empty($row)) { + $this->assign['form'] = $row; + $this->assign['title'] = 'Edit Jam Masuk'; + $this->assign['shift_options'] = [ + 'Pagi','Pagi2','Pagi3','Pagi4','Pagi5','Pagi6','Pagi7','Pagi8','Pagi9','Pagi10', + 'Siang','Siang2','Siang3','Siang4','Siang5','Siang6','Siang7','Siang8','Siang9','Siang10', + 'Malam','Malam2','Malam3','Malam4','Malam5','Malam6','Malam7','Malam8','Malam9','Malam10', + 'Midle Pagi1','Midle Pagi2','Midle Pagi3','Midle Pagi4','Midle Pagi5','Midle Pagi6','Midle Pagi7','Midle Pagi8','Midle Pagi9','Midle Pagi10', + 'Midle Siang1','Midle Siang2','Midle Siang3','Midle Siang4','Midle Siang5','Midle Siang6','Midle Siang7','Midle Siang8','Midle Siang9','Midle Siang10', + 'Midle Malam1','Midle Malam2','Midle Malam3','Midle Malam4','Midle Malam5','Midle Malam6','Midle Malam7','Midle Malam8','Midle Malam9','Midle Malam10' + ]; + + return $this->draw('jam_masuk.form.html', ['jam_masuk' => htmlspecialchars_array($this->assign)]); + } else { + redirect(url([ADMIN, 'presensi', 'jam_masuk'])); + } + } + + public function postJamMasukSave($shift = null) + { + $errors = 0; + + if (!$shift) { + $location = url([ADMIN, 'presensi', 'jammasukadd']); + } else { + $location = url([ADMIN, 'presensi', 'jammasukedit', $shift]); + } + + if (checkEmptyFields(['shift', 'jam_masuk', 'jam_pulang'], $_POST)) { + $this->notify('failure', 'Isian kosong'); + redirect($location, $_POST); + } + + if (!$errors) { + unset($_POST['save']); + + if (!$shift) { // new + $query = $this->db('jam_masuk')->save($_POST); + } else { // edit + $query = $this->db('jam_masuk')->where('shift', $shift)->save($_POST); + } + + if ($query) { + $this->notify('success', 'Simpan sukses'); + } else { + $this->notify('failure', 'Simpan gagal'); + } + + redirect(url([ADMIN, 'presensi', 'jammasuk'])); + } + + redirect($location, $_POST); + } + + public function getJamMasukHapus($shift) + { + if ($this->db('jam_masuk')->where('shift', $shift)->delete()) { + $this->notify('success', 'Hapus sukses'); + } else { + $this->notify('failure', 'Hapus gagal'); + } + redirect(url([ADMIN, 'presensi', 'jammasuk'])); + } + + public function getSettings() + { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'presensi', 'presensi'])); + } + $this->_addHeaderFiles(); + $this->assign['title'] = 'Pengaturan Presensi'; $this->assign['presensi'] = htmlspecialchars_array($this->settings('presensi')); - return $this->draw('settings.html', ['settings' => $this->assign]); + return $this->draw('settings.html', ['settings' => htmlspecialchars_array($this->assign)]); } public function postSaveSettings() { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'presensi', 'presensi'])); + } foreach ($_POST['presensi'] as $key => $val) { $this->settings('presensi', $key, $val); } @@ -1747,4 +1634,972 @@ private function _addHeaderFiles() $this->core->addJS(url([ADMIN, 'presensi', 'javascript']), 'footer'); } + public function getDownload_Excel() + { + $phrase = ''; + if (isset($_GET['s'])) + $phrase = $_GET['s']; + + $tgl_kunjungan = date('Y-m-d'); + $tgl_kunjungan_akhir = date('Y-m-d'); + + if (isset($_GET['awal'])) { + $tgl_kunjungan = $_GET['awal']; + } + if (isset($_GET['akhir'])) { + $tgl_kunjungan_akhir = $_GET['akhir']; + } + + $ruang = ''; + if (isset($_GET['ruang'])) { + $ruang = $_GET['ruang']; + } + + $username = $this->core->getUserInfo('username', null, true); + + if ($this->core->getUserInfo('role') == 'admin') { + $rows = $this->db('rekap_presensi') + ->select([ + 'nama' => 'pegawai.nama', + 'departemen' => 'pegawai.departemen', + 'jbtn' => 'pegawai.jbtn', + 'bidang' => 'pegawai.bidang', + 'id' => 'rekap_presensi.id', + 'shift' => 'rekap_presensi.shift', + 'jam_datang' => 'rekap_presensi.jam_datang', + 'jam_pulang' => 'rekap_presensi.jam_pulang', + 'status' => 'rekap_presensi.status', + 'durasi' => 'rekap_presensi.durasi', + 'photo' => 'rekap_presensi.photo' + ]) + ->join('pegawai', 'pegawai.id = rekap_presensi.id') + ->where('jam_datang', '>=', $tgl_kunjungan . ' 00:00:00') + ->where('jam_datang', '<=', $tgl_kunjungan_akhir . ' 23:59:59') + ->like('bidang', '%' . $ruang . '%') + ->like('nama', '%' . $phrase . '%') + ->asc('jam_datang') + ->toArray(); + } else { + $rows = $this->db('rekap_presensi') + ->select([ + 'nama' => 'pegawai.nama', + 'departemen' => 'pegawai.departemen', + 'jbtn' => 'pegawai.jbtn', + 'bidang' => 'pegawai.bidang', + 'id' => 'rekap_presensi.id', + 'shift' => 'rekap_presensi.shift', + 'jam_datang' => 'rekap_presensi.jam_datang', + 'jam_pulang' => 'rekap_presensi.jam_pulang', + 'status' => 'rekap_presensi.status', + 'durasi' => 'rekap_presensi.durasi', + 'photo' => 'rekap_presensi.photo' + ]) + ->join('pegawai', 'pegawai.id = rekap_presensi.id') + ->where('jam_datang', '>=', $tgl_kunjungan . ' 00:00:00') + ->where('jam_datang', '<=', $tgl_kunjungan_akhir . ' 23:59:59') + ->where('departemen', $this->core->getPegawaiInfo('departemen', $username)) + ->where('bidang', $this->core->getPegawaiInfo('bidang', $username)) + ->like('nama', '%' . $phrase . '%') + ->asc('jam_datang') + ->toArray(); + } + + $this->assign['list'] = []; + if (count($rows)) { + foreach ($rows as $row) { + $row = htmlspecialchars_array($row); + $row = $this->_calculateAttendanceDetails($row); + $this->assign['list'][] = $row; + } + } + $this->assign['awal'] = $tgl_kunjungan; + $this->assign['akhir'] = $tgl_kunjungan_akhir; + $this->assign['ruang'] = $ruang; + + header('Content-Type: application/vnd.ms-excel'); + header('Content-Disposition: attachment; filename="Rekap_Presensi_'.date('Y-m-d', strtotime($tgl_kunjungan)).'_to_'.date('Y-m-d', strtotime($tgl_kunjungan_akhir)).'.xls"'); + header('Pragma: no-cache'); + header('Expires: 0'); + + echo $this->draw('excel.rekap_presensi.html', ['rekap' => htmlspecialchars_array($this->assign)]); + exit(); + } + + private function _calculateAttendanceDetails($row) + { + $day = array( + 'Sun' => 'AKHAD', + 'Mon' => 'SENIN', + 'Tue' => 'SELASA', + 'Wed' => 'RABU', + 'Thu' => 'KAMIS', + 'Fri' => 'JUMAT', + 'Sat' => 'SABTU' + ); + + $jam_datang_timestamp = strtotime($row['jam_datang']); + $tm = date('H:i:s', $jam_datang_timestamp); + $tp = !empty($row['jam_pulang']) ? date('H:i:s', strtotime($row['jam_pulang'])) : '00:00:00'; + + $row['date'] = $day[date('D', $jam_datang_timestamp)]; + $shift = $row['shift']; + + $stts1 = ''; + $stts2 = ''; + $interval = 'INTERVAL 5 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 1 HOUR'; + + switch (true) { + case ($row['date'] == 'SENIN' and $shift == 'Pagi'): + $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '08:11:00' and $tm < '08:30:00') { + $stts1 = 'TL1'; + } elseif ($tm > '08:31:00' and $tm < '09:00:00') { + $stts1 = 'TL2'; + } elseif ($tm > '09:01:00' and $tm < '09:30:00') { + $stts1 = 'TL3'; + } elseif ($tm > '09:31:00') { + $stts1 = 'TL4'; + } + if ($tp > '14:01:00' and $tp < '14:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '13:31:00' and $tp < '14:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '13:01:00' and $tp < '13:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '13:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'SENIN' and $shift == 'Siang'): + $interval = 'INTERVAL 5 HOUR'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '14:41:00' and $tm < '15:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '15:01:00' and $tm < '15:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '15:31:00' and $tm < '16:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '16:00:00') { + $stts1 = 'TL4'; + } + if ($tp > '20:01:00' and $tp < '20:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '19:31:00' and $tp < '20:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '19:01:00' and $tp < '19:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '19:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'SENIN' and $shift == 'Siang - Gizi'): + $interval = 'INTERVAL 0 HOUR'; + $efektif = 'INTERVAL 0 HOUR'; + break; + case ($row['date'] == 'SENIN' and $shift == 'Malam'): + $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 2 HOUR'; + if ($tm > '20:41:00' and $tm < '21:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '21:01:00' and $tm < '21:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '21:31:00' and $tm < '22:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '22:01:00') { + $stts1 = 'TL4'; + } + if ($tp > '07:31:00' and $tp < '07:49:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '07:01:00' and $tp < '07:30:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '06:31:00' and $tp < '07:00:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '06:30:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'SELASA' and $shift == 'Pagi'): + $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '08:11:00' and $tm < '08:30:00') { + $stts1 = 'TL1'; + } elseif ($tm > '08:31:00' and $tm < '09:00:00') { + $stts1 = 'TL2'; + } elseif ($tm > '09:01:00' and $tm < '09:30:00') { + $stts1 = 'TL3'; + } elseif ($tm > '09:31:00') { + $stts1 = 'TL4'; + } + if ($tp > '14:01:00' and $tp < '14:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '13:31:00' and $tp < '14:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '13:01:00' and $tp < '13:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '13:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'SELASA' and $shift == 'Siang'): + $interval = 'INTERVAL 5 HOUR'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '14:41:00' and $tm < '15:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '15:01:00' and $tm < '15:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '15:31:00' and $tm < '16:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '16:00:00') { + $stts1 = 'TL4'; + } + if ($tp > '20:01:00' and $tp < '20:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '19:31:00' and $tp < '20:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '19:01:00' and $tp < '19:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '19:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'SELASA' and $shift == 'Malam'): + $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 2 HOUR'; + if ($tm > '20:41:00' and $tm < '21:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '21:01:00' and $tm < '21:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '21:31:00' and $tm < '22:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '22:01:00') { + $stts1 = 'TL4'; + } + if ($tp > '07:31:00' and $tp < '07:49:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '07:01:00' and $tp < '07:30:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '06:31:00' and $tp < '07:00:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '06:30:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'RABU' and $shift == 'Pagi'): + $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '08:11:00' and $tm < '08:30:00') { + $stts1 = 'TL1'; + } elseif ($tm > '08:31:00' and $tm < '09:00:00') { + $stts1 = 'TL2'; + } elseif ($tm > '09:01:00' and $tm < '09:30:00') { + $stts1 = 'TL3'; + } elseif ($tm > '09:31:00') { + $stts1 = 'TL4'; + } + if ($tp > '14:01:00' and $tp < '14:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '13:31:00' and $tp < '14:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '13:01:00' and $tp < '13:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '13:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'RABU' and $shift == 'Siang'): + $interval = 'INTERVAL 5 HOUR'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '14:41:00' and $tm < '15:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '15:01:00' and $tm < '15:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '15:31:00' and $tm < '16:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '16:00:00') { + $stts1 = 'TL4'; + } + if ($tp > '20:01:00' and $tp < '20:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '19:31:00' and $tp < '20:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '19:01:00' and $tp < '19:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '19:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'RABU' and $shift == 'Malam'): + $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 2 HOUR'; + if ($tm > '20:41:00' and $tm < '21:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '21:01:00' and $tm < '21:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '21:31:00' and $tm < '22:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '22:01:00') { + $stts1 = 'TL4'; + } + if ($tp > '07:31:00' and $tp < '07:49:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '07:01:00' and $tp < '07:30:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '06:31:00' and $tp < '07:00:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '06:30:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'KAMIS' and $shift == 'Pagi'): + $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '08:11:00' and $tm < '08:30:00') { + $stts1 = 'TL1'; + } elseif ($tm > '08:31:00' and $tm < '09:00:00') { + $stts1 = 'TL2'; + } elseif ($tm > '09:01:00' and $tm < '09:30:00') { + $stts1 = 'TL3'; + } elseif ($tm > '09:31:00') { + $stts1 = 'TL4'; + } + if ($tp > '14:01:00' and $tp < '14:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '13:31:00' and $tp < '14:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '13:01:00' and $tp < '13:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '13:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'KAMIS' and $shift == 'Siang'): + $interval = 'INTERVAL 5 HOUR'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '14:41:00' and $tm < '15:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '15:01:00' and $tm < '15:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '15:31:00' and $tm < '16:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '16:00:00') { + $stts1 = 'TL4'; + } + if ($tp > '20:01:00' and $tp < '20:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '19:31:00' and $tp < '20:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '19:01:00' and $tp < '19:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '19:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'KAMIS' and $shift == 'Malam'): + $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 2 HOUR'; + if ($tm > '20:41:00' and $tm < '21:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '21:01:00' and $tm < '21:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '21:31:00' and $tm < '22:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '22:01:00') { + $stts1 = 'TL4'; + } + if ($tp > '07:31:00' and $tp < '07:49:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '07:01:00' and $tp < '07:30:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '06:31:00' and $tp < '07:00:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '06:30:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'JUMAT' and $shift == 'Pagi'): + $interval = 'INTERVAL 3 HOUR'; + $efektif = 'INTERVAL 30 MINUTE'; + if ($tm > '08:11:00' and $tm < '08:30:00') { + $stts1 = 'TL1'; + } elseif ($tm > '08:31:00' and $tm < '09:00:00') { + $stts1 = 'TL2'; + } elseif ($tm > '09:01:00' and $tm < '09:30:00') { + $stts1 = 'TL3'; + } elseif ($tm > '09:31:00') { + $stts1 = 'TL4'; + } + if ($tp > '10:30:00' and $tp < '10:49:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '10:01:00' and $tp < '10:30:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '09:30:00' and $tp < '10:00:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '09:29:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'JUMAT' and $shift == 'Siang'): + $interval = 'INTERVAL 5 HOUR'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '14:41:00' and $tm < '15:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '15:01:00' and $tm < '15:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '15:31:00' and $tm < '16:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '16:00:00') { + $stts1 = 'TL4'; + } + if ($tp > '20:01:00' and $tp < '20:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '19:31:00' and $tp < '20:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '19:01:00' and $tp < '19:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '19:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'JUMAT' and $shift == 'Malam'): + $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 2 HOUR'; + if ($tm > '20:41:00' and $tm < '21:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '21:01:00' and $tm < '21:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '21:31:00' and $tm < '22:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '22:01:00') { + $stts1 = 'TL4'; + } + if ($tp > '07:31:00' and $tp < '07:49:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '07:01:00' and $tp < '07:30:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '06:31:00' and $tp < '07:00:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '06:30:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'SABTU' and $shift == 'Pagi'): + $interval = 'INTERVAL 5 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '08:11:00' and $tm < '08:30:00') { + $stts1 = 'TL1'; + } elseif ($tm > '08:31:00' and $tm < '09:00:00') { + $stts1 = 'TL2'; + } elseif ($tm > '09:01:00' and $tm < '09:30:00') { + $stts1 = 'TL3'; + } elseif ($tm > '09:31:00') { + $stts1 = 'TL4'; + } + if ($tp > '13:00:00' and $tp < '13:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '13:31:00' and $tp < '14:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '13:01:00' and $tp < '13:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '13:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'SABTU' and $shift == 'Siang'): + $interval = 'INTERVAL 5 HOUR'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '14:41:00' and $tm < '15:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '15:01:00' and $tm < '15:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '15:31:00' and $tm < '16:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '16:00:00') { + $stts1 = 'TL4'; + } + if ($tp > '20:01:00' and $tp < '20:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '19:31:00' and $tp < '20:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '19:01:00' and $tp < '19:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '19:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'SABTU' and $shift == 'Malam'): + $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 2 HOUR'; + if ($tm > '20:41:00' and $tm < '21:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '21:01:00' and $tm < '21:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '21:31:00' and $tm < '22:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '22:01:00') { + $stts1 = 'TL4'; + } + if ($tp > '07:31:00' and $tp < '07:49:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '07:01:00' and $tp < '07:30:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '06:31:00' and $tp < '07:00:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '06:30:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'AKHAD' and $shift == 'Pagi'): + $interval = 'INTERVAL 6 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '08:11:00' and $tm < '08:30:00') { + $stts1 = 'TL1'; + } elseif ($tm > '08:31:00' and $tm < '09:00:00') { + $stts1 = 'TL2'; + } elseif ($tm > '09:01:00' and $tm < '09:30:00') { + $stts1 = 'TL3'; + } elseif ($tm > '09:31:00') { + $stts1 = 'TL4'; + } + if ($tp > '14:01:00' and $tp < '14:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '13:31:00' and $tp < '14:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '13:01:00' and $tp < '13:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '13:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'AKHAD' and $shift == 'Siang'): + $interval = 'INTERVAL 5 HOUR'; + $efektif = 'INTERVAL 1 HOUR'; + if ($tm > '14:41:00' and $tm < '15:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '15:01:00' and $tm < '15:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '15:31:00' and $tm < '16:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '16:00:00') { + $stts1 = 'TL4'; + } + if ($tp > '20:01:00' and $tp < '20:19:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '19:31:00' and $tp < '20:00:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '19:01:00' and $tp < '19:30:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '19:00:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + case ($row['date'] == 'AKHAD' and $shift == 'Malam'): + $interval = 'INTERVAL 10 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 2 HOUR'; + if ($tm > '20:41:00' and $tm < '21:00:00') { + $stts1 = 'TL1'; + } elseif ($tm > '21:01:00' and $tm < '21:30:00') { + $stts1 = 'TL2'; + } elseif ($tm > '21:31:00' and $tm < '22:00:00') { + $stts1 = 'TL3'; + } elseif ($tm > '22:01:00') { + $stts1 = 'TL4'; + } + if ($tp > '07:31:00' and $tp < '07:49:00') { + $stts2 = 'PSW1'; + } elseif ($tp > '07:01:00' and $tp < '07:30:00') { + $stts2 = 'PSW2'; + } elseif ($tp > '06:31:00' and $tp < '07:00:00') { + $stts2 = 'PSW3'; + } elseif ($tp < '06:30:00' && $tp != '00:00:00') { + $stts2 = 'PSW4'; + } + break; + default: + $interval = 'INTERVAL 5 * 60 + 30 MINUTE'; + $efektif = 'INTERVAL 1 HOUR'; + break; + } + + $durasiSeconds = !empty($row['durasi']) ? strtotime($row['durasi']) - strtotime('TODAY') : 0; + $efektifSeconds = $this->parseInterval($efektif); + $intervalSeconds = $this->parseInterval($interval); + + $diffEfektif = $durasiSeconds - $efektifSeconds; + $signEfektif = ($diffEfektif < 0) ? '-' : ''; + $diffEfektifAbs = (int) abs($diffEfektif); + $efektifTime = $signEfektif . sprintf('%02d:%02d:%02d', floor($diffEfektifAbs / 3600), floor($diffEfektifAbs / 60) % 60, $diffEfektifAbs % 60); + + $diffKurang = $durasiSeconds - $intervalSeconds; + $signKurang = ($diffKurang < 0) ? '-' : ''; + $diffKurangAbs = (int) abs($diffKurang); + $kurangTime = $signKurang . sprintf('%02d:%02d:%02d', floor($diffKurangAbs / 3600), floor($diffKurangAbs / 60) % 60, $diffKurangAbs % 60); + + $row['efektif'] = [ + 'efektif' => $efektifTime, + 'kurang' => $kurangTime + ]; + $row['stts1'] = $stts1; + $row['stts2'] = $stts2; + + // Perbaikan Status: Tepat Waktu & PSW + if (empty($stts1) && empty($stts2)) { + $row['status'] = 'Tepat Waktu'; + } else { + $row['status'] = trim($stts1 . ' ' . $stts2); + } + + $row['mapURL'] = url([ADMIN, 'presensi', 'googlemap', $row['id'], date('Y-m-d', $jam_datang_timestamp)]); + + return $row; + } + + private function parseInterval($intervalStr) + { + $seconds = 0; + if (preg_match('/INTERVAL (\d+) \* 60 \+ (\d+) MINUTE/', $intervalStr, $matches)) { + $seconds = ($matches[1] * 60 + $matches[2]) * 60; + } elseif (preg_match('/INTERVAL (\d+) HOUR/', $intervalStr, $matches)) { + $seconds = $matches[1] * 3600; + } elseif (preg_match('/INTERVAL (\d+) MINUTE/', $intervalStr, $matches)) { + $seconds = $matches[1] * 60; + } + return $seconds; + } + + public function apiList() + { + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'presensi')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $pegawai = $this->db('pegawai')->where('nik', $username)->oneArray(); + if (!$pegawai) { + return ['status' => 'error', 'message' => 'Pegawai tidak ditemukan']; + } + + $idpeg = $this->db('barcode')->where('id', $pegawai['id'])->oneArray(); + if (!$idpeg) { + return ['status' => 'error', 'message' => 'Pegawai tidak terdaftar di tabel barcode']; + } + + $id = $idpeg['id']; + + $draw = $_GET['draw'] ?? 0; + $start = $_GET['start'] ?? 0; + $length = $_GET['length'] ?? 10; + $tgl_awal = $_GET['tgl_awal'] ?? date('Y-m-01'); + $tgl_akhir = $_GET['tgl_akhir'] ?? date('Y-m-t'); + + $totalRecords = $this->db('rekap_presensi') + ->where('id', $idpeg['id']) + ->where('jam_datang', '>=', $tgl_awal . ' 00:00:00') + ->where('jam_datang', '<=', $tgl_akhir . ' 23:59:59') + ->count(); + + $data = $this->db('rekap_presensi') + ->where('id', $idpeg['id']) + ->where('jam_datang', '>=', $tgl_awal . ' 00:00:00') + ->where('jam_datang', '<=', $tgl_akhir . ' 23:59:59') + ->asc('jam_datang') + ->offset($start) + ->limit($length) + ->toArray(); + + return [ + "status" => "success", + "data" => $data, + "meta" => [ + "page" => floor($start / $length) + 1, + "per_page" => intval($length), + "total" => $totalRecords + ] + ]; + } + + public function apiShow() + { + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'presensi')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $pegawai = $this->db('pegawai')->where('nik', $username)->oneArray(); + if (!$pegawai) { + return ['status' => 'error', 'message' => 'Pegawai tidak ditemukan']; + } + + $idpeg = $this->db('barcode')->where('id', $pegawai['id'])->oneArray(); + if (!$idpeg) { + return ['status' => 'error', 'message' => 'Pegawai tidak terdaftar di tabel barcode']; + } + + $id = $idpeg['id']; + + $tanggal = $_GET['tanggal'] ?? date('Y-m-d'); + + $data = $this->db('rekap_presensi') + ->where('id', $id) + ->like('jam_datang', '%' . $tanggal . '%') + ->toArray(); + + $temp = $this->db('temporary_presensi') + ->where('id', $id) + ->oneArray(); + + $pegawai = $this->db('pegawai')->where('id', $id)->oneArray(); + $jam_jaga = []; + if ($pegawai && !empty($pegawai['departemen'])) { + $jam_jaga = $this->db('jam_jaga')->where('dep_id', $pegawai['departemen'])->toArray(); + } + + return [ + "status" => "success", + "data" => [ + "rekap" => $data, + "ongoing" => $temp, + "shifts" => $jam_jaga + ] + ]; + } + + public function apiCreate() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'presensi')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $pegawai = $this->db('pegawai')->where('nik', $username)->oneArray(); + if (!$pegawai) { + return ['status' => 'error', 'message' => 'Pegawai tidak ditemukan']; + } + + $idpeg = $this->db('barcode')->where('id', $pegawai['id'])->oneArray(); + if (!$idpeg) { + return ['status' => 'error', 'message' => 'Pegawai tidak terdaftar di tabel barcode']; + } + + $id = $idpeg['id']; + + $shift = $input['shift'] ?? ''; + $urlnya = $input['photo'] ?? ''; + + $bulan = date('m'); + $tahun = date('Y'); + $hari = date('j'); + + $jam_jaga = $this->db('jam_jaga')->join('pegawai', 'pegawai.departemen = jam_jaga.dep_id')->where('pegawai.id', $id)->where('jam_jaga.shift', $shift)->oneArray(); + + $jadwal_pegawai = $this->db('jadwal_pegawai')->where('id', $id)->where('h' . $hari, $jam_jaga['shift'] ?? '')->where('bulan', $bulan)->where('tahun', $tahun)->oneArray(); + $jadwal_tambahan = $this->db('jadwal_tambahan')->where('id', $id)->where('h' . $hari, $jam_jaga['shift'] ?? '')->where('bulan', $bulan)->where('tahun', $tahun)->oneArray(); + $isFullAbsen = $this->db('rekap_presensi')->where('id', $id)->where('shift', $jam_jaga['shift'] ?? '')->like('jam_datang', date('Y-m-d') . '%')->oneArray(); + $isAbsen = $this->db('temporary_presensi')->where('id', $id)->oneArray(); + + $set_keterlambatan = $this->db('set_keterlambatan')->oneArray(); + $toleransi = (int)($set_keterlambatan['toleransi'] ?? 0); + $terlambat1 = (int)($set_keterlambatan['terlambat1'] ?? 0); + $terlambat2 = (int)($set_keterlambatan['terlambat2'] ?? 0); + + if ($isFullAbsen) { + return ['status' => 'error', 'message' => 'Anda sudah presensi untuk tanggal ' . date('Y-m-d')]; + } + if ($isAbsen) { + return ['status' => 'error', 'message' => 'Anda belum melakukan clock out untuk shift ' . $isAbsen['shift']]; + } + + if (!$jadwal_pegawai && !$jadwal_tambahan) { + return ['status' => 'error', 'message' => 'ID Pegawai atau jadwal shift tidak sesuai!']; + } + + if (empty($shift)) { + return ['status' => 'error', 'message' => 'Pilih shift dulu']; + } + + $status_presensi = 'Tepat Waktu'; + $jam_masuk = $jam_jaga['jam_masuk'] ?? '00:00:00'; + + $diff_sec = strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . ' ' . $jam_masuk); + if ($diff_sec > ($toleransi * 60)) { + $status_presensi = 'Terlambat Toleransi'; + } + if ($diff_sec > ($terlambat1 * 60)) { + $status_presensi = 'Terlambat I'; + } + if ($diff_sec > ($terlambat2 * 60)) { + $status_presensi = 'Terlambat II'; + } + + $keterlambatan = '00:00:00'; + if ($diff_sec > ($toleransi * 60)) { + $awal = new \DateTime(date('Y-m-d') . ' ' . $jam_masuk); + $akhir = new \DateTime(); + $diffFormat = $akhir->diff($awal, true); + $keterlambatan = ($awal > $akhir) ? '' : $diffFormat->format('%H:%I:%S'); + } + + $jam_datang = date('Y-m-d H:i:s'); + try { + $this->db('temporary_presensi')->save([ + 'id' => $id, + 'shift' => $jam_jaga['shift'], + 'jam_datang' => $jam_datang, + 'jam_pulang' => NULL, + 'status' => $status_presensi, + 'keterlambatan' => $keterlambatan, + 'durasi' => '', + 'photo' => $urlnya + ]); + + if (isset($input['lat'], $input['lng'])) { + if (!$this->db('mlite_geolocation_presensi')->where('id', $id)->where('tanggal', date('Y-m-d'))->oneArray()) { + $this->db('mlite_geolocation_presensi')->save([ + 'id' => $id, + 'tanggal' => date('Y-m-d'), + 'latitude' => $input['lat'], + 'longitude' => $input['lng'] + ]); + } + } + + return ['status' => 'created', 'message' => 'Presensi Masuk jam ' . $jam_masuk . ' ' . $status_presensi . ' ' . $keterlambatan]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiUpdate() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_update', 'presensi')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $pegawai = $this->db('pegawai')->where('nik', $username)->oneArray(); + if (!$pegawai) { + return ['status' => 'error', 'message' => 'Pegawai tidak ditemukan']; + } + + $idpeg = $this->db('barcode')->where('id', $pegawai['id'])->oneArray(); + if (!$idpeg) { + return ['status' => 'error', 'message' => 'Pegawai tidak terdaftar di tabel barcode']; + } + + $id = $idpeg['id']; + + $isAbsen = $this->db('temporary_presensi')->where('id', $id)->oneArray(); + if (!$isAbsen) { + return ['status' => 'error', 'message' => 'Anda belum presensi masuk / tidak ditemukan (temporary_presensi)']; + } + + $jam_jaga = $this->db('jam_jaga')->join('pegawai', 'pegawai.departemen = jam_jaga.dep_id')->where('pegawai.id', $id)->where('jam_jaga.shift', $isAbsen['shift'])->oneArray(); + + $jamDatang = substr($isAbsen['jam_datang'], 11); + if ((strtotime(date('Y-m-d H:i:s')) - strtotime(date('Y-m-d') . ' ' . $jamDatang)) < 2 * 60) { + return ['status' => 'error', 'message' => 'Sabar ... Jangan pencet terus']; + } + + $status = $isAbsen['status']; + $dayShift = date('Y-m-d'); + if ($isAbsen['shift'] == 'Malam') { + $dayShift = substr($isAbsen['jam_datang'], 0, 10); + $dayShift = date('Y-m-d', strtotime($dayShift . ' +1 day')); + } + $jam_pulang = $jam_jaga['jam_pulang'] ?? '00:00:00'; + if ((strtotime(date('Y-m-d H:i:s')) - strtotime($dayShift . ' ' . $jam_pulang)) < 0) { + $status = $isAbsen['status'] . ' & PSW'; + } + + $awal = new \DateTime($isAbsen['jam_datang']); + $akhir = new \DateTime(); + $diff = $akhir->diff($awal, true); + $durasi = $diff->format('%H:%I:%S'); + $jam_pulang_sekarang = date('Y-m-d H:i:s'); + + try { + $ubah = $this->db('temporary_presensi') + ->where('id', $id) + ->save([ + 'jam_pulang' => $jam_pulang_sekarang, + 'status' => $status, + 'durasi' => $durasi + ]); + + if ($ubah) { + $presensi = $this->db('temporary_presensi')->where('id', $id)->oneArray(); + $insert = $this->db('rekap_presensi') + ->save([ + 'id' => $presensi['id'], + 'shift' => $presensi['shift'], + 'jam_datang' => $presensi['jam_datang'], + 'jam_pulang' => $presensi['jam_pulang'], + 'status' => $presensi['status'], + 'keterlambatan' => $presensi['keterlambatan'], + 'durasi' => $presensi['durasi'], + 'keterangan' => '-', + 'photo' => $presensi['photo'] + ]); + if ($insert) { + $this->db('temporary_presensi')->where('id', $id)->delete(); + return ['status' => 'updated', 'message' => 'Presensi pulang telah disimpan']; + } + } + return ['status' => 'error', 'message' => 'Gagal mengubah presensi sementara']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDelete() + { + $username = $this->core->checkAuth('DELETE'); + if (!$this->core->checkPermission($username, 'can_delete', 'presensi')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $pegawai = $this->db('pegawai')->where('nik', $username)->oneArray(); + if (!$pegawai) { + return ['status' => 'error', 'message' => 'Pegawai tidak ditemukan']; + } + + $idpeg = $this->db('barcode')->where('id', $pegawai['id'])->oneArray(); + if (!$idpeg) { + return ['status' => 'error', 'message' => 'Pegawai tidak terdaftar di tabel barcode']; + } + + $id = $idpeg['id']; + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $jam_datang = $input['jam_datang'] ?? ''; + if (empty($jam_datang)) { + return ['status' => 'error', 'message' => 'jam_datang missing in body payload']; + } + + try { + $rekap = $this->db('rekap_presensi')->where('id', $id)->where('jam_datang', $jam_datang)->oneArray(); + if ($rekap) { + $this->db('rekap_presensi')->where('id', $id)->where('jam_datang', $jam_datang)->delete(); + return ['status' => 'deleted', 'message' => 'Rekap presensi dihapus']; + } + + $temp = $this->db('temporary_presensi')->where('id', $id)->where('jam_datang', $jam_datang)->oneArray(); + if ($temp) { + $this->db('temporary_presensi')->where('id', $id)->where('jam_datang', $jam_datang)->delete(); + return ['status' => 'deleted', 'message' => 'Temporary presensi dihapus']; + } + + return ['status' => 'error', 'message' => 'Data tidak ditemukan']; + + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + } diff --git a/plugins/presensi/Info.php b/plugins/presensi/Info.php index 1b4ce45e1..ef2f822d8 100644 --- a/plugins/presensi/Info.php +++ b/plugins/presensi/Info.php @@ -4,8 +4,9 @@ 'name' => 'Presensi', 'description' => 'Modul presensi', 'author' => 'Basoro.ID', + 'category' => 'manajemen', 'version' => '1.2', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'user-o', 'install' => function () use ($core) { $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('presensi', 'lat', '-2.58')"); diff --git a/plugins/presensi/README.md b/plugins/presensi/README.md new file mode 100644 index 000000000..0b54005d4 --- /dev/null +++ b/plugins/presensi/README.md @@ -0,0 +1,71 @@ +# Plugin Presensi + +Dokumentasi singkat penggunaan modul **Presensi** di mLITE. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Presensi**. +- Pilih submenu sesuai kebutuhan: + - Presensi Masuk + - Rekap Presensi + - Rekap Bulanan + - Jadwal Pegawai + - Jadwal Tambahan + - *(Khusus admin)* Barcode Presensi, Jam Masuk, Jam Jaga, Pengaturan + +## Panduan Pengguna (Petugas) + +1. **Presensi Masuk** + - Halaman ini digunakan untuk mencatat atau memantau kehadiran pegawai. + - Data presensi ditampilkan sesuai tanggal yang dipilih. + +2. **Rekap Presensi** + - Lihat rekap kehadiran pegawai berdasarkan periode tertentu. + - Tersedia opsi **Cetak** untuk mencetak rekap dalam format laporan. + - Tersedia opsi **Export Excel** untuk mengunduh data rekap ke format spreadsheet. + +3. **Rekap Bulanan** + - Lihat ringkasan presensi per bulan untuk seluruh pegawai (admin) atau pegawai di departemen/bidang yang sama (non-admin). + - Gunakan filter bulan dan tahun untuk memilih periode yang diinginkan. + - Tersedia opsi **Cetak** rekap bulanan. + +4. **Jadwal Pegawai** + - Lihat jadwal shift pegawai per bulan. + - Non-admin hanya melihat jadwal pegawai di departemen dan bidang yang sama. + - Tambah jadwal baru melalui tombol tambah, isi pegawai, tahun, bulan, dan shift per hari (h1–h31). + - Edit jadwal yang sudah ada melalui tombol edit pada baris jadwal. + +5. **Jadwal Tambahan** + - Kelola jadwal shift tambahan di luar jadwal rutin pegawai. + - Sama seperti Jadwal Pegawai, tersedia fitur tambah dan edit dengan filter bulan dan tahun. + +## Panduan Admin + +1. **Barcode Presensi** + - Generate dan kelola barcode untuk setiap pegawai. + - Barcode digunakan sebagai identitas pegawai saat melakukan presensi dengan scanner. + +2. **Jam Masuk** + - Kelola daftar jam masuk (shift) yang tersedia. + - Tambah shift baru: isi nama shift, jam masuk, dan jam pulang. + - Shift ini digunakan sebagai pilihan saat membuat jadwal pegawai (role admin). + +3. **Jam Jaga** + - Kelola daftar jam jaga per departemen. + - Tambah jam jaga baru: pilih departemen dan shift yang berlaku untuk departemen tersebut. + - Jam jaga ini digunakan sebagai pilihan jadwal bagi pengguna non-admin saat membuat jadwal di departemennya. + +4. **Pengaturan** + - Atur lokasi GPS kantor/faskes: + - **Latitude** dan **Longitude**: koordinat lokasi absensi (contoh: `-2.58`, `115.37`). + - **Distance**: radius toleransi absensi dalam kilometer (contoh: `2`). + - Atur pesan motivasi harian (`helloworld`) yang ditampilkan kepada pegawai, pisahkan setiap pesan dengan titik koma (`;`). + - Simpan pengaturan setelah melakukan perubahan. + +## Catatan + +- Pengguna dengan role `admin` dapat melihat seluruh data pegawai lintas departemen. Pengguna non-admin hanya dapat melihat dan mengelola data di departemen dan bidangnya sendiri. +- Jadwal pegawai menggunakan field `h1` hingga `h31` untuk mewakili setiap tanggal dalam sebulan. +- Koordinat GPS default saat instalasi adalah Barabai, Hulu Sungai Tengah (lat: `-2.58`, lon: `115.37`). Sesuaikan dengan lokasi faskes Anda melalui menu **Pengaturan**. +- Plugin versi 1.2 ke atas mendukung jadwal tambahan terpisah dari jadwal rutin. diff --git a/plugins/presensi/view/admin/barcode.form.html b/plugins/presensi/view/admin/barcode.form.html index c838e1c7a..dde9b79bb 100644 --- a/plugins/presensi/view/admin/barcode.form.html +++ b/plugins/presensi/view/admin/barcode.form.html @@ -1,8 +1,8 @@ -
                                              +
                                              -

                                              {$barcode.title}

                                              +

                                              {?=isset_or($barcode.title)?}

                                              @@ -12,13 +12,13 @@

                                              {$barcode.title}

                                              - +
                                              @@ -28,4 +28,4 @@

                                              {$barcode.title}

                                              -
                                              +
                                              diff --git a/plugins/presensi/view/admin/barcode.manage.html b/plugins/presensi/view/admin/barcode.manage.html index 13a8a11c2..36f5f5be6 100644 --- a/plugins/presensi/view/admin/barcode.manage.html +++ b/plugins/presensi/view/admin/barcode.manage.html @@ -1,18 +1,18 @@ -
                                              +

                                              Kelola Data Barcode

                                              -

                                              Jumlah: {?=count($barcode.totalRecords)?}

                                              +

                                              Jumlah: {?=$barcode.totalRecords?}

                                              @@ -40,14 +40,14 @@

                                              Jumlah: {?=count($barcode.totalRe {if: !empty($barcode.list)} {loop: $barcode.list} - {$value.id} - {$value.nama} - {$value.barcode} + {?=isset_or($value.id)?} + {?=isset_or($value.nama)?} + {?=isset_or($value.barcode)?} - + - + @@ -59,8 +59,8 @@

                                              Jumlah: {?=count($barcode.totalRe

                                              - {$barcode.pagination} + {?=isset_or($barcode.pagination)?}
                                              -
                                              + diff --git a/plugins/presensi/view/admin/cetak.rekap_bulanan.html b/plugins/presensi/view/admin/cetak.rekap_bulanan.html new file mode 100644 index 000000000..7eba0546e --- /dev/null +++ b/plugins/presensi/view/admin/cetak.rekap_bulanan.html @@ -0,0 +1,73 @@ + + + + + Rekap Bulanan Presensi + + + + +

                                              Rekap Bulanan Kehadiran Pegawai

                                              +

                                              Bulan: {$rekap.show_bulan} {$rekap.tahun_sel}

                                              + + + + + + + + + + + + {if: !empty($rekap.list)} + {loop: $rekap.list} + + + + + + + + {/loop} + {else} + + + + {/if} + +
                                              NoNama PegawaiJabatanRuanganTotal Kehadiran
                                              {?=$key+1?}{$value.nama}{$value.jbtn}{$value.bidang}{$value.count}
                                              Data Kosong
                                              + + + \ No newline at end of file diff --git a/plugins/presensi/view/admin/cetak.rekap_presensi.html b/plugins/presensi/view/admin/cetak.rekap_presensi.html new file mode 100644 index 000000000..4164533e2 --- /dev/null +++ b/plugins/presensi/view/admin/cetak.rekap_presensi.html @@ -0,0 +1,76 @@ + + + + + Rekap Presensi + + + + +

                                              Laporan Presensi Pegawai

                                              +

                                              Periode: {$rekap.awal} s/d {$rekap.akhir}

                                              +

                                              Ruangan: {$rekap.ruang}

                                              + + + + + + + + + + + + + + + {if: !empty($rekap.list)} + {loop: $rekap.list} + + + + + + + + + + + {/loop} + {else} + + + + {/if} + +
                                              NoNamaJabatanShiftRuanganJam DatangJam PulangStatus
                                              {?=$key+1?}{$value.nama}{$value.jbtn}{$value.shift}{$value.bidang}{$value.jam_datang}{$value.jam_pulang}{$value.status}
                                              Data Kosong
                                              + + + \ No newline at end of file diff --git a/plugins/presensi/view/admin/excel.rekap_presensi.html b/plugins/presensi/view/admin/excel.rekap_presensi.html new file mode 100644 index 000000000..ebcda2d8c --- /dev/null +++ b/plugins/presensi/view/admin/excel.rekap_presensi.html @@ -0,0 +1,45 @@ + + + + + Rekap Presensi + + +

                                              Rekap Presensi

                                              +

                                              Periode: {$rekap.awal} s/d {$rekap.akhir}

                                              + + + + + + + + + + + + + + + + + + {loop: $rekap.list} + + + + + + + + + + + + + + {/loop} + +
                                              Nama PegawaiJabatanShiftBidang/RuangJam DatangJam PulangDurasiEfektifKurangHariStatus
                                              {$value.nama}{$value.jbtn}{$value.shift}{$value.bidang}{$value.jam_datang}{$value.jam_pulang}{$value.durasi}{$value.efektif.efektif}{$value.efektif.kurang}{$value.date}{$value.status}
                                              + + diff --git a/plugins/presensi/view/admin/google_map.html b/plugins/presensi/view/admin/google_map.html index 87a656ac8..d0f544707 100644 --- a/plugins/presensi/view/admin/google_map.html +++ b/plugins/presensi/view/admin/google_map.html @@ -1,10 +1,10 @@ @@ -99,7 +99,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -110,7 +110,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -123,7 +123,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -134,7 +134,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -145,7 +145,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -156,7 +156,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -167,7 +167,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -178,7 +178,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -191,7 +191,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -202,7 +202,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -213,7 +213,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -224,7 +224,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -235,7 +235,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -246,7 +246,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -259,7 +259,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -270,7 +270,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -281,7 +281,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -292,7 +292,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -303,7 +303,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -314,7 +314,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -327,7 +327,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -338,7 +338,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -349,7 +349,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -360,7 +360,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -371,7 +371,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -382,7 +382,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -395,7 +395,7 @@

                                              Tambah Jadwal Presensi

                                              @@ -408,4 +408,4 @@

                                              Tambah Jadwal Presensi

                                              - + diff --git a/plugins/presensi/view/admin/jadwal.manage.html b/plugins/presensi/view/admin/jadwal.manage.html index 364788dd1..e2753c913 100644 --- a/plugins/presensi/view/admin/jadwal.manage.html +++ b/plugins/presensi/view/admin/jadwal.manage.html @@ -1,4 +1,4 @@ -
                                              +
                                              @@ -8,21 +8,21 @@

                                              Kelola Jadwal Presensi

                                              Jadwal
                                            • - Tambah + Tambah
                                            • -

                                              Jumlah: {?=count($jadwal.totalRecords)?} || Bulan: {$jadwal.showBulan}

                                              +

                                              Jumlah: {?=$jadwal.totalRecords?} || Bulan: {?=isset_or($jadwal.showBulan)?}

                                              @@ -79,48 +79,48 @@

                                              Jumlah: {?=count($jadwal.totalRec {if: !empty($jadwal.list)} {loop: $jadwal.list} - {$value.nama} - {$value.h1} - {$value.h2} - {$value.h3} - {$value.h4} - {$value.h5} - {$value.h6} - {$value.h7} - {$value.h8} - {$value.h9} - {$value.h10} - {$value.h11} - {$value.h12} - {$value.h13} - {$value.h14} - {$value.h15} - {$value.h16} - {$value.h17} - {$value.h18} - {$value.h19} - {$value.h20} - {$value.h21} - {$value.h22} - {$value.h23} - {$value.h24} - {$value.h25} - {$value.h26} - {$value.h27} - {$value.h28} - {$value.h29} - {$value.h30} - {$value.h31} + {?=isset_or($value.nama)?} + {?=isset_or($value.h1)?} + {?=isset_or($value.h2)?} + {?=isset_or($value.h3)?} + {?=isset_or($value.h4)?} + {?=isset_or($value.h5)?} + {?=isset_or($value.h6)?} + {?=isset_or($value.h7)?} + {?=isset_or($value.h8)?} + {?=isset_or($value.h9)?} + {?=isset_or($value.h10)?} + {?=isset_or($value.h11)?} + {?=isset_or($value.h12)?} + {?=isset_or($value.h13)?} + {?=isset_or($value.h14)?} + {?=isset_or($value.h15)?} + {?=isset_or($value.h16)?} + {?=isset_or($value.h17)?} + {?=isset_or($value.h18)?} + {?=isset_or($value.h19)?} + {?=isset_or($value.h20)?} + {?=isset_or($value.h21)?} + {?=isset_or($value.h22)?} + {?=isset_or($value.h23)?} + {?=isset_or($value.h24)?} + {?=isset_or($value.h25)?} + {?=isset_or($value.h26)?} + {?=isset_or($value.h27)?} + {?=isset_or($value.h28)?} + {?=isset_or($value.h29)?} + {?=isset_or($value.h30)?} + {?=isset_or($value.h31)?} - + @@ -135,8 +135,8 @@

                                              Jumlah: {?=count($jadwal.totalRec

                                              - {$jadwal.pagination} + {?=isset_or($jadwal.pagination)?}
                                              -
                                              + diff --git a/plugins/presensi/view/admin/jadwal_tambah.form.html b/plugins/presensi/view/admin/jadwal_tambah.form.html index 616aa070d..3eddf77f4 100644 --- a/plugins/presensi/view/admin/jadwal_tambah.form.html +++ b/plugins/presensi/view/admin/jadwal_tambah.form.html @@ -1,4 +1,4 @@ -
                                              +
                                              @@ -17,7 +17,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -27,7 +27,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -37,7 +37,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -51,7 +51,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -62,7 +62,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -73,7 +73,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -84,7 +84,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -95,7 +95,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -106,7 +106,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -119,7 +119,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -130,7 +130,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -141,7 +141,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -152,7 +152,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -163,7 +163,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -174,7 +174,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -187,7 +187,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -198,7 +198,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -209,7 +209,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -220,7 +220,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -231,7 +231,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -242,7 +242,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -255,7 +255,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -266,7 +266,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -277,7 +277,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -288,7 +288,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -299,7 +299,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -310,7 +310,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -323,7 +323,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -334,7 +334,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -345,7 +345,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -356,7 +356,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -367,7 +367,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -378,7 +378,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -391,7 +391,7 @@

                                              Tambah Jadwal Tambahan Presensi

                                              @@ -404,4 +404,4 @@

                                              Tambah Jadwal Tambahan Presensi

                                              -
                                              + diff --git a/plugins/presensi/view/admin/jadwal_tambah.manage.html b/plugins/presensi/view/admin/jadwal_tambah.manage.html index d303c1493..cb6246ea2 100644 --- a/plugins/presensi/view/admin/jadwal_tambah.manage.html +++ b/plugins/presensi/view/admin/jadwal_tambah.manage.html @@ -1,28 +1,28 @@ -
                                              +

                                              Kelola Jadwal Tambahan Presensi

                                              -

                                              Jumlah: {?=count($jadwal_tambah.totalRecords)?} || Bulan: {$jadwal_tambah.showBulan}

                                              +

                                              Jumlah: {?=$jadwal_tambah.totalRecords?} || Bulan: {?=isset_or($jadwal_tambah.showBulan)?}

                                              @@ -79,48 +79,48 @@

                                              Jumlah: {?=count($jadwal_tambah.t {if: !empty($jadwal_tambah.list)} {loop: $jadwal_tambah.list} - {$value.nama} - {$value.h1} - {$value.h2} - {$value.h3} - {$value.h4} - {$value.h5} - {$value.h6} - {$value.h7} - {$value.h8} - {$value.h9} - {$value.h10} - {$value.h11} - {$value.h12} - {$value.h13} - {$value.h14} - {$value.h15} - {$value.h16} - {$value.h17} - {$value.h18} - {$value.h19} - {$value.h20} - {$value.h21} - {$value.h22} - {$value.h23} - {$value.h24} - {$value.h25} - {$value.h26} - {$value.h27} - {$value.h28} - {$value.h29} - {$value.h30} - {$value.h31} + {?=isset_or($value.nama)?} + {?=isset_or($value.h1)?} + {?=isset_or($value.h2)?} + {?=isset_or($value.h3)?} + {?=isset_or($value.h4)?} + {?=isset_or($value.h5)?} + {?=isset_or($value.h6)?} + {?=isset_or($value.h7)?} + {?=isset_or($value.h8)?} + {?=isset_or($value.h9)?} + {?=isset_or($value.h10)?} + {?=isset_or($value.h11)?} + {?=isset_or($value.h12)?} + {?=isset_or($value.h13)?} + {?=isset_or($value.h14)?} + {?=isset_or($value.h15)?} + {?=isset_or($value.h16)?} + {?=isset_or($value.h17)?} + {?=isset_or($value.h18)?} + {?=isset_or($value.h19)?} + {?=isset_or($value.h20)?} + {?=isset_or($value.h21)?} + {?=isset_or($value.h22)?} + {?=isset_or($value.h23)?} + {?=isset_or($value.h24)?} + {?=isset_or($value.h25)?} + {?=isset_or($value.h26)?} + {?=isset_or($value.h27)?} + {?=isset_or($value.h28)?} + {?=isset_or($value.h29)?} + {?=isset_or($value.h30)?} + {?=isset_or($value.h31)?} - + @@ -135,8 +135,8 @@

                                              Jumlah: {?=count($jadwal_tambah.t

                                              - {$jadwal_tambah.pagination} + {?=isset_or($jadwal_tambah.pagination)?}
                                              -
                                              + diff --git a/plugins/presensi/view/admin/jagaadd.form.html b/plugins/presensi/view/admin/jagaadd.form.html index b495fd307..9be23fe6a 100644 --- a/plugins/presensi/view/admin/jagaadd.form.html +++ b/plugins/presensi/view/admin/jagaadd.form.html @@ -1,14 +1,14 @@ -
                                              +

                                              Tambah Data Jam Jaga

                                              @@ -18,16 +18,16 @@

                                              Tambah Data Jam Jaga

                                              - +
                                              @@ -37,7 +37,7 @@

                                              Tambah Data Jam Jaga

                                              @@ -47,7 +47,7 @@

                                              Tambah Data Jam Jaga

                                              @@ -60,4 +60,4 @@

                                              Tambah Data Jam Jaga

                                              -
                                              + diff --git a/plugins/presensi/view/admin/index.html b/plugins/presensi/view/admin/jam_jaga.html similarity index 67% rename from plugins/presensi/view/admin/index.html rename to plugins/presensi/view/admin/jam_jaga.html index a27e71847..6c8ca068a 100644 --- a/plugins/presensi/view/admin/index.html +++ b/plugins/presensi/view/admin/jam_jaga.html @@ -1,4 +1,4 @@ -
                                              +
                                              @@ -11,17 +11,17 @@

                                              Kelola Data Jam Jaga

                                              Tidak Aktif -->
                                            • - Tambah + Tambah
                                            • -

                                              Jumlah: {?=count($jamjaga.totalRecords)?}

                                              +

                                              Jumlah: {?=$jamjaga.totalRecords?}

                                              @@ -43,31 +43,22 @@

                                              Jumlah: {?=count($jamjaga.totalRe Shift Jam Masuk Jam Pulang - + Aksi {if: !empty($jamjaga.list)} {loop: $jamjaga.list} - {$value.dep_id} - {$value.shift} - {$value.jam_masuk} - {$value.jam_pulang} - + {/loop} {else} @@ -78,8 +69,8 @@

                                              Jumlah: {?=count($jamjaga.totalRe

                                              - {$jamjaga.pagination} + {?=isset_or($jamjaga.pagination)?}
                                              -
                                              + diff --git a/plugins/presensi/view/admin/jam_masuk.form.html b/plugins/presensi/view/admin/jam_masuk.form.html new file mode 100644 index 000000000..f67a39306 --- /dev/null +++ b/plugins/presensi/view/admin/jam_masuk.form.html @@ -0,0 +1,48 @@ +
                                              +
                                              +
                                              +
                                              +

                                              {?=isset_or($jam_masuk.title)?}

                                              + +
                                              +
                                              + +
                                              + + +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              + + Batal +
                                              + +
                                              +
                                              +
                                              +
                                              \ No newline at end of file diff --git a/plugins/presensi/view/admin/jam_masuk.manage.html b/plugins/presensi/view/admin/jam_masuk.manage.html new file mode 100644 index 000000000..6f00197c8 --- /dev/null +++ b/plugins/presensi/view/admin/jam_masuk.manage.html @@ -0,0 +1,71 @@ +
                                              +
                                              +
                                              +
                                              +

                                              Kelola Data Jam Masuk

                                              + +
                                              +
                                              +
                                              +
                                              +

                                              Jumlah: {?=$jam_masuk.totalRecords?}

                                              +
                                              +
                                              +
                                              +
                                              + + + + + +
                                              +
                                              +
                                              +
                                              +
                                              + + + + + + + + + + + {if: !empty($jam_masuk.list)} + {loop: $jam_masuk.list} + + + + + + + {/loop} + {else} + + + + {/if} + +
                                              ShiftJam MasukJam PulangAksi
                                              {?=isset_or($value.shift)?}{?=isset_or($value.jam_masuk)?}{?=isset_or($value.jam_pulang)?} + + + + + + +
                                              Kosong
                                              +
                                              + {?=isset_or($jam_masuk.pagination)?} +
                                              +
                                              +
                                              +
                                              \ No newline at end of file diff --git a/plugins/presensi/view/admin/manage.html b/plugins/presensi/view/admin/manage.html index c51320c69..bdf53d77c 100644 --- a/plugins/presensi/view/admin/manage.html +++ b/plugins/presensi/view/admin/manage.html @@ -1,21 +1,21 @@ - + diff --git a/plugins/presensi/view/admin/presensi.html b/plugins/presensi/view/admin/presensi.html index b923edc1f..b2792ec41 100644 --- a/plugins/presensi/view/admin/presensi.html +++ b/plugins/presensi/view/admin/presensi.html @@ -1,4 +1,4 @@ -
                                              +
                                              @@ -7,7 +7,7 @@

                                              Presensi Masuk

                                              -

                                              Jumlah: {?=count($presensi.totalRecords)?}

                                              +

                                              Jumlah: {?=$presensi.totalRecords?}

                                              {if: $this->core->getUserInfo('role') == 'admin'}
                                              @@ -16,7 +16,7 @@

                                              Jumlah: {?=count($presensi.totalR

                                              @@ -29,7 +29,7 @@

                                              Jumlah: {?=count($presensi.totalR

                                              @@ -65,17 +65,17 @@

                                              Jumlah: {?=count($presensi.totalR {loop: $presensi.list} - - Profile Image + + Profile Image - + - {$value.jbtn} - {$value.shift} - {$value.bidang} - {$value.jam_datang} + {?=isset_or($value.jbtn)?} + {?=isset_or($value.shift)?} + {?=isset_or($value.bidang)?} + {?=isset_or($value.jam_datang)?} - + @@ -89,11 +89,11 @@

                                              Jumlah: {?=count($presensi.totalR

                                              - {$presensi.pagination} + {?=isset_or($presensi.pagination)?}
                                              -
                                              +
                                              -
                                              - -
                                              - - -
                                              -
                                              - +
                                              - +
                                              - +
                                              @@ -139,7 +139,7 @@

                                              Informasi Tambahan

                                              - + + {/loop} + {/loop} + + + + {/loop} + + +
                                              +{/if} +

                                              e-Radiologi

                                              @@ -76,27 +275,232 @@

                                              e-Radiologi

                                              {loop: $radiologi} - - - + + + - {loop: $value.permintaan_pemeriksaan_radiologi as $data} - - - - - {/loop} + {loop: $value.permintaan_pemeriksaan_radiologi as $data} + + + + + {/loop} {/loop}
                                              {$value.nm_dokter}{$value.noorder}{$value.tgl_permintaan} {$value.jam_permintaan}{?=isset_or($value.nm_dokter)?}{?=isset_or($value.noorder)?}{?=isset_or($value.tgl_permintaan)?} {?=isset_or($value.jam_permintaan)?} - - + + - + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_update', 'radiologi') == true} + + + {/if}
                                              Nama Pemeriksaan Status Bayar
                                              {$data.nm_perawatan}{$data.stts_bayar}
                                              {?=isset_or($data.nm_perawatan)?}{?=isset_or($data.stts_bayar)?}
                                              + + + + + + diff --git a/plugins/radiologi/view/admin/stts.daftar.html b/plugins/radiologi/view/admin/stts.daftar.html index e2ecfcbcd..f6f05005b 100644 --- a/plugins/radiologi/view/admin/stts.daftar.html +++ b/plugins/radiologi/view/admin/stts.daftar.html @@ -1,7 +1,7 @@
                                              - - + +
                                              diff --git a/plugins/rawat_inap/Admin.php b/plugins/rawat_inap/Admin.php index 015b46c48..972a362b1 100644 --- a/plugins/rawat_inap/Admin.php +++ b/plugins/rawat_inap/Admin.php @@ -2,12 +2,18 @@ namespace Plugins\Rawat_Inap; use Systems\AdminModule; -use Plugins\Icd\DB_ICD; +use Systems\Lib\BpjsService; class Admin extends AdminModule { private $_uploads = WEBAPPS_PATH.'/berkasrawat/pages/upload'; + protected array $assign = []; + private $consid = ''; + private $secretkey = ''; + private $api_url = ''; + private $user_key = ''; + public function navigation() { return [ @@ -21,8 +27,13 @@ public function anyManage() $tgl_masuk_akhir = ''; $status_pulang = ''; $status_periksa = ''; + if (!is_array($this->assign)) { + $this->assign = []; // atau bisa langsung array dengan default + } + $this->assign['stts_pulang'] = []; + if(isset($_POST['periode_rawat_inap'])) { $tgl_masuk = $_POST['periode_rawat_inap']; } @@ -38,7 +49,7 @@ public function anyManage() $cek_vclaim = $this->db('mlite_modules')->where('dir', 'vclaim')->oneArray(); $master_berkas_digital = $this->db('master_berkas_digital')->toArray(); $this->_Display($tgl_masuk, $tgl_masuk_akhir, $status_pulang, $status_periksa); - return $this->draw('manage.html', ['rawat_inap' => $this->assign, 'cek_vclaim' => $cek_vclaim, 'master_berkas_digital' => $master_berkas_digital]); + return $this->draw('manage.html', ['rawat_inap' => htmlspecialchars_array($this->assign), 'cek_vclaim' => htmlspecialchars_array($cek_vclaim), 'master_berkas_digital' => htmlspecialchars_array($master_berkas_digital)]); } public function anyDisplay() @@ -63,7 +74,7 @@ public function anyDisplay() } $cek_vclaim = $this->db('mlite_modules')->where('dir', 'vclaim')->oneArray(); $this->_Display($tgl_masuk, $tgl_masuk_akhir, $status_pulang, $status_periksa); - echo $this->draw('display.html', ['rawat_inap' => $this->assign, 'cek_vclaim' => $cek_vclaim]); + echo $this->draw('display.html', ['rawat_inap' => htmlspecialchars_array($this->assign), 'cek_vclaim' => htmlspecialchars_array($cek_vclaim)]); exit(); } @@ -76,8 +87,9 @@ public function _Display($tgl_masuk='', $tgl_masuk_akhir='', $status_pulang='', $this->assign['penjab'] = $this->db('penjab')->where('status', '1')->toArray(); $this->assign['no_rawat'] = ''; - $bangsal = str_replace(",","','", $this->core->getUserInfo('cap', null, true)); - + $bangsal_list = str_replace(",","','", $this->core->getUserInfo('cap', null, true)); + + $params = []; $sql = "SELECT kamar_inap.*, reg_periksa.*, @@ -104,28 +116,46 @@ public function _Display($tgl_masuk='', $tgl_masuk_akhir='', $status_pulang='', reg_periksa.kd_pj=penjab.kd_pj"; if ($this->core->getUserInfo('role') != 'admin') { - $sql .= " AND bangsal.kd_bangsal IN ('$bangsal')"; + $sql .= " AND bangsal.kd_bangsal IN ('$bangsal_list')"; } if($status_pulang == '') { $sql .= " AND kamar_inap.stts_pulang = '-'"; } if($status_pulang == 'all' && $tgl_masuk !== '' && $tgl_masuk_akhir !== '') { - $sql .= " AND kamar_inap.stts_pulang = '-' AND kamar_inap.tgl_masuk BETWEEN '$tgl_masuk' AND '$tgl_masuk_akhir'"; + $sql .= " AND kamar_inap.stts_pulang = '-' AND kamar_inap.tgl_masuk BETWEEN ? AND ?"; + $params[] = $tgl_masuk; + $params[] = $tgl_masuk_akhir; } if($status_pulang == 'masuk' && $tgl_masuk !== '' && $tgl_masuk_akhir !== '') { - $sql .= " AND kamar_inap.tgl_masuk BETWEEN '$tgl_masuk' AND '$tgl_masuk_akhir'"; + $sql .= " AND kamar_inap.tgl_masuk BETWEEN ? AND ?"; + $params[] = $tgl_masuk; + $params[] = $tgl_masuk_akhir; } if($status_pulang == 'pulang' && $tgl_masuk !== '' && $tgl_masuk_akhir !== '') { - $sql .= " AND kamar_inap.tgl_keluar BETWEEN '$tgl_masuk' AND '$tgl_masuk_akhir'"; + $sql .= " AND kamar_inap.tgl_keluar BETWEEN ? AND ?"; + $params[] = $tgl_masuk; + $params[] = $tgl_masuk_akhir; } if($status_periksa == 'lunas' && $status_pulang == '-' && $tgl_masuk !== '' && $tgl_masuk_akhir !== '') { - $sql .= " AND reg_periksa.status_bayar = 'Sudah Bayar' AND kamar_inap.tgl_masuk BETWEEN '$tgl_masuk' AND '$tgl_masuk_akhir'"; + $sql .= " AND reg_periksa.status_bayar = 'Sudah Bayar' AND kamar_inap.tgl_masuk BETWEEN ? AND ?"; + $params[] = $tgl_masuk; + $params[] = $tgl_masuk_akhir; } $stmt = $this->db()->pdo()->prepare($sql); - $stmt->execute(); + $stmt->execute($params); $rows = $stmt->fetchAll(); + // XSS Prevention: Sanitize output + foreach ($rows as &$row) { + foreach ($row as $key => $value) { + if (is_string($value)) { + $row[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); + } + } + } + unset($row); + $this->assign['list'] = []; foreach ($rows as $row) { $row['status_billing'] = 'Sudah Bayar'; @@ -185,6 +215,7 @@ public function anyForm() $this->assign['stts_pulang'] = ['Sehat','Rujuk','APS','+','Meninggal','Sembuh','Membaik','Pulang Paksa','-','Pindah Kamar','Status Belum Lengkap','Atas Persetujuan Dokter','Atas Permintaan Sendiri','Lain-lain']; $this->assign['no_rawat'] = ''; if (isset($_POST['no_rawat'])){ + $no_rawat = htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); $this->assign['kamar_inap'] = $this->db('kamar_inap') ->join('reg_periksa', 'reg_periksa.no_rawat=kamar_inap.no_rawat') ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') @@ -192,10 +223,10 @@ public function anyForm() ->join('dpjp_ranap', 'dpjp_ranap.no_rawat=kamar_inap.no_rawat') ->join('dokter', 'dokter.kd_dokter=dpjp_ranap.kd_dokter') ->join('penjab', 'penjab.kd_pj=reg_periksa.kd_pj') - ->where('kamar_inap.no_rawat', $_POST['no_rawat']) + ->where('kamar_inap.no_rawat', $no_rawat) ->oneArray(); echo $this->draw('form.html', [ - 'rawat_inap' => $this->assign + 'rawat_inap' => htmlspecialchars_array($this->assign) ]); } else { $this->assign['kamar_inap'] = [ @@ -215,7 +246,7 @@ public function anyForm() 'lama' => '' ]; echo $this->draw('form.html', [ - 'rawat_inap' => $this->assign + 'rawat_inap' => htmlspecialchars_array($this->assign) ]); } exit(); @@ -224,8 +255,9 @@ public function anyForm() public function anyStatusDaftar() { if(isset($_POST['no_rkm_medis'])) { + $no_rkm_medis = htmlspecialchars($_POST['no_rkm_medis'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); $rawat = $this->db('reg_periksa') - ->where('no_rkm_medis', $_POST['no_rkm_medis']) + ->where('no_rkm_medis', $no_rkm_medis) ->where('status_bayar', 'Belum Bayar') ->limit(1) ->oneArray(); @@ -233,7 +265,7 @@ public function anyStatusDaftar() $stts_daftar ="Transaki tanggal ".date('Y-m-d', strtotime($rawat['tgl_registrasi']))." belum diselesaikan" ; $bg_status = 'text-danger'; } else { - $result = $this->db('reg_periksa')->where('no_rkm_medis', $_POST['no_rkm_medis'])->oneArray(); + $result = $this->db('reg_periksa')->where('no_rkm_medis', $no_rkm_medis)->oneArray(); if(!empty($result['no_rawat'])) { $stts_daftar = 'Lama'; $bg_status = 'text-info'; @@ -242,12 +274,13 @@ public function anyStatusDaftar() $bg_status = 'text-success'; } } - echo $this->draw('stts.daftar.html', ['stts_daftar' => $stts_daftar, 'bg_status' =>$bg_status]); + echo $this->draw('stts.daftar.html', ['stts_daftar' => htmlspecialchars($stts_daftar, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'stts_daftar_hidden' => htmlspecialchars($stts_daftar, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'bg_status' => $bg_status]); } else { + $no_rawat = htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); $rawat = $this->db('reg_periksa') - ->where('no_rawat', $_POST['no_rawat']) + ->where('no_rawat', $no_rawat) ->oneArray(); - echo $this->draw('stts.daftar.html', ['stts_daftar' => $rawat['stts_daftar']]); + echo $this->draw('stts.daftar.html', ['stts_daftar' => htmlspecialchars($rawat['stts_daftar'] ?? '', ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'stts_daftar_hidden' => htmlspecialchars($rawat['stts_daftar'] ?? '', ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'bg_status' => 'text-info']); } exit(); } @@ -263,8 +296,8 @@ public function postSave() 'tgl_masuk' => $_POST['tgl_masuk'], 'jam_masuk' => $_POST['jam_masuk'], 'ttl_biaya' => $kamar['trf_kamar']*$_POST['lama'], - 'tgl_keluar' => '0000-00-00', - 'jam_keluar' => '00:00:00', + 'tgl_keluar' => null, + 'jam_keluar' => null, 'diagnosa_akhir' => '', 'diagnosa_awal' => $_POST['diagnosa_awal'], 'stts_pulang' => '-' @@ -347,7 +380,7 @@ public function anyPasien() ->toArray();*/ } - echo $this->draw('pasien.html', ['pasien' => $pasien]); + echo $this->draw('pasien.html', ['pasien' => htmlspecialchars_array($pasien)]); exit(); } @@ -360,7 +393,7 @@ public function getAntrian() ->join('poliklinik', 'poliklinik.kd_poli=reg_periksa.kd_poli') ->join('dokter', 'dokter.kd_dokter=reg_periksa.kd_dokter') ->join('penjab', 'penjab.kd_pj=reg_periksa.kd_pj') - ->where('no_rawat', $_GET['no_rawat']) + ->where('no_rawat', htmlspecialchars($_GET['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')) ->oneArray(); echo $this->draw('antrian.html', ['rawat_inap' => $rawat_inap]); exit(); @@ -377,96 +410,120 @@ public function postSaveDetail() if($_POST['kat'] == 'tindakan') { $jns_perawatan = $this->db('jns_perawatan_inap')->where('kd_jenis_prw', $_POST['kd_jenis_prw'])->oneArray(); if($_POST['provider'] == 'rawat_inap_dr') { - $this->db('rawat_inap_dr')->save([ - 'no_rawat' => $_POST['no_rawat'], - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'kd_dokter' => $_POST['kode_provider'], - 'tgl_perawatan' => $_POST['tgl_perawatan'], - 'jam_rawat' => $_POST['jam_rawat'], - 'material' => $jns_perawatan['material'], - 'bhp' => $jns_perawatan['bhp'], - 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], - 'kso' => $jns_perawatan['kso'], - 'menejemen' => $jns_perawatan['menejemen'], - 'biaya_rawat' => $jns_perawatan['total_byrdr'] - ]); + for ($i = 0; $i < $_POST['jml_tindakan']; $i++) { + $this->db('rawat_inap_dr')->save([ + 'no_rawat' => $_POST['no_rawat'], + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'kd_dokter' => $_POST['kode_provider'], + 'tgl_perawatan' => $_POST['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($_POST['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrdr'] + ]); + } } if($_POST['provider'] == 'rawat_inap_pr') { - $this->db('rawat_inap_pr')->save([ - 'no_rawat' => $_POST['no_rawat'], - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'nip' => $_POST['kode_provider2'], - 'tgl_perawatan' => $_POST['tgl_perawatan'], - 'jam_rawat' => $_POST['jam_rawat'], - 'material' => $jns_perawatan['material'], - 'bhp' => $jns_perawatan['bhp'], - 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], - 'kso' => $jns_perawatan['kso'], - 'menejemen' => $jns_perawatan['menejemen'], - 'biaya_rawat' => $jns_perawatan['total_byrpr'] - ]); + for ($i = 0; $i < $_POST['jml_tindakan']; $i++) { + $this->db('rawat_inap_pr')->save([ + 'no_rawat' => $_POST['no_rawat'], + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'nip' => $_POST['kode_provider2'], + 'tgl_perawatan' => $_POST['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($_POST['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrpr'] + ]); + } } if($_POST['provider'] == 'rawat_inap_drpr') { - $this->db('rawat_inap_drpr')->save([ - 'no_rawat' => $_POST['no_rawat'], - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'kd_dokter' => $_POST['kode_provider'], - 'nip' => $_POST['kode_provider2'], - 'tgl_perawatan' => $_POST['tgl_perawatan'], - 'jam_rawat' => $_POST['jam_rawat'], - 'material' => $jns_perawatan['material'], - 'bhp' => $jns_perawatan['bhp'], - 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], - 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], - 'kso' => $jns_perawatan['kso'], - 'menejemen' => $jns_perawatan['menejemen'], - 'biaya_rawat' => $jns_perawatan['total_byrdrpr'] - ]); - } - } - if($_POST['kat'] == 'obat') { - - $no_resep = $this->core->setNoResep($_POST['tgl_perawatan']); - $cek_resep = $this->db('resep_obat')->where('no_rawat', $_POST['no_rawat'])->where('tgl_peresepan', $_POST['tgl_perawatan'])->where('tgl_perawatan', '0000-00-00')->where('status', 'ranap')->oneArray(); - - if(empty($cek_resep)) { - - $resep_obat = $this->db('resep_obat') - ->save([ - 'no_resep' => $no_resep, - 'tgl_perawatan' => '0000-00-00', - 'jam' => '00:00:00', + for ($i = 0; $i < $_POST['jml_tindakan']; $i++) { + $this->db('rawat_inap_drpr')->save([ 'no_rawat' => $_POST['no_rawat'], + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], 'kd_dokter' => $_POST['kode_provider'], - 'tgl_peresepan' => $_POST['tgl_perawatan'], - 'jam_peresepan' => $_POST['jam_rawat'], - 'status' => 'ranap', - 'tgl_penyerahan' => '0000-00-00', - 'jam_penyerahan' => '00:00:00' + 'nip' => $_POST['kode_provider2'], + 'tgl_perawatan' => $_POST['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($_POST['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], + 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrdrpr'] ]); - - if ($this->db('resep_obat')->where('no_resep', $no_resep)->where('kd_dokter', $_POST['kode_provider'])->oneArray()) { - $this->db('resep_dokter') - ->save([ - 'no_resep' => $no_resep, - 'kode_brng' => $_POST['kd_jenis_prw'], - 'jml' => $_POST['jml'], - 'aturan_pakai' => $_POST['aturan_pakai'] - ]); } + } + } + if($_POST['kat'] == 'obat') { + $maxRetries = 5; + $retryCount = 0; + $success = false; + + while ($retryCount < $maxRetries && !$success) { + $this->db()->pdo()->beginTransaction(); + try { + $no_resep = $this->core->setNoResep($_POST['tgl_perawatan']); + $cek_resep = $this->db('resep_obat')->join('resep_dokter', 'resep_obat.no_resep = resep_dokter.no_resep')->where('no_rawat', $_POST['no_rawat'])->where('tgl_peresepan', $_POST['tgl_perawatan'])->where('tgl_perawatan', 'IS', 'NULL')->where('status', 'ranap')->oneArray(); + + if(empty($cek_resep)) { + + $resep_obat = $this->db('resep_obat') + ->save([ + 'no_resep' => $no_resep, + 'tgl_perawatan' => null, + 'jam' => null, + 'no_rawat' => $_POST['no_rawat'], + 'kd_dokter' => $_POST['kode_provider'], + 'tgl_peresepan' => $_POST['tgl_perawatan'], + 'jam_peresepan' => $_POST['jam_rawat'], + 'status' => 'ranap', + 'tgl_penyerahan' => null, + 'jam_penyerahan' => null + ]); + + if ($this->db('resep_obat')->where('no_resep', $no_resep)->where('kd_dokter', $_POST['kode_provider'])->oneArray()) { + $this->db('resep_dokter') + ->save([ + 'no_resep' => $no_resep, + 'kode_brng' => $_POST['kd_jenis_prw'], + 'jml' => $_POST['jml'], + 'aturan_pakai' => $_POST['aturan_pakai'] + ]); + } - } else { + } else { - $no_resep = $cek_resep['no_resep']; + $no_resep = $cek_resep['no_resep']; - $this->db('resep_dokter') - ->save([ - 'no_resep' => $no_resep, - 'kode_brng' => $_POST['kd_jenis_prw'], - 'jml' => $_POST['jml'], - 'aturan_pakai' => $_POST['aturan_pakai'] - ]); + $this->db('resep_dokter') + ->save([ + 'no_resep' => $no_resep, + 'kode_brng' => $_POST['kd_jenis_prw'], + 'jml' => $_POST['jml'], + 'aturan_pakai' => $_POST['aturan_pakai'] + ]); + } + $this->db()->pdo()->commit(); + $success = true; + } catch (\Exception $e) { + $this->db()->pdo()->rollBack(); + if ($e->getCode() == '23000') { + $retryCount++; + usleep(100000); + continue; + } + throw $e; + } } } @@ -579,7 +636,7 @@ public function anyRincian() } $resep[] = $row; } - echo $this->draw('rincian.html', ['rawat_inap_dr' => $rawat_inap_dr, 'rawat_inap_pr' => $rawat_inap_pr, 'rawat_inap_drpr' => $rawat_inap_drpr, 'jumlah_total' => $jumlah_total, 'jumlah_total_resep' => $jumlah_total_resep, 'resep' =>$resep, 'no_rawat' => $_POST['no_rawat']]); + echo $this->draw('rincian.html', ['rawat_inap_dr' => htmlspecialchars_array($rawat_inap_dr), 'rawat_inap_pr' => htmlspecialchars_array($rawat_inap_pr), 'rawat_inap_drpr' => htmlspecialchars_array($rawat_inap_drpr), 'jumlah_total' => $jumlah_total, 'jumlah_total_resep' => $jumlah_total_resep, 'resep' => htmlspecialchars_array($resep), 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')]); exit(); } @@ -632,7 +689,76 @@ public function anySoap() $result_ranap[] = $row; } - echo $this->draw('soap.html', ['pemeriksaan' => $result, 'pemeriksaan_ranap' => $result_ranap, 'diagnosa' => $diagnosa, 'prosedur' => $prosedur]); + echo $this->draw('soap.html', ['pemeriksaan' => htmlspecialchars_array($result), 'pemeriksaan_ranap' => htmlspecialchars_array($result_ranap), 'diagnosa' => htmlspecialchars_array($diagnosa), 'prosedur' => htmlspecialchars_array($prosedur)]); + exit(); + } + + public function anyFormSoap() + { + // Ambil data pasien dari reg_periksa dan pasien + $pasien_data = $this->db('reg_periksa') + ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') + ->where('reg_periksa.no_rawat', $_POST['no_rawat']) + ->oneArray(); + + // Hitung umur + $umur = ''; + if($pasien_data) { + $tgl_lahir = new \DateTime($pasien_data['tgl_lahir']); + $tgl_daftar = new \DateTime($pasien_data['tgl_registrasi']); + $umur_tahun = $tgl_daftar->diff($tgl_lahir)->y; + $umur_bulan = $tgl_daftar->diff($tgl_lahir)->m; + $umur_hari = $tgl_daftar->diff($tgl_lahir)->d; + + if($umur_tahun > 0) { + $umur = $umur_tahun . ' Th'; + } elseif($umur_bulan > 0) { + $umur = $umur_bulan . ' Bl'; + } else { + $umur = $umur_hari . ' Hr'; + } + } + + // Ambil data pemeriksaan_ralan terbaru sebagai fallback + $pemeriksaan_ralan = $this->db('pemeriksaan_ralan') + ->where('no_rawat', $_POST['no_rawat']) + ->desc('tgl_perawatan') + ->desc('jam_rawat') + ->oneArray(); + + // Set default values dari pemeriksaan_ralan jika ada + $default_values = [ + 'suhu_tubuh' => $pemeriksaan_ralan['suhu_tubuh'] ?? '', + 'tensi' => $pemeriksaan_ralan['tensi'] ?? '', + 'nadi' => $pemeriksaan_ralan['nadi'] ?? '', + 'respirasi' => $pemeriksaan_ralan['respirasi'] ?? '', + 'tinggi' => $pemeriksaan_ralan['tinggi'] ?? '', + 'berat' => $pemeriksaan_ralan['berat'] ?? '', + 'gcs' => $pemeriksaan_ralan['gcs'] ?? '', + 'kesadaran' => $pemeriksaan_ralan['kesadaran'] ?? '', + 'alergi' => $pemeriksaan_ralan['alergi'] ?? '', + 'lingkar_perut' => $pemeriksaan_ralan['lingkar_perut'] ?? '', + 'keluhan' => $pemeriksaan_ralan['keluhan'] ?? '', + 'pemeriksaan' => $pemeriksaan_ralan['pemeriksaan'] ?? '', + 'penilaian' => $pemeriksaan_ralan['penilaian'] ?? '', + 'rtl' => $pemeriksaan_ralan['rtl'] ?? '', + 'instruksi' => $pemeriksaan_ralan['instruksi'] ?? '', + 'evaluasi' => $pemeriksaan_ralan['evaluasi'] ?? '', + 'spo2' => $pemeriksaan_ralan['spo2'] ?? '' + ]; + + // Data pasien untuk form + $patient_data = [ + 'no_rawat' => $_POST['no_rawat'], + 'no_rkm_medis' => $pasien_data['no_rkm_medis'] ?? '', + 'nm_pasien' => $pasien_data['nm_pasien'] ?? '', + 'umur' => $umur + ]; + + echo $this->draw('form.soap.html', [ + 'default_values' => htmlspecialchars_array($default_values), + 'patient_data' => htmlspecialchars_array($patient_data) + ]); exit(); } @@ -648,6 +774,149 @@ public function postSaveSOAP() exit(); } + public function anyVitalSignsChart() + { + $no_rawat = $_POST['no_rawat']; + + // Ambil data tanda vital dari pemeriksaan_ralan dan pemeriksaan_ranap + $vital_signs_ralan = $this->db('pemeriksaan_ralan') + ->where('no_rawat', $no_rawat) + ->asc('tgl_perawatan') + ->asc('jam_rawat') + ->toArray(); + + $vital_signs_ranap = $this->db('pemeriksaan_ranap') + ->where('no_rawat', $no_rawat) + ->asc('tgl_perawatan') + ->asc('jam_rawat') + ->toArray(); + + // Gabungkan data dari kedua tabel + $vital_signs = array_merge($vital_signs_ralan, $vital_signs_ranap); + + // Urutkan berdasarkan tanggal dan jam + usort($vital_signs, function($a, $b) { + $datetime_a = $a['tgl_perawatan'] . ' ' . $a['jam_rawat']; + $datetime_b = $b['tgl_perawatan'] . ' ' . $b['jam_rawat']; + return strtotime($datetime_a) - strtotime($datetime_b); + }); + + // Debug: Log jumlah data yang ditemukan + error_log('VitalSignsChart - no_rawat: ' . $no_rawat); + error_log('VitalSignsChart - ralan count: ' . count($vital_signs_ralan)); + error_log('VitalSignsChart - ranap count: ' . count($vital_signs_ranap)); + error_log('VitalSignsChart - total count: ' . count($vital_signs)); + if(count($vital_signs) > 0) { + error_log('VitalSignsChart - first record: ' . json_encode($vital_signs[0])); + } + + $chart_data = [ + 'labels' => [], + 'datasets' => [ + [ + 'label' => 'Suhu (°C)', + 'data' => [], + 'borderColor' => 'rgb(255, 99, 132)', + 'backgroundColor' => 'rgba(255, 99, 132, 0.2)', + 'borderWidth' => 1, + 'tension' => 0.1 + ], + [ + 'label' => 'Tensi Sistol (mmHg)', + 'data' => [], + 'borderColor' => 'rgb(54, 162, 235)', + 'backgroundColor' => 'rgba(54, 162, 235, 0.2)', + 'borderWidth' => 1, + 'tension' => 0.1 + ], + [ + 'label' => 'Tensi Diastol (mmHg)', + 'data' => [], + 'borderColor' => 'rgb(75, 192, 192)', + 'backgroundColor' => 'rgba(75, 192, 192, 0.2)', + 'borderWidth' => 1, + 'tension' => 0.1 + ], + [ + 'label' => 'Nadi (/menit)', + 'data' => [], + 'borderColor' => 'rgb(255, 205, 86)', + 'backgroundColor' => 'rgba(255, 205, 86, 0.2)', + 'borderWidth' => 1, + 'tension' => 0.1 + ], + [ + 'label' => 'RR (/menit)', + 'data' => [], + 'borderColor' => 'rgb(153, 102, 255)', + 'backgroundColor' => 'rgba(153, 102, 255, 0.2)', + 'borderWidth' => 1, + 'tension' => 0.1 + ], + [ + 'label' => 'Tinggi (cm)', + 'data' => [], + 'borderColor' => 'rgb(255, 159, 64)', + 'backgroundColor' => 'rgba(255, 159, 64, 0.2)', + 'borderWidth' => 1, + 'tension' => 0.1, + 'yAxisID' => 'y1' + ], + [ + 'label' => 'Berat (kg)', + 'data' => [], + 'borderColor' => 'rgb(199, 199, 199)', + 'backgroundColor' => 'rgba(199, 199, 199, 0.2)', + 'borderWidth' => 1, + 'tension' => 0.1, + 'yAxisID' => 'y1' + ], + [ + 'label' => 'SPO2 (%)', + 'data' => [], + 'borderColor' => 'rgb(83, 102, 255)', + 'backgroundColor' => 'rgba(83, 102, 255, 0.2)', + 'borderWidth' => 1, + 'tension' => 0.1 + ] + ] + ]; + + foreach($vital_signs as $vital) { + $date_label = date('d/m H:i', strtotime($vital['tgl_perawatan'] . ' ' . $vital['jam_rawat'])); + $chart_data['labels'][] = $date_label; + + // Suhu + $chart_data['datasets'][0]['data'][] = floatval($vital['suhu_tubuh']) ?: null; + + // Tensi - pisahkan sistol dan diastol + $tensi_parts = explode('/', $vital['tensi']); + $sistol = isset($tensi_parts[0]) ? floatval($tensi_parts[0]) : null; + $diastol = isset($tensi_parts[1]) ? floatval($tensi_parts[1]) : null; + $chart_data['datasets'][1]['data'][] = $sistol; + $chart_data['datasets'][2]['data'][] = $diastol; + + // Nadi + $chart_data['datasets'][3]['data'][] = floatval($vital['nadi']) ?: null; + + // RR + $chart_data['datasets'][4]['data'][] = floatval($vital['respirasi']) ?: null; + + // Tinggi + $chart_data['datasets'][5]['data'][] = floatval($vital['tinggi']) ?: null; + + // Berat + $chart_data['datasets'][6]['data'][] = floatval($vital['berat']) ?: null; + + // SPO2 + $chart_data['datasets'][7]['data'][] = floatval($vital['spo2']) ?: null; + } + + header('Content-Type: application/json'); + echo json_encode(htmlspecialchars_array($chart_data)); + exit(); + } + public function postHapusSOAP() { $this->db('pemeriksaan_ranap')->where('no_rawat', $_POST['no_rawat'])->where('tgl_perawatan', $_POST['tgl_perawatan'])->where('jam_rawat', $_POST['jam_rawat'])->delete(); @@ -658,10 +927,10 @@ public function anyLayanan() { $layanan = $this->db('jns_perawatan_inap') ->where('status', '1') - ->like('nm_perawatan', '%'.$_POST['layanan'].'%') + ->like('nm_perawatan', '%'.htmlspecialchars($_POST['layanan'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('layanan.html', ['layanan' => $layanan]); + echo $this->draw('layanan.html', ['layanan' => htmlspecialchars_array($layanan)]); exit(); } @@ -671,10 +940,10 @@ public function anyObat() ->join('gudangbarang', 'gudangbarang.kode_brng=databarang.kode_brng') ->where('status', '1') ->where('gudangbarang.kd_bangsal', $this->settings->get('farmasi.deporanap')) - ->like('databarang.nama_brng', '%'.$_POST['obat'].'%') + ->like('databarang.nama_brng', '%'.htmlspecialchars($_POST['obat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->limit(10) ->toArray(); - echo $this->draw('obat.html', ['obat' => $obat]); + echo $this->draw('obat.html', ['obat' => htmlspecialchars_array($obat)]); exit(); } @@ -701,7 +970,7 @@ public function postAturanPakai() public function anyBerkasDigital() { $berkas_digital = $this->db('berkas_digital_perawatan')->where('no_rawat', $_POST['no_rawat'])->toArray(); - echo $this->draw('berkasdigital.html', ['berkas_digital' => $berkas_digital]); + echo $this->draw('berkasdigital.html', ['berkas_digital' => htmlspecialchars_array($berkas_digital)]); exit(); } @@ -714,7 +983,7 @@ public function postSaveBerkasDigital() $filePath = $_FILES['file']['tmp_name']; curl_setopt_array($curl, array( - CURLOPT_URL => str_replace('webapps','',WEBAPPS_URL).'api/berkasdigital', + CURLOPT_URL => substr(rtrim(WEBAPPS_URL, '/'), 0, strrpos(rtrim(WEBAPPS_URL, '/'), '/')).'/api/berkasdigital', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, @@ -806,24 +1075,24 @@ public function postCekWaktu() public function postMaxid() { - $max_id = $this->db('reg_periksa')->select(['no_rawat' => 'ifnull(MAX(CONVERT(RIGHT(no_rawat,6),signed)),0)'])->where('tgl_registrasi', date('Y-m-d'))->oneArray(); - if(empty($max_id['no_rawat'])) { - $max_id['no_rawat'] = '000000'; - } - $_next_no_rawat = sprintf('%06s', ($max_id['no_rawat'] + 1)); - $next_no_rawat = date('Y/m/d').'/'.$_next_no_rawat; - echo $next_no_rawat; + $urut = $this->db('reg_periksa') + ->where('kd_poli', $this->settings->get('settings.rawat_inap')) + ->where('tgl_registrasi', date('Y-m-d')) + ->nextRightNumber('no_rawat', 6); + + $next_no_rawat = date('Y/m/d').'/'.$urut; + echo htmlspecialchars($next_no_rawat, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); exit(); } public function postMaxAntrian() { - $max_id = $this->db('reg_periksa')->select(['no_reg' => 'ifnull(MAX(CONVERT(RIGHT(no_reg,3),signed)),0)'])->where('kd_poli', $_POST['kd_poli'])->where('tgl_registrasi', date('Y-m-d'))->desc('no_reg')->limit(1)->oneArray(); - if(empty($max_id['no_reg'])) { - $max_id['no_reg'] = '000'; - } - $_next_no_reg = sprintf('%03s', ($max_id['no_reg'] + 1)); - echo $_next_no_reg; + $urut = $this->db('reg_periksa') + ->where('kd_poli', $this->settings->get('settings.rawat_inap')) + ->where('tgl_registrasi', date('Y-m-d')) + ->nextRightNumber('no_reg', 3); + + echo htmlspecialchars(sprintf('%03d', $urut), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); exit(); } @@ -840,10 +1109,1029 @@ public function getSepDetail($no_sep){ $potensi_prb = $this->db('bpjs_prb')->where('no_sep', $no_sep)->oneArray(); $data_sep['potensi_prb'] = $potensi_prb['prb']; - echo $this->draw('sep.detail.html', ['data_sep' => $data_sep]); + echo $this->draw('sep.detail.html', ['data_sep' => htmlspecialchars_array($data_sep)]); + exit(); + } + + public function getSuratRujukan($no_rawat) + { + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', revertNoRawat($no_rawat)); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', revertNoRawat($no_rawat)); + $pasien = $this->db('pasien') + ->join('kelurahan', 'kelurahan.kd_kel=pasien.kd_kel') + ->join('kecamatan', 'kecamatan.kd_kec=pasien.kd_kec') + ->join('kabupaten', 'kabupaten.kd_kab=pasien.kd_kab') + ->join('propinsi', 'propinsi.kd_prop=pasien.kd_prop') + ->where('no_rkm_medis', $no_rkm_medis) + ->oneArray(); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $sip_dokter = $this->core->getDokterInfo('no_ijn_praktek', $kd_dokter); + $this->tpl->set('pasien', $this->tpl->noParse_array(htmlspecialchars_array($pasien))); + $this->tpl->set('nm_dokter', $nm_dokter); + $this->tpl->set('sip_dokter', $sip_dokter); + $this->tpl->set('no_rawat', revertNoRawat($no_rawat)); + $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($this->settings('settings')))); + $this->tpl->set('surat', $this->db('mlite_surat_rujukan')->where('no_rawat', revertNoRawat($no_rawat))->oneArray()); + $this->tpl->set('nomor_surat', $this->settings->get('settings.set_nomor_surat').'/'.$this->settings->get('settings.prefix_surat').'/'.getRomawi(date('m')).'/'.date('Y')); + echo $this->tpl->draw(MODULES.'/rawat_inap/view/admin/surat.rujukan.html', true); + exit(); + } + + public function getSuratSehat($no_rawat) + { + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', revertNoRawat($no_rawat)); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', revertNoRawat($no_rawat)); + $pasien = $this->db('pasien') + ->join('kelurahan', 'kelurahan.kd_kel=pasien.kd_kel') + ->join('kecamatan', 'kecamatan.kd_kec=pasien.kd_kec') + ->join('kabupaten', 'kabupaten.kd_kab=pasien.kd_kab') + ->join('propinsi', 'propinsi.kd_prop=pasien.kd_prop') + ->where('no_rkm_medis', $no_rkm_medis) + ->oneArray(); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $sip_dokter = $this->core->getDokterInfo('no_ijn_praktek', $kd_dokter); + $this->tpl->set('pasien', $this->tpl->noParse_array(htmlspecialchars_array($pasien))); + $this->tpl->set('nm_dokter', $nm_dokter); + $this->tpl->set('sip_dokter', $sip_dokter); + $this->tpl->set('no_rawat', revertNoRawat($no_rawat)); + $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($this->settings('settings')))); + $this->tpl->set('surat', $this->db('mlite_surat_sehat')->where('no_rawat', revertNoRawat($no_rawat))->oneArray()); + $this->tpl->set('nomor_surat', $this->settings->get('settings.set_nomor_surat').'/'.$this->settings->get('settings.prefix_surat').'/'.getRomawi(date('m')).'/'.date('Y')); + echo $this->tpl->draw(MODULES.'/rawat_inap/view/admin/surat.sehat.html', true); + exit(); + } + + public function getSuratSakit($no_rawat) + { + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', revertNoRawat($no_rawat)); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', revertNoRawat($no_rawat)); + $pasien = $this->db('pasien') + ->join('kelurahan', 'kelurahan.kd_kel=pasien.kd_kel') + ->join('kecamatan', 'kecamatan.kd_kec=pasien.kd_kec') + ->join('kabupaten', 'kabupaten.kd_kab=pasien.kd_kab') + ->join('propinsi', 'propinsi.kd_prop=pasien.kd_prop') + ->where('no_rkm_medis', $no_rkm_medis) + ->oneArray(); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $sip_dokter = $this->core->getDokterInfo('no_ijn_praktek', $kd_dokter); + $this->tpl->set('pasien', $this->tpl->noParse_array(htmlspecialchars_array($pasien))); + $this->tpl->set('nm_dokter', $nm_dokter); + $this->tpl->set('sip_dokter', $sip_dokter); + $this->tpl->set('no_rawat', revertNoRawat($no_rawat)); + $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($this->settings('settings')))); + $this->tpl->set('surat', $this->db('mlite_surat_sakit')->where('no_rawat', revertNoRawat($no_rawat))->oneArray()); + $this->tpl->set('nomor_surat', $this->settings->get('settings.set_nomor_surat').'/'.$this->settings->get('settings.prefix_surat').'/'.getRomawi(date('m')).'/'.date('Y')); + echo $this->tpl->draw(MODULES.'/rawat_inap/view/admin/surat.sakit.html', true); + exit(); + } + + public function postSimpanSuratSakit() + { + $query = $this->db('mlite_surat_sakit')->save([ + 'nomor_surat' => $_POST['nomor_surat'], + 'no_rawat' => $_POST['no_rawat'], + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'nm_pasien' => $_POST['nm_pasien'], + 'tgl_lahir' => $_POST['tgl_lahir'], + 'umur' => $_POST['umur'], + 'jk' => $_POST['jk'], + 'alamat' => $_POST['alamat'], + 'keadaan' => $_POST['keadaan'], + 'diagnosa' => $_POST['diagnosa'], + 'lama_angka' => $_POST['lama_angka'], + 'lama_huruf' => $_POST['lama_huruf'], + 'tanggal_mulai' => $_POST['tanggal_mulai'], + 'tanggal_selesai' => $_POST['tanggal_selesai'], + 'dokter' => $_POST['dokter'], + 'petugas' => $_POST['petugas'] + ]); + + if($query) { + $nomor_surat = ltrim($this->settings->get('settings.set_nomor_surat')); + $nomor_surat = sprintf('%03s', ($nomor_surat + 1)); + $this->db('mlite_settings')->where('module', 'settings')->where('field', 'set_nomor_surat')->set('value', $nomor_surat)->update(); + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = $query->errorInfo()['2']; + echo json_encode(htmlspecialchars_array($data)); + } + + exit(); + } + + public function postSimpanSuratSehat() + { + $query = $this->db('mlite_surat_sehat')->save([ + 'nomor_surat' => $_POST['nomor_surat'], + 'no_rawat' => $_POST['no_rawat'], + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'nm_pasien' => $_POST['nm_pasien'], + 'tgl_lahir' => $_POST['tgl_lahir'], + 'umur' => $_POST['umur'], + 'jk' => $_POST['jk'], + 'alamat' => $_POST['alamat'], + 'tanggal' => $_POST['tanggal'], + 'berat_badan' => $_POST['berat_badan'], + 'tinggi_badan' => $_POST['tinggi_badan'], + 'tensi' => $_POST['tensi'], + 'gol_darah' => $_POST['gol_darah'], + 'riwayat_penyakit' => $_POST['riwayat_penyakit'], + 'keperluan' => $_POST['keperluan'], + 'dokter' => $_POST['dokter'], + 'petugas' => $_POST['petugas'] + ]); + + if($query) { + $nomor_surat = ltrim($this->settings->get('settings.set_nomor_surat')); + $nomor_surat = sprintf('%03s', ($nomor_surat + 1)); + $this->db('mlite_settings')->where('module', 'settings')->where('field', 'set_nomor_surat')->set('value', $nomor_surat)->update(); + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = $query->errorInfo()['2']; + echo json_encode(htmlspecialchars_array($data)); + } + + exit(); + } + + public function postSimpanSuratRujukan() + { + $query = $this->db('mlite_surat_rujukan')->save([ + 'nomor_surat' => $_POST['nomor_surat'], + 'no_rawat' => $_POST['no_rawat'], + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'nm_pasien' => $_POST['nm_pasien'], + 'tgl_lahir' => $_POST['tgl_lahir'], + 'umur' => $_POST['umur'], + 'jk' => $_POST['jk'], + 'alamat' => $_POST['alamat'], + 'kepada' => $_POST['kepada'], + 'di' => $_POST['di'], + 'anamnesa' => $_POST['anamnesa'], + 'pemeriksaan_fisik' => $_POST['pemeriksaan_fisik'], + 'pemeriksaan_penunjang' => $_POST['pemeriksaan_penunjang'], + 'diagnosa' => $_POST['diagnosa'], + 'terapi' => $_POST['terapi'], + 'alasan_dirujuk' => $_POST['alasan_dirujuk'], + 'dokter' => $_POST['dokter'], + 'petugas' => $_POST['petugas'] + ]); + + if($query) { + $nomor_surat = ltrim($this->settings->get('settings.set_nomor_surat')); + $nomor_surat = sprintf('%03s', ($nomor_surat + 1)); + $this->db('mlite_settings')->where('module', 'settings')->where('field', 'set_nomor_surat')->set('value', $nomor_surat)->update(); + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = $query->errorInfo()['2']; + echo json_encode(htmlspecialchars_array($data)); + } + + exit(); + } + + public function anyKontrol() + { + $rows = $this->db('booking_registrasi') + ->join('poliklinik', 'poliklinik.kd_poli=booking_registrasi.kd_poli') + ->join('dokter', 'dokter.kd_dokter=booking_registrasi.kd_dokter') + ->join('penjab', 'penjab.kd_pj=booking_registrasi.kd_pj') + ->where('no_rkm_medis', $_POST['no_rkm_medis']) + ->toArray(); + $i = 1; + $result = []; + foreach ($rows as $row) { + $row['nomor'] = $i++; + $result[] = $row; + } + echo $this->draw('kontrol.html', ['booking_registrasi' => htmlspecialchars_array($result)]); + exit(); + } + + public function postSaveKontrol() + { + + $query = $this->db('skdp_bpjs')->save([ + 'tahun' => date('Y'), + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'diagnosa' => $_POST['diagnosa'], + 'terapi' => $_POST['terapi'], + 'alasan1' => $_POST['alasan1'], + 'alasan2' => '', + 'rtl1' => $_POST['rtl1'], + 'rtl2' => '', + 'tanggal_datang' => $_POST['tanggal_datang'], + 'tanggal_rujukan' => $_POST['tanggal_rujukan'], + 'no_antrian' => $this->core->setNoSKDP(), + 'kd_dokter' => $this->core->getRegPeriksaInfo('kd_dokter', $_POST['no_rawat']), + 'status' => 'Menunggu' + ]); + + if ($query) { + $this->db('booking_registrasi') + ->save([ + 'tanggal_booking' => date('Y-m-d'), + 'jam_booking' => date('H:i:s'), + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'tanggal_periksa' => $_POST['tanggal_datang'], + 'kd_dokter' => $this->core->getRegPeriksaInfo('kd_dokter', $_POST['no_rawat']), + 'kd_poli' => $this->core->getRegPeriksaInfo('kd_poli', $_POST['no_rawat']), + 'no_reg' => $this->core->setNoBooking($this->core->getRegPeriksaInfo('kd_dokter', $_POST['no_rawat']), $_POST['tanggal_datang'], $this->core->getRegPeriksaInfo('kd_poli', $_POST['no_rawat'])), + 'kd_pj' => $this->core->getRegPeriksaInfo('kd_pj', $_POST['no_rawat']), + 'limit_reg' => 0, + 'waktu_kunjungan' => $_POST['tanggal_datang'].' '.date('H:i:s'), + 'status' => 'Belum' + ]); + } + + exit(); + } + + public function postSaveKontrolBPJS() + { + + date_default_timezone_set('UTC'); + $tStamp = strval(time() - strtotime("1970-01-01 00:00:00")); + $key = $this->consid . $this->secretkey . $tStamp; + $_POST['sep_user'] = $this->core->getUserInfo('fullname', null, true); + + $maping_dokter_dpjpvclaim = $this->db('maping_dokter_dpjpvclaim')->where('kd_dokter', $this->core->getRegPeriksaInfo('kd_dokter', $_POST['no_rawat']))->oneArray(); + $maping_poli_bpjs = $this->db('maping_poli_bpjs')->where('kd_poli_rs', $this->core->getRegPeriksaInfo('kd_poli', $_POST['no_rawat']))->oneArray(); + $get_sep = $this->db('bridging_sep')->where('no_rawat', $_POST['no_rawat'])->oneArray(); + $_POST['no_sep'] = $get_sep['no_sep']; + $get_sep_internal = $this->db('bridging_sep_internal')->where('no_rawat', $_POST['no_rawat'])->oneArray(); + + if(empty($get_sep['no_sep'])) { + $_POST['no_sep'] = $get_sep_internal['no_sep']; + } + + $data = [ + 'request' => [ + 'noSEP' => $_POST['no_sep'], + 'kodeDokter' => $maping_dokter_dpjpvclaim['kd_dokter_bpjs'], + 'poliKontrol' => $maping_poli_bpjs['kd_poli_bpjs'], + 'tglRencanaKontrol' => $_POST['tanggal_datang'], + 'user' => $_POST['sep_user'] + ] + ]; + $statusUrl = 'insert'; + $method = 'post'; + + $data = json_encode($data); + + $url = $this->api_url . 'RencanaKontrol/insert'; + $output = BpjsService::post($url, $data, $this->consid, $this->secretkey, $this->user_key, $tStamp); + $data = json_decode($output, true); + //echo $data['metaData']['message']; + if ($data == NULL) { + echo 'Koneksi ke server BPJS terputus. Silahkan ulangi beberapa saat lagi!'; + } else if ($data['metaData']['code'] == 200) { + $stringDecrypt = stringDecrypt($key, $data['response']); + $decompress = '""'; + $decompress = \LZCompressor\LZString::decompressFromEncodedURIComponent(($stringDecrypt)); + $spri = json_decode($decompress, true); + //echo $spri['noSuratKontrol']; + + $bridging_surat_pri_bpjs = $this->db('bridging_surat_kontrol_bpjs')->save([ + 'no_sep' => $_POST['no_sep'], + 'tgl_surat' => $_POST['tanggal_rujukan'], + 'no_surat' => $spri['noSuratKontrol'], + 'tgl_rencana' => $_POST['tanggal_datang'], + 'kd_dokter_bpjs' => $maping_dokter_dpjpvclaim['kd_dokter_bpjs'], + 'nm_dokter_bpjs' => $maping_dokter_dpjpvclaim['nm_dokter_bpjs'], + 'kd_poli_bpjs' => $maping_poli_bpjs['kd_poli_bpjs'], + 'nm_poli_bpjs' => $maping_poli_bpjs['nm_poli_bpjs'] + ]); + + } + + exit(); + } + + public function postHapusKontrol() + { + $this->db('booking_registrasi')->where('kd_dokter', $_POST['kd_dokter'])->where('no_rkm_medis', $_POST['no_rkm_medis'])->where('tanggal_periksa', $_POST['tanggal_periksa'])->where('status', 'Belum')->delete(); + $this->db('skdp_bpjs')->where('kd_dokter', $_POST['kd_dokter'])->where('no_rkm_medis', $_POST['no_rkm_medis'])->where('tanggal_datang', $_POST['tanggal_periksa'])->where('status', 'Menunggu')->delete(); + exit(); + } + + public function getPersetujuanUmum($no_rkm_medis) + { + $settings = $this->settings('settings'); + $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($settings))); + $pasien = $this->db('pasien')->where('no_rkm_medis', $no_rkm_medis)->oneArray(); + echo $this->draw('persetujuan.umum.html', ['pasien' => htmlspecialchars_array($pasien)]); + exit(); + } + + public function postSaveICD10() + { + $_POST['status_penyakit'] = 'Baru'; + unset($_POST['nama']); + $this->db('diagnosa_pasien')->save($_POST); + exit(); + } + + public function postHapusICD10() + { + $this->db('diagnosa_pasien')->where('no_rawat', $_POST['no_rawat'])->where('prioritas', $_POST['prioritas'])->delete(); + exit(); + } + + public function postICD10() + { + + if(isset($_POST["query"])){ + $output = ''; + $key = "%".$_POST["query"]."%"; + $rows = $this->db('penyakit')->like('kd_penyakit', $key)->orLike('nm_penyakit', $key)->asc('kd_penyakit')->limit(10)->toArray(); + $output = ''; + if(count($rows)){ + foreach ($rows as $row) { + $output .= ''; + } + } else { + $output .= ''; + } + echo $output; + } + + exit(); + + } + + public function postSaveICD9() + { + unset($_POST['nama']); + $this->db('prosedur_pasien')->save($_POST); + exit(); + } + + public function postHapusICD9() + { + $this->db('prosedur_pasien')->where('no_rawat', $_POST['no_rawat'])->where('prioritas', $_POST['prioritas'])->delete(); exit(); } + public function postICD9() + { + + if(isset($_POST["query"])){ + $output = ''; + $key = "%".$_POST["query"]."%"; + $rows = $this->db('icd9')->like('kode', $key)->orLike('deskripsi_panjang', $key)->asc('kode')->limit(10)->toArray(); + $output = ''; + if(count($rows)){ + foreach ($rows as $row) { + $output .= ''; + } + } else { + $output .= ''; + } + echo $output; + } + + exit(); + + } + + public function getDisplayICD() + { + $no_rawat = $_GET['no_rawat']; + $prosedurs = $this->db('prosedur_pasien') + ->where('no_rawat', $no_rawat) + ->asc('prioritas') + ->toArray(); + $prosedur = []; + foreach ($prosedurs as $row_prosedur) { + $icd9 = $this->db('icd9')->where('kode', $row_prosedur['kode'])->oneArray(); + $row_prosedur['nama'] = $icd9['deskripsi_panjang']; + $prosedur[] = $row_prosedur; + } + + $diagnosas = $this->db('diagnosa_pasien') + ->where('no_rawat', $no_rawat) + ->asc('prioritas') + ->toArray(); + $diagnosa = []; + foreach ($diagnosas as $row_diagnosa) { + $icd10 = $this->db('penyakit')->where('kd_penyakit', $row_diagnosa['kd_penyakit'])->oneArray(); + $row_diagnosa['nama'] = $icd10['nm_penyakit']; + $diagnosa[] = $row_diagnosa; + } + + echo $this->draw('display.icd.html', ['diagnosa' => htmlspecialchars_array($diagnosa), 'prosedur' => htmlspecialchars_array($prosedur)]); + exit(); + } + + public function getAssessment($no_rawat) + { + $no_rawat = revertNoRawat($no_rawat); + + // Cek apakah sudah ada data assessment + $penilaian_ranap = $this->db('penilaian_awal_keperawatan_ranap') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + // Jika belum ada, ambil data fallback dari pemeriksaan_ralan dan pemeriksaan_ranap + if(!$penilaian_ranap) { + $pemeriksaan_ralan = $this->db('pemeriksaan_ralan') + ->where('no_rawat', $no_rawat) + ->desc('tgl_perawatan') + ->desc('jam_rawat') + ->oneArray(); + + $pemeriksaan_ranap = $this->db('pemeriksaan_ranap') + ->where('no_rawat', $no_rawat) + ->desc('tgl_perawatan') + ->desc('jam_rawat') + ->oneArray(); + + $penilaian_ranap = [ + 'no_rawat' => $no_rawat, + 'tanggal' => date('Y-m-d H:i:s'), + 'informasi' => 'Autoanamnesis', + 'ket_informasi' => '-', + 'tiba_diruang_rawat' => 'Jalan Tanpa Bantuan', + 'kasus_trauma' => 'Non Trauma', + 'cara_masuk' => 'Poli', + 'rps' => $pemeriksaan_ralan['keluhan'] ?? $pemeriksaan_ranap['keluhan'] ?? '', + 'rpd' => '-', + 'rpk' => '-', + 'rpo' => '-', + 'riwayat_pembedahan' => '-', + 'riwayat_dirawat_dirs' => '-', + 'alat_bantu_dipakai' => 'Kacamata', + 'riwayat_kehamilan' => 'Tidak', + 'riwayat_kehamilan_perkiraan' => '-', + 'riwayat_tranfusi' => '-', + 'riwayat_alergi' => $pemeriksaan_ralan['alergi'] ?? $pemeriksaan_ranap['alergi'] ?? '', + 'riwayat_merokok' => 'Tidak', + 'riwayat_merokok_jumlah' => '-', + 'riwayat_alkohol' => 'Tidak', + 'riwayat_alkohol_jumlah' => '-', + 'riwayat_narkoba' => 'Tidak', + 'riwayat_olahraga' => 'Tidak', + 'pemeriksaan_mental' => '-', + 'pemeriksaan_keadaan_umum' => 'Baik', + 'pemeriksaan_gcs' => $pemeriksaan_ralan['gcs'] ?? $pemeriksaan_ranap['gcs'] ?? '', + 'pemeriksaan_td' => $pemeriksaan_ralan['tensi'] ?? $pemeriksaan_ranap['tensi'] ?? '', + 'pemeriksaan_nadi' => $pemeriksaan_ralan['nadi'] ?? $pemeriksaan_ranap['nadi'] ?? '', + 'pemeriksaan_rr' => $pemeriksaan_ralan['respirasi'] ?? $pemeriksaan_ranap['respirasi'] ?? '', + 'pemeriksaan_suhu' => $pemeriksaan_ralan['suhu_tubuh'] ?? $pemeriksaan_ranap['suhu_tubuh'] ?? '', + 'pemeriksaan_spo2' => $pemeriksaan_ralan['spo2'] ?? $pemeriksaan_ranap['spo2'] ?? '', + 'pemeriksaan_bb' => $pemeriksaan_ralan['berat'] ?? $pemeriksaan_ranap['berat'] ?? '', + 'pemeriksaan_tb' => $pemeriksaan_ralan['tinggi'] ?? $pemeriksaan_ranap['tinggi'] ?? '', + 'pemeriksaan_susunan_kepala' => 'TAK', + 'pemeriksaan_susunan_kepala_keterangan' => '-', + 'pemeriksaan_susunan_wajah' => 'TAK', + 'pemeriksaan_susunan_wajah_keterangan' => '-', + 'pemeriksaan_susunan_leher' => 'TAK', + 'pemeriksaan_susunan_leher_keterangan' => '-', + 'pemeriksaan_susunan_kejang' => 'TAK', + 'pemeriksaan_susunan_kejang_keterangan' => '-', + 'pemeriksaan_susunan_sensorik' => 'TAK', + 'pemeriksaan_susunan_sensorik_keterangan' => '-', + 'pemeriksaan_kardiovaskuler_denyut_nadi' => 'Teratur', + 'pemeriksaan_kardiovaskuler_sirkulasi' => 'Akral Hangat', + 'pemeriksaan_kardiovaskuler_sirkulasi_keterangan' => '-', + 'pemeriksaan_kardiovaskuler_pulsasi' => 'Kuat', + 'pemeriksaan_respirasi_pola_nafas' => 'Normal', + 'pemeriksaan_respirasi_retraksi' => 'Tidak Ada', + 'pemeriksaan_respirasi_suara_nafas' => 'Vesikuler', + 'pemeriksaan_respirasi_volume_pernafasan' => 'Normal', + 'pemeriksaan_respirasi_jenis_pernafasan' => 'Pernafasan Dada', + 'pemeriksaan_respirasi_jenis_pernafasan_keterangan' => '-', + 'pemeriksaan_respirasi_irama_nafas' => 'Teratur', + 'pemeriksaan_respirasi_batuk' => 'Tidak', + 'pemeriksaan_gastrointestinal_mulut' => 'TAK', + 'pemeriksaan_gastrointestinal_mulut_keterangan' => '-', + 'pemeriksaan_gastrointestinal_gigi' => 'TAK', + 'pemeriksaan_gastrointestinal_gigi_keterangan' => '-', + 'pemeriksaan_gastrointestinal_lidah' => 'TAK', + 'pemeriksaan_gastrointestinal_lidah_keterangan' => '-', + 'pemeriksaan_gastrointestinal_tenggorokan' => 'TAK', + 'pemeriksaan_gastrointestinal_tenggorokan_keterangan' => '-', + 'pemeriksaan_gastrointestinal_abdomen' => 'Supel', + 'pemeriksaan_gastrointestinal_abdomen_keterangan' => '-', + 'pemeriksaan_gastrointestinal_peistatik_usus' => 'TAK', + 'pemeriksaan_gastrointestinal_peistatik_usus_keterangan' => '-', + 'pemeriksaan_gastrointestinal_anus' => 'TAK', + 'pemeriksaan_gastrointestinal_anus_keterangan' => '-', + 'pemeriksaan_neurologi_pengelihatan' => 'TAK', + 'pemeriksaan_neurologi_pengelihatan_keterangan' => '-', + 'pemeriksaan_neurologi_alat_bantu_penglihatan' => 'Tidak', + 'pemeriksaan_neurologi_pendengaran' => 'TAK', + 'pemeriksaan_neurologi_pendengaran_keterangan' => '-', + 'pemeriksaan_neurologi_bicara' => 'Jelas', + 'pemeriksaan_neurologi_bicara_keterangan' => '-', + 'pemeriksaan_neurologi_sensorik' => 'TAK', + 'pemeriksaan_neurologi_sensorik_keterangan' => '-', + 'pemeriksaan_neurologi_motorik' => 'TAK', + 'pemeriksaan_neurologi_motorik_keterangan' => '-', + 'pemeriksaan_neurologi_kekuatan_otot' => 'Kuat', + 'pemeriksaan_neurologi_kekuatan_otot_keterangan' => '-', + 'pemeriksaan_integument_warnakulit' => 'Normal', + 'pemeriksaan_integument_warnakulit_keterangan' => '-', + 'pemeriksaan_integument_turgor' => 'Baik', + 'pemeriksaan_integument_turgor_keterangan' => '-', + 'pemeriksaan_integument_kulit' => 'Normal', + 'pemeriksaan_integument_kulit_keterangan' => '-', + 'pemeriksaan_integument_dekubitas' => 'Tidak Ada', + 'pemeriksaan_integument_dekubitas_keterangan' => '-', + 'pemeriksaan_muskuloskletal_pergerakan_sendi' => 'Bebas', + 'pemeriksaan_muskuloskletal_pergerakan_sendi_keterangan' => '-', + 'pemeriksaan_muskuloskletal_kekauatan_otot' => 'Baik', + 'pemeriksaan_muskuloskletal_kekauatan_otot_keterangan' => '-', + 'pemeriksaan_muskuloskletal_nyeri_sendi' => 'Tidak Ada', + 'pemeriksaan_muskuloskletal_nyeri_sendi_keterangan' => '-', + 'pemeriksaan_muskuloskletal_oedema' => 'Tidak Ada', + 'pemeriksaan_muskuloskletal_oedema_keterangan' => '-', + 'pemeriksaan_muskuloskletal_fraktur' => 'Tidak Ada', + 'pemeriksaan_muskuloskletal_fraktur_keterangan' => '-', + 'pemeriksaan_eliminasi_bab_frekuensi_jumlah' => '-', + 'pemeriksaan_eliminasi_bab_frekuensi_durasi' => '-', + 'pemeriksaan_eliminasi_bab_konsistensi' => '-', + 'pemeriksaan_eliminasi_bab_warna' => '-', + 'pemeriksaan_eliminasi_bak_frekuensi_jumlah' => '-', + 'pemeriksaan_eliminasi_bak_frekuensi_durasi' => '-', + 'pemeriksaan_eliminasi_bak_warna' => '-', + 'pemeriksaan_eliminasi_bak_lainlain' => '-', + 'pola_aktifitas_makanminum' => 'Mandiri', + 'pola_aktifitas_mandi' => 'Mandiri', + 'pola_aktifitas_eliminasi' => 'Mandiri', + 'pola_aktifitas_berpakaian' => 'Mandiri', + 'pola_aktifitas_berpindah' => 'Mandiri', + 'pola_nutrisi_frekuesi_makan' => '-', + 'pola_nutrisi_jenis_makanan' => '-', + 'pola_nutrisi_porsi_makan' => '-', + 'pola_tidur_lama_tidur' => '-', + 'pola_tidur_gangguan' => 'Tidak Ada Gangguan', + 'pengkajian_fungsi_kemampuan_sehari' => 'Mandiri', + 'pengkajian_fungsi_aktifitas' => 'Berjalan', + 'pengkajian_fungsi_berjalan' => 'TAK', + 'pengkajian_fungsi_berjalan_keterangan' => '-', + 'pengkajian_fungsi_ambulasi' => 'Tidak Menggunakan', + 'pengkajian_fungsi_ekstrimitas_atas' => 'TAK', + 'pengkajian_fungsi_ekstrimitas_atas_keterangan' => '-', + 'pengkajian_fungsi_ekstrimitas_bawah' => 'TAK', + 'pengkajian_fungsi_ekstrimitas_bawah_keterangan' => '-', + 'pengkajian_fungsi_menggenggam' => 'Tidak Ada Kesulitan', + 'pengkajian_fungsi_menggenggam_keterangan' => '-', + 'pengkajian_fungsi_koordinasi' => 'Tidak Ada Kesulitan', + 'pengkajian_fungsi_koordinasi_keterangan' => '-', + 'pengkajian_fungsi_kesimpulan' => 'Tidak (Tidak Perlu Co DPJP)', + 'riwayat_psiko_kondisi_psiko' => 'Tidak Ada Masalah', + 'riwayat_psiko_gangguan_jiwa' => 'Tidak', + 'riwayat_psiko_perilaku' => 'Tidak Ada Masalah', + 'riwayat_psiko_perilaku_keterangan' => '-', + 'riwayat_psiko_hubungan_keluarga' => 'Harmonis', + 'riwayat_psiko_tinggal' => 'Keluarga', + 'riwayat_psiko_tinggal_keterangan' => '-', + 'riwayat_psiko_nilai_kepercayaan' => 'Tidak Ada', + 'riwayat_psiko_nilai_kepercayaan_keterangan' => '-', + 'riwayat_psiko_pendidikan_pj' => '-', + 'riwayat_psiko_edukasi_diberikan' => 'Pasien', + 'riwayat_psiko_edukasi_diberikan_keterangan' => '-', + 'penilaian_nyeri' => 'Tidak Ada Nyeri', + 'penilaian_nyeri_penyebab' => 'Proses Penyakit', + 'penilaian_nyeri_ket_penyebab' => '-', + 'penilaian_nyeri_kualitas' => 'Seperti Tertusuk', + 'penilaian_nyeri_ket_kualitas' => '-', + 'penilaian_nyeri_lokasi' => '-', + 'penilaian_nyeri_ket_lokasi' => '-', + 'penilaian_nyeri_menyebar' => 'Tidak', + 'penilaian_nyeri_ket_menjalar' => '-', + 'penilaian_nyeri_skala' => '0', + 'penilaian_nyeri_ket_skala' => '-', + 'penilaian_nyeri_waktu' => '-', + 'penilaian_nyeri_ket_waktu' => '-', + 'penilaian_nyeri_hilang' => 'Istirahat', + 'penilaian_nyeri_ket_hilang' => '-', + 'penilaian_nyeri_diberitahukan_dokter' => 'Tidak', + 'penilaian_nyeri_ket_diberitahukan_dokter' => '-', + 'penilaian_nyeri_jam_diberitahukan_dokter' => '-', + 'penilaian_nyeri_ket_pada_dokter' => '-', + 'penilaian_jatuhmorse_skala1' => 'Tidak', + 'penilaian_jatuhmorse_nilai1' => 0, + 'penilaian_jatuhmorse_skala2' => 'Tidak', + 'penilaian_jatuhmorse_nilai2' => 0, + 'penilaian_jatuhmorse_skala3' => 'Tidak Ada/Kursi Roda/Perawat/Tirah Baring', + 'penilaian_jatuhmorse_nilai3' => 0, + 'penilaian_jatuhmorse_skala4' => 'Tidak', + 'penilaian_jatuhmorse_nilai4' => 0, + 'penilaian_jatuhmorse_skala5' => 'Normal/Tirah Baring/Imobilisasi', + 'penilaian_jatuhmorse_nilai5' => 0, + 'penilaian_jatuhmorse_skala6' => 'Sadar Akan Kemampuan Diri Sendiri', + 'penilaian_jatuhmorse_nilai6' => 0, + 'penilaian_jatuhmorse_totalnilai' => 0, + 'penilaian_jatuhsydney_skala1' => 'Tidak', + 'penilaian_jatuhsydney_nilai1' => 0, + 'penilaian_jatuhsydney_skala2' => 'Tidak', + 'penilaian_jatuhsydney_nilai2' => 0, + 'penilaian_jatuhsydney_skala3' => 'Tidak', + 'penilaian_jatuhsydney_nilai3' => 0, + 'penilaian_jatuhsydney_skala4' => 'Tidak', + 'penilaian_jatuhsydney_nilai4' => 0, + 'penilaian_jatuhsydney_skala5' => 'Tidak', + 'penilaian_jatuhsydney_nilai5' => 0, + 'penilaian_jatuhsydney_skala6' => 'Tidak', + 'penilaian_jatuhsydney_nilai6' => 0, + 'penilaian_jatuhsydney_skala7' => 'Tidak', + 'penilaian_jatuhsydney_nilai7' => 0, + 'penilaian_jatuhsydney_skala8' => 'Tidak', + 'penilaian_jatuhsydney_nilai8' => 0, + 'penilaian_jatuhsydney_skala9' => 'Tidak', + 'penilaian_jatuhsydney_nilai9' => 0, + 'penilaian_jatuhsydney_skala10' => 'Tidak', + 'penilaian_jatuhsydney_nilai10' => 0, + 'penilaian_jatuhsydney_skala11' => 'Tidak', + 'penilaian_jatuhsydney_nilai11' => 0, + 'penilaian_jatuhsydney_totalnilai' => 0, + 'skrining_gizi1' => 'Tidak ada penurunan berat badan', + 'nilai_gizi1' => 0, + 'skrining_gizi2' => 'Tidak', + 'nilai_gizi2' => 0, + 'nilai_total_gizi' => 0, + 'skrining_gizi_diagnosa_khusus' => 'Tidak', + 'skrining_gizi_ket_diagnosa_khusus' => '-', + 'skrining_gizi_diketahui_dietisen' => 'Tidak', + 'skrining_gizi_jam_diketahui_dietisen' => '-', + 'rencana' => '-', + 'nip1' => $this->core->getUserInfo('username', null, true), + 'nip2' => $this->core->getUserInfo('username', null, true), + 'kd_dokter' => $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat), + ]; + } + + echo $this->draw('assesment.html', ['penilaian_ranap' => htmlspecialchars_array($penilaian_ranap)]); + exit(); + } + + public function postAssessmentsave() + { + $_POST['nip1'] = $this->core->getUserInfo('username', null, true); + $_POST['nip2'] = $this->core->getUserInfo('username', null, true); + + // Remove fields that don't exist in database + $data = $_POST; + unset($data['no_rawat_display']); + + // Cek apakah sudah ada data + $existing = $this->db('penilaian_awal_keperawatan_ranap') + ->where('no_rawat', $data['no_rawat']) + ->oneArray(); + + if($existing) { + // Update data yang sudah ada + $query = $this->db('penilaian_awal_keperawatan_ranap') + ->where('no_rawat', $data['no_rawat']) + ->save($data); + } else { + // Insert data baru + $query = $this->db('penilaian_awal_keperawatan_ranap')->save($data); + } + + if($query) { + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = 'Gagal menyimpan data assessment'; + echo json_encode(htmlspecialchars_array($data)); + } + exit(); + } + + public function getAssessmenttampil($no_rawat) + { + $no_rawat = revertNoRawat($no_rawat); + + $penilaian_ranap = $this->db('penilaian_awal_keperawatan_ranap') + ->join('petugas as p1', 'p1.nip=penilaian_awal_keperawatan_ranap.nip1') + ->join('petugas as p2', 'p2.nip=penilaian_awal_keperawatan_ranap.nip2') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + if($penilaian_ranap) { + $penilaian_ranap['nama_petugas1'] = $penilaian_ranap['p1.nama']; + $penilaian_ranap['nama_petugas2'] = $penilaian_ranap['p2.nama']; + } + + echo $this->draw('assesment.tampil.html', ['penilaian_ranap' => htmlspecialchars_array($penilaian_ranap)]); + exit(); + } + + public function postAssessmentdelete() + { + $query = $this->db('penilaian_awal_keperawatan_ranap') + ->where('no_rawat', $_POST['no_rawat']) + ->delete(); + + if($query) { + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = 'Gagal menghapus data assessment'; + echo json_encode(htmlspecialchars_array($data)); + } + exit(); + } + + // ADIME Gizi Methods + public function postSaveadimegizi() + { + $data = [ + 'no_rawat' => $_POST['no_rawat'], + 'tanggal' => $_POST['tanggal'], + 'asesmen' => $_POST['asesmen'] ?? null, + 'diagnosis' => $_POST['diagnosis'] ?? null, + 'intervensi' => $_POST['intervensi'] ?? null, + 'monitoring' => $_POST['monitoring'] ?? null, + 'evaluasi' => $_POST['evaluasi'] ?? null, + 'instruksi' => $_POST['instruksi'] ?? null, + 'nip' => $this->core->getUserInfo('username', null, true) + ]; + + // Cek apakah sudah ada data dengan no_rawat dan tanggal yang sama + $existing = $this->db('catatan_adime_gizi') + ->where('no_rawat', $data['no_rawat']) + ->where('tanggal', $data['tanggal']) + ->oneArray(); + + try { + if($existing) { + // Update data yang sudah ada + $query = $this->db('catatan_adime_gizi') + ->where('no_rawat', $data['no_rawat']) + ->where('tanggal', $data['tanggal']) + ->save($data); + } else { + // Insert data baru + $query = $this->db('catatan_adime_gizi')->save($data); + } + + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data ADIME Gizi berhasil disimpan']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan data ADIME Gizi']); + } + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + + exit(); + } + + public function postGetadimegizi() + { + $no_rawat = $_POST['no_rawat']; + + try { + $data = $this->db('catatan_adime_gizi') + ->join('petugas', 'petugas.nip=catatan_adime_gizi.nip') + ->select([ + 'catatan_adime_gizi.no_rawat', + 'catatan_adime_gizi.tanggal', + 'catatan_adime_gizi.asesmen', + 'catatan_adime_gizi.diagnosis', + 'catatan_adime_gizi.intervensi', + 'catatan_adime_gizi.monitoring', + 'catatan_adime_gizi.evaluasi', + 'catatan_adime_gizi.instruksi', + 'petugas.nama as nama_petugas' + ]) + ->where('catatan_adime_gizi.no_rawat', $no_rawat) + ->desc('catatan_adime_gizi.tanggal') + ->toArray(); + + echo json_encode(htmlspecialchars_array($data)); + } catch (\Exception $e) { + echo json_encode([]); + } + + exit(); + } + + public function postGetadimegizidetail() + { + $no_rawat = $_POST['no_rawat']; + $tanggal = $_POST['tanggal']; + + try { + $data = $this->db('catatan_adime_gizi') + ->where('no_rawat', $no_rawat) + ->where('tanggal', $tanggal) + ->oneArray(); + + echo json_encode(htmlspecialchars_array($data)); + } catch (\Exception $e) { + echo json_encode(null); + } + + exit(); + } + + public function postDeleteadimegizi() + { + $no_rawat = $_POST['no_rawat']; + $tanggal = $_POST['tanggal']; + + try { + $query = $this->db('catatan_adime_gizi') + ->where('no_rawat', $no_rawat) + ->where('tanggal', $tanggal) + ->delete(); + + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data ADIME Gizi berhasil dihapus']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menghapus data ADIME Gizi']); + } + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + + exit(); + } + + // Assessment Nyeri Methods + public function getAssessmentNyeri($no_rawat) + { + $no_rawat = revertNorawat($no_rawat); + $reg_periksa = $this->db('reg_periksa') + ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') + ->join('dokter', 'dokter.kd_dokter=reg_periksa.kd_dokter') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + $penilaian_ulang_nyeri = $this->db('penilaian_ulang_nyeri') + ->join('petugas', 'petugas.nip=penilaian_ulang_nyeri.nip') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + // Get petugas info for current user + $petugas = $this->db('petugas') + ->where('nip', $this->core->getUserInfo('username', null, true)) + ->oneArray(); + + echo $this->draw('assessment.nyeri.html', ['reg_periksa' => htmlspecialchars_array($reg_periksa), 'penilaian_ulang_nyeri' => htmlspecialchars_array($penilaian_ulang_nyeri), 'petugas' => htmlspecialchars_array($petugas)]); + exit(); + } + + public function postAssessmentNyeri() + { + $_POST['nip'] = $this->core->getUserInfo('username', null, true); + + // Handle edit mode + if(isset($_POST['mode']) && $_POST['mode'] == 'edit' && isset($_POST['original_tanggal'])) { + $this->db('penilaian_ulang_nyeri') + ->where('no_rawat', $_POST['no_rawat']) + ->where('tanggal', $_POST['original_tanggal']) + ->save([ + 'nip' => $_POST['nip'], + 'tanggal' => $_POST['tanggal'], + 'nyeri' => $_POST['nyeri'], + 'provokes' => $_POST['provokes'], + 'ket_provokes' => $_POST['ket_provokes'], + 'quality' => $_POST['quality'], + 'ket_quality' => $_POST['ket_quality'], + 'lokasi' => $_POST['lokasi'], + 'menyebar' => $_POST['menyebar'], + 'skala_nyeri' => $_POST['skala_nyeri'], + 'durasi' => $_POST['durasi'], + 'nyeri_hilang' => $_POST['nyeri_hilang'], + 'ket_nyeri' => $_POST['ket_nyeri'] + ]); + } else { + // Check if record already exists + $existing = $this->db('penilaian_ulang_nyeri') + ->where('no_rawat', $_POST['no_rawat']) + ->where('tanggal', $_POST['tanggal']) + ->oneArray(); + + if($existing) { + // Update existing record + $this->db('penilaian_ulang_nyeri') + ->where('no_rawat', $_POST['no_rawat']) + ->where('tanggal', $_POST['tanggal']) + ->save([ + 'nip' => $_POST['nip'], + 'nyeri' => $_POST['nyeri'], + 'provokes' => $_POST['provokes'], + 'ket_provokes' => $_POST['ket_provokes'], + 'quality' => $_POST['quality'], + 'ket_quality' => $_POST['ket_quality'], + 'lokasi' => $_POST['lokasi'], + 'menyebar' => $_POST['menyebar'], + 'skala_nyeri' => $_POST['skala_nyeri'], + 'durasi' => $_POST['durasi'], + 'nyeri_hilang' => $_POST['nyeri_hilang'], + 'ket_nyeri' => $_POST['ket_nyeri'] + ]); + } else { + // Insert new record + $this->db('penilaian_ulang_nyeri')->save([ + 'no_rawat' => $_POST['no_rawat'], + 'nip' => $_POST['nip'], + 'tanggal' => $_POST['tanggal'], + 'nyeri' => $_POST['nyeri'], + 'provokes' => $_POST['provokes'], + 'ket_provokes' => $_POST['ket_provokes'], + 'quality' => $_POST['quality'], + 'ket_quality' => $_POST['ket_quality'], + 'lokasi' => $_POST['lokasi'], + 'menyebar' => $_POST['menyebar'], + 'skala_nyeri' => $_POST['skala_nyeri'], + 'durasi' => $_POST['durasi'], + 'nyeri_hilang' => $_POST['nyeri_hilang'], + 'ket_nyeri' => $_POST['ket_nyeri'] + ]); + } + } + exit(); + } + + public function getAssessmentNyeriTampil($no_rawat) + { + $no_rawat = revertNorawat($no_rawat); + $penilaian_ulang_nyeri = $this->db('penilaian_ulang_nyeri') + ->join('petugas', 'petugas.nip=penilaian_ulang_nyeri.nip') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + if($penilaian_ulang_nyeri) { + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo '
                                              TanggalJenis NyeriSkalaLokasiPetugasAksi
                                              '.$penilaian_ulang_nyeri['tanggal'].''.$penilaian_ulang_nyeri['nyeri'].''.$penilaian_ulang_nyeri['skala_nyeri'].''.$penilaian_ulang_nyeri['lokasi'].''.$penilaian_ulang_nyeri['nama'].''; + echo ' '; + echo ''; + echo '
                                              '; + } else { + echo '
                                              Belum ada data assessment nyeri untuk pasien ini.
                                              '; + } + exit(); + } + + public function postHapusAssessmentNyeri() + { + header('Content-Type: application/json'); + + try { + // Validate required fields + if(empty($_POST['no_rawat']) || empty($_POST['tanggal'])) { + echo json_encode(['status' => 'error', 'message' => 'Data tidak lengkap']); + exit(); + } + + $result = $this->db('penilaian_ulang_nyeri') + ->where('no_rawat', $_POST['no_rawat']) + ->where('tanggal', $_POST['tanggal']) + ->delete(); + + if($result) { + echo json_encode(['status' => 'success', 'message' => 'Data assessment nyeri berhasil dihapus']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menghapus data assessment nyeri']); + } + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + + exit(); + } + public function getJavascript() { header('Content-type: text/javascript'); @@ -856,6 +2144,1063 @@ public function getJavascript() exit(); } + public function init() + { + $this->consid = $this->settings->get('settings.BpjsConsID'); + $this->secretkey = $this->settings->get('settings.BpjsSecretKey'); + $this->user_key = $this->settings->get('settings.BpjsUserKey'); + $this->api_url = $this->settings->get('settings.BpjsApiUrl'); + } + + public function apiList() + { + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $user_id = $this->db('mlite_users')->where('username', $username)->oneArray()['id']; + $bangsal = str_replace(",","','", $this->core->getUserInfo('cap', $user_id, true)); + + $draw = $_GET['draw'] ?? 0; + $start = $_GET['start'] ?? 0; + $length = $_GET['length'] ?? 10; + $search = $_GET['search'] ?? ''; + $tgl_awal = $_GET['tgl_awal'] ?? null; + $tgl_akhir = $_GET['tgl_akhir'] ?? null; + $status_pulang = $_GET['status_pulang'] ?? '-'; + + $sql = "SELECT kamar_inap.*, reg_periksa.no_rkm_medis, reg_periksa.umurdaftar, reg_periksa.status_bayar, pasien.nm_pasien, pasien.jk, kamar.kd_kamar, bangsal.nm_bangsal, dokter.nm_dokter, penjab.png_jawab + FROM kamar_inap + JOIN reg_periksa ON kamar_inap.no_rawat = reg_periksa.no_rawat + JOIN pasien ON reg_periksa.no_rkm_medis = pasien.no_rkm_medis + JOIN kamar ON kamar_inap.kd_kamar = kamar.kd_kamar + JOIN bangsal ON kamar.kd_bangsal = bangsal.kd_bangsal + JOIN dpjp_ranap ON kamar_inap.no_rawat = dpjp_ranap.no_rawat + JOIN dokter ON dpjp_ranap.kd_dokter = dokter.kd_dokter + JOIN penjab ON reg_periksa.kd_pj = penjab.kd_pj + WHERE 1=1"; + + + if ($this->core->getUserInfo('role', $user_id, true) != 'admin') { + $sql .= " AND bangsal.kd_bangsal IN ('$bangsal')"; + } + if ($status_pulang == '-') { + $sql .= " AND kamar_inap.stts_pulang = '-'"; + } elseif ($status_pulang != 'all') { + $sql .= " AND kamar_inap.stts_pulang = '$status_pulang'"; + if ($tgl_awal && $tgl_akhir) { + $sql .= " AND kamar_inap.tgl_masuk BETWEEN '$tgl_awal' AND '$tgl_akhir'"; + } + } else { + if ($tgl_awal && $tgl_akhir) { + $sql .= " AND kamar_inap.tgl_masuk BETWEEN '$tgl_awal' AND '$tgl_akhir'"; + } + } + + if (!empty($search)) { + $sql .= " AND (pasien.nm_pasien LIKE '%$search%' OR reg_periksa.no_rkm_medis LIKE '%$search%' OR kamar_inap.no_rawat LIKE '%$search%')"; + } + + $sql .= " GROUP BY kamar_inap.no_rawat"; + + $stmt = $this->db()->pdo()->prepare($sql); + $stmt->execute(); + $totalRecords = $stmt->rowCount(); + + $sql .= " LIMIT $start, $length"; + $stmt = $this->db()->pdo()->prepare($sql); + $stmt->execute(); + $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC); + + return [ + "status" => "success", + "data" => $rows, + "meta" => [ + "page" => floor($start / $length) + 1, + "per_page" => intval($length), + "total" => $totalRecords + ] + ]; + } + + public function apiShow($no_rawat = null) + { + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + if(!$no_rawat) { + return ['status' => 'error', 'message' => 'No rawat missing']; + } + $no_rawat = revertNoRawat($no_rawat); + $row = $this->db('kamar_inap') + ->join('reg_periksa', 'kamar_inap.no_rawat=reg_periksa.no_rawat') + ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') + ->join('kamar', 'kamar_inap.kd_kamar=kamar.kd_kamar') + ->join('bangsal', 'kamar.kd_bangsal=bangsal.kd_bangsal') + ->join('dpjp_ranap', 'kamar_inap.no_rawat=dpjp_ranap.no_rawat') + ->join('dokter', 'dpjp_ranap.kd_dokter=dokter.kd_dokter') + ->where('kamar_inap.no_rawat', $no_rawat) + ->oneArray(); + + if($row) { + return ['status' => 'success', 'data' => $row]; + } else { + return ['status' => 'error', 'message' => 'Not found']; + } + } + + public function apiCreate() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + if (empty($input['no_rawat']) || empty($input['kd_kamar'])) { + return ['status' => 'error', 'message' => 'Data incomplete']; + } + + $kamar = $this->db('kamar')->where('kd_kamar', $input['kd_kamar'])->oneArray(); + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kd_kamar' => $input['kd_kamar'], + 'trf_kamar' => $kamar['trf_kamar'], + 'lama' => $input['lama'] ?? 1, + 'tgl_masuk' => $input['tgl_masuk'] ?? date('Y-m-d'), + 'jam_masuk' => $input['jam_masuk'] ?? date('H:i:s'), + 'ttl_biaya' => $kamar['trf_kamar'] * ($input['lama'] ?? 1), + 'tgl_keluar' => '0000-00-00', + 'jam_keluar' => '00:00:00', + 'diagnosa_awal' => $input['diagnosa_awal'] ?? '-', + 'diagnosa_akhir' => '-', + 'stts_pulang' => '-' + ]; + + try { + $this->db('kamar_inap')->save($data); + $this->db('kamar')->where('kd_kamar', $input['kd_kamar'])->save(['status' => 'ISI']); + + if(!empty($input['kd_dokter'])) { + $this->db('dpjp_ranap')->save(['no_rawat' => $input['no_rawat'], 'kd_dokter' => $input['kd_dokter']]); + } + + $this->db('reg_periksa')->where('no_rawat', $input['no_rawat'])->save(['status_lanjut' => 'Ranap']); + + return ['status' => 'created', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiUpdate($no_rawat = null) + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_update', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + if(!$no_rawat) { + return ['status' => 'error', 'message' => 'No rawat missing']; + } + + $no_rawat = revertNoRawat($no_rawat); + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('kamar_inap')->where('no_rawat', $no_rawat)->save($input); + + // If discharge + if(isset($input['stts_pulang']) && $input['stts_pulang'] != '-') { + $kamar_inap = $this->db('kamar_inap')->where('no_rawat', $no_rawat)->oneArray(); + $this->db('kamar')->where('kd_kamar', $kamar_inap['kd_kamar'])->save(['status' => 'KOSONG']); + $this->db('reg_periksa')->where('no_rawat', $no_rawat)->save(['stts' => 'Sudah']); + } + + return ['status' => 'success', 'data' => $input]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDelete($no_rawat = null) + { + $username = $this->core->checkAuth('DELETE'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + if(!$no_rawat) { + return ['status' => 'error', 'message' => 'No rawat missing']; + } + + $no_rawat = revertNoRawat($no_rawat); + $kamar_inap = $this->db('kamar_inap')->where('no_rawat', $no_rawat)->oneArray(); + + try { + $this->db('kamar_inap')->where('no_rawat', $no_rawat)->delete(); + if($kamar_inap) { + $this->db('kamar')->where('kd_kamar', $kamar_inap['kd_kamar'])->save(['status' => 'KOSONG']); + $this->db('dpjp_ranap')->where('no_rawat', $no_rawat)->delete(); + $this->db('reg_periksa')->where('no_rawat', $no_rawat)->save(['status_lanjut' => 'Ralan']); + } + return ['status' => 'success', 'message' => 'Data deleted']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiShowSoap($no_rawat = null) + { + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + if(!$no_rawat) { + return ['status' => 'error', 'message' => 'No rawat missing']; + } + $no_rawat = revertNoRawat($no_rawat); + + $pemeriksaan = $this->db('pemeriksaan_ranap')->where('no_rawat', $no_rawat)->toArray(); + return ['status' => 'success', 'data' => $pemeriksaan]; + } + + public function apiSaveSoap() + { + $username = $this->core->checkAuth('POST'); + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $nip = $username; + + // Map input to schema columns + $data = [ + 'no_rawat' => $input['no_rawat'], + 'tgl_perawatan' => $input['tgl_perawatan'], + 'jam_rawat' => $input['jam_rawat'], + 'suhu_tubuh' => $input['suhu_tubuh'] ?? null, + 'tensi' => $input['tensi'] ?? '-', + 'nadi' => $input['nadi'] ?? null, + 'respirasi' => $input['respirasi'] ?? null, + 'tinggi' => $input['tinggi'] ?? null, + 'berat' => $input['berat'] ?? null, + 'spo2' => $input['spo2'] ?? '-', + 'gcs' => $input['gcs'] ?? null, + 'kesadaran' => $input['kesadaran'] ?? 'Compos Mentis', + 'keluhan' => $input['keluhan'] ?? null, + 'pemeriksaan' => $input['pemeriksaan'] ?? null, + 'alergi' => $input['alergi'] ?? null, + 'penilaian' => $input['penilaian'] ?? '-', + 'rtl' => $input['rtl'] ?? '-', + 'instruksi' => $input['instruksi'] ?? '-', + 'evaluasi' => $input['evaluasi'] ?? '-', + 'nip' => $nip + ]; + + try { + // Check based on primary key (no_rawat, tgl_perawatan, jam_rawat) + if(!$this->db('pemeriksaan_ranap') + ->where('no_rawat', $data['no_rawat']) + ->where('tgl_perawatan', $data['tgl_perawatan']) + ->where('jam_rawat', $data['jam_rawat']) + ->oneArray()) { + + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $this->db('pemeriksaan_ranap')->save($data); + } else { + + if (!$this->core->checkPermission($username, 'can_update', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $this->db('pemeriksaan_ranap') + ->where('no_rawat', $data['no_rawat']) + ->where('tgl_perawatan', $data['tgl_perawatan']) + ->where('jam_rawat', $data['jam_rawat']) + ->save($data); + } + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteSoap() + { + $username = $this->core->checkAuth('DELETE'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('pemeriksaan_ranap') + ->where('no_rawat', $input['no_rawat']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->delete(); + return ['status' => 'success', 'message' => 'Deleted']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiShowDetail($category = null, $no_rawat = null) + { + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + if(!$no_rawat) { + return ['status' => 'error', 'message' => 'No rawat missing']; + } + $no_rawat = revertNorawat($no_rawat); + $kategori = trim($category); + $no_resep = isset($_GET['no_resep']) ? $_GET['no_resep'] : null; + + $pasien = $this->db('reg_periksa') + ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + $patient_info = [ + 'nm_pasien' => $pasien['nm_pasien'] ?? '', + 'no_rkm_medis' => $pasien['no_rkm_medis'] ?? '' + ]; + + $data = []; + try { + if($kategori == 'tindakan') { + $data['rawat_inap_dr'] = $this->db('rawat_inap_dr') + ->join('jns_perawatan_inap', 'jns_perawatan_inap.kd_jenis_prw=rawat_inap_dr.kd_jenis_prw') + ->join('dokter', 'dokter.kd_dokter=rawat_inap_dr.kd_dokter') + ->where('no_rawat', $no_rawat) + ->toArray(); + $data['rawat_inap_pr'] = $this->db('rawat_inap_pr') + ->join('jns_perawatan_inap', 'jns_perawatan_inap.kd_jenis_prw=rawat_inap_pr.kd_jenis_prw') + ->join('petugas', 'petugas.nip=rawat_inap_pr.nip') + ->where('no_rawat', $no_rawat) + ->toArray(); + $data['rawat_inap_drpr'] = $this->db('rawat_inap_drpr') + ->join('jns_perawatan_inap', 'jns_perawatan_inap.kd_jenis_prw=rawat_inap_drpr.kd_jenis_prw') + ->join('dokter', 'dokter.kd_dokter=rawat_inap_drpr.kd_dokter') + ->join('petugas', 'petugas.nip=rawat_inap_drpr.nip') + ->where('no_rawat', $no_rawat) + ->toArray(); + + return [ + 'status' => 'success', + 'patient' => $patient_info, + 'data' => [ + 'rawat_jl_dr' => $data['rawat_inap_dr'], + 'rawat_jl_pr' => $data['rawat_inap_pr'], + 'rawat_jl_drpr' => $data['rawat_inap_drpr'] + ] + ]; + + } elseif($kategori == 'obat') { + $query = $this->db('resep_dokter') + ->join('resep_obat', 'resep_obat.no_resep = resep_dokter.no_resep') + ->join('databarang', 'databarang.kode_brng = resep_dokter.kode_brng') + ->where('resep_obat.no_rawat', $no_rawat) + ->where('resep_obat.status', 'ranap'); + + if ($no_resep) { + $query->where('resep_obat.no_resep', $no_resep); + } + + $data['obat'] = $query->toArray(); + + return ['status' => 'success', 'patient' => $patient_info, 'data' => $data['obat']]; + + } elseif($kategori == 'racikan') { + $query = $this->db('resep_dokter_racikan') + ->join('resep_obat', 'resep_obat.no_resep = resep_dokter_racikan.no_resep') + ->join('metode_racik', 'metode_racik.kd_racik = resep_dokter_racikan.kd_racik') + ->where('resep_obat.no_rawat', $no_rawat) + ->where('resep_obat.status', 'ranap'); + + if ($no_resep) { + $query->where('resep_obat.no_resep', $no_resep); + } + + $resep_racikan = $query->toArray(); + + foreach ($resep_racikan as &$racikan) { + $racikan['detail'] = $this->db('resep_dokter_racikan_detail') + ->join('databarang', 'databarang.kode_brng = resep_dokter_racikan_detail.kode_brng') + ->where('no_resep', $racikan['no_resep']) + ->where('no_racik', $racikan['no_racik']) + ->toArray(); + } + $data['racikan'] = $resep_racikan; + return ['status' => 'success', 'patient' => $patient_info, 'data' => $data['racikan']]; + + } else { + return ['status' => 'error', 'message' => 'Category not supported: ' . $kategori]; + } + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + + } + + public function apiSaveDetail() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $kategori = trim($input['kat']); + + if (empty($kategori) || empty($input['no_rawat']) || empty($input['kd_jenis_prw'])) { + return ['status' => 'error', 'message' => 'Data incomplete']; + } + + try { + + if($kategori == 'tindakan') { + $jns_perawatan = $this->db('jns_perawatan_inap')->where('kd_jenis_prw', $input['kd_jenis_prw'])->oneArray(); + if($input['provider'] == 'rawat_inap_dr') { + for ($i = 0; $i < $input['jml_tindakan']; $i++) { + $this->db('rawat_inap_dr')->save([ + 'no_rawat' => $input['no_rawat'], + 'kd_jenis_prw' => $input['kd_jenis_prw'], + 'kd_dokter' => $input['kode_provider'], + 'tgl_perawatan' => $input['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($input['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrdr'] + ]); + } + } + if($input['provider'] == 'rawat_inap_pr') { + for ($i = 0; $i < $input['jml_tindakan']; $i++) { + $this->db('rawat_inap_pr')->save([ + 'no_rawat' => $input['no_rawat'], + 'kd_jenis_prw' => $input['kd_jenis_prw'], + 'nip' => $input['kode_provider2'] ?? $input['kode_provider'], + 'tgl_perawatan' => $input['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($input['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrpr'] + ]); + } + } + if($input['provider'] == 'rawat_inap_drpr') { + for ($i = 0; $i < $input['jml_tindakan']; $i++) { + $this->db('rawat_inap_drpr')->save([ + 'no_rawat' => $input['no_rawat'], + 'kd_jenis_prw' => $input['kd_jenis_prw'], + 'kd_dokter' => $input['kode_provider'], + 'nip' => $input['kode_provider2'], + 'tgl_perawatan' => $input['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($input['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], + 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrdrpr'] + ]); + } + } + return ['status' => 'success', 'message' => 'Detail saved']; + } elseif ($kategori == 'obat') { + $no_resep = $this->core->setNoResep($input['tgl_perawatan']); + $cek_resep = $this->db('resep_obat')->where('no_rawat', $input['no_rawat'])->where('tgl_peresepan', $input['tgl_perawatan'])->where('tgl_perawatan', '0000-00-00')->where('status', 'ralan')->oneArray(); + + if (empty($cek_resep)) { + $this->db('resep_obat') + ->save([ + 'no_resep' => $no_resep, + 'tgl_perawatan' => '0000-00-00', + 'jam' => '00:00:00', + 'no_rawat' => $input['no_rawat'], + 'kd_dokter' => $input['kode_provider'] ?? $username, + 'tgl_peresepan' => $input['tgl_perawatan'], + 'jam_peresepan' => $input['jam_rawat'], + 'status' => 'ranap', + 'tgl_penyerahan' => '0000-00-00', + 'jam_penyerahan' => '00:00:00' + ]); + + if ($this->db('resep_obat')->where('no_resep', $no_resep)->oneArray()) { + $this->db('resep_dokter') + ->save([ + 'no_resep' => $no_resep, + 'kode_brng' => $input['kd_jenis_prw'], + 'jml' => $input['jml'], + 'aturan_pakai' => $input['aturan_pakai'] + ]); + } + } else { + $no_resep = $cek_resep['no_resep']; + $this->db('resep_dokter') + ->save([ + 'no_resep' => $no_resep, + 'kode_brng' => $input['kd_jenis_prw'], + 'jml' => $input['jml'], + 'aturan_pakai' => $input['aturan_pakai'] + ]); + } + return ['status' => 'success', 'message' => 'Obat saved']; + } elseif ($kategori == 'racikan') { + $no_resep = $this->core->setNoResep($input['tgl_perawatan']); + $cek_resep = $this->db('resep_obat')->where('no_rawat', $input['no_rawat'])->where('tgl_peresepan', $input['tgl_perawatan'])->where('tgl_perawatan', '0000-00-00')->where('status', 'ralan')->oneArray(); + + $jam_rawat = $input['jam_rawat'] ?? date('H:i:s'); + + if (empty($cek_resep)) { + $this->db('resep_obat') + ->save([ + 'no_resep' => $no_resep, + 'tgl_perawatan' => '0000-00-00', + 'jam' => '00:00:00', + 'no_rawat' => $input['no_rawat'], + 'kd_dokter' => $input['kode_provider'] ?? $username, + 'tgl_peresepan' => $input['tgl_perawatan'], + 'jam_peresepan' => $jam_rawat, + 'status' => 'ranap', + 'tgl_penyerahan' => '0000-00-00', + 'jam_penyerahan' => '00:00:00' + ]); + + if ($this->db('resep_obat')->where('no_resep', $no_resep)->oneArray()) { + $no_racik = $this->db('resep_dokter_racikan')->where('no_resep', $no_resep)->count(); + $no_racik = $no_racik + 1; + $this->db('resep_dokter_racikan') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'nama_racik' => $input['nama_racik'], + 'kd_racik' => $input['kd_jenis_prw'], + 'jml_dr' => $input['jml'], + 'aturan_pakai' => $input['aturan_pakai'], + 'keterangan' => $input['keterangan'] + ]); + + $kode_brng_list = is_string($input['kode_brng']) ? json_decode($input['kode_brng'], true) : $input['kode_brng']; + $kandungan_list = is_string($input['kandungan']) ? json_decode($input['kandungan'], true) : $input['kandungan']; + + $kode_brng_count = count($kode_brng_list); + for ($i = 0; $i < $kode_brng_count; $i++) { + $kapasitas = $this->db('databarang')->where('kode_brng', $kode_brng_list[$i]['value'])->oneArray(); + $jml = $input['jml'] * $kandungan_list[$i]['value']; + if ($kapasitas['kapasitas'] > 0) { + $jml = round(($jml / $kapasitas['kapasitas']), 1); + } + $this->db('resep_dokter_racikan_detail') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'kode_brng' => $kode_brng_list[$i]['value'], + 'p1' => '1', + 'p2' => '1', + 'kandungan' => $kandungan_list[$i]['value'], + 'jml' => $jml + ]); + } + } + } else { + $no_resep = $cek_resep['no_resep']; + $no_racik = $this->db('resep_dokter_racikan')->where('no_resep', $no_resep)->count(); + $no_racik = $no_racik + 1; + $this->db('resep_dokter_racikan') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'nama_racik' => $input['nama_racik'], + 'kd_racik' => $input['kd_jenis_prw'], + 'jml_dr' => $input['jml'], + 'aturan_pakai' => $input['aturan_pakai'], + 'keterangan' => $input['keterangan'] + ]); + + $kode_brng_list = is_string($input['kode_brng']) ? json_decode($input['kode_brng'], true) : $input['kode_brng']; + $kandungan_list = is_string($input['kandungan']) ? json_decode($input['kandungan'], true) : $input['kandungan']; + + $kode_brng_count = count($kode_brng_list); + for ($i = 0; $i < $kode_brng_count; $i++) { + $kapasitas = $this->db('databarang')->where('kode_brng', $kode_brng_list[$i]['value'])->oneArray(); + $jml = $input['jml'] * $kandungan_list[$i]['value']; + if ($kapasitas['kapasitas'] > 0) { + $jml = round(($jml / $kapasitas['kapasitas']), 1); + } + $this->db('resep_dokter_racikan_detail') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'kode_brng' => $kode_brng_list[$i]['value'], + 'p1' => '1', + 'p2' => '1', + 'kandungan' => $kandungan_list[$i]['value'], + 'jml' => $jml + ]); + } + } + return ['status' => 'success', 'message' => 'Racikan saved']; + } else { + return ['status' => 'error', 'message' => 'Category not supported']; + } + } catch (\PDOException $e) { + $message = $e->getMessage(); + $message = preg_replace('/`[^`]+`\./', '', $message); + return ['status' => 'error', 'message' => htmlspecialchars_array($message)]; + } + } + + public function apiDeleteDetail() + { + $username = $this->core->checkAuth('DELETE'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $kategori = trim($input['kat']); + + if($kategori == 'tindakan') { + if($input['provider'] == 'rawat_inap_dr') { + $this->db('rawat_inap_dr') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_jenis_prw', $input['kd_jenis_prw']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->delete(); + } + if($input['provider'] == 'rawat_inap_pr') { + $this->db('rawat_inap_pr') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_jenis_prw', $input['kd_jenis_prw']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->delete(); + } + if($input['provider'] == 'rawat_inap_drpr') { + $this->db('rawat_inap_drpr') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_jenis_prw', $input['kd_jenis_prw']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->delete(); + } + } elseif ($kategori == 'obat') { + if(isset($input['kd_jenis_prw'])) { + $this->db('resep_dokter') + ->where('no_resep', $input['no_resep']) + ->where('kode_brng', $input['kd_jenis_prw']) + ->delete(); + } else { + $this->db('resep_obat') + ->where('no_resep', $input['no_resep']) + ->where('no_rawat', $input['no_rawat']) + ->where('tgl_peresepan', $input['tgl_peresepan']) + ->where('jam_peresepan', $input['jam_peresepan']) + ->delete(); + } + } elseif ($kategori == 'racikan') { + if(isset($input['kd_jenis_prw']) && isset($input['no_racik'])) { + $this->db('resep_dokter_racikan_detail') + ->where('no_resep', $input['no_resep']) + ->where('no_racik', $input['no_racik']) + ->where('kode_brng', $input['kd_jenis_prw']) + ->delete(); + } elseif (isset($input['no_racik'])) { + $this->db('resep_dokter_racikan') + ->where('no_resep', $input['no_resep']) + ->where('no_racik', $input['no_racik']) + ->delete(); + $this->db('resep_dokter_racikan_detail') + ->where('no_resep', $input['no_resep']) + ->where('no_racik', $input['no_racik']) + ->delete(); + } + } + + return ['status' => 'success']; + } + + public function apiSaveDiagnosa() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kd_penyakit' => $input['kd_penyakit'], + 'status' => $input['status'] ?? 'Ranap', + 'prioritas' => $input['prioritas'], + 'status_penyakit' => 'Baru' + ]; + + try { + $this->db('diagnosa_pasien')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteDiagnosa() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('diagnosa_pasien') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_penyakit', $input['kd_penyakit']) + ->where('prioritas', $input['prioritas']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveProsedur() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kode' => $input['kode'], + 'status' => $input['status'] ?? 'Ranap', + 'prioritas' => $input['prioritas'] + ]; + + try { + $this->db('prosedur_pasien')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteProsedur() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('prosedur_pasien') + ->where('no_rawat', $input['no_rawat']) + ->where('kode', $input['kode']) + ->where('prioritas', $input['prioritas']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveCatatan() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $input['no_rawat']); + + $data = [ + 'tanggal' => date('Y-m-d'), + 'jam' => date('H:i:s'), + 'no_rawat' => $input['no_rawat'], + 'kd_dokter' => $kd_dokter, + 'catatan' => $input['catatan'] + ]; + + try { + $this->db('catatan_perawatan')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteCatatan() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('catatan_perawatan') + ->where('no_rawat', $input['no_rawat']) + ->where('tanggal', $input['tanggal']) + ->where('jam', $input['jam']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveBerkas() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kode' => $input['judul'] ?? '', + 'lokasi_file' => $input['deskripsi'] ?? '' + ]; + + try { + $this->db('berkas_digital_perawatan')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteBerkas() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('berkas_digital_perawatan') + ->where('no_rawat', $input['no_rawat']) + ->where('kode', $input['judul'] ?? $input['kode']) + ->where('lokasi_file', $input['deskripsi'] ?? $input['lokasi_file']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveResume() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $input['no_rawat']); + + // Check if exists + $exists = $this->db('resume_pasien')->where('no_rawat', $input['no_rawat'])->oneArray(); + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kd_dokter' => $kd_dokter, + 'diagnosa_utama' => $input['diagnosa_utama'] ?? '', + 'diagnosa_sekunder' => $input['diagnosa_sekunder'] ?? '', + 'jalannya_penyakit' => $input['jalannya_penyakit'] ?? '', + 'obat_pulang' => $input['terapi'] ?? '', + 'kondisi_pulang' => $input['kondisi_pulang'] ?? 'Hidup', + // Default required fields + 'keluhan_utama' => '', + 'pemeriksaan_penunjang' => '', + 'hasil_laborat' => '', + 'kd_diagnosa_utama' => '', + 'kd_diagnosa_sekunder' => '', + 'diagnosa_sekunder2' => '', + 'kd_diagnosa_sekunder2' => '', + 'diagnosa_sekunder3' => '', + 'kd_diagnosa_sekunder3' => '', + 'diagnosa_sekunder4' => '', + 'kd_diagnosa_sekunder4' => '', + 'prosedur_utama' => '', + 'kd_prosedur_utama' => '', + 'prosedur_sekunder' => '', + 'kd_prosedur_sekunder' => '', + 'prosedur_sekunder2' => '', + 'kd_prosedur_sekunder2' => '', + 'prosedur_sekunder3' => '', + 'kd_prosedur_sekunder3' => '' + ]; + + try { + if ($exists) { + $this->db('resume_pasien')->where('no_rawat', $input['no_rawat'])->save($data); + } else { + $this->db('resume_pasien')->save($data); + } + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveRujukanInternal() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kd_poli' => $input['kd_poli'], + 'kd_dokter' => $input['kd_dokter'], + 'isi_rujukan' => $input['catatan'] ?? '' + ]; + + try { + $this->db('mlite_rujukan_internal_poli')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteRujukanInternal() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('mlite_rujukan_internal_poli') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_poli', $input['kd_poli']) + ->where('kd_dokter', $input['kd_dokter']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveLaporanOperasi() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'tanggal' => $input['tanggal'] . ' ' . $input['jam'], + 'operator' => $input['operator'], + 'laporan_operasi' => $input['laporan'] ?? '', + // Defaults + 'operator2' => '-', 'operator3' => '-', 'asisten_operator1' => '-', 'asisten_operator2' => '-', 'asisten_operator3' => '-', + 'instrumen' => '-', 'dokter_anak' => '-', 'perawat_resusitas' => '-', 'dokter_anestesi' => '-', 'asisten_anestesi' => '-', + 'bidan' => '-', 'perawat_luar' => '-', 'omloop' => '-', 'omloop2' => '-', 'omloop3' => '-', 'omloop4' => '-', 'omloop5' => '-' + ]; + + try { + $this->db('laporan_operasi')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteLaporanOperasi() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $tanggal = $input['tanggal']; + if(isset($input['jam'])) { + $tanggal .= ' ' . $input['jam']; + } + + $this->db('laporan_operasi') + ->where('no_rawat', $input['no_rawat']) + ->where('tanggal', $tanggal) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + private function _addHeaderFiles() { $this->core->addCSS(url('assets/css/dataTables.bootstrap.min.css')); @@ -866,12 +3211,8 @@ private function _addHeaderFiles() $this->core->addCSS(url('assets/css/bootstrap-datetimepicker.css')); $this->core->addJS(url('assets/jscripts/moment-with-locales.js')); $this->core->addJS(url('assets/jscripts/bootstrap-datetimepicker.js')); + $this->core->addJS('https://cdn.jsdelivr.net/npm/chart.js'); $this->core->addJS(url([ADMIN, 'rawat_inap', 'javascript']), 'footer'); } - protected function data_icd($table) - { - return new DB_ICD($table); - } - -} +} \ No newline at end of file diff --git a/plugins/rawat_inap/Help.md b/plugins/rawat_inap/Help.md deleted file mode 100644 index 6b9b4accb..000000000 --- a/plugins/rawat_inap/Help.md +++ /dev/null @@ -1,3 +0,0 @@ -
                                              - -
                                              diff --git a/plugins/rawat_inap/Info.php b/plugins/rawat_inap/Info.php index 6d2f046cd..76edd2ed1 100644 --- a/plugins/rawat_inap/Info.php +++ b/plugins/rawat_inap/Info.php @@ -4,8 +4,9 @@ 'name' => 'Rawat Inap', 'description' => 'Modul rawat inap untuk mLITE', 'author' => 'Basoro', + 'category' => 'layanan', 'version' => '1.0', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'hotel', 'install' => function () use ($core) { }, diff --git a/plugins/rawat_inap/README.md b/plugins/rawat_inap/README.md new file mode 100644 index 000000000..b9b9a8569 --- /dev/null +++ b/plugins/rawat_inap/README.md @@ -0,0 +1,80 @@ +# Plugin Rawat Inap + +Modul pengelolaan pasien rawat inap di mLITE, mencakup pendaftaran masuk kamar, pencatatan tindakan dan obat, manajemen DPJP, hingga proses kepulangan pasien. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Rawat Inap**. +- Pilih submenu sesuai kebutuhan: + - Kelola + +## Panduan Pengguna (Petugas) + +1. **Daftar Pasien Rawat Inap** + - Buka menu **Rawat Inap → Kelola**. + - Tampil daftar pasien yang sedang dirawat (status pulang = `-`). + - Filter berdasarkan periode tanggal masuk/keluar dan status pulang untuk melihat riwayat. + - Tampilan dibatasi sesuai bangsal yang menjadi tanggung jawab akun pengguna (kecuali admin). + +2. **Mendaftarkan Pasien Masuk Kamar** + - Cari pasien dengan no rekam medis atau nama melalui form pencarian pasien. + - Pilih pasien dengan status lanjut `Ranap` dari Rawat Jalan atau IGD. + - Isi **Form Masuk**: kamar, dokter DPJP, tanggal masuk, jam masuk, lama rencana rawat, dan diagnosa awal. + - Klik **Simpan** — sistem akan mengisi tarif kamar otomatis, mencatat ke `kamar_inap`, menambahkan DPJP ke `dpjp_ranap`, dan mengubah status kamar menjadi `ISI`. + +3. **Manajemen DPJP (Dokter Penanggung Jawab Pasien)** + - Tambah dokter DPJP baru melalui form Set DPJP pada detail pasien. + - Hapus dokter DPJP yang tidak relevan menggunakan tombol hapus di daftar DPJP. + - Satu pasien dapat memiliki lebih dari satu DPJP. + +4. **Input Tindakan dan Obat** + - Pada detail pasien, pilih kategori **Tindakan** atau **Obat**. + - Untuk **Tindakan**: pilih jenis perawatan inap, provider (dokter/petugas/dokter+petugas), tanggal, jam, dan jumlah tindakan. + - Untuk **Obat**: pilih obat dari master, isi jumlah dan aturan pakai — sistem otomatis membuat atau menggabungkan resep harian. + - Hapus detail tindakan/obat yang salah melalui tombol hapus di daftar rincian. + +5. **Rincian Biaya** + - Buka tab **Rincian** pada detail pasien untuk melihat total biaya: tindakan dokter, tindakan petugas, tindakan gabungan, dan obat. + - Informasi billing (kode billing RI.xxx) tersedia untuk proses pembayaran. + +6. **Proses Kepulangan Pasien** + - Klik **Pulangkan** pada baris pasien. + - Isi form: status pulang, diagnosa akhir, tanggal dan jam keluar. + - Klik **Simpan** — sistem akan memperbarui `kamar_inap`, mengubah status `reg_periksa` menjadi `Sudah`, dan status kamar menjadi `KOSONG`. + - Pilihan status pulang: Sehat, Rujuk, APS, Meninggal, Sembuh, Membaik, Pulang Paksa, Pindah Kamar, Atas Persetujuan Dokter, dan lainnya. + +7. **Ubah Penjamin** + - Ubah penjamin (penjab) pasien yang sudah terdaftar tanpa harus mendaftar ulang. + +8. **Cetak Antrian** + - Gunakan fitur **Antrian** untuk mencetak nomor antrian atau label rawat inap pasien. + +## Panduan Admin + +1. **Master Kamar dan Bangsal** + - Kelola data kamar dan bangsal di modul **Master** (tabel `kamar` dan `bangsal`). + - Pastikan tarif kamar (`trf_kamar`) sudah diisi agar biaya rawat inap terhitung otomatis. + - Hanya kamar dengan `statusdata = 1` yang tampil di form pendaftaran. + +2. **Master Jenis Perawatan Inap** + - Kelola daftar tindakan rawat inap di tabel `jns_perawatan_inap` melalui modul Master. + - Pastikan tarif tindakan dokter, petugas, dan gabungan sudah benar. + +3. **Hak Akses Bangsal** + - Atur `cap` (capability) akun petugas dengan kode bangsal yang menjadi wewenangnya. + - Petugas hanya melihat pasien di bangsal yang sesuai dengan `cap`-nya; admin melihat semua bangsal. + +4. **Integrasi vClaim BPJS** + - Jika modul `vclaim` aktif, tombol pengajuan SEP tersedia pada daftar pasien rawat inap. + - Nomor SEP ditampilkan bila bridging sudah berhasil. + +5. **Berkas Digital** + - Master berkas digital (`master_berkas_digital`) mengatur dokumen apa saja yang dapat diunggah per pasien rawat inap. + - File disimpan di direktori `webapps/berkasrawat/pages/upload/`. + +## Catatan + +- Pasien hanya dapat didaftarkan masuk kamar jika sudah memiliki data `reg_periksa` dengan `status_lanjut = Ranap`. +- Satu nomor rawat hanya dapat menempati satu kamar pada satu waktu. +- Biaya kamar dihitung otomatis: tarif kamar × lama hari rawat. diff --git a/plugins/rawat_inap/js/admin/rawat_inap.js b/plugins/rawat_inap/js/admin/rawat_inap.js index 14b205da7..ed4b58b03 100644 --- a/plugins/rawat_inap/js/admin/rawat_inap.js +++ b/plugins/rawat_inap/js/admin/rawat_inap.js @@ -1,3 +1,6 @@ +// Global variable untuk chart +var vitalSignsChart = null; + // sembunyikan form dan notif $("#form_rincian").hide(); $("#form_soap").hide(); @@ -9,11 +12,25 @@ $('#provider').hide(); $('#aturan_pakai').hide(); $("#tanggal_keluar").hide(); $("#diagnosa_keluar").hide(); +$("#form_kontrol").hide(); + +// Inisialisasi jam_rawat saat halaman dibuka +$(function(){ + var baseURL = mlite.url + '/' + mlite.admin; + var $jr = $('input:text[name=jam_rawat]').last(); + if ($jr.length) { + $jr.focus(); + if (!$jr.val()) { + $.post(baseURL + '/rawat_inap/cekwaktu?t=' + mlite.token, {}, function(data){ + $jr.val(data); + }); + } + } +}); // tombol buka form diklik $("#index").on('click', '#bukaform', function(){ var baseURL = mlite.url + '/' + mlite.admin; - event.preventDefault(); $("#form").show().load(baseURL + '/rawat_inap/form?t=' + mlite.token); $("#bukaform").val("Tutup Form"); $("#bukaform").attr("id", "tutupform"); @@ -21,7 +38,6 @@ $("#index").on('click', '#bukaform', function(){ // tombol tutup form diklik $("#index").on('click', '#tutupform', function(){ - event.preventDefault(); $("#form").hide(); $("#tutupform").val("Buka Form"); $("#tutupform").attr("id", "bukaform"); @@ -124,6 +140,7 @@ $("#display").on("click",".riwayat_perawatan", function(event){ // ketika baris data diklik $("#display").on("click", ".edit", function(event){ + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_update', 'rawat_inap') == true} var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); var url = baseURL + '/rawat_inap/form?t=' + mlite.token; @@ -141,6 +158,7 @@ $("#display").on("click", ".edit", function(event){ //$.post(url, {no_rawat: no_rawat} ,function(data) { // $("#stts_daftar").html(data).show(); //}); + {/if} }); }); @@ -216,6 +234,7 @@ $("#display").on("click", ".sep", function(event){ $('#no_kartu_peserta').text(json_obj[0].response.peserta.noKartu); $('#no_mr_peserta').text(no_rkm_medis); $('#nik_peserta').text(json_obj[0].response.peserta.nik); + $('#prov_umum_peserta').text(json_obj[0].response.peserta.provUmum.nmProvider); $('#tgl_lahir_peserta').text(json_obj[0].response.peserta.tglLahir); $('#status_peserta').text(json_obj[0].response.peserta.statusPeserta.keterangan); $('#jenis_peserta').text(json_obj[0].response.peserta.jenisPeserta.keterangan); @@ -407,6 +426,93 @@ $('#manage').on('click', '#lunas_periode_rawat_inap', function(event){ //$("#display").on("click", ".soap", function(event){ +// Handler untuk copy data SOAP sebagai fallback +$("#soap").on("click",".copy_soap", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var suhu_tubuh = $(this).attr("data-suhu_tubuh"); + var tensi = $(this).attr("data-tensi"); + var nadi = $(this).attr("data-nadi"); + var respirasi = $(this).attr("data-respirasi"); + var tinggi = $(this).attr("data-tinggi"); + var berat = $(this).attr("data-berat"); + var gcs = $(this).attr("data-gcs"); + var kesadaran = $(this).attr("data-kesadaran"); + var alergi = $(this).attr("data-alergi"); + var lingkar_perut = $(this).attr("data-lingkar_perut"); + var keluhan = $(this).attr("data-keluhan"); + var pemeriksaan = $(this).attr("data-pemeriksaan"); + var penilaian = $(this).attr("data-penilaian"); + var rtl = $(this).attr("data-rtl"); + var instruksi = $(this).attr("data-instruksi"); + var evaluasi = $(this).attr("data-evaluasi"); + var spo2 = $(this).attr("data-spo2"); + + $('input:text[name=suhu_tubuh]').val(suhu_tubuh); + $('input:text[name=tensi]').val(tensi); + $('input:text[name=nadi]').val(nadi); + $('input:text[name=respirasi]').val(respirasi); + $('input:text[name=tinggi]').val(tinggi); + $('input:text[name=berat]').val(berat); + $('input:text[name=gcs]').val(gcs); + $('input:text[name=kesadaran]').val(kesadaran); + $('input:text[name=alergi]').val(alergi); + $('input:text[name=lingkar_perut]').val(lingkar_perut); + $('textarea[name=keluhan]').val(keluhan); + $('textarea[name=pemeriksaan]').val(pemeriksaan); + $('textarea[name=penilaian]').val(penilaian); + $('textarea[name=rtl]').val(rtl); + $('textarea[name=instruksi]').val(instruksi); + $('textarea[name=evaluasi]').val(evaluasi); + $('input:text[name=spo2]').val(spo2); +}); + +// Handler untuk edit data SOAP +$("#soap").on("click",".edit_soap", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + var tgl_perawatan = $(this).attr("data-tgl_perawatan"); + var jam_rawat = $(this).attr("data-jam_rawat"); + var suhu_tubuh = $(this).attr("data-suhu_tubuh"); + var tensi = $(this).attr("data-tensi"); + var nadi = $(this).attr("data-nadi"); + var respirasi = $(this).attr("data-respirasi"); + var tinggi = $(this).attr("data-tinggi"); + var berat = $(this).attr("data-berat"); + var gcs = $(this).attr("data-gcs"); + var kesadaran = $(this).attr("data-kesadaran"); + var alergi = $(this).attr("data-alergi"); + var lingkar_perut = $(this).attr("data-lingkar_perut"); + var keluhan = $(this).attr("data-keluhan"); + var pemeriksaan = $(this).attr("data-pemeriksaan"); + var penilaian = $(this).attr("data-penilaian"); + var rtl = $(this).attr("data-rtl"); + var instruksi = $(this).attr("data-instruksi"); + var evaluasi = $(this).attr("data-evaluasi"); + var spo2 = $(this).attr("data-spo2"); + + $('input:text[name=tgl_perawatan]').val(tgl_perawatan); + $('input:text[name=jam_rawat]').val(jam_rawat); + $('input:text[name=suhu_tubuh]').val(suhu_tubuh); + $('input:text[name=tensi]').val(tensi); + $('input:text[name=nadi]').val(nadi); + $('input:text[name=respirasi]').val(respirasi); + $('input:text[name=tinggi]').val(tinggi); + $('input:text[name=berat]').val(berat); + $('input:text[name=gcs]').val(gcs); + $('input:text[name=kesadaran]').val(kesadaran); + $('input:text[name=alergi]').val(alergi); + $('input:text[name=lingkar_perut]').val(lingkar_perut); + $('textarea[name=keluhan]').val(keluhan); + $('textarea[name=pemeriksaan]').val(pemeriksaan); + $('textarea[name=penilaian]').val(penilaian); + $('textarea[name=rtl]').val(rtl); + $('textarea[name=instruksi]').val(instruksi); + $('textarea[name=evaluasi]').val(evaluasi); + $('input:text[name=spo2]').val(spo2); +}); + // ketika tombol simpan diklik $("#form_soap").on("click", "#simpan_soap", function(event){ {if: !$cek_role} @@ -419,8 +525,8 @@ $("#form_soap").on("click", "#simpan_soap", function(event){ event.preventDefault(); var no_rawat = $('input:text[name=no_rawat]').val(); - var tgl_perawatan = $('input:text[name=tgl_perawatan]').val(); - var jam_rawat = $('input:text[name=jam_rawat]').val(); + var tgl_perawatan = $('#soap_tgl_perawatan').val(); + var jam_rawat = $('#soap_jam_rawat').val(); var suhu_tubuh = $('input:text[name=suhu_tubuh]').val(); var tensi = $('input:text[name=tensi]').val(); var nadi = $('input:text[name=nadi]').val(); @@ -467,6 +573,10 @@ $("#form_soap").on("click", "#simpan_soap", function(event){ }, function(data) { // tampilkan data $("#soap").html(data).show(); + // Update vital signs chart + if (typeof updateVitalSignsChart === 'function') { + updateVitalSignsChart(); + } }); $('input:text[name=suhu_tubuh]').val(""); $('input:text[name=tensi]').val(""); @@ -496,6 +606,45 @@ $("#form_soap").on("click", "#simpan_soap", function(event){ }); // ketika tombol hapus ditekan +$("#soap").on("click",".copy_soap", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var suhu_tubuh = $(this).attr("data-suhu_tubuh"); + var tensi = $(this).attr("data-tensi"); + var nadi = $(this).attr("data-nadi"); + var respirasi = $(this).attr("data-respirasi"); + var tinggi = $(this).attr("data-tinggi"); + var berat = $(this).attr("data-berat"); + var gcs = $(this).attr("data-gcs"); + var kesadaran = $(this).attr("data-kesadaran"); + var alergi = $(this).attr("data-alergi"); + var keluhan = $(this).attr("data-keluhan"); + var pemeriksaan = $(this).attr("data-pemeriksaan"); + var penilaian = $(this).attr("data-penilaian"); + var rtl = $(this).attr("data-rtl"); + var instruksi = $(this).attr("data-instruksi"); + var evaluasi = $(this).attr("data-evaluasi"); + var spo2 = $(this).attr("data-spo2"); + + $('input:text[name=suhu_tubuh]').val(suhu_tubuh); + $('input:text[name=tensi]').val(tensi); + $('input:text[name=nadi]').val(nadi); + $('input:text[name=respirasi]').val(respirasi); + $('input:text[name=tinggi]').val(tinggi); + $('input:text[name=berat]').val(berat); + $('input:text[name=gcs]').val(gcs); + $('input:text[name=kesadaran]').val(kesadaran); + $('input:text[name=alergi]').val(alergi); + $('textarea[name=keluhan]').val(keluhan); + $('textarea[name=pemeriksaan]').val(pemeriksaan); + $('textarea[name=penilaian]').val(penilaian); + $('textarea[name=rtl]').val(rtl); + $('textarea[name=instruksi]').val(instruksi); + $('textarea[name=evaluasi]').val(evaluasi); + $('input:text[name=spo2]').val(spo2); + +}); + $("#soap").on("click",".edit_soap", function(event){ var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); @@ -559,12 +708,16 @@ $("#soap").on("click",".hapus_soap", function(event){ tgl_perawatan: tgl_perawatan, jam_rawat: jam_rawat } ,function(data) { - console.log(data); + // console.log(data); var url = baseURL + '/rawat_inap/soap?t=' + mlite.token; $.post(url, {no_rawat : no_rawat, }, function(data) { // tampilkan data $("#soap").html(data).show(); + // Update vital signs chart + if (typeof updateVitalSignsChart === 'function') { + updateVitalSignsChart(); + } }); $('input:text[name=suhu_tubuh]').val(""); $('input:text[name=tensi]').val(""); @@ -624,6 +777,80 @@ $("#form_soap").on("click", "#selesai_soap", function(event){ // ketika baris data diklik //$("#display").on("click", ".layanan_obat", function(event){ +// tombol batal diklik +$("#form_kontrol").on("click", "#selesai_kontrol", function(event){ + bersih(); + $("#form_berkasdigital").hide(); + $("#form_rincian").hide(); + $("#form_soap").hide(); + $("#form").show(); + $("#display").show(); + $("#rincian").hide(); + $("#soap").hide(); + $("#berkasdigital").hide(); + $("#form_kontrol").hide(); + // $("#kontrol").hide(); + $("#surat_kontrol").hide(); +}); + +// ketika tombol hapus ditekan +$("#surat_kontrol").on("click",".hapus_kontrol", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var url = baseURL + '/rawat_inap/hapuskontrol?t=' + mlite.token; + var no_reg = $(this).attr("data-no_reg"); + var tanggal_periksa = $(this).attr("data-tanggal_periksa"); + var kd_dokter = $(this).attr("data-kd_dokter"); + var kd_poli = $(this).attr("data-kd_poli"); + var no_rkm_medis = $('input:text[name=no_rkm_medis]').val(); + // tampilkan dialog konfirmasi + bootbox.confirm("Apakah Anda yakin ingin menghapus data ini?", function(result){ + // ketika ditekan tombol ok + if (result){ + // mengirimkan perintah penghapusan + $.post(url, { + no_reg: no_reg, + tanggal_periksa: tanggal_periksa, + kd_dokter: kd_dokter, + kd_poli: kd_poli, + no_rkm_medis: no_rkm_medis + } ,function(data) { + // console.log(data); + var url = baseURL + '/rawat_inap/kontrol?t=' + mlite.token; + $.post(url, {no_rkm_medis : no_rkm_medis, + }, function(data) { + // tampilkan data + $("#surat_kontrol").html(data).show(); + }); + /* + $('input:text[name=suhu_tubuh]').val(""); + $('input:text[name=tensi]').val(""); + $('input:text[name=nadi]').val(""); + $('input:text[name=respirasi]').val(""); + $('input:text[name=tinggi]').val(""); + $('input:text[name=berat]').val(""); + $('input:text[name=gcs]').val(""); + $('input:text[name=kesadaran]').val(""); + $('input:text[name=alergi]').val(""); + $('input:text[name=lingkar_perut]').val(""); + $('textarea[name=keluhan]').val(""); + $('textarea[name=pemeriksaan]').val(""); + $('textarea[name=penilaian]').val(""); + $('textarea[name=rtl]').val(""); + $('textarea[name=instruksi]').val(""); + $('input:text[name=tgl_perawatan]').val("{?=date('Y-m-d')?}"); + $('input:text[name=tgl_registrasi]').val("{?=date('Y-m-d')?}"); + $('input:text[name=jam_rawat]').val("{?=date('H:i:s')?}"); + */ + $('#notif').html("
                                              "+ + "Data rincian riwayat telah dihapus!"+ + ""+ + "
                                              ").show(); + }); + } + }); +}); + // ketika inputbox pencarian diisi $('input:text[name=layanan]').on('input',function(e){ var baseURL = mlite.url + '/' + mlite.admin; @@ -685,7 +912,7 @@ $("#obat").on("click", ".pilih_obat", function(event){ var kode_brng = $(this).attr("data-kode_brng"); var nama_brng = $(this).attr("data-nama_brng"); - var biaya = $(this).attr("data-ralan"); + var biaya = $(this).attr("data-dasar"); var kat = $(this).attr("data-kat"); $('input:hidden[name=kd_jenis_prw]').val(kode_brng); @@ -723,7 +950,8 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ var biaya = $('input:text[name=biaya]').val(); var aturan_pakai = $('input:text[name=aturan_pakai]').val(); var kat = $('input:hidden[name=kat]').val(); - var jml = $('input:text[name=jml]').val(); + var jml = $('input:text[name=jml_tindakan]').val(); + var jml_tindakan = $('input:text[name=jml_tindakan]').val(); var url = baseURL + '/rawat_inap/savedetail?t=' + mlite.token; $.post(url, {no_rawat : no_rawat, @@ -736,7 +964,8 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ biaya : biaya, aturan_pakai : aturan_pakai, kat : kat, - jml : jml + jml : jml, + jml_tindakan : jml_tindakan }, function(data) { // tampilkan data @@ -747,6 +976,11 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ // tampilkan data $("#rincian").html(data).show(); }); + $.post(baseURL + '/rawat_inap/cekwaktu?t=' + mlite.token, { + } ,function(data) { + $("#form_rincian #rincian_jam_reg").val(data); + $('input:text[name=jam_rawat]').last().val(data).focus(); + }); $('input:hidden[name=kd_jenis_prw]').val(""); $('input:text[name=nm_perawatan]').val(""); $('input:hidden[name=kat]').val(""); @@ -755,6 +989,8 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ $('input:text[name=nama_provider2]').val(""); $('input:text[name=kode_provider]').val(""); $('input:text[name=kode_provider2]').val(""); + $('input:text[name=jam_rawat]').last().val(""); + $('input:text[name=jml_tindakan]').last().val(""); $('#notif').html("
                                              "+ "Data pasien telah disimpan!"+ ""+ @@ -870,6 +1106,112 @@ $("#rincian").on("click",".hapus_resep_dokter", function(event){ }); }); +// ketika tombol simpan diklik +$("#form_kontrol").on("click", "#simpan_kontrol", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + + var no_rkm_medis = $('input:text[name=no_rkm_medis]').val(); + var no_rawat = $('input:text[name=no_rawat]').val(); + var tanggal_rujukan = $('input:text[name=tanggal_rujukan]').val(); + var tanggal_datang = $('input:text[name=tanggal_datang]').val(); + var diagnosa = $('input:text[name=diagnosa]').val(); + var terapi = $('input:text[name=terapi]').val(); + var alasan1 = $('textarea[name=alasan1]').val(); + var rtl1 = $('textarea[name=rtl1]').val(); + var poli = $('select[name=poli]').val(); + var dokter = $('select[name=dokter]').val(); + + var url = baseURL + '/rawat_inap/savekontrol?t=' + mlite.token; + $.post(url, {no_rawat : no_rawat, + no_rkm_medis : no_rkm_medis, + tanggal_rujukan : tanggal_rujukan, + tanggal_datang : tanggal_datang, + diagnosa : diagnosa, + terapi : terapi, + alasan1 : alasan1, + rtl1 : rtl1, + dokter : dokter, + poli : poli + }, function(data) { + // console.log(data); + // tampilkan data + $("#display").hide(); + var url = baseURL + '/rawat_inap/kontrol?t=' + mlite.token; + $.post(url, {no_rkm_medis : no_rkm_medis, + }, function(data) { + // tampilkan data + $("#surat_kontrol").html(data).show(); + }); + $('input:text[name=nm_perawatan]').val(""); + $('input:text[name=biaya]').val(""); + $('input:text[name=diagnosa_klinis]').val(""); + $('input:text[name=nama_provider]').val(""); + $('input:text[name=nama_provider2]').val(""); + $('input:text[name=kode_provider]').val(""); + $('input:text[name=kode_provider2]').val(""); + $('input:text[name=racikan]').val(""); + $('input:text[name=nama_racik]').val(""); + $('#notif').html("
                                              "+ + "Data surat kontrol telah disimpan!"+ + ""+ + "
                                              ").show(); + }); +}); + +// ketika tombol simpan diklik +$("#form_kontrol").on("click", "#simpan_kontrol_bpjs", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + + var no_rkm_medis = $('input:text[name=no_rkm_medis]').val(); + var no_rawat = $('input:text[name=no_rawat]').val(); + var tanggal_rujukan = $('input:text[name=tanggal_rujukan]').val(); + var tanggal_datang = $('input:text[name=tanggal_datang]').val(); + var diagnosa = $('input:text[name=diagnosa]').val(); + var terapi = $('input:text[name=terapi]').val(); + var alasan1 = $('textarea[name=alasan1]').val(); + var rtl1 = $('textarea[name=rtl1]').val(); + var poli = $('select[name=poli]').val(); + var dokter = $('select[name=dokter]').val(); + + var url = baseURL + '/rawat_inap/savekontrolbpjs?t=' + mlite.token; + $.post(url, {no_rawat : no_rawat, + no_rkm_medis : no_rkm_medis, + tanggal_rujukan : tanggal_rujukan, + tanggal_datang : tanggal_datang, + diagnosa : diagnosa, + terapi : terapi, + alasan1 : alasan1, + rtl1 : rtl1, + dokter : dokter, + poli : poli + }, function(data) { + // console.log(data); + // tampilkan data + $("#display").hide(); + var url = baseURL + '/rawat_inap/kontrol?t=' + mlite.token; + $.post(url, {no_rkm_medis : no_rkm_medis, + }, function(data) { + // tampilkan data + $("#surat_kontrol").html(data).show(); + }); + $('input:text[name=nm_perawatan]').val(""); + $('input:text[name=biaya]').val(""); + $('input:text[name=diagnosa_klinis]').val(""); + $('input:text[name=nama_provider]').val(""); + $('input:text[name=nama_provider2]').val(""); + $('input:text[name=kode_provider]').val(""); + $('input:text[name=kode_provider2]').val(""); + $('input:text[name=racikan]').val(""); + $('input:text[name=nama_racik]').val(""); + $('#notif').html("
                                              "+ + "Data surat kontrol telah disimpan!"+ + ""+ + "
                                              ").show(); + }); +}); + function bersih(){ $('input:text[name=no_rawat]').val(""); $('input:text[name=no_rkm_medis]').val(""); @@ -978,3 +1320,398 @@ $("#form_soap").on("click","#jam_rawat", function(event){ $("#jam_rawat").val(data); }); }); + +// Handler untuk tombol assessment di form SOAP +$("#form_soap").on("click",".assesment", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $('input:text[name=no_rawat]').val(); + + var modal = $('#assesmentModal'); + var modalContent = $('#assesmentModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + // Load form assessment dengan data pasien + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_inap/assessment/' + set_no_rawat + '?t=' + mlite.token, function() { + // Load data assessment yang sudah ada + $('.tampildata_assessment').load(baseURL + '/rawat_inap/assessmenttampil/' + set_no_rawat + '?t=' + mlite.token); + }); + }).modal(); + return false; +}); + +// Handler untuk assessment di display juga +$("#display").on("click",".assesment", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + + var modal = $('#assesmentModal'); + var modalContent = $('#assesmentModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + // Load form assessment dengan data pasien + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_inap/assessment/' + set_no_rawat + '?t=' + mlite.token, function() { + // Load data assessment yang sudah ada + $('.tampildata_assessment').load(baseURL + '/rawat_inap/assessmenttampil/' + set_no_rawat + '?t=' + mlite.token); + }); + }).modal(); + return false; +}); + +// Handler untuk tombol buat assessment dari tampil assessment +$(document).on("click", ".buat_assesment", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).data('no_rawat'); + + var modal = $('#assesmentModal'); + var modalContent = $('#assesmentModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_inap/assessment/' + set_no_rawat + '?t=' + mlite.token); + }).modal(); + return false; +}); + +// Handler untuk tombol edit assessment +$(document).on("click", ".edit_assesment", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).data('no_rawat'); + + var modal = $('#assesmentModal'); + var modalContent = $('#assesmentModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_inap/assessment/' + set_no_rawat + '?t=' + mlite.token); + }).modal(); + return false; +}); + +// Handler untuk tombol hapus assessment +$(document).on("click", ".hapus_assesment", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).data('no_rawat'); + + bootbox.confirm("Apakah Anda yakin ingin menghapus data assessment ini?", function(result){ + if (result){ + $.post(baseURL + '/rawat_inap/assessmentdelete?t=' + mlite.token, { + no_rawat: no_rawat + }, function(data) { + if(data.status == 'success') { + // Reload tampilan assessment + var set_no_rawat = no_rawat.replace(/\//g, ''); + $('.tampildata_assessment').load(baseURL + '/rawat_inap/assessmenttampil/' + set_no_rawat + '?t=' + mlite.token); + } else { + alert('Error: ' + data.msg); + } + }, 'json'); + } + }); +}); + +// Handler untuk copy data SOAP sebagai fallback assessment +$(document).on("click", ".copy_soap", function(event){ + event.preventDefault(); + + // Ambil data dari tombol + var suhu_tubuh = $(this).data('suhu_tubuh'); + var tensi = $(this).data('tensi'); + var nadi = $(this).data('nadi'); + var respirasi = $(this).data('respirasi'); + var tinggi = $(this).data('tinggi'); + var berat = $(this).data('berat'); + var gcs = $(this).data('gcs'); + var kesadaran = $(this).data('kesadaran'); + var alergi = $(this).data('alergi'); + var keluhan = $(this).data('keluhan'); + var pemeriksaan = $(this).data('pemeriksaan'); + var penilaian = $(this).data('penilaian'); + var rtl = $(this).data('rtl'); + var spo2 = $(this).data('spo2'); + + // Isi form assessment dengan data SOAP + if($('#assesmentModal').hasClass('in')) { + $('input[name="pemeriksaan_suhu"]').val(suhu_tubuh); + $('input[name="pemeriksaan_td"]').val(tensi); + $('input[name="pemeriksaan_nadi"]').val(nadi); + $('input[name="pemeriksaan_rr"]').val(respirasi); + $('input[name="pemeriksaan_tb"]').val(tinggi); + $('input[name="pemeriksaan_bb"]').val(berat); + $('input[name="pemeriksaan_gcs"]').val(gcs); + $('input[name="riwayat_alergi"]').val(alergi); + $('textarea[name="rps"]').val(keluhan); + $('textarea[name="rencana"]').val(rtl); + $('input[name="pemeriksaan_spo2"]').val(spo2); + + // Trigger BMI calculation jika ada + if(typeof calculateBMI === 'function') { + calculateBMI(); + } + } +}); + +// Handler untuk tombol Assessment Nyeri di form SOAP +$("#form_soap").on("click",".assessment_nyeri", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $('input:text[name=no_rawat]').val(); + + if (!no_rawat) { + alert('Pilih pasien terlebih dahulu!'); + return false; + } + + var modal = $('#assessmentNyeriModal'); + var modalContent = $('#assessmentNyeriModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + // Load form assessment nyeri dengan data pasien + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_inap/assessmentnyeri/' + set_no_rawat + '?t=' + mlite.token, function() { + // Load data assessment nyeri yang sudah ada + $('.tampildata').load(baseURL + '/rawat_inap/assessmentnyeritampil/' + set_no_rawat + '?t=' + mlite.token); + }); + }).modal(); + return false; +}); + +// Handler untuk Assessment Nyeri di display juga +$("#display").on("click",".assessment_nyeri", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + + var modal = $('#assessmentNyeriModal'); + var modalContent = $('#assessmentNyeriModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + // Load form assessment nyeri dengan data pasien + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_inap/assessmentnyeri/' + set_no_rawat + '?t=' + mlite.token, function() { + // Load data assessment nyeri yang sudah ada + $('.tampildata').load(baseURL + '/rawat_inap/assessmentnyeritampil/' + set_no_rawat + '?t=' + mlite.token); + }); + }).modal(); + return false; +}); + +// Handler untuk tombol buat assessment nyeri dari tampil assessment nyeri +$(document).on("click", ".buat_assessment_nyeri", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).data('no_rawat'); + + var modal = $('#assessmentNyeriModal'); + var modalContent = $('#assessmentNyeriModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_inap/assessmentnyeri/' + set_no_rawat + '?t=' + mlite.token); + }).modal(); + return false; +}); + +// Handler untuk tombol edit assessment nyeri +$(document).on("click", ".edit_assessment_nyeri", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).data('no_rawat'); + + var modal = $('#assessmentNyeriModal'); + var modalContent = $('#assessmentNyeriModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_inap/assessmentnyeri/' + set_no_rawat + '?t=' + mlite.token); + }).modal(); + return false; +}); + +// Handler untuk tombol hapus assessment nyeri +$(document).on("click", ".hapus_assessment_nyeri", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).data('no_rawat'); + var tanggal = $(this).data('tanggal'); + + bootbox.confirm("Apakah Anda yakin ingin menghapus data assessment nyeri ini?", function(result){ + if (result){ + $.post(baseURL + '/rawat_inap/hapusassessmentnyeri?t=' + mlite.token, { + no_rawat: no_rawat, + tanggal: tanggal + }, function(data) { + try { + var response = typeof data === 'string' ? JSON.parse(data) : data; + if(response.status === 'success') { + alert(response.message); + // Reload tampilan assessment nyeri + var set_no_rawat = no_rawat.replace(/\//g, ''); + $('.tampildata').load(baseURL + '/rawat_inap/assessmentnyeritampil/' + set_no_rawat + '?t=' + mlite.token); + } else { + alert('Error: ' + response.message); + } + } catch(e) { + // Fallback for non-JSON response + alert('Data assessment nyeri berhasil dihapus!'); + var set_no_rawat = no_rawat.replace(/\//g, ''); + $('.tampildata').load(baseURL + '/rawat_inap/assessmentnyeritampil/' + set_no_rawat + '?t=' + mlite.token); + } + }).fail(function(xhr, status, error) { + alert('Terjadi kesalahan saat menghapus data: ' + error); + }); + } + }); +}); + +// Load Vital Signs Chart +function loadVitalSignsChart() { + console.log('loadVitalSignsChart() called'); + + var no_rawat = $('input[name="no_rawat"]').val(); + console.log('no_rawat:', no_rawat); + + if (!no_rawat) { + console.log('No rawat not found, showing no-data message'); + $('#chart-no-data').show(); + $('#chart-loading').hide(); + return; + } + + // Check if Chart.js is loaded + if (typeof Chart === 'undefined') { + console.error('Chart.js is not loaded!'); + $('#chart-no-data').show(); + $('#chart-loading').hide(); + return; + } + + $('#chart-loading').show(); + $('#chart-no-data').hide(); + + var baseURL = mlite.url + '/' + mlite.admin; + var url = baseURL + '/rawat_inap/vitalsignschart?t=' + mlite.token; + + $.post(url, {no_rawat: no_rawat}, function(data) { + console.log('Raw data:', data); + $('#chart-loading').hide(); + + if (data.labels && data.labels.length > 0) { + createVitalSignsChart(data); + } else { + $('#chart-no-data').show(); + } + }, 'json').fail(function() { + $('#chart-loading').hide(); + $('#chart-no-data').show(); + }); +} + +// Create Vital Signs Chart +function createVitalSignsChart(chartData) { + console.log('createVitalSignsChart() called with data:', chartData); + + // Check if Chart.js is loaded + if (typeof Chart === 'undefined') { + console.error('Chart.js is not loaded in createVitalSignsChart!'); + return; + } + + var ctx = document.getElementById('vitalSignsChart'); + + // Check if canvas element exists + if (!ctx) { + console.error('Canvas element vitalSignsChart not found'); + return; + } + + console.log('Canvas element found, getting 2D context'); + ctx = ctx.getContext('2d'); + + // Destroy existing chart if exists + if (vitalSignsChart && typeof vitalSignsChart.destroy === 'function') { + vitalSignsChart.destroy(); + } + + // Filter out Height and Weight datasets (which use yAxisID: 'y1') + if (chartData.datasets) { + chartData.datasets = chartData.datasets.filter(function(dataset) { + return dataset.yAxisID !== 'y1'; + }); + } + + vitalSignsChart = new Chart(ctx, { + type: 'line', + data: chartData, + options: { + responsive: true, + maintainAspectRatio: false, + interaction: { + mode: 'index', + intersect: false, + }, + plugins: { + title: { + display: true, + text: 'Grafik Tren Tanda Vital Pasien' + }, + legend: { + display: true, + position: 'top' + }, + tooltip: { + callbacks: { + label: function(context) { + var label = context.dataset.label || ''; + if (label) { + label += ': '; + } + if (context.parsed.y !== null) { + label += context.parsed.y; + } + return label; + } + } + } + }, + scales: { + x: { + display: true, + title: { + display: true, + text: 'Waktu Pemeriksaan' + } + }, + y: { + type: 'linear', + display: true, + position: 'left', + title: { + display: true, + text: 'Nilai Tanda Vital' + }, + beginAtZero: false + } + } + } + }); +} + +// Update chart after saving SOAP data +function updateVitalSignsChart() { + loadVitalSignsChart(); +} diff --git a/plugins/rawat_inap/view/admin/assesment.html b/plugins/rawat_inap/view/admin/assesment.html new file mode 100644 index 000000000..112988547 --- /dev/null +++ b/plugins/rawat_inap/view/admin/assesment.html @@ -0,0 +1,1951 @@ + + + + + \ No newline at end of file diff --git a/plugins/rawat_inap/view/admin/assesment.tampil.html b/plugins/rawat_inap/view/admin/assesment.tampil.html new file mode 100644 index 000000000..5048582a7 --- /dev/null +++ b/plugins/rawat_inap/view/admin/assesment.tampil.html @@ -0,0 +1,379 @@ +{if: $penilaian_ranap} + + + + + + + + + + + + + + + + + + + + + + + +
                                              Nomor RawatTanggalInformasiVital SignsStatus NyeriPetugasAksi
                                              {?=isset_or($penilaian_ranap.no_rawat)?}{?=isset_or($penilaian_ranap.tanggal)?} + Informasi: {?=isset_or($penilaian_ranap.informasi)?}
                                              + Cara Masuk: {?=isset_or($penilaian_ranap.cara_masuk)?}
                                              + Tiba di Ruang: {?=isset_or($penilaian_ranap.tiba_diruang_rawat)?} +
                                              + TD: {?=isset_or($penilaian_ranap.pemeriksaan_td)?} mmHg
                                              + Nadi: {?=isset_or($penilaian_ranap.pemeriksaan_nadi)?} x/mnt
                                              + RR: {?=isset_or($penilaian_ranap.pemeriksaan_rr)?} x/mnt
                                              + Suhu: {?=isset_or($penilaian_ranap.pemeriksaan_suhu)?} °C
                                              + SpO2: {?=isset_or($penilaian_ranap.pemeriksaan_spo2)?} %
                                              + GCS: {?=isset_or($penilaian_ranap.pemeriksaan_gcs)?}
                                              + BB: {?=isset_or($penilaian_ranap.pemeriksaan_bb)?} kg
                                              + TB: {?=isset_or($penilaian_ranap.pemeriksaan_tb)?} cm +
                                              + Nyeri: {?=isset_or($penilaian_ranap.penilaian_nyeri)?}
                                              + {if: $penilaian_ranap.penilaian_nyeri != 'Tidak Ada Nyeri'} + Skala: {?=isset_or($penilaian_ranap.penilaian_nyeri_skala)?}/10
                                              + Lokasi: {?=isset_or($penilaian_ranap.penilaian_nyeri_lokasi)?}
                                              + Kualitas: {?=isset_or($penilaian_ranap.penilaian_nyeri_kualitas)?} + {/if} +
                                              + Petugas 1: {?=isset_or($penilaian_ranap.nama_petugas1)?}
                                              + Petugas 2: {?=isset_or($penilaian_ranap.nama_petugas2)?} +
                                              + + +
                                              + + +
                                              +
                                              + +
                                              +
                                              +
                                              +
                                              + Riwayat Penyakit Sekarang (RPS):
                                              + {?=isset_or($penilaian_ranap.rps)?} +
                                              +
                                              +
                                              +
                                              +
                                              + RPD: {?=isset_or($penilaian_ranap.rpd)?} +
                                              +
                                              + RPK: {?=isset_or($penilaian_ranap.rpk)?} +
                                              +
                                              + RPO: {?=isset_or($penilaian_ranap.rpo)?} +
                                              +
                                              +
                                              +
                                              +
                                              + Riwayat Pembedahan: {?=isset_or($penilaian_ranap.riwayat_pembedahan)?} +
                                              +
                                              + Riwayat Dirawat di RS: {?=isset_or($penilaian_ranap.riwayat_dirawat_dirs)?} +
                                              +
                                              +
                                              +
                                              +
                                              + Riwayat Alergi: {?=isset_or($penilaian_ranap.riwayat_alergi)?} +
                                              +
                                              + Alat Bantu: {?=isset_or($penilaian_ranap.alat_bantu_dipakai)?} +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              + +
                                              +
                                              +
                                              +
                                              + Keadaan Umum: {?=isset_or($penilaian_ranap.pemeriksaan_keadaan_umum)?} +
                                              +
                                              + Pemeriksaan Mental: {?=isset_or($penilaian_ranap.pemeriksaan_mental)?} +
                                              +
                                              +
                                              +
                                              Susunan Saraf:
                                              +
                                              +
                                              + Kepala: {?=isset_or($penilaian_ranap.pemeriksaan_susunan_kepala)?} +
                                              +
                                              + Wajah: {?=isset_or($penilaian_ranap.pemeriksaan_susunan_wajah)?} +
                                              +
                                              + Leher: {?=isset_or($penilaian_ranap.pemeriksaan_susunan_leher)?} +
                                              +
                                              + Kejang: {?=isset_or($penilaian_ranap.pemeriksaan_susunan_kejang)?} +
                                              +
                                              +
                                              +
                                              + Sensorik: {?=isset_or($penilaian_ranap.pemeriksaan_susunan_sensorik)?} +
                                              +
                                              +
                                              +
                                              Kardiovaskular:
                                              +
                                              +
                                              + Denyut Nadi: {?=isset_or($penilaian_ranap.pemeriksaan_kardiovaskuler_denyut_nadi)?} +
                                              +
                                              + Sirkulasi: {?=isset_or($penilaian_ranap.pemeriksaan_kardiovaskuler_sirkulasi)?} +
                                              +
                                              + Pulsasi: {?=isset_or($penilaian_ranap.pemeriksaan_kardiovaskuler_pulsasi)?} +
                                              +
                                              +
                                              +
                                              Respirasi:
                                              +
                                              +
                                              + Pola Nafas: {?=isset_or($penilaian_ranap.pemeriksaan_respirasi_pola_nafas)?} +
                                              +
                                              + Suara Nafas: {?=isset_or($penilaian_ranap.pemeriksaan_respirasi_suara_nafas)?} +
                                              +
                                              + Batuk: {?=isset_or($penilaian_ranap.pemeriksaan_respirasi_batuk)?} +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              + +
                                              +
                                              +
                                              +
                                              + Kemampuan Sehari-hari: {?=isset_or($penilaian_ranap.pengkajian_fungsi_kemampuan_sehari)?} +
                                              +
                                              + Aktifitas: {?=isset_or($penilaian_ranap.pengkajian_fungsi_aktifitas)?} +
                                              +
                                              +
                                              +
                                              + Berjalan: {?=isset_or($penilaian_ranap.pengkajian_fungsi_berjalan)?} +
                                              +
                                              + Ambulasi: {?=isset_or($penilaian_ranap.pengkajian_fungsi_ambulasi)?} +
                                              +
                                              +
                                              +
                                              + Ekstrimitas Atas: {?=isset_or($penilaian_ranap.pengkajian_fungsi_ekstrimitas_atas)?} +
                                              +
                                              + Ekstrimitas Bawah: {?=isset_or($penilaian_ranap.pengkajian_fungsi_ekstrimitas_bawah)?} +
                                              +
                                              +
                                              +
                                              + Menggenggam: {?=isset_or($penilaian_ranap.pengkajian_fungsi_menggenggam)?} +
                                              +
                                              + Koordinasi: {?=isset_or($penilaian_ranap.pengkajian_fungsi_koordinasi)?} +
                                              +
                                              +
                                              +
                                              + Kesimpulan: {?=isset_or($penilaian_ranap.pengkajian_fungsi_kesimpulan)?} +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              + +
                                              +
                                              +
                                              +
                                              + Kondisi Psiko: {?=isset_or($penilaian_ranap.riwayat_psiko_kondisi_psiko)?} +
                                              +
                                              + Gangguan Jiwa: {?=isset_or($penilaian_ranap.riwayat_psiko_gangguan_jiwa)?} +
                                              +
                                              +
                                              +
                                              + Perilaku: {?=isset_or($penilaian_ranap.riwayat_psiko_perilaku)?} +
                                              +
                                              + Hubungan Keluarga: {?=isset_or($penilaian_ranap.riwayat_psiko_hubungan_keluarga)?} +
                                              +
                                              +
                                              +
                                              + Tinggal dengan: {?=isset_or($penilaian_ranap.riwayat_psiko_tinggal)?} +
                                              +
                                              + Nilai Kepercayaan: {?=isset_or($penilaian_ranap.riwayat_psiko_nilai_kepercayaan)?} +
                                              +
                                              +
                                              +
                                              + Pendidikan PJ: {?=isset_or($penilaian_ranap.riwayat_psiko_pendidikan_pj)?} +
                                              +
                                              + Edukasi Diberikan: {?=isset_or($penilaian_ranap.riwayat_psiko_edukasi_diberikan)?} +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              + +
                                              +
                                              +
                                              +
                                              + 1. Penurunan berat badan: {?=isset_or($penilaian_ranap.skrining_gizi1)?} +
                                              +
                                              + Nilai: {?=isset_or($penilaian_ranap.nilai_gizi1)?} +
                                              +
                                              +
                                              +
                                              + 2. Asupan makan berkurang: {?=isset_or($penilaian_ranap.skrining_gizi2)?} +
                                              +
                                              + Nilai: {?=isset_or($penilaian_ranap.nilai_gizi2)?} +
                                              +
                                              +
                                              +
                                              + Total Nilai Gizi: {?=isset_or($penilaian_ranap.nilai_total_gizi)?} +
                                              +
                                              + Status: + {if: $penilaian_ranap.nilai_total_gizi >= 3} + Risiko Tinggi + {elseif: $penilaian_ranap.nilai_total_gizi >= 1} + Risiko Sedang + {else} + Risiko Rendah + {/if} +
                                              +
                                              +
                                              +
                                              + Diagnosa Khusus: {?=isset_or($penilaian_ranap.skrining_gizi_diagnosa_khusus)?} +
                                              +
                                              + Diketahui Dietisen: {?=isset_or($penilaian_ranap.skrining_gizi_diketahui_dietisen)?} +
                                              +
                                              + {if: $penilaian_ranap.skrining_gizi_jam_diketahui_dietisen} +
                                              +
                                              + Jam Diketahui Dietisen: {?=isset_or($penilaian_ranap.skrining_gizi_jam_diketahui_dietisen)?} +
                                              +
                                              + {/if} +
                                              +
                                              +
                                              + +
                                              + +
                                              +
                                              +
                                              +
                                              + Rencana:
                                              + {?=isset_or($penilaian_ranap.rencana)?} +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + +{else} +
                                              + Belum ada data assessment untuk pasien ini. + +
                                              +{/if} + + \ No newline at end of file diff --git a/plugins/rawat_inap/view/admin/assessment.nyeri.html b/plugins/rawat_inap/view/admin/assessment.nyeri.html new file mode 100644 index 000000000..216b23bc5 --- /dev/null +++ b/plugins/rawat_inap/view/admin/assessment.nyeri.html @@ -0,0 +1,351 @@ + + + + \ No newline at end of file diff --git a/plugins/rawat_inap/view/admin/display.html b/plugins/rawat_inap/view/admin/display.html index 9bbfb15a1..8e487d4b9 100644 --- a/plugins/rawat_inap/view/admin/display.html +++ b/plugins/rawat_inap/view/admin/display.html @@ -20,31 +20,42 @@ {loop: $rawat_inap.list} - + - {$value.nm_pasien} - {$value.no_rawat} - {$value.nm_bangsal} - {$value.kd_kamar} + {?=isset_or($value.nm_pasien)?} + {?=isset_or($value.no_rawat)?} + {?=isset_or($value.nm_bangsal)?} - {?=isset_or($value.kd_kamar)?}
                                                {if: $value.dokter} {loop: $value.dokter as $data_dokter}
                                              • - {$data_dokter.nm_dokter} + {?=isset_or($data_dokter.nm_dokter)?}
                                              • {/loop} {else} @@ -57,28 +68,28 @@ {if: $cek_vclaim}
                                                - {if: $value.no_sep !=''} + {if: $value.no_sep != ''} {/if}
                                                {/if} {else} - {$value.png_jawab} + {?=isset_or($value.png_jawab)?} {/if} - {$value.no_peserta} - {$value.tgl_masuk} {$value.jam_masuk} - {$value.tgl_keluar} {$value.jam_keluar} - {$value.status_billing} - {$value.stts_pulang} + {?=isset_or($value.no_peserta)?} + {?=isset_or($value.tgl_masuk)?} {?=isset_or($value.jam_masuk)?} + {?=isset_or($value.tgl_keluar)?} {?=isset_or($value.jam_keluar)?} + {?=isset_or($value.status_billing)?} + {?=isset_or($value.stts_pulang)?} {/loop} @@ -109,7 +120,7 @@ + + + \ No newline at end of file diff --git a/plugins/rawat_inap/view/admin/form.berkasdigital.html b/plugins/rawat_inap/view/admin/form.berkasdigital.html index 2b836c0bd..5e9658470 100644 --- a/plugins/rawat_inap/view/admin/form.berkasdigital.html +++ b/plugins/rawat_inap/view/admin/form.berkasdigital.html @@ -44,7 +44,7 @@
                                                diff --git a/plugins/rawat_inap/view/admin/form.html b/plugins/rawat_inap/view/admin/form.html index ca7da2599..169bb4173 100644 --- a/plugins/rawat_inap/view/admin/form.html +++ b/plugins/rawat_inap/view/admin/form.html @@ -6,21 +6,21 @@
                                                - +
                                                - +
                                                - +
                                                - +
                                                @@ -34,13 +34,13 @@
                                                - +
                                                @@ -48,7 +48,7 @@
                                                @@ -58,7 +58,7 @@
                                                @@ -76,32 +76,32 @@
                                                - +
                                                - +
                                                - +
                                                - +
                                                - +
                                                @@ -109,7 +109,7 @@
                                                @@ -122,14 +122,26 @@
                                                - - - + + +
                                                - - - - - - - $.post(url,{ - no_rawat: no_rawat, - prioritas: prioritas, - nama: nama, - status: status, - kode: kode - } ,function(data) { - $("#display_icd").show().load(baseURL + '/icd/display?no_rawat=' + no_rawat + '&t=' + mlite.token); - //bersih(); - $('#notif').html("
                                                "+ - "Data ICD 9 (Prosedur) pasien telah disimpan!"+ - ""+ - "
                                                ").show(); - }); - }); - - - +} + +// Edit ADIME Gizi +$(document).off('click', '.edit-adime').on('click', '.edit-adime', function() { + var baseURL = mlite.url + '/' + mlite.admin; + var no_rawat = $(this).data('no-rawat'); + var tanggal = $(this).data('tanggal'); + + var url = baseURL + '/rawat_inap/getadimegizidetail?t=' + mlite.token; + $.post(url, {no_rawat: no_rawat, tanggal: tanggal}, function(data) { + if (data) { + $('#adime_no_rawat').val(data.no_rawat); + $('#adime_tanggal').val(data.tanggal); + $('#asesmen').val(data.asesmen || ''); + $('#diagnosis').val(data.diagnosis || ''); + $('#intervensi').val(data.intervensi || ''); + $('#monitoring').val(data.monitoring || ''); + $('#evaluasi_gizi').val(data.evaluasi || ''); + $('#instruksi_gizi').val(data.instruksi || ''); + } + }, 'json'); +}); + +// Hapus ADIME Gizi +$(document).off('click', '.hapus-adime').on('click', '.hapus-adime', function() { + var baseURL = mlite.url + '/' + mlite.admin; + var no_rawat = $(this).data('no-rawat'); + var tanggal = $(this).data('tanggal'); + + if (confirm('Yakin ingin menghapus data ADIME Gizi ini?')) { + var url = baseURL + '/rawat_inap/deleteadimegizi?t=' + mlite.token; + $.post(url, {no_rawat: no_rawat, tanggal: tanggal}, function(data) { + if (data.status === 'success') { + alert('Data ADIME Gizi berhasil dihapus!'); + loadAdimeGiziData(no_rawat); + } else { + alert('Gagal menghapus data: ' + (data.message || 'Unknown error')); + } + }, 'json').fail(function() { + alert('Terjadi kesalahan saat menghapus data!'); + }); + } +}); + +// Reset form ADIME Gizi +function resetAdimeGiziForm() { + $('#asesmen').val(''); + $('#diagnosis').val(''); + $('#intervensi').val(''); + $('#monitoring').val(''); + $('#evaluasi_gizi').val(''); + $('#instruksi_gizi').val(''); + $('#adime_tanggal').val(new Date().toISOString().slice(0, 19).replace('T', ' ')); +} + \ No newline at end of file diff --git a/plugins/rawat_inap/view/admin/kontrol.html b/plugins/rawat_inap/view/admin/kontrol.html new file mode 100644 index 000000000..07aeb3d19 --- /dev/null +++ b/plugins/rawat_inap/view/admin/kontrol.html @@ -0,0 +1,48 @@ + +{if: $booking_registrasi} +

                                                Rincian Kontrol

                                                +
                                                + + + + + + + + + + + + + + + {if: $booking_registrasi} + {loop: $booking_registrasi} + + + + + + + + + + + {/loop} + {else} + + + + {/if} + +
                                                NoTanggal PeriksaNo. AntrianPoliklinikDokterCara BayarStatus DaftarAksi
                                                {?=isset_or($value.nomor)?}{?=isset_or($value.tanggal_periksa)?}{?=isset_or($value.no_reg)?}{?=isset_or($value.nm_poli)?}{?=isset_or($value.nm_dokter)?}{?=isset_or($value.png_jawab)?}{?=isset_or($value.status)?}Hapus
                                                Kosong
                                                +
                                                +{/if} + diff --git a/plugins/rawat_inap/view/admin/layanan.html b/plugins/rawat_inap/view/admin/layanan.html index 684d18313..421753112 100644 --- a/plugins/rawat_inap/view/admin/layanan.html +++ b/plugins/rawat_inap/view/admin/layanan.html @@ -13,9 +13,9 @@ {if: $layanan} {loop: $layanan} - - {$value.kd_jenis_prw} - {$value.nm_perawatan} + + {?=isset_or($value.kd_jenis_prw)?} + {?=isset_or($value.nm_perawatan)?} Rp. {?= number_format($value.total_byrdr,2,',','.')?} Rp. {?= number_format($value.total_byrpr,2,',','.')?} diff --git a/plugins/rawat_inap/view/admin/manage.html b/plugins/rawat_inap/view/admin/manage.html index 9e16698d0..e8089d59d 100644 --- a/plugins/rawat_inap/view/admin/manage.html +++ b/plugins/rawat_inap/view/admin/manage.html @@ -2,9 +2,9 @@
                                                -
                                                +
                                                - +
                                                @@ -34,12 +34,14 @@

                                                Kelola Pasien

                                                {if: $this->core->getUserInfo('role') == 'admin' || $this->core->getUserInfo('role') == 'rekammedis'} + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_create', 'rawat_inap') == true}
                                                {include: ../plugins/rawat_inap/view/admin/form.html}
                                                {/if} + {/if}
                                                {include: ../plugins/rawat_inap/view/admin/display.html}
                                                @@ -47,6 +49,7 @@

                                                Kelola Pasien

                                                {include: ../plugins/rawat_inap/view/admin/form.rincian.html} {include: ../plugins/rawat_inap/view/admin/form.soap.html} {include: ../plugins/rawat_inap/view/admin/form.berkasdigital.html} + {include: ../plugins/rawat_inap/view/admin/form.kontrol.html} {if: $cek_vclaim} {include: ../plugins/vclaim/view/admin/form.sep.html} {/if} @@ -54,9 +57,22 @@

                                                Kelola Pasien

                                                +
                                                +
                                                +
                                                + +
                                                diff --git a/plugins/rawat_inap/view/admin/obat.html b/plugins/rawat_inap/view/admin/obat.html index 1a1387736..ddb423154 100644 --- a/plugins/rawat_inap/view/admin/obat.html +++ b/plugins/rawat_inap/view/admin/obat.html @@ -12,10 +12,10 @@ {if: $obat} {loop: $obat} - - {$value.kode_brng} - {$value.nama_brng} - Rp. {?= number_format($value.ralan,2,',','.')?} + + {?=isset_or($value.kode_brng)?} + {?=isset_or($value.nama_brng)?} + Rp. {?= number_format($value.dasar,2,',','.')?} {/loop} {else} diff --git a/plugins/rawat_inap/view/admin/pasien.html b/plugins/rawat_inap/view/admin/pasien.html index 34e69d658..7905aa712 100644 --- a/plugins/rawat_inap/view/admin/pasien.html +++ b/plugins/rawat_inap/view/admin/pasien.html @@ -13,13 +13,13 @@ {if: $pasien} {loop: $pasien} - {$value.no_rkm_medis} - {$value.nm_pasien} - {$value.no_rawat} + {?=isset_or($value.no_rkm_medis)?} + {?=isset_or($value.nm_pasien)?} + {?=isset_or($value.no_rawat)?} {/loop} {else} diff --git a/plugins/rawat_inap/view/admin/persetujuan.umum.html b/plugins/rawat_inap/view/admin/persetujuan.umum.html new file mode 100644 index 000000000..db071028d --- /dev/null +++ b/plugins/rawat_inap/view/admin/persetujuan.umum.html @@ -0,0 +1,325 @@ + + + + +
                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                Nama Pasien: {?=isset_or($pasien.nm_pasien)?}
                                                Nomor RM: {?=isset_or($pasien.no_rkm_medis)?}
                                                Tanggal Lahir: {?=isset_or($pasien.tgl_lahir)?}
                                                Alamat: {?=isset_or($pasien.alamat)?}
                                                Nomor HP: {?=isset_or($pasien.no_tlp)?}
                                                +
                                                +
                                                + Yang bertanda tangan dibawah ini: +
                                                +
                                                Nama: {?=isset_or($pasien.tgl_lahir)?}
                                                Alamat: {?=isset_or($pasien.alamat)?}
                                                Nomor HP: {?=isset_or($pasien.no_tlp)?}
                                                + Selaku Pasien/Wali hukum {?=isset_or($pasien.nm_pasien)?} dengan menyatakan persetujuan : +
                                                +
                                                +
                                                + I. PERSETUJUAN UNTUK PERAWATAN DAN PENGOBATAN +
                                                +
                                                + Saya menyetujui untuk perawatan di {?=isset_or($settings.nama_instansi)?} sebagai pasien rawat jalan atau rawat inap tergantung kepada kebutuhan medis. + Pengobatan dapat meliputi pemeriksaan x-ray/radiology, tes darah, perawatan rutin dan prosedur seperti cairan infus atau suntikan dan evaluasi (contohnya wawancara dan pemeriksaan fisik). + Persetujuan yang saya berikan tidak termasuk persetujuan untuk prosedur/tindakan invasif (misalnya, operasi) atau tindakan yang mempunyai resiko tinggi. + Jika saya memutuskan untuk menghentikan perawatan medis untuk diri saya sendiri. Saya memahami dan menyadari bahwa {?=isset_or($settings.nama_instansi)?} atau dokter tidak bertanggung jawab atas hasil yang merugikan Saya. +

                                                +
                                                + II. PERSETUJUAN PELEPASAN INFORMASI +
                                                +
                                                + Saya memahami informasi yang ada didalam diri Saya, termasuk Diagnosis, hasil laboratorium dan hasil tes diagnostik yang akan di gunakan untuk perawatan medis, {?=isset_or($settings.nama_instansi)?} akan menjamin kerahasiaannya. + Saya memberi wewenang kepada {?=isset_or($settings.nama_instansi)?} untuk memberikan informasi tentang tentang diagnosis, hasil pelayanan dan pengobatan bila diperlukan untuk memproses klaim asuransi/ perusahaan dan atau lembaga pemerintah. + Saya memberi wewenang kepada {?=isset_or($settings.nama_instansi)?} untuk memberikan informasi tentang diagnosis, hasil pelayanan dan pengobatan saya kepada anggota keluarga saya. +

                                                +
                                                + III. HAK DAN TANGGUNG JAWAB PASIEN +
                                                +
                                                + Saya memiliki hak untuk mengambil bagian dalam keputusan mengenai penyakit saya dan dalam hal perawatan medis dan rencana pengobatan. + Saya telah mendapat informasi tentang “Hak dan tanggung jawab pasien“ di {?=isset_or($settings.nama_instansi)?} melalui Leaflet dan banner yang diediakan oleh petugas. + Saya memahami bahwa {?=isset_or($settings.nama_instansi)?} tidak bertanggung jawab atas kehilangan barang-barang pribadi dan barang berharga yang di bawa ke {?=isset_or($settings.nama_instansi)?}. +

                                                +
                                                + IV. INFORMASI RAWAT INAP +
                                                +
                                                + Saya Tidak di perkenankan untuk membawa barang-barang berharga ke ruang rawat inap, jika ada anggota keluarga atau teman harus diminta untuk membawa pulang uang atau perhiasan. + Bila tidak ada anggota keluarga, {?=isset_or($settings.nama_instansi)?} menyediakan tempat penitipan barang milik pasien di tempat resmi yang telah disediakan {?=isset_or($settings.nama_instansi)?}. + Saya telah menerima informasi tentang peraturan yang diberlakukan oleh {?=isset_or($settings.nama_instansi)?} dan saya beserta keluarga bersedia untuk mematuhinya, termasuk akan mematuhi jam berkunjung pasien sesuai dengan aturan di {?=isset_or($settings.nama_instansi)?}. + Anggota keluarga saya yang menunggu saya, bersedia untuk selalu memakai tanda pengenal khusus yang diberikan oleh {?=isset_or($settings.nama_instansi)?}, dan demi keamanan seluruh pasien setiap keluarga dan siapapun yang akan megunjungi saya diluar jam berkunjung, bersedia untuk diminta/diperiksa identitasnya dan memakai identitias yang diberikan oleh {?=isset_or($settings.nama_instansi)?}. +

                                                +
                                                + V. INFORMASI BIAYA
                                                +
                                                +
                                                + Saya memahami tentang informasi biaya pengobatan atau biaya tindakan yang dijelaskan oleh petugas {?=isset_or($settings.nama_instansi)?}

                                                +
                                                + VI.TANDA TANGAN
                                                +
                                                +
                                                + Dengan tanda tangan saya di bawah, saya menyatakan bahwa saya telah membaca dan memahami item pada Persetujuan Umum/ General Consent. +
                                                +

                                                +
                                                + +
                                                +
                                                + + + + + + + \ No newline at end of file diff --git a/plugins/rawat_inap/view/admin/rincian.html b/plugins/rawat_inap/view/admin/rincian.html index 6b25027dc..302cccd42 100644 --- a/plugins/rawat_inap/view/admin/rincian.html +++ b/plugins/rawat_inap/view/admin/rincian.html @@ -13,29 +13,29 @@

                                                Rincian Tindakan

                                                {loop: $rawat_inap_dr} - {$value.tgl_perawatan} {$value.jam_rawat} - {$value.nm_perawatan} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?} + {?=isset_or($value.nm_perawatan)?} Dokter Rp. {?= number_format($value.biaya_rawat,2,',','.')?} - + {/loop} {loop: $rawat_inap_pr} - {$value.tgl_perawatan} {$value.jam_rawat} - {$value.nm_perawatan} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?} + {?=isset_or($value.nm_perawatan)?} Perawat Rp. {?= number_format($value.biaya_rawat,2,',','.')?} - + {/loop} {loop: $rawat_inap_drpr} - {$value.tgl_perawatan} {$value.jam_rawat} - {$value.nm_perawatan} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?} + {?=isset_or($value.nm_perawatan)?} Dokter & Perawat Rp. {?= number_format($value.biaya_rawat,2,',','.')?} - + {/loop} @@ -62,11 +62,11 @@

                                                Permintaan e-Resep

                                                {loop: $resep} - {$value.nm_dokter} - {$value.no_resep} - {$value.tgl_peresepan} {$value.jam_peresepan} + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.no_resep)?} + {?=isset_or($value.tgl_peresepan)?} {?=isset_or($value.jam_peresepan)?} - + @@ -78,11 +78,11 @@

                                                Permintaan e-Resep

                                                {loop: $value.resep_dokter as $data} - {$data.nama_brng} - {$data.jml} - {$data.aturan_pakai} + {?=isset_or($data.nama_brng)?} + {?=isset_or($data.jml)?} + {?=isset_or($data.aturan_pakai)?} Rp. {?= number_format(($data.dasar * $data.jml),2,',','.')?} - + {/loop} {/loop} diff --git a/plugins/rawat_inap/view/admin/sep.detail.html b/plugins/rawat_inap/view/admin/sep.detail.html index a18ffb76f..8df567c33 100644 --- a/plugins/rawat_inap/view/admin/sep.detail.html +++ b/plugins/rawat_inap/view/admin/sep.detail.html @@ -23,7 +23,7 @@ SURAT ELEGIBILITAS PESERTA
                                                - {$sep.nmppkpelayanan} + {?=isset_or($sep.nmppkpelayanan)?}
                                                @@ -35,11 +35,11 @@ @@ -57,7 +57,7 @@ :
                                                - {$data_sep.potensi_prb} + {?=isset_or($data_sep.potensi_prb)?}
                                                - +
                                                - {$sep.no_sep} + {?=isset_or($sep.no_sep)?}
                                                @@ -74,7 +74,7 @@ : - {$sep.tglsep} + {?=isset_or($sep.tglsep)?} @@ -91,7 +91,7 @@ : - {$sep.no_kartu} ( MR: {$sep.nomr}) + {?=isset_or($sep.no_kartu)?} ( MR: {?=isset_or($sep.nomr)?}) Peserta @@ -100,7 +100,7 @@ : - {$sep.peserta} + {?=isset_or($sep.peserta)?} @@ -117,7 +117,7 @@ : - {$sep.nama_pasien} + {?=isset_or($sep.nama_pasien)?} COB @@ -126,7 +126,7 @@ : - {$sep.cob} + {?=isset_or($sep.cob)?} @@ -143,7 +143,7 @@ : - {$sep.tanggal_lahir} Kelamin: {$sep.jkel} + {?=isset_or($sep.tanggal_lahir)?} Kelamin: {?=isset_or($sep.jkel)?} Jns. Rawat @@ -169,7 +169,7 @@ : - {$sep.notelep} + {?=isset_or($sep.notelep)?} Kls. Rawat @@ -178,7 +178,7 @@ : - {$print_sep.kelas_naik} + {?=isset_or($print_sep.kelas_naik)?} @@ -195,7 +195,7 @@ : - {$sep.nmpolitujuan} + {?=isset_or($sep.nmpolitujuan)?} Kls. Hak @@ -204,7 +204,7 @@ : - Kelas {$sep.klsrawat} + Kelas {?=isset_or($sep.klsrawat)?} @@ -221,7 +221,7 @@ : - {$sep.nmdpdjp} + {?=isset_or($sep.nmdpdjp)?} @@ -238,7 +238,7 @@ : - {$sep.nmppkrujukan} + {?=isset_or($sep.nmppkrujukan)?} @@ -255,7 +255,7 @@ : - {$sep.nmdiagnosaawal} + {?=isset_or($sep.nmdiagnosaawal)?} @@ -272,7 +272,7 @@ : - {$sep.catatan} + {?=isset_or($sep.catatan)?} Pasien/Keluarga Pasien @@ -291,11 +291,11 @@ *Saya Menyetujui BPJS Kesehatan menggunakan informasi Medis Pasien jika diperlukan.
                                                **SEP bukan sebagai bukti penjaminan peserta
                                                Cetakan ke 1 {?=date("d/m/Y H:i:s A")?}
                                                - Masa berlaku {$sep.tglrujukan} s/d {$print_sep.batas_rujukan} + Masa berlaku {?=isset_or($sep.tglrujukan)?} s/d {?=isset_or($print_sep.batas_rujukan)?} - {$sep.nama_pasien}
                                                + {?=isset_or($sep.nama_pasien)?}
                                                diff --git a/plugins/rawat_inap/view/admin/soap.html b/plugins/rawat_inap/view/admin/soap.html index 132e02db3..b009795d2 100644 --- a/plugins/rawat_inap/view/admin/soap.html +++ b/plugins/rawat_inap/view/admin/soap.html @@ -7,7 +7,26 @@
                                                - {include: ../plugins/icd/view/admin/display.html} + {include: ../plugins/rawat_inap/view/admin/display.icd.html} +
                                                + +
                                                +
                                                +
                                                +

                                                Grafik Tanda Vital

                                                +
                                                +
                                                +
                                                + +
                                                + + +
                                                +

                                                Rincian Riwayat

                                                @@ -31,177 +50,212 @@

                                                Rincian Riwayat

                                                {loop: $pemeriksaan} - {$value.nomor} + {?=isset_or($value.nomor)?} Rawat Jalan
                                                - {$value.tgl_perawatan} {$value.jam_rawat}
                                                - {$value.departemen_petugas} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?}
                                                + {?=isset_or($value.departemen_petugas)?} - {$value.suhu_tubuh} - {$value.tensi} - {$value.nadi} - {$value.respirasi} - {$value.tinggi} - {$value.berat} - {$value.gcs} - {$value.spo2} - {$value.alergi} + {?=isset_or($value.suhu_tubuh)?} + {?=isset_or($value.tensi)?} + {?=isset_or($value.nadi)?} + {?=isset_or($value.respirasi)?} + {?=isset_or($value.tinggi)?} + {?=isset_or($value.berat)?} + {?=isset_or($value.gcs)?} + {?=isset_or($value.spo2)?} + {?=isset_or($value.alergi)?} - Instruksi: {$value.instruksi}

                                                - Evaluasi: {$value.evaluasi}

                                                -
                                                - {$value.nama_petugas} + Instruksi: {?=isset_or($value.instruksi)?}

                                                + Evaluasi: {?=isset_or($value.evaluasi)?}

                                                +
                                                + {?=isset_or($value.nama_petugas)?} Kesadaran - {$value.kesadaran} + {?=isset_or($value.kesadaran)?} Lingkar Perut - {$value.lingkar_perut} + {?=isset_or($value.lingkar_perut)?} Subyektif - {$value.keluhan} + {?=isset_or($value.keluhan)?} Obyektif - {$value.pemeriksaan} + {?=isset_or($value.pemeriksaan)?} Assesment - {$value.penilaian} + {?=isset_or($value.penilaian)?}
                                                - {if: $this->core->getUserInfo('username', !empty($_SESSION['mlite_user'])) == $value.nip} + - {/if}
                                                Plan - {$value.rtl} + {?=isset_or($value.rtl)?} {/loop} {loop: $pemeriksaan_ranap as $data} - {$data.nomor} + {?=isset_or($data.nomor)?} Rawat Inap
                                                - {$data.tgl_perawatan} {$data.jam_rawat}
                                                - {$data.departemen_petugas} + {?=isset_or($data.tgl_perawatan)?} {?=isset_or($data.jam_rawat)?}
                                                + {?=isset_or($data.departemen_petugas)?} - {$data.suhu_tubuh} - {$data.tensi} - {$data.nadi} - {$data.respirasi} - {$data.tinggi} - {$data.berat} - {$data.gcs} - {$data.spo2} - {$data.alergi} + {?=isset_or($data.suhu_tubuh)?} + {?=isset_or($data.tensi)?} + {?=isset_or($data.nadi)?} + {?=isset_or($data.respirasi)?} + {?=isset_or($data.tinggi)?} + {?=isset_or($data.berat)?} + {?=isset_or($data.gcs)?} + {?=isset_or($data.spo2)?} + {?=isset_or($data.alergi)?} - Instruksi: {$data.instruksi}

                                                - Evaluasi: {$data.evaluasi}

                                                -
                                                - {$data.nama_petugas} + Instruksi: {?=isset_or($data.instruksi)?}

                                                + Evaluasi: {?=isset_or($data.evaluasi)?}

                                                +
                                                + {?=isset_or($data.nama_petugas)?} Kesadaran - {$data.kesadaran} + {?=isset_or($data.kesadaran)?} Subyektif - {$data.keluhan} + {?=isset_or($data.keluhan)?} Obyektif - {$data.pemeriksaan} + {?=isset_or($data.pemeriksaan)?} Assesment - {$data.penilaian} + {?=isset_or($data.penilaian)?}
                                                - {if: $this->core->getUserInfo('username', !empty($_SESSION['mlite_user'])) == $data.nip} + - {/if}
                                                Plan - {$data.rtl} + {?=isset_or($data.rtl)?} {/loop} diff --git a/plugins/rawat_inap/view/admin/stts.daftar.html b/plugins/rawat_inap/view/admin/stts.daftar.html index b74011b1b..3e79c68f5 100644 --- a/plugins/rawat_inap/view/admin/stts.daftar.html +++ b/plugins/rawat_inap/view/admin/stts.daftar.html @@ -1,7 +1,7 @@ -
                                                +
                                                - - + +
                                                diff --git a/plugins/rawat_inap/view/admin/surat.rujukan.html b/plugins/rawat_inap/view/admin/surat.rujukan.html new file mode 100644 index 000000000..dd03af155 --- /dev/null +++ b/plugins/rawat_inap/view/admin/surat.rujukan.html @@ -0,0 +1,232 @@ + + + + + + +
                                                + + + + + + + + + + +
                                                + + +

                                                {?=isset_or($settings.nama_instansi)?}
                                                + Alamat: {?=isset_or($settings.alamat)?} - {?=isset_or($settings.kota)?} - {?=isset_or($settings.propinsi)?}
                                                + Telepon: {?=isset_or($settings.nomor_telepon)?} - Email: {?=isset_or($settings.email)?}

                                                +
                                                +
                                                +
                                                +
                                                +

                                                SURAT RUJUKAN

                                                + Nomor:

                                                +
                                                + + + + + + + + + + +
                                                + + Kepada Yth.
                                                + Rekan Sejawat
                                                +
                                                + Di
                                                + +
                                                + Dengan Hormat,
                                                + Mohon penanganan dan pengobatan lebih lanjut terhadap pasien tersebut dibawah ini.
                                                +
                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                Nama : {?=isset_or($pasien.nm_pasien)?}
                                                Tanggal Lahir / Umur : {?=isset_or($pasien.tgl_lahir)?} / {?=hitungUmur($pasien.tgl_lahir)?}
                                                Jenis Kelamin : {if: $pasien.jk == 'L'}Laki-Laki{else}Perempuan{/if}
                                                Alamat : {?=isset_or($pasien.alamat)?}, {?=isset_or($pasien.nm_kel)?}, {?=isset_or($pasien.nm_kec)?}, {?=isset_or($pasien.nm_kab)?}, {?=isset_or($pasien.nm_prop)?}

                                                Hasil-hasil penatalaksanaan yang telah kami lakukan terhadap pasien tersebut sebagai berikut.
                                                a. Anamnesis : + +
                                                b. Pemeriksaan fisik : + +
                                                c. Pemeriksaan penunjang : + +
                                                d. Diagnosis : + +
                                                e. Terapi : + +
                                                e. Alasan dirujuk : + +

                                                Demikian surat rujukan ini kami sampaikan. Mohon pengobatan dan perawatan selanjutnya. Atas perhatian dan kerjasamanya kami ucapkan terima kasih.
                                                +

                                                + + + + + +
                                                + + {?=isset_or($settings.kota)?}, {?=date('Y-m-d')?}
                                                + Salam Sejawat

                                                +

                                                + {?=isset_or($nm_dokter)?} +
                                                +
                                                + +

                                                + diff --git a/plugins/rawat_inap/view/admin/surat.sakit.html b/plugins/rawat_inap/view/admin/surat.sakit.html new file mode 100644 index 000000000..874872751 --- /dev/null +++ b/plugins/rawat_inap/view/admin/surat.sakit.html @@ -0,0 +1,175 @@ + + + + + + +
                                                + + + + + + + + + + +
                                                + + +

                                                {?=isset_or($settings.nama_instansi)?}
                                                + Alamat: {?=isset_or($settings.alamat)?} - {?=isset_or($settings.kota)?} - {?=isset_or($settings.propinsi)?}
                                                + Telepon: {?=isset_or($settings.nomor_telepon)?} - Email: {?=isset_or($settings.email)?}

                                                +
                                                +
                                                +
                                                +
                                                +

                                                SURAT KETERANGAN SAKIT

                                                + Nomor:

                                                +
                                                +

                                                + + + + + + +
                                                + Yang bertanda tangan di bawah ini Dokter {?=isset_or($settings.nama_instansi)?}, Menerangkan bahwa;

                                                +
                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                Nama : {?=isset_or($pasien.nm_pasien)?}
                                                Tanggal Lahir / Umur : {?=isset_or($pasien.tgl_lahir)?} / {?=hitungUmur($pasien.tgl_lahir)?}
                                                Jenis Kelamin : {if: $pasien.jk == 'L'}Laki-Laki{else}Perempuan{/if}
                                                Alamat : {?=isset_or($pasien.alamat)?}, {?=isset_or($pasien.nm_kel)?}, {?=isset_or($pasien.nm_kec)?}, {?=isset_or($pasien.nm_kab)?}, {?=isset_or($pasien.nm_prop)?}
                                                +
                                                + Berdasarkan hasil pemeriksaan klinis, yang bersangkutan dalam keadaan + + dengan diagnosa penyakit , dan perlu istirahat selama ( ) hari, terhitung mulai tanggal sampai dengan tanggal . +

                                                Demikianlah surat keterangan ini dibuat dengan sebenarnya untuk digunakan sebagaimana mestinya.
                                                +

                                                + + + + + +
                                                +

                                                + {?=isset_or($settings.kota)?}, {?=date('Y-m-d')?}

                                                +

                                                + {?=isset_or($nm_dokter)?} +
                                                +
                                                + +

                                                + diff --git a/plugins/rawat_inap/view/admin/surat.sehat.html b/plugins/rawat_inap/view/admin/surat.sehat.html new file mode 100644 index 000000000..4091806fa --- /dev/null +++ b/plugins/rawat_inap/view/admin/surat.sehat.html @@ -0,0 +1,209 @@ + + + + + +
                                                + + + + + + + + + + +
                                                + + +

                                                {?=isset_or($settings.nama_instansi)?}
                                                + Alamat: {?=isset_or($settings.alamat)?} - {?=isset_or($settings.kota)?} - {?=isset_or($settings.propinsi)?}
                                                + Telepon: {?=isset_or($settings.nomor_telepon)?} - Email: {?=isset_or($settings.email)?}

                                                +
                                                +
                                                +
                                                +
                                                +

                                                SURAT KETERANGAN SEHAT

                                                + Nomor:

                                                +
                                                +

                                                + + + + + + +
                                                + Yang bertanda tangan di bawah ini Dokter {?=isset_or($settings.nama_instansi)?}, Menerangkan bahwa;

                                                +
                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                Nama : {?=isset_or($pasien.nm_pasien)?}
                                                Tanggal Lahir / Umur : {?=isset_or($pasien.tgl_lahir)?} / {?=hitungUmur($pasien.tgl_lahir)?}
                                                Jenis Kelamin : {if: $pasien.jk == 'L'}Laki-Laki{else}Perempuan{/if}
                                                Alamat : {?=isset_or($pasien.alamat)?}, {?=isset_or($pasien.nm_kel)?}, {?=isset_or($pasien.nm_kec)?}, {?=isset_or($pasien.nm_kab)?}, {?=isset_or($pasien.nm_prop)?}

                                                Hasil pemeriksaan fisik kami pada tanggal adalah sebagai berikut:
                                                Berat Badan : Kg
                                                Tinggi Badan : cm
                                                Tekanan Darah : mmHg
                                                Golongan Darah :
                                                Riwayat Penyakit : + +
                                                +
                                                + Surat Keterangan Sehat ini dipergunakan sebagai +

                                                Demikianlah surat keterangan ini dibuat dengan sebenarnya untuk digunakan sebagaimana mestinya.
                                                +

                                                + + + + + +
                                                +

                                                + {?=isset_or($settings.kota)?}, {?=date('Y-m-d')?}

                                                +

                                                + {?=isset_or($nm_dokter)?} +
                                                +
                                                + +

                                                + diff --git a/plugins/rawat_jalan/Admin.php b/plugins/rawat_jalan/Admin.php index e1f88fffe..f12c80725 100644 --- a/plugins/rawat_jalan/Admin.php +++ b/plugins/rawat_jalan/Admin.php @@ -2,7 +2,6 @@ namespace Plugins\Rawat_Jalan; use Systems\AdminModule; -use Plugins\Icd\DB_ICD; use Systems\Lib\BpjsService; use LZCompressor\LZString; @@ -13,7 +12,7 @@ class Admin extends AdminModule protected $secretkey; protected $user_key; protected $api_url; - protected $assign; + protected array $assign = []; public function init() { @@ -34,6 +33,920 @@ public function navigation() ]; } + public function apiList() + { + + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $draw = $_GET['draw'] ?? 0; + $start = $_GET['start'] ?? 0; + $length = $_GET['length'] ?? 10; + $columnIndex = $_GET['order'][0]['column'] ?? 0; + $columnName = $_GET['columns'][$columnIndex]['data'] ?? 'no_rawat'; + $columnSortOrder = strtolower($_GET['order'][0]['dir'] ?? 'asc'); + + $allowedColumns = ['no_reg', 'jam_reg', 'no_rkm_medis', 'kd_poli', 'kd_dokter', 'stts', 'status_bayar', 'kd_pj', 'nm_pasien', 'nm_dokter', 'nm_poli', 'png_jawab', 'no_rawat']; + if (!in_array($columnName, $allowedColumns)) { + $columnName = 'no_rawat'; + } + if (!in_array($columnSortOrder, ['asc', 'desc'])) { + $columnSortOrder = 'asc'; + } + + $searchValue = is_array($_GET['search'] ?? null) ? ($_GET['search']['value'] ?? '') : ($_GET['search'] ?? ''); + + $tgl_awal = $_GET['tgl_awal'] ?? date('Y-m-d'); + $tgl_akhir = $_GET['tgl_akhir'] ?? date('Y-m-d'); + $status_periksa = $_GET['status_periksa'] ?? ''; + $status_bayar = $_GET['status_bayar'] ?? ''; + $rujukan_internal = $_GET['rujukan_internal'] ?? false; + $semua_poli = $_GET['semua_poli'] ?? false; + + $user_id = $this->db('mlite_users')->where('username', $username)->oneArray()['id']; + $poliklinik = str_replace(",","','", (string)$this->core->getUserInfo('cap', $user_id, true)); + $igd = $this->settings('settings', 'igd'); + + // Base Query + $params = []; + if ($tgl_awal > date('Y-m-d')) { + $sql = "SELECT booking_registrasi.no_reg, booking_registrasi.jam_booking as jam_reg, + booking_registrasi.no_rkm_medis, booking_registrasi.kd_poli, booking_registrasi.kd_dokter, + booking_registrasi.status as stts, 'Belum Bayar' as status_bayar, booking_registrasi.kd_pj, + pasien.nm_pasien, dokter.nm_dokter, poliklinik.nm_poli, penjab.png_jawab, + concat(date_format(booking_registrasi.tanggal_periksa, '%Y/%m/%d'), '/', lpad(booking_registrasi.no_reg, 6, '0')) as no_rawat + FROM booking_registrasi + JOIN pasien ON booking_registrasi.no_rkm_medis = pasien.no_rkm_medis + JOIN dokter ON booking_registrasi.kd_dokter = dokter.kd_dokter + JOIN poliklinik ON booking_registrasi.kd_poli = poliklinik.kd_poli + JOIN penjab ON booking_registrasi.kd_pj = penjab.kd_pj + WHERE booking_registrasi.kd_poli != ? + AND booking_registrasi.tanggal_periksa BETWEEN ? AND ?"; + $params[] = $igd; + $params[] = $tgl_awal; + $params[] = $tgl_akhir; + + if ($this->core->getUserInfo('role', $user_id, true) != 'admin' && !$semua_poli) { + $sql .= " AND booking_registrasi.kd_poli IN ('$poliklinik')"; + } + if($status_periksa == 'belum') { + $sql .= " AND booking_registrasi.status = 'Belum'"; + } + if($status_periksa == 'selesai') { + $sql .= " AND booking_registrasi.status = 'Sudah'"; + } + + // Search + if (!empty($searchValue)) { + $sql .= " AND (booking_registrasi.no_rkm_medis LIKE ? OR pasien.nm_pasien LIKE ? OR dokter.nm_dokter LIKE ? OR poliklinik.nm_poli LIKE ?)"; + $params[] = "%$searchValue%"; + $params[] = "%$searchValue%"; + $params[] = "%$searchValue%"; + $params[] = "%$searchValue%"; + } + } else { + $sql = "SELECT reg_periksa.*, pasien.nm_pasien, dokter.nm_dokter, poliklinik.nm_poli, penjab.png_jawab + FROM reg_periksa + JOIN pasien ON reg_periksa.no_rkm_medis = pasien.no_rkm_medis + JOIN dokter ON reg_periksa.kd_dokter = dokter.kd_dokter + JOIN poliklinik ON reg_periksa.kd_poli = poliklinik.kd_poli + JOIN penjab ON reg_periksa.kd_pj = penjab.kd_pj "; + + if($rujukan_internal) { + $sql .= " JOIN mlite_rujukan_internal_poli ON reg_periksa.no_rawat = mlite_rujukan_internal_poli.no_rawat "; + } + + $sql .= " WHERE reg_periksa.kd_poli != ? + AND reg_periksa.tgl_registrasi BETWEEN ? AND ?"; + $params[] = $igd; + $params[] = $tgl_awal; + $params[] = $tgl_akhir; + + if ($this->core->getUserInfo('role', $user_id, true) != 'admin' && !$semua_poli) { + $sql .= " AND reg_periksa.kd_poli IN ('$poliklinik')"; + } + if($status_periksa == 'belum') { + $sql .= " AND reg_periksa.stts = 'Belum'"; + } + if($status_periksa == 'selesai') { + $sql .= " AND reg_periksa.stts = 'Sudah'"; + } + if($status_periksa == 'lunas') { + $sql .= " AND reg_periksa.status_bayar = 'Sudah Bayar'"; + } + + // Search + if (!empty($searchValue)) { + $sql .= " AND (reg_periksa.no_rawat LIKE ? OR reg_periksa.no_rkm_medis LIKE ? OR pasien.nm_pasien LIKE ? OR dokter.nm_dokter LIKE ? OR poliklinik.nm_poli LIKE ?)"; + $params[] = "%$searchValue%"; + $params[] = "%$searchValue%"; + $params[] = "%$searchValue%"; + $params[] = "%$searchValue%"; + $params[] = "%$searchValue%"; + } + } + + // Count Total (filtered) + $stmt = $this->db()->pdo()->prepare($sql); + $stmt->execute($params); + $totalRecords = $stmt->rowCount(); + + // Order and Limit + $sql .= " ORDER BY $columnName $columnSortOrder LIMIT $start, $length"; + + $stmt = $this->db()->pdo()->prepare($sql); + $stmt->execute($params); + $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC); + + // XSS Prevention: Sanitize output + foreach ($rows as &$row) { + foreach ($row as $key => $value) { + if (is_string($value)) { + $row[$key] = htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); + } + } + } + unset($row); + + $data = []; + foreach ($rows as $row) { + $bridging_sep = $this->db('bridging_sep')->where('no_rawat', $row['no_rawat'])->oneArray(); + $row['no_sep'] = isset_or($bridging_sep['no_sep']); + $data[] = $row; + } + + return [ + "status" => "success", + "data" => $data, + "meta" => [ + "page" => floor($start / $length) + 1, + "per_page" => intval($length), + "total" => $totalRecords + ] + ]; + } + + public function apiShow($no_rawat = null) + { + + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + if(!$no_rawat) { + return ['status' => 'error', 'message' => 'No rawat missing']; + } + $no_rawat = revertNoRawat($no_rawat); + $row = $this->db('reg_periksa') + ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') + ->join('poliklinik', 'poliklinik.kd_poli=reg_periksa.kd_poli') + ->join('dokter', 'dokter.kd_dokter=reg_periksa.kd_dokter') + ->join('penjab', 'penjab.kd_pj=reg_periksa.kd_pj') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + if($row) { + return ['status' => 'success', 'data' => $row]; + } else { + return ['status' => 'error', 'message' => 'Not found']; + } + } + + public function apiCreate() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + if (empty($input['no_rkm_medis']) || empty($input['kd_poli']) || empty($input['kd_dokter'])) { + return ['status' => 'error', 'message' => 'Data incomplete']; + } + + $input['tgl_registrasi'] = $input['tgl_registrasi'] ?? date('Y-m-d'); + $input['jam_reg'] = $input['jam_reg'] ?? date('H:i:s'); + $input['kd_pj'] = $input['kd_pj'] ?? '-'; + + // Validasi master data dulu agar tidak menghasilkan warning/fatal dan JSON tetap bersih. + $pasien = $this->db('pasien')->where('no_rkm_medis', $input['no_rkm_medis'])->oneArray(); + if (!$pasien) { + return ['status' => 'error', 'message' => 'No. RM tidak ditemukan']; + } + + $poliklinik = $this->db('poliklinik')->where('kd_poli', $input['kd_poli'])->oneArray(); + if (!$poliklinik) { + return ['status' => 'error', 'message' => 'Kode poli tidak valid']; + } + + $dokter = $this->db('dokter')->where('kd_dokter', $input['kd_dokter'])->oneArray(); + if (!$dokter) { + return ['status' => 'error', 'message' => 'Kode dokter tidak valid']; + } + + $maxRetries = 5; + $retryCount = 0; + $success = false; + $lastError = ''; + + while ($retryCount < $maxRetries && !$success) { + $this->db()->pdo()->beginTransaction(); + try { + if ($input['tgl_registrasi'] > date('Y-m-d')) { + $input['no_reg'] = $this->core->setNoBooking($input['kd_dokter'], $input['tgl_registrasi'], $input['kd_poli']); + $booking = [ + 'tanggal_booking' => date('Y-m-d'), + 'jam_booking' => date('H:i:s'), + 'no_rkm_medis' => $input['no_rkm_medis'], + 'tanggal_periksa' => $input['tgl_registrasi'], + 'kd_dokter' => $input['kd_dokter'], + 'kd_poli' => $input['kd_poli'], + 'no_reg' => $input['no_reg'], + 'kd_pj' => $input['kd_pj'], + 'limit_reg' => '0', + 'waktu_kunjungan' => $input['tgl_registrasi'] . ' ' . $input['jam_reg'], + 'status' => 'Belum' + ]; + $this->db('booking_registrasi')->save($booking); + $this->db()->pdo()->commit(); + return ['status' => 'success', 'result' => 'created', 'data' => $booking]; + } + + $input['no_rawat'] = $this->setNoRawat($input['tgl_registrasi']); + + // Calculate No Reg (Queue Number) + $tgl_registrasi = $input['tgl_registrasi']; + $q = $this->db('reg_periksa') + ->where('kd_poli', $input['kd_poli']) + ->where('tgl_registrasi', $tgl_registrasi); + + if ($this->settings->get('settings.dokter_ralan_per_dokter') == 'true') { + $q->where('kd_dokter', $input['kd_dokter']); + } + + $urut = $q->nextRightNumber('no_reg', 3); + $input['no_reg'] = sprintf('%03d', $urut); + + $input['status_lanjut'] = 'Ralan'; + $input['stts'] = 'Belum'; + $input['status_bayar'] = 'Belum Bayar'; + $input['p_jawab'] = $input['p_jawab'] ?? '-'; + $input['almt_pj'] = $input['almt_pj'] ?? '-'; + $input['hubunganpj'] = $input['hubunganpj'] ?? '-'; + + $input['biaya_reg'] = $poliklinik['registrasi'] ?? 0; + + // Calculate Age + $birthDate = new \DateTime($pasien['tgl_lahir']); + $today = new \DateTime("today"); + $y = $today->diff($birthDate)->y; + $m = $today->diff($birthDate)->m; + $d = $today->diff($birthDate)->d; + $input['umurdaftar'] = $d; + $input['sttsumur'] = "Hr"; + if($y !='0'){ + $input['umurdaftar'] = $y; + $input['sttsumur'] = "Th"; + } + if($y =='0' && $m !='0'){ + $input['umurdaftar'] = $m; + $input['sttsumur'] = "Bl"; + } + $existingVisit = $this->db('reg_periksa') + ->where('no_rkm_medis', $input['no_rkm_medis']) + ->oneArray(); + $input['stts_daftar'] = $existingVisit ? 'Lama' : 'Baru'; + $input['status_poli'] = 'Lama'; + + $this->db('reg_periksa')->save($input); + $this->db()->pdo()->commit(); + $success = true; + return ['status' => 'success', 'result' => 'created', 'data' => $input]; + + } catch (\Throwable $e) { + $this->db()->pdo()->rollBack(); + if ($e->getCode() == '23000') { + $errMsg = strtolower((string) $e->getMessage()); + $rawErr = trim((string) $e->getMessage()); + if (strpos($errMsg, 'foreign key') !== false) { + $lastError = 'Validasi referensi gagal (pasien/poli/dokter/penjamin tidak valid). Detail: ' . $rawErr; + } elseif (strpos($errMsg, 'booking_registrasi.no_rkm_medis') !== false && strpos($errMsg, 'booking_registrasi.tanggal_periksa') !== false) { + $lastError = 'Booking pasien pada tanggal tersebut sudah ada. Detail: ' . $rawErr; + } elseif (strpos($errMsg, 'unique') !== false || strpos($errMsg, 'primary') !== false) { + $lastError = 'Data duplikat atau bentrok nomor registrasi. Detail: ' . $rawErr; + } else { + $lastError = 'Constraint database gagal saat membuat booking. Detail: ' . $rawErr; + } + $retryCount++; + usleep(100000); + continue; + } + $lastError = $e->getMessage(); + break; + } + } + + if (trim((string) $lastError) === '') { + $lastError = 'Gagal membuat rawat jalan. Periksa no_rkm_medis, kd_poli, kd_dokter, kd_pj, dan konflik nomor registrasi.'; + } + return ['status' => 'error', 'message' => htmlspecialchars($lastError, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')]; + } + + public function apiUpdate($no_rawat = null) + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_update', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + if(!$no_rawat) { + return ['status' => 'error', 'message' => 'No rawat missing']; + } + + $no_rawat = revertNoRawat($no_rawat); + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $parts = explode('/', $no_rawat); + if (count($parts) == 4) { + $date = $parts[0] . '-' . $parts[1] . '-' . $parts[2]; + if ($date > date('Y-m-d')) { + $no_reg = substr($parts[3], -3); + $booking = $this->db('booking_registrasi') + ->where('tanggal_periksa', $date) + ->where('no_reg', $no_reg) + ->oneArray(); + + if ($booking) { + if(isset($input['stts'])) { + $input['status'] = $input['stts']; + unset($input['stts']); + } + + if ($input['status'] == 'Terdaftar') { + $pasien = $this->db('pasien')->where('no_rkm_medis', $booking['no_rkm_medis'])->oneArray(); + $poliklinik = $this->db('poliklinik')->where('kd_poli', $booking['kd_poli'])->oneArray(); + + $birthDate = new \DateTime($pasien['tgl_lahir']); + $today = new \DateTime($booking['tanggal_periksa']); + $y = $today->diff($birthDate)->y; + $m = $today->diff($birthDate)->m; + $d = $today->diff($birthDate)->d; + $umurdaftar = $d; + $sttsumur = "Hr"; + if($y !='0'){ + $umurdaftar = $y; + $sttsumur = "Th"; + } + if($y =='0' && $m !='0'){ + $umurdaftar = $m; + $sttsumur = "Bl"; + } + + $reg_data = [ + 'no_reg' => $booking['no_reg'], + 'no_rawat' => $this->setNoRawat($booking['tanggal_periksa']), + 'tgl_registrasi' => $booking['tanggal_periksa'], + 'jam_reg' => date('H:i:s'), + 'kd_dokter' => $booking['kd_dokter'], + 'no_rkm_medis' => $booking['no_rkm_medis'], + 'kd_poli' => $booking['kd_poli'], + 'p_jawab' => $pasien['namakeluarga'] ?? '-', + 'almt_pj' => $pasien['alamatpj'] ?? '-', + 'hubunganpj' => $pasien['keluarga'] ?? '-', + 'biaya_reg' => $poliklinik['registrasi'] ?? 0, + 'stts' => 'Belum', + 'status_lanjut' => 'Ralan', + 'kd_pj' => $booking['kd_pj'], + 'umurdaftar' => $umurdaftar, + 'sttsumur' => $sttsumur, + 'status_bayar' => 'Belum Bayar', + 'status_poli' => 'Lama', + 'stts_daftar' => $this->db('reg_periksa') + ->where('no_rkm_medis', $booking['no_rkm_medis']) + ->oneArray() ? 'Lama' : 'Baru' + ]; + + if(!$this->db('reg_periksa')->where('no_rkm_medis', $booking['no_rkm_medis'])->where('tgl_registrasi', $booking['tanggal_periksa'])->oneArray()) { + $this->db('reg_periksa')->save($reg_data); + } + } + + try { + $this->db('booking_registrasi') + ->where('tanggal_periksa', $date) + ->where('no_reg', $no_reg) + ->save($input); + return ['status' => 'updated', 'data' => $input]; + } catch (\PDOException $e) { + $message = $e->getMessage(); + $message = preg_replace('/`[^`]+`\./', '', $message); + return ['status' => 'error', 'message' => htmlspecialchars_array($message)]; + } + } + } + } + + try { + $this->db('reg_periksa')->where('no_rawat', $no_rawat)->save($input); + return ['status' => 'updated', 'data' => $input]; + } catch (\PDOException $e) { + $message = $e->getMessage(); + $message = preg_replace('/`[^`]+`\./', '', $message); + return ['status' => 'error', 'message' => htmlspecialchars_array($message)]; + } + } + + public function apiDelete($no_rawat = null) + { + $username = $this->core->checkAuth('DELETE'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + if(!$no_rawat) { + return ['status' => 'error', 'message' => 'No rawat missing']; + } + $no_rawat = revertNoRawat($no_rawat); + + $parts = explode('/', $no_rawat); + if (count($parts) == 4) { + $date = $parts[0] . '-' . $parts[1] . '-' . $parts[2]; + if ($date > date('Y-m-d')) { + $no_reg = substr($parts[3], -3); + $booking = $this->db('booking_registrasi') + ->where('tanggal_periksa', $date) + ->where('no_reg', $no_reg) + ->oneArray(); + + if ($booking) { + $this->db('booking_registrasi') + ->where('tanggal_periksa', $date) + ->where('no_reg', $no_reg) + ->delete(); + return ['status' => 'deleted', 'no_rawat' => $no_rawat]; + } + } + } + + if(!$this->db('reg_periksa')->where('no_rawat', $no_rawat)->oneArray()) { + return ['status' => 'error', 'message' => 'No rawat not found']; + } + + try { + $this->db('reg_periksa')->where('no_rawat', $no_rawat)->delete(); + return ['status' => 'deleted', 'no_rawat' => $no_rawat]; + } catch (\PDOException $e) { + $message = $e->getMessage(); + $message = preg_replace('/`[^`]+`\./', '', $message); + return ['status' => 'error', 'message' => htmlspecialchars_array($message)]; + } + } + + public function apiSaveDetail() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $kategori = trim($input['kat']); + + if (empty($kategori) || empty($input['no_rawat']) || empty($input['kd_jenis_prw'])) { + return ['status' => 'error', 'message' => 'Data incomplete']; + } + + try { + if($kategori == 'tindakan') { + if (empty($input['provider'])) { + return ['status' => 'error', 'message' => 'Provider missing for tindakan']; + } + $jns_perawatan = $this->db('jns_perawatan')->where('kd_jenis_prw', $input['kd_jenis_prw'])->oneArray(); + if(!$jns_perawatan) { + return ['status' => 'error', 'message' => 'Jenis perawatan not found']; + } + + if($input['provider'] == 'rawat_jl_dr') { + for ($i = 0; $i < $input['jml_tindakan']; $i++) { + $this->db('rawat_jl_dr')->save([ + 'no_rawat' => $input['no_rawat'], + 'kd_jenis_prw' => $input['kd_jenis_prw'], + 'kd_dokter' => $input['kode_provider'], + 'tgl_perawatan' => $input['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($input['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrdr'], + 'stts_bayar' => 'Belum' + ]); + } + } + if($input['provider'] == 'rawat_jl_pr') { + for ($i = 0; $i < $input['jml_tindakan']; $i++) { + $this->db('rawat_jl_pr')->save([ + 'no_rawat' => $input['no_rawat'], + 'kd_jenis_prw' => $input['kd_jenis_prw'], + 'nip' => $input['kode_provider2'], + 'tgl_perawatan' => $input['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($input['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrpr'], + 'stts_bayar' => 'Belum' + ]); + } + } + if($input['provider'] == 'rawat_jl_drpr') { + for ($i = 0; $i < $input['jml_tindakan']; $i++) { + $this->db('rawat_jl_drpr')->save([ + 'no_rawat' => $input['no_rawat'], + 'kd_jenis_prw' => $input['kd_jenis_prw'], + 'kd_dokter' => $input['kode_provider'], + 'nip' => $input['kode_provider2'], + 'tgl_perawatan' => $input['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($input['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], + 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrdrpr'], + 'stts_bayar' => 'Belum' + ]); + } + } + + return ['status' => 'success', 'message' => 'Detail saved']; + } elseif ($kategori == 'obat') { + $no_resep = $this->core->setNoResep($input['tgl_perawatan']); + $cek_resep = $this->db('resep_obat')->where('no_rawat', $input['no_rawat'])->where('tgl_peresepan', $input['tgl_perawatan'])->where('tgl_perawatan', '0000-00-00')->where('status', 'ralan')->oneArray(); + + if (empty($cek_resep)) { + $this->db('resep_obat') + ->save([ + 'no_resep' => $no_resep, + 'tgl_perawatan' => '0000-00-00', + 'jam' => '00:00:00', + 'no_rawat' => $input['no_rawat'], + 'kd_dokter' => $input['kode_provider'] ?? $username, + 'tgl_peresepan' => $input['tgl_perawatan'], + 'jam_peresepan' => $input['jam_rawat'], + 'status' => 'ralan', + 'tgl_penyerahan' => '0000-00-00', + 'jam_penyerahan' => '00:00:00' + ]); + + if ($this->db('resep_obat')->where('no_resep', $no_resep)->oneArray()) { + $this->db('resep_dokter') + ->save([ + 'no_resep' => $no_resep, + 'kode_brng' => $input['kd_jenis_prw'], + 'jml' => $input['jml'], + 'aturan_pakai' => $input['aturan_pakai'] + ]); + } + } else { + $no_resep = $cek_resep['no_resep']; + $this->db('resep_dokter') + ->save([ + 'no_resep' => $no_resep, + 'kode_brng' => $input['kd_jenis_prw'], + 'jml' => $input['jml'], + 'aturan_pakai' => $input['aturan_pakai'] + ]); + } + return ['status' => 'success', 'message' => 'Obat saved']; + } elseif ($kategori == 'racikan') { + $no_resep = $this->core->setNoResep($input['tgl_perawatan']); + $cek_resep = $this->db('resep_obat')->where('no_rawat', $input['no_rawat'])->where('tgl_peresepan', $input['tgl_perawatan'])->where('tgl_perawatan', '0000-00-00')->where('status', 'ralan')->oneArray(); + + $jam_rawat = $input['jam_rawat'] ?? date('H:i:s'); + + if (empty($cek_resep)) { + $this->db('resep_obat') + ->save([ + 'no_resep' => $no_resep, + 'tgl_perawatan' => '0000-00-00', + 'jam' => '00:00:00', + 'no_rawat' => $input['no_rawat'], + 'kd_dokter' => $input['kode_provider'] ?? $username, + 'tgl_peresepan' => $input['tgl_perawatan'], + 'jam_peresepan' => $jam_rawat, + 'status' => 'ralan', + 'tgl_penyerahan' => '0000-00-00', + 'jam_penyerahan' => '00:00:00' + ]); + + if ($this->db('resep_obat')->where('no_resep', $no_resep)->oneArray()) { + $no_racik = $this->db('resep_dokter_racikan')->where('no_resep', $no_resep)->count(); + $no_racik = $no_racik + 1; + $this->db('resep_dokter_racikan') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'nama_racik' => $input['nama_racik'], + 'kd_racik' => $input['kd_jenis_prw'], + 'jml_dr' => $input['jml'], + 'aturan_pakai' => $input['aturan_pakai'], + 'keterangan' => $input['keterangan'] + ]); + + $kode_brng_list = is_string($input['kode_brng']) ? json_decode($input['kode_brng'], true) : $input['kode_brng']; + $kandungan_list = is_string($input['kandungan']) ? json_decode($input['kandungan'], true) : $input['kandungan']; + + $kode_brng_count = count($kode_brng_list); + for ($i = 0; $i < $kode_brng_count; $i++) { + $kapasitas = $this->db('databarang')->where('kode_brng', $kode_brng_list[$i]['value'])->oneArray(); + $jml = $input['jml'] * $kandungan_list[$i]['value']; + if ($kapasitas['kapasitas'] > 0) { + $jml = round(($jml / $kapasitas['kapasitas']), 1); + } + $this->db('resep_dokter_racikan_detail') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'kode_brng' => $kode_brng_list[$i]['value'], + 'p1' => '1', + 'p2' => '1', + 'kandungan' => $kandungan_list[$i]['value'], + 'jml' => $jml + ]); + } + } + } else { + $no_resep = $cek_resep['no_resep']; + $no_racik = $this->db('resep_dokter_racikan')->where('no_resep', $no_resep)->count(); + $no_racik = $no_racik + 1; + $this->db('resep_dokter_racikan') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'nama_racik' => $input['nama_racik'], + 'kd_racik' => $input['kd_jenis_prw'], + 'jml_dr' => $input['jml'], + 'aturan_pakai' => $input['aturan_pakai'], + 'keterangan' => $input['keterangan'] + ]); + + $kode_brng_list = is_string($input['kode_brng']) ? json_decode($input['kode_brng'], true) : $input['kode_brng']; + $kandungan_list = is_string($input['kandungan']) ? json_decode($input['kandungan'], true) : $input['kandungan']; + + $kode_brng_count = count($kode_brng_list); + for ($i = 0; $i < $kode_brng_count; $i++) { + $kapasitas = $this->db('databarang')->where('kode_brng', $kode_brng_list[$i]['value'])->oneArray(); + $jml = $input['jml'] * $kandungan_list[$i]['value']; + if ($kapasitas['kapasitas'] > 0) { + $jml = round(($jml / $kapasitas['kapasitas']), 1); + } + $this->db('resep_dokter_racikan_detail') + ->save([ + 'no_resep' => $no_resep, + 'no_racik' => $no_racik, + 'kode_brng' => $kode_brng_list[$i]['value'], + 'p1' => '1', + 'p2' => '1', + 'kandungan' => $kandungan_list[$i]['value'], + 'jml' => $jml + ]); + } + } + return ['status' => 'success', 'message' => 'Racikan saved']; + } else { + return ['status' => 'error', 'message' => 'Category not supported']; + } + } catch (\PDOException $e) { + $message = $e->getMessage(); + $message = preg_replace('/`[^`]+`\./', '', $message); + return ['status' => 'error', 'message' => htmlspecialchars_array($message)]; + } + } + + public function apiDeleteDetail() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $kategori = trim($input['kat']); + + if (empty($kategori) || empty($input['no_rawat']) || empty($input['kd_jenis_prw']) || empty($input['provider']) || empty($input['tgl_perawatan']) || empty($input['jam_rawat'])) { + return ['status' => 'error', 'message' => 'Data incomplete']; + } + + try { + if($kategori == 'tindakan') { + if($input['provider'] == 'rawat_jl_dr') { + $this->db('rawat_jl_dr') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_jenis_prw', $input['kd_jenis_prw']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->delete(); + } + if($input['provider'] == 'rawat_jl_pr') { + $this->db('rawat_jl_pr') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_jenis_prw', $input['kd_jenis_prw']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->delete(); + } + if($input['provider'] == 'rawat_jl_drpr') { + $this->db('rawat_jl_drpr') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_jenis_prw', $input['kd_jenis_prw']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->delete(); + } + + return ['status' => 'success', 'message' => 'Detail deleted']; + } elseif ($kategori == 'obat') { + if(isset($input['kd_jenis_prw'])) { + $this->db('resep_dokter') + ->where('no_resep', $input['no_resep']) + ->where('kode_brng', $input['kd_jenis_prw']) + ->delete(); + } else { + $this->db('resep_obat') + ->where('no_resep', $input['no_resep']) + ->where('no_rawat', $input['no_rawat']) + ->where('tgl_peresepan', $input['tgl_peresepan']) + ->where('jam_peresepan', $input['jam_peresepan']) + ->delete(); + } + return ['status' => 'success', 'message' => 'Resep deleted']; + } elseif ($kategori == 'racikan') { + if(isset($input['kd_jenis_prw']) && isset($input['no_racik'])) { + $this->db('resep_dokter_racikan_detail') + ->where('no_resep', $input['no_resep']) + ->where('no_racik', $input['no_racik']) + ->where('kode_brng', $input['kd_jenis_prw']) + ->delete(); + } elseif (isset($input['no_racik'])) { + $this->db('resep_dokter_racikan') + ->where('no_resep', $input['no_resep']) + ->where('no_racik', $input['no_racik']) + ->delete(); + $this->db('resep_dokter_racikan_detail') + ->where('no_resep', $input['no_resep']) + ->where('no_racik', $input['no_racik']) + ->delete(); + } + return ['status' => 'success', 'message' => 'Racikan deleted']; + } else { + return ['status' => 'error', 'message' => 'Category not supported']; + } + } catch (\PDOException $e) { + $message = $e->getMessage(); + $message = preg_replace('/`[^`]+`\./', '', $message); + return ['status' => 'error', 'message' => htmlspecialchars_array($message)]; + } + } + + public function apiShowDetail($kategori, $no_rawat) + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_read', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $no_rawat = revertNorawat($no_rawat); + $kategori = trim($kategori); + $no_resep = isset($_GET['no_resep']) ? $_GET['no_resep'] : null; + + $pasien = $this->db('reg_periksa') + ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + $patient_info = [ + 'nm_pasien' => $pasien['nm_pasien'] ?? '', + 'no_rkm_medis' => $pasien['no_rkm_medis'] ?? '' + ]; + + try { + if ($kategori == 'tindakan') { + $rawat_jl_dr = $this->db('rawat_jl_dr') + ->join('jns_perawatan', 'jns_perawatan.kd_jenis_prw = rawat_jl_dr.kd_jenis_prw') + ->join('dokter', 'dokter.kd_dokter = rawat_jl_dr.kd_dokter') + ->where('no_rawat', $no_rawat) + ->toArray(); + + $rawat_jl_pr = $this->db('rawat_jl_pr') + ->join('jns_perawatan', 'jns_perawatan.kd_jenis_prw = rawat_jl_pr.kd_jenis_prw') + ->join('petugas', 'petugas.nip = rawat_jl_pr.nip') + ->where('no_rawat', $no_rawat) + ->toArray(); + + $rawat_jl_drpr = $this->db('rawat_jl_drpr') + ->join('jns_perawatan', 'jns_perawatan.kd_jenis_prw = rawat_jl_drpr.kd_jenis_prw') + ->join('dokter', 'dokter.kd_dokter = rawat_jl_drpr.kd_dokter') + ->join('petugas', 'petugas.nip = rawat_jl_drpr.nip') + ->where('no_rawat', $no_rawat) + ->toArray(); + + return [ + 'status' => 'success', + 'patient' => $patient_info, + 'data' => [ + 'rawat_jl_dr' => $rawat_jl_dr, + 'rawat_jl_pr' => htmlspecialchars_array($rawat_jl_pr), + 'rawat_jl_drpr' => htmlspecialchars_array($rawat_jl_drpr) + ] + ]; + } elseif ($kategori == 'obat') { + $query = $this->db('resep_dokter') + ->join('resep_obat', 'resep_obat.no_resep = resep_dokter.no_resep') + ->join('databarang', 'databarang.kode_brng = resep_dokter.kode_brng') + ->where('resep_obat.no_rawat', $no_rawat) + ->where('resep_obat.status', 'ralan'); + + if ($no_resep) { + $query->where('resep_obat.no_resep', $no_resep); + } + + $resep_dokter = $query->toArray(); + + return [ + 'status' => 'success', + 'patient' => $patient_info, + 'data' => $resep_dokter + ]; + } elseif ($kategori == 'racikan') { + $query = $this->db('resep_dokter_racikan') + ->join('resep_obat', 'resep_obat.no_resep = resep_dokter_racikan.no_resep') + ->join('metode_racik', 'metode_racik.kd_racik = resep_dokter_racikan.kd_racik') + ->where('resep_obat.no_rawat', $no_rawat) + ->where('resep_obat.status', 'ralan'); + + if ($no_resep) { + $query->where('resep_obat.no_resep', $no_resep); + } + + $resep_racikan = $query->toArray(); + + foreach ($resep_racikan as &$racikan) { + $racikan['detail'] = $this->db('resep_dokter_racikan_detail') + ->join('databarang', 'databarang.kode_brng = resep_dokter_racikan_detail.kode_brng') + ->where('no_resep', $racikan['no_resep']) + ->where('no_racik', $racikan['no_racik']) + ->toArray(); + } + + return [ + 'status' => 'success', + 'patient' => $patient_info, + 'data' => htmlspecialchars_array($resep_racikan) + ]; + } else { + return ['status' => 'error', 'message' => 'Category not supported: ' . $kategori]; + } + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiShowSoap($no_rawat) + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_read', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $no_rawat = revertNorawat($no_rawat); + + try { + $pemeriksaan = $this->db('pemeriksaan_ralan') + ->where('no_rawat', $no_rawat) + ->toArray(); + + return ['status' => 'success', 'data' => $pemeriksaan]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + public function getIndex() { $sub_modules = [ @@ -42,7 +955,7 @@ public function getIndex() ['name' => 'Booking Periksa', 'url' => url([ADMIN, 'rawat_jalan', 'bookingperiksa']), 'icon' => 'file-o', 'desc' => 'Booking periksa pasien rawat jalan via Online'], ['name' => 'Jadwal Dokter', 'url' => url([ADMIN, 'rawat_jalan', 'jadwal']), 'icon' => 'user-md', 'desc' => 'Jadwal dokter rawat jalan'], ]; - return $this->draw('index.html', ['sub_modules' => $sub_modules]); + return $this->draw('index.html', ['sub_modules' => htmlspecialchars_array($sub_modules)]); } public function anyManage() @@ -75,15 +988,19 @@ public function anyManage() $this->_Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa, $status_bayar); return $this->draw('manage.html', [ - 'rawat_jalan' => $this->assign, - 'cek_vclaim' => $cek_vclaim, + 'rawat_jalan' => htmlspecialchars_array($this->assign), + 'cek_vclaim' => htmlspecialchars_array($cek_vclaim), 'cek_pcare' => $cek_pcare, - 'master_berkas_digital' => $master_berkas_digital, + 'master_berkas_digital' => htmlspecialchars_array($master_berkas_digital), 'responsivevoice' => $responsivevoice, 'admin_mode' => $this->settings->get('settings.admin_mode'), 'waapitoken' => $waapitoken, 'waapiphonenumber' => $waapiphonenumber, - 'nama_instansi' => $nama_instansi + 'nama_instansi' => $nama_instansi, + 'username_fp' => $this->settings->get('settings.username_fp'), + 'password_fp' => $this->settings->get('settings.password_fp'), + 'username_frista' => $this->settings->get('settings.username_frista'), + 'password_frista' => $this->settings->get('settings.password_frista') ] ); } @@ -115,7 +1032,7 @@ public function anyDisplay() $cek_pcare = $this->db('mlite_modules')->where('dir', 'pcare')->oneArray(); $responsivevoice = $this->settings->get('settings.responsivevoice'); $this->_Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa, $status_bayar); - echo $this->draw('display.html', ['rawat_jalan' => $this->assign, 'cek_vclaim' => $cek_vclaim, 'cek_pcare' => $cek_pcare, 'responsivevoice' => $responsivevoice, 'admin_mode' => $this->settings->get('settings.admin_mode'), 'waapitoken' => $waapitoken, 'waapiphonenumber' => $waapiphonenumber, 'nama_instansi' => $nama_instansi]); + echo $this->draw('display.html', ['rawat_jalan' => htmlspecialchars_array($this->assign), 'cek_vclaim' => htmlspecialchars_array($cek_vclaim), 'cek_pcare' => $cek_pcare, 'responsivevoice' => $responsivevoice, 'admin_mode' => $this->settings->get('settings.admin_mode'), 'waapitoken' => $waapitoken, 'waapiphonenumber' => $waapiphonenumber, 'nama_instansi' => $nama_instansi]); exit(); } @@ -135,8 +1052,9 @@ public function _Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa=' $this->assign['tgl_registrasi']= date('Y-m-d'); $this->assign['jam_reg']= date('H:i:s'); - $poliklinik = str_replace(",","','", $this->core->getUserInfo('cap', null, true)); + $poliklinik = str_replace(",","','", (string)$this->core->getUserInfo('cap', null, true)); $igd = $this->settings('settings', 'igd'); + $sql = "SELECT reg_periksa.*, pasien.*, dokter.*, @@ -174,6 +1092,56 @@ public function _Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa=' $this->assign['list'][] = $row; } + $sql_rujukan_internal = "SELECT + reg_periksa.no_rkm_medis, + pasien.nm_pasien, + reg_periksa.no_rawat, + p1.nm_poli as poli_asal, + reg_periksa.kd_poli as kd_poli_asal, + p2.nm_poli as poli_tujuan, + mlite_rujukan_internal_poli.kd_poli as kd_poli_tujuan, + d1.nm_dokter as dokter_perujuk, + reg_periksa.kd_dokter as kd_dokter_perujuk, + d2.nm_dokter as dokter_tujuan, + mlite_rujukan_internal_poli.kd_dokter as kd_dokter_tujuan, + reg_periksa.tgl_registrasi as tgl_rujukan, + mlite_rujukan_internal_poli.isi_rujukan as keterangan, + mlite_rujukan_internal_poli.jawab_rujukan as keterangan_jawab + FROM mlite_rujukan_internal_poli + INNER JOIN reg_periksa ON mlite_rujukan_internal_poli.no_rawat = reg_periksa.no_rawat + INNER JOIN pasien ON reg_periksa.no_rkm_medis = pasien.no_rkm_medis + INNER JOIN poliklinik p1 ON reg_periksa.kd_poli = p1.kd_poli + INNER JOIN poliklinik p2 ON mlite_rujukan_internal_poli.kd_poli = p2.kd_poli + INNER JOIN dokter d1 ON reg_periksa.kd_dokter = d1.kd_dokter + INNER JOIN dokter d2 ON mlite_rujukan_internal_poli.kd_dokter = d2.kd_dokter + INNER JOIN penjab ON reg_periksa.kd_pj = penjab.kd_pj + WHERE reg_periksa.kd_poli != '$igd' + AND reg_periksa.tgl_registrasi BETWEEN '$tgl_kunjungan' AND '$tgl_kunjungan_akhir'"; + + if ($this->core->getUserInfo('role') != 'admin') { + $sql_rujukan_internal .= " AND reg_periksa.kd_poli IN ('$poliklinik')"; + } + if($status_periksa == 'belum') { + $sql_rujukan_internal .= " AND reg_periksa.stts = 'Belum'"; + } + if($status_periksa == 'selesai') { + $sql_rujukan_internal .= " AND reg_periksa.stts = 'Sudah'"; + } + if($status_periksa == 'lunas') { + $sql_rujukan_internal .= " AND reg_periksa.status_bayar = 'Sudah Bayar'"; + } + + $stmt = $this->db()->pdo()->prepare($sql_rujukan_internal); + $stmt->execute(); + $rows = $stmt->fetchAll(); + + $this->assign['list_rujukan_internal'] = []; + foreach ($rows as $row) { + $bridging_sep = $this->db('bridging_sep')->where('no_rawat', $row['no_rawat'])->oneArray(); + $row['no_sep'] = isset_or($bridging_sep['no_sep']); + $this->assign['list_rujukan_internal'][] = $row; + } + if (isset($_POST['no_rawat'])){ $this->assign['reg_periksa'] = $this->db('reg_periksa') ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') @@ -205,7 +1173,6 @@ public function _Display($tgl_kunjungan, $tgl_kunjungan_akhir, $status_periksa=' 'sttsumur' => '', 'status_bayar' => '', 'status_poli' => '', - 'nm_pasien' => '', 'tgl_lahir' => '', 'jk' => '', 'alamat' => '', @@ -269,7 +1236,6 @@ public function anyForm() 'sttsumur' => '', 'status_bayar' => '', 'status_poli' => '', - 'nm_pasien' => '', 'tgl_lahir' => '', 'jk' => '', 'alamat' => '', @@ -310,88 +1276,130 @@ public function anyStatusDaftar() $stts_daftar_hidden = $stts_daftar; } } - echo $this->draw('stts.daftar.html', ['stts_daftar' => $stts_daftar, 'stts_daftar_hidden' => $stts_daftar_hidden, 'bg_status' =>$bg_status]); + echo $this->draw('stts.daftar.html', ['stts_daftar' => htmlspecialchars($stts_daftar, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'stts_daftar_hidden' => htmlspecialchars($stts_daftar_hidden, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'bg_status' => htmlspecialchars($bg_status, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')]); } else { $rawat = $this->db('reg_periksa') ->where('no_rawat', $_POST['no_rawat']) ->oneArray(); - echo $this->draw('stts.daftar.html', ['stts_daftar' => $rawat['stts_daftar']]); + echo $this->draw('stts.daftar.html', [ + 'stts_daftar' => htmlspecialchars($rawat['stts_daftar'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'stts_daftar_hidden' => htmlspecialchars($rawat['stts_daftar'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'bg_status' => '' + ]); } exit(); } public function postSave() { - if ($_POST['tgl_registrasi'] > date('Y-m-d')) { - $this->db('booking_registrasi')->save([ - 'tanggal_booking' => date('Y-m-d'), - 'jam_booking' => date('H:i:s'), - 'no_rkm_medis' => $_POST['no_rkm_medis'], - 'tanggal_periksa' => $_POST['tgl_registrasi'], - 'kd_dokter' => $_POST['kd_dokter'], - 'kd_poli' => $_POST['kd_poli'], - 'no_reg' => $this->core->setNoBooking($_POST['kd_dokter'], $_POST['tgl_registrasi'], $_POST['kd_poli']), - 'kd_pj' => $_POST['kd_pj'], - 'limit_reg' => '0', - 'waktu_kunjungan' => $_POST['tgl_registrasi'] . ' ' . $_POST['jam_reg'], - 'status' => 'Belum' - ]); - } else if (!$this->db('reg_periksa')->where('no_rawat', $_POST['no_rawat'])->oneArray()) { - - $_POST['status_lanjut'] = 'Ralan'; - $_POST['stts'] = 'Belum'; - $_POST['status_bayar'] = 'Belum Bayar'; - $_POST['p_jawab'] = '-'; - $_POST['almt_pj'] = '-'; - $_POST['hubunganpj'] = '-'; - - $poliklinik = $this->db('poliklinik')->where('kd_poli', $_POST['kd_poli'])->oneArray(); - - $_POST['biaya_reg'] = $poliklinik['registrasi']; - - $pasien = $this->db('pasien')->where('no_rkm_medis', $_POST['no_rkm_medis'])->oneArray(); - - $birthDate = new \DateTime($pasien['tgl_lahir']); - $today = new \DateTime("today"); - $umur_daftar = "0"; - $status_umur = 'Hr'; - if ($birthDate < $today) { - $y = $today->diff($birthDate)->y; - $m = $today->diff($birthDate)->m; - $d = $today->diff($birthDate)->d; - $umur_daftar = $d; - $status_umur = "Hr"; - if($y !='0'){ - $umur_daftar = $y; - $status_umur = "Th"; + $maxRetries = 5; + $retryCount = 0; + $success = false; + $lastError = ''; + + while ($retryCount < $maxRetries && !$success) { + $this->db()->pdo()->beginTransaction(); + try { + if ($_POST['tgl_registrasi'] > date('Y-m-d')) { + $_POST['no_reg'] = $this->core->setNoBooking($_POST['kd_dokter'], $_POST['tgl_registrasi'], $_POST['kd_poli']); + $this->db('booking_registrasi')->save([ + 'tanggal_booking' => date('Y-m-d'), + 'jam_booking' => date('H:i:s'), + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'tanggal_periksa' => $_POST['tgl_registrasi'], + 'kd_dokter' => $_POST['kd_dokter'], + 'kd_poli' => $_POST['kd_poli'], + 'no_reg' => $_POST['no_reg'], + 'kd_pj' => $_POST['kd_pj'], + 'limit_reg' => '0', + 'waktu_kunjungan' => $_POST['tgl_registrasi'] . ' ' . $_POST['jam_reg'], + 'status' => 'Belum' + ]); + $this->db()->pdo()->commit(); + $success = true; + $query = true; + } else if (!$this->db('reg_periksa')->where('no_rawat', $_POST['no_rawat'])->oneArray()) { + $_POST['no_rawat'] = $this->setNoRawat($_POST['tgl_registrasi']); + + $q = $this->db('reg_periksa') + ->where('kd_poli', $_POST['kd_poli']) + ->where('tgl_registrasi', $_POST['tgl_registrasi']); + + if ($this->settings->get('settings.dokter_ralan_per_dokter') == 'true') { + $q->where('kd_dokter', $_POST['kd_dokter']); + } + + $urut = $q->nextRightNumber('no_reg', 3); + $_POST['no_reg'] = sprintf('%03d', $urut); + + $_POST['status_lanjut'] = 'Ralan'; + $_POST['stts'] = 'Belum'; + $_POST['status_bayar'] = 'Belum Bayar'; + $_POST['p_jawab'] = '-'; + $_POST['almt_pj'] = '-'; + $_POST['hubunganpj'] = '-'; + + $poliklinik = $this->db('poliklinik')->where('kd_poli', $_POST['kd_poli'])->oneArray(); + $_POST['biaya_reg'] = $poliklinik['registrasi'] ?? 0; + + $pasien = $this->db('pasien')->where('no_rkm_medis', $_POST['no_rkm_medis'])->oneArray(); + + $birthDate = new \DateTime($pasien['tgl_lahir']); + $today = new \DateTime("today"); + $umur_daftar = "0"; + $status_umur = 'Hr'; + if ($birthDate < $today) { + $y = $today->diff($birthDate)->y; + $m = $today->diff($birthDate)->m; + $d = $today->diff($birthDate)->d; + $umur_daftar = $d; + $status_umur = "Hr"; + if($y !='0'){ + $umur_daftar = $y; + $status_umur = "Th"; + } + if($y =='0' && $m !='0'){ + $umur_daftar = $m; + $status_umur = "Bl"; + } + } + + $_POST['umurdaftar'] = $umur_daftar; + $_POST['sttsumur'] = $status_umur; + $_POST['status_poli'] = 'Lama'; + + $query = $this->db('reg_periksa')->save($_POST); + $this->db()->pdo()->commit(); + $success = true; + } else { + $query = $this->db('reg_periksa')->where('no_rawat', $_POST['no_rawat'])->save([ + 'kd_poli' => $_POST['kd_poli'], + 'kd_dokter' => $_POST['kd_dokter'], + 'kd_pj' => $_POST['kd_pj'] + ]); + $this->db()->pdo()->commit(); + $success = true; } - if($y =='0' && $m !='0'){ - $umur_daftar = $m; - $status_umur = "Bl"; + } catch (\Exception $e) { + $this->db()->pdo()->rollBack(); + if ($e->getCode() == '23000') { + $retryCount++; + usleep(100000); + continue; } + $lastError = $e->getMessage(); + break; } - - $_POST['umurdaftar'] = $umur_daftar; - $_POST['sttsumur'] = $status_umur; - $_POST['status_poli'] = 'Lama'; - - $query = $this->db('reg_periksa')->save($_POST); - } else { - $query = $this->db('reg_periksa')->where('no_rawat', $_POST['no_rawat'])->save([ - 'kd_poli' => $_POST['kd_poli'], - 'kd_dokter' => $_POST['kd_dokter'], - 'kd_pj' => $_POST['kd_pj'] - ]); } if($query) { $data['status'] = 'success'; - echo json_encode($data); + echo json_encode(htmlspecialchars_array($data)); } else { $data['status'] = 'error'; - echo json_encode($data); + $data['msg'] = $query->errorInfo()['2']; + echo json_encode(htmlspecialchars_array($data)); } - exit(); } @@ -422,7 +1430,7 @@ public function anyBooking($page = 1) } $biaya_reg = $this->db('poliklinik')->where('kd_poli', $row['kd_poli'])->oneArray(); - $_POST['biaya_reg'] = $biaya_reg['registrasi']; + $_POST['biaya_reg'] = $biaya_reg['registrasi'] ?? 0; if($_POST['stts_daftar'] == 'Lama') { $_POST['biaya_reg'] = $biaya_reg['registrasilama']; } @@ -456,35 +1464,57 @@ public function anyBooking($page = 1) } if($row['status'] == 'Belum') { - $insert = $this->db('reg_periksa') - ->save([ - 'no_reg' => $row['no_reg'], - 'no_rawat' => $this->setNoRawat(), - 'tgl_registrasi' => date('Y-m-d'), - 'jam_reg' => date('H:i:s'), - 'kd_dokter' => $row['kd_dokter'], - 'no_rkm_medis' => $item, - 'kd_poli' => $row['kd_poli'], - 'p_jawab' => $this->getPasienInfo('namakeluarga', $item), - 'almt_pj' => $this->getPasienInfo('alamatpj', $item), - 'hubunganpj' => $this->getPasienInfo('keluarga', $item), - 'biaya_reg' => $_POST['biaya_reg'], - 'stts' => 'Belum', - 'stts_daftar' => $_POST['stts_daftar'], - 'status_lanjut' => 'Ralan', - 'kd_pj' => $row['kd_pj'], - 'umurdaftar' => $umur, - 'sttsumur' => $sttsumur, - 'status_bayar' => 'Belum Bayar', - 'status_poli' => $_POST['status_poli'] - ]); - - if ($insert) { + $maxRetriesInner = 5; + $retryCountInner = 0; + $successInner = false; + while ($retryCountInner < $maxRetriesInner && !$successInner) { + $this->db()->pdo()->beginTransaction(); + try { + $no_rawat = $this->setNoRawat(); + $insert = $this->db('reg_periksa') + ->save([ + 'no_reg' => $row['no_reg'], + 'no_rawat' => $no_rawat, + 'tgl_registrasi' => date('Y-m-d'), + 'jam_reg' => date('H:i:s'), + 'kd_dokter' => $row['kd_dokter'], + 'no_rkm_medis' => $item, + 'kd_poli' => $row['kd_poli'], + 'p_jawab' => $this->getPasienInfo('namakeluarga', $item), + 'almt_pj' => $this->getPasienInfo('alamatpj', $item), + 'hubunganpj' => $this->getPasienInfo('keluarga', $item), + 'biaya_reg' => $_POST['biaya_reg'], + 'stts' => 'Belum', + 'stts_daftar' => $_POST['stts_daftar'], + 'status_lanjut' => 'Ralan', + 'kd_pj' => $row['kd_pj'], + 'umurdaftar' => $umur, + 'sttsumur' => $sttsumur, + 'status_bayar' => 'Belum Bayar', + 'status_poli' => $_POST['status_poli'] + ]); + + if ($insert) { $this->db('booking_registrasi')->where('no_rkm_medis', $item)->where('tanggal_periksa', date('Y-m-d'))->update('status', 'Terdaftar'); - $this->notify('success', 'Validasi sukses'); - } else { - $this->notify('failure', 'Validasi gagal'); + } + $this->db()->pdo()->commit(); + $successInner = true; + } catch (\Exception $e) { + $this->db()->pdo()->rollBack(); + if ($e->getCode() == '23000') { + $retryCountInner++; + usleep(100000); + continue; + } + break; } + } + + if ($successInner) { + $this->notify('success', 'Validasi sukses'); + } else { + $this->notify('failure', 'Validasi gagal'); + } } } @@ -505,8 +1535,8 @@ public function anyBooking($page = 1) $phrase = $_GET['s']; // pagination - $totalRecords = $this->db()->pdo()->prepare("SELECT booking_registrasi.no_rkm_medis FROM booking_registrasi, pasien WHERE booking_registrasi.no_rkm_medis = pasien.no_rkm_medis AND (booking_registrasi.no_rkm_medis LIKE ? OR pasien.nm_pasien LIKE ?) AND booking_registrasi.tanggal_periksa BETWEEN '$start_date' AND '$end_date'"); - $totalRecords->execute(['%'.$phrase.'%', '%'.$phrase.'%']); + $totalRecords = $this->db()->pdo()->prepare("SELECT booking_registrasi.no_rkm_medis FROM booking_registrasi, pasien WHERE booking_registrasi.no_rkm_medis = pasien.no_rkm_medis AND (booking_registrasi.no_rkm_medis LIKE ? OR pasien.nm_pasien LIKE ?) AND booking_registrasi.tanggal_periksa BETWEEN ? AND ?"); + $totalRecords->execute(['%'.$phrase.'%', '%'.$phrase.'%', $start_date, $end_date]); $totalRecords = $totalRecords->fetchAll(); $pagination = new \Systems\Lib\Pagination($page, count($totalRecords), $perpage, url([ADMIN, 'rawat_jalan', 'booking', '%d?s='.$phrase.'&start_date='.$start_date.'&end_date='.$end_date])); @@ -514,8 +1544,8 @@ public function anyBooking($page = 1) $this->assign['totalRecords'] = $totalRecords; $offset = $pagination->offset(); - $query = $this->db()->pdo()->prepare("SELECT booking_registrasi.*, pasien.nm_pasien, pasien.alamat, pasien.no_tlp, dokter.nm_dokter, poliklinik.nm_poli, penjab.png_jawab, pasien.no_peserta FROM booking_registrasi, pasien, dokter, poliklinik, penjab WHERE booking_registrasi.no_rkm_medis = pasien.no_rkm_medis AND booking_registrasi.kd_dokter = dokter.kd_dokter AND booking_registrasi.kd_poli = poliklinik.kd_poli AND booking_registrasi.kd_pj = penjab.kd_pj AND (booking_registrasi.no_rkm_medis LIKE ? OR pasien.nm_pasien LIKE ?) AND booking_registrasi.tanggal_periksa BETWEEN '$start_date' AND '$end_date' LIMIT $perpage OFFSET $offset"); - $query->execute(['%'.$phrase.'%', '%'.$phrase.'%']); + $query = $this->db()->pdo()->prepare("SELECT booking_registrasi.*, pasien.nm_pasien, pasien.alamat, pasien.no_tlp, dokter.nm_dokter, poliklinik.nm_poli, penjab.png_jawab, pasien.no_peserta FROM booking_registrasi, pasien, dokter, poliklinik, penjab WHERE booking_registrasi.no_rkm_medis = pasien.no_rkm_medis AND booking_registrasi.kd_dokter = dokter.kd_dokter AND booking_registrasi.kd_poli = poliklinik.kd_poli AND booking_registrasi.kd_pj = penjab.kd_pj AND (booking_registrasi.no_rkm_medis LIKE ? OR pasien.nm_pasien LIKE ?) AND booking_registrasi.tanggal_periksa BETWEEN ? AND ? LIMIT ".(int)$perpage." OFFSET ".(int)$offset); + $query->execute(['%'.$phrase.'%', '%'.$phrase.'%', $start_date, $end_date]); $rows = $query->fetchAll(); $this->assign['list'] = []; @@ -527,7 +1557,7 @@ public function anyBooking($page = 1) } $this->assign['searchUrl'] = url([ADMIN, 'rawat_jalan', 'booking', $page.'?s='.$phrase.'&start_date='.$start_date.'&end_date='.$end_date]); - return $this->draw('booking.html', ['booking' => $this->assign, 'waapitoken' => $waapitoken, 'waapiphonenumber' => $waapiphonenumber, 'nama_instansi' => $nama_instansi]); + return $this->draw('booking.html', ['booking' => htmlspecialchars_array($this->assign), 'waapitoken' => $waapitoken, 'waapiphonenumber' => $waapiphonenumber, 'nama_instansi' => $nama_instansi]); } @@ -594,7 +1624,7 @@ public function anyKontrol() $row['nomor'] = $i++; $result[] = $row; } - echo $this->draw('kontrol.html', ['booking_registrasi' => $result]); + echo $this->draw('kontrol.html', ['booking_registrasi' => htmlspecialchars_array($result)]); exit(); } @@ -705,6 +1735,16 @@ public function postHapusKontrol() exit(); } + + public function getPersetujuanUmum($no_rkm_medis) + { + $settings = $this->settings('settings'); + $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($settings))); + $pasien = $this->db('pasien')->where('no_rkm_medis', $no_rkm_medis)->oneArray(); + echo $this->draw('persetujuan.umum.html', ['pasien' => htmlspecialchars_array($pasien)]); + exit(); + } + public function getJadwal() { // JS @@ -719,7 +1759,7 @@ public function getJadwal() $this->assign['jadwal'][] = $row; } - return $this->draw('jadwal.html', ['pendaftaran' => $this->assign]); + return $this->draw('jadwal.html', ['pendaftaran' => htmlspecialchars_array($this->assign)]); } public function getJadwalDel($kd_dokter, $hari_kerja) @@ -760,7 +1800,7 @@ public function getJadwalAdd() $this->assign['poliklinik'] = $this->db('poliklinik')->toArray(); $this->assign['hari_kerja'] = $this->core->getEnum('jadwal', 'hari_kerja'); $this->assign['postUrl'] = url([ADMIN, 'rawat_jalan', 'jadwalsave', $this->assign['form']['kd_dokter'], $this->assign['form']['hari_kerja']]); - return $this->draw('jadwal.form.html', ['pendaftaran' => $this->assign]); + return $this->draw('jadwal.form.html', ['pendaftaran' => htmlspecialchars_array($this->assign)]); } public function getJadwalEdit($id, $hari_kerja) @@ -781,7 +1821,7 @@ public function getJadwalEdit($id, $hari_kerja) $this->assign['poliklinik'] = $this->db('poliklinik')->toArray(); $this->assign['postUrl'] = url([ADMIN, 'rawat_jalan', 'jadwalsave', $this->assign['form']['kd_dokter'], $this->assign['form']['hari_kerja']]); - return $this->draw('jadwal.form.html', ['pendaftaran' => $this->assign]); + return $this->draw('jadwal.form.html', ['pendaftaran' => htmlspecialchars_array($this->assign)]); } else { redirect(url([ADMIN, 'rawat_jalan', 'jadwal'])); } @@ -830,7 +1870,7 @@ public function postStatusRawat() if($_POST['stts'] == 'Berkas Dikirim') { if(!$this->db('mutasi_berkas')->where('no_rawat', $_POST['no_rawat'])->oneArray()) { $this->db('mutasi_berkas')->save([ - 'no_rawat' => $_POST['no_rawat'], + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'status' => 'Sudah Dikirim', 'dikirim' => $datetime, 'diterima' => '0000-00-00 00:00:00', @@ -842,7 +1882,7 @@ public function postStatusRawat() } else if ($_POST['stts'] == 'Berkas Diterima') { if(!$this->db('mutasi_berkas')->where('no_rawat', $_POST['no_rawat'])->oneArray()) { $this->db('mutasi_berkas')->save([ - 'no_rawat' => $_POST['no_rawat'], + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'status' => 'Sudah Diterima', 'dikirim' => $datetime, 'diterima' => $datetime, @@ -866,7 +1906,7 @@ public function postStatusRawat() public function postStatusLanjut() { $this->db('reg_periksa')->where('no_rawat', $_POST['no_rawat'])->save([ - 'status_lanjut' => 'Ranap' + 'status_lanjut' => $_POST['status_lanjut'] ]); exit(); } @@ -875,13 +1915,13 @@ public function anyPasien() { if(isset($_POST['cari'])) { $pasien = $this->db('pasien') - ->like('no_rkm_medis', '%'.$_POST['cari'].'%') - ->orLike('nm_pasien', '%'.$_POST['cari'].'%') + ->like('no_rkm_medis', '%'.htmlspecialchars($_POST['cari'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') + ->orLike('nm_pasien', '%'.htmlspecialchars($_POST['cari'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8').'%') ->asc('no_rkm_medis') ->limit(5) ->toArray(); } - echo $this->draw('pasien.html', ['pasien' => $pasien]); + echo $this->draw('pasien.html', ['pasien' => htmlspecialchars_array($pasien ?? [])]); exit(); } @@ -896,7 +1936,7 @@ public function getAntrian() ->join('penjab', 'penjab.kd_pj=reg_periksa.kd_pj') ->where('no_rawat', $_GET['no_rawat']) ->oneArray(); - echo $this->draw('antrian.html', ['rawat_jalan' => $rawat_jalan]); + echo $this->draw('antrian.html', ['rawat_jalan' => htmlspecialchars_array($rawat_jalan)]); exit(); } @@ -911,54 +1951,60 @@ public function postSaveDetail() if($_POST['kat'] == 'tindakan') { $jns_perawatan = $this->db('jns_perawatan')->where('kd_jenis_prw', $_POST['kd_jenis_prw'])->oneArray(); if($_POST['provider'] == 'rawat_jl_dr') { - $this->db('rawat_jl_dr')->save([ - 'no_rawat' => $_POST['no_rawat'], - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'kd_dokter' => $_POST['kode_provider'], - 'tgl_perawatan' => $_POST['tgl_perawatan'], - 'jam_rawat' => $_POST['jam_rawat'], - 'material' => $jns_perawatan['material'], - 'bhp' => $jns_perawatan['bhp'], - 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], - 'kso' => $jns_perawatan['kso'], - 'menejemen' => $jns_perawatan['menejemen'], - 'biaya_rawat' => $jns_perawatan['total_byrdr'], - 'stts_bayar' => 'Belum' - ]); + for ($i = 0; $i < $_POST['jml_tindakan']; $i++) { + $this->db('rawat_jl_dr')->save([ + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'kd_dokter' => $_POST['kode_provider'], + 'tgl_perawatan' => $_POST['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($_POST['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrdr'], + 'stts_bayar' => 'Belum' + ]); + } } if($_POST['provider'] == 'rawat_jl_pr') { - $this->db('rawat_jl_pr')->save([ - 'no_rawat' => $_POST['no_rawat'], - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'nip' => $_POST['kode_provider2'], - 'tgl_perawatan' => $_POST['tgl_perawatan'], - 'jam_rawat' => $_POST['jam_rawat'], - 'material' => $jns_perawatan['material'], - 'bhp' => $jns_perawatan['bhp'], - 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], - 'kso' => $jns_perawatan['kso'], - 'menejemen' => $jns_perawatan['menejemen'], - 'biaya_rawat' => $jns_perawatan['total_byrpr'], - 'stts_bayar' => 'Belum' - ]); + for ($i = 0; $i < $_POST['jml_tindakan']; $i++) { + $this->db('rawat_jl_pr')->save([ + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'nip' => $_POST['kode_provider2'], + 'tgl_perawatan' => $_POST['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($_POST['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrpr'], + 'stts_bayar' => 'Belum' + ]); + } } if($_POST['provider'] == 'rawat_jl_drpr') { - $this->db('rawat_jl_drpr')->save([ - 'no_rawat' => $_POST['no_rawat'], - 'kd_jenis_prw' => $_POST['kd_jenis_prw'], - 'kd_dokter' => $_POST['kode_provider'], - 'nip' => $_POST['kode_provider2'], - 'tgl_perawatan' => $_POST['tgl_perawatan'], - 'jam_rawat' => $_POST['jam_rawat'], - 'material' => $jns_perawatan['material'], - 'bhp' => $jns_perawatan['bhp'], - 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], - 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], - 'kso' => $jns_perawatan['kso'], - 'menejemen' => $jns_perawatan['menejemen'], - 'biaya_rawat' => $jns_perawatan['total_byrdrpr'], - 'stts_bayar' => 'Belum' - ]); + for ($i = 0; $i < $_POST['jml_tindakan']; $i++) { + $this->db('rawat_jl_drpr')->save([ + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'kd_dokter' => $_POST['kode_provider'], + 'nip' => $_POST['kode_provider2'], + 'tgl_perawatan' => $_POST['tgl_perawatan'], + 'jam_rawat' => date('H:i:s', strtotime($_POST['jam_rawat']. ' +'.$i.'0 seconds')), + 'material' => $jns_perawatan['material'], + 'bhp' => $jns_perawatan['bhp'], + 'tarif_tindakandr' => $jns_perawatan['tarif_tindakandr'], + 'tarif_tindakanpr' => $jns_perawatan['tarif_tindakanpr'], + 'kso' => $jns_perawatan['kso'], + 'menejemen' => $jns_perawatan['menejemen'], + 'biaya_rawat' => $jns_perawatan['total_byrdrpr'], + 'stts_bayar' => 'Belum' + ]); + } } } exit(); @@ -1035,7 +2081,7 @@ public function anyRincian() } } - echo $this->draw('rincian.html', ['rawat_jl_dr' => $rawat_jl_dr, 'rawat_jl_pr' => $rawat_jl_pr, 'rawat_jl_drpr' => $rawat_jl_drpr, 'jumlah_total' => $jumlah_total, 'no_rawat' => $_POST['no_rawat']]); + echo $this->draw('rincian.html', ['rawat_jl_dr' => htmlspecialchars_array($rawat_jl_dr), 'rawat_jl_pr' => htmlspecialchars_array($rawat_jl_pr), 'rawat_jl_drpr' => htmlspecialchars_array($rawat_jl_drpr), 'jumlah_total' => $jumlah_total, 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')]); exit(); } @@ -1079,25 +2125,97 @@ public function anySoap() $result_ranap = []; - $check_table = $this->db()->pdo()->query("SHOW TABLES LIKE 'pemeriksaan_ranap'"); - $check_table->execute(); - $check_table = $check_table->fetch(); - if($check_table) { - $rows_ranap = $this->db('pemeriksaan_ranap') - ->where('no_rawat', $_POST['no_rawat']) - ->toArray(); - foreach ($rows_ranap as $row) { - $row['nomor'] = $i++; - $row['nama_petugas'] = $this->core->getPegawaiInfo('nama',$row['nip']); - $row['departemen_petugas'] = $this->core->getDepartemenInfo($this->core->getPegawaiInfo('departemen',$row['nip'])); - $result_ranap[] = $row; - } + $rows_ranap = $this->db('pemeriksaan_ranap') + ->where('no_rawat', $_POST['no_rawat']) + ->toArray(); + foreach ($rows_ranap as $row) { + $row['nomor'] = $i++; + $row['nama_petugas'] = $this->core->getPegawaiInfo('nama',$row['nip']); + $row['departemen_petugas'] = $this->core->getDepartemenInfo($this->core->getPegawaiInfo('departemen',$row['nip'])); + $result_ranap[] = $row; } - echo $this->draw('soap.html', ['pemeriksaan' => $result, 'pemeriksaan_ranap' => $result_ranap, 'diagnosa' => $diagnosa, 'prosedur' => $prosedur, 'admin_mode' => $this->settings->get('settings.admin_mode')]); + echo $this->draw('soap.html', ['pemeriksaan' => htmlspecialchars_array($result), 'pemeriksaan_ranap' => htmlspecialchars_array($result_ranap), 'diagnosa' => htmlspecialchars_array($diagnosa), 'prosedur' => htmlspecialchars_array($prosedur), 'admin_mode' => $this->settings->get('settings.admin_mode')]); exit(); } + public function apiSaveSOAP() + { + $username = $this->core->checkAuth('POST'); + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $required = ['no_rawat', 'tgl_perawatan', 'jam_rawat', 'suhu_tubuh', 'tensi', 'nadi', 'respirasi', 'tinggi', 'berat', 'gcs', 'keluhan', 'pemeriksaan', 'alergi', 'lingkar_perut', 'rtl', 'penilaian', 'instruksi', 'evaluasi', 'nip']; + + foreach($required as $field) { + if(!isset($input[$field])) { + return ['status' => 'error', 'message' => 'Field '.$field.' missing']; + } + } + + try { + if(!$this->db('pemeriksaan_ralan') + ->where('no_rawat', $input['no_rawat']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->where('nip', $input['nip']) + ->oneArray()) { + + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $this->db('pemeriksaan_ralan')->save($input); + } else { + + if (!$this->core->checkPermission($username, 'can_update', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $this->db('pemeriksaan_ralan') + ->where('no_rawat', $input['no_rawat']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->where('nip', $input['nip']) + ->save($input); + } + return ['status' => 'success', 'message' => 'SOAP saved']; + } catch (\PDOException $e) { + $message = $e->getMessage(); + $message = preg_replace('/`[^`]+`\./', '', $message); + return ['status' => 'error', 'message' => htmlspecialchars_array($message)]; + } + } + + public function apiDeleteSOAP() + { + $username = $this->core->checkAuth('DELETE'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_REQUEST; + + if(empty($input['no_rawat']) || empty($input['tgl_perawatan']) || empty($input['jam_rawat'])) { + return ['status' => 'error', 'message' => 'Parameters incomplete']; + } + + try { + $this->db('pemeriksaan_ralan') + ->where('no_rawat', $input['no_rawat']) + ->where('tgl_perawatan', $input['tgl_perawatan']) + ->where('jam_rawat', $input['jam_rawat']) + ->delete(); + return ['status' => 'success', 'message' => 'SOAP deleted']; + } catch (\PDOException $e) { + $message = $e->getMessage(); + $message = preg_replace('/`[^`]+`\./', '', $message); + return ['status' => 'error', 'message' => htmlspecialchars_array($message)]; + } + } + public function postSaveSOAP() { $_POST['nip'] = $this->core->getUserInfo('username', null, true); @@ -1118,19 +2236,36 @@ public function postHapusSOAP() public function anyLayanan() { + $poliklinik = $this->db('poliklinik')->select('kd_poli')->where('status', '1')->toArray(); + $poliklinik = implode(",", array_column($poliklinik, 'kd_poli')); + $poliklinik = explode(',', $poliklinik); + if($this->core->getUserInfo('role', null, true) != 'admin') { + $poliklinik = explode(',', $this->core->getUserInfo('cap', null, true)); + } $layanan = $this->db('jns_perawatan') ->where('status', '1') ->like('nm_perawatan', '%'.$_POST['layanan'].'%') + ->in('kd_poli', $poliklinik) ->limit(10) ->toArray(); - echo $this->draw('layanan.html', ['layanan' => $layanan]); + echo $this->draw('layanan.html', ['layanan' => htmlspecialchars_array($layanan)]); exit(); } + public function postGetLayanan() + { + $layanan = $this->db('jns_perawatan') + ->where('status', '1') + ->where('kd_jenis_prw', $_POST['layanan']) + ->oneArray(); + echo json_encode(htmlspecialchars_array($layanan)); + exit(); + } + public function anyBerkasDigital() { $berkas_digital = $this->db('berkas_digital_perawatan')->where('no_rawat', $_POST['no_rawat'])->toArray(); - echo $this->draw('berkasdigital.html', ['berkas_digital' => $berkas_digital]); + echo $this->draw('berkasdigital.html', ['berkas_digital' => htmlspecialchars_array($berkas_digital)]); exit(); } @@ -1140,10 +2275,14 @@ public function postSaveBerkasDigital() if(MULTI_APP) { $curl = curl_init(); - $filePath = $_FILES['file']['tmp_name']; + $filePath = isset($_FILES['file']['tmp_name']) ? $_FILES['file']['tmp_name'] : ''; + if (empty($filePath) || !file_exists($filePath)) { + echo 'Gagal menambahkan gambar: berkas tidak ditemukan'; + exit(); + } curl_setopt_array($curl, array( - CURLOPT_URL => str_replace('webapps','',WEBAPPS_URL).'api/berkasdigital', + CURLOPT_URL => substr(rtrim(WEBAPPS_URL, '/'), 0, strrpos(rtrim(WEBAPPS_URL, '/'), '/')).'/api/berkasdigital', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, @@ -1151,15 +2290,15 @@ public function postSaveBerkasDigital() CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', - CURLOPT_POSTFIELDS => array('file'=> new \CURLFILE($filePath),'token' => $this->settings->get('api.berkasdigital_key'), 'no_rawat' => $_POST['no_rawat'], 'kode' => $_POST['kode']), + CURLOPT_POSTFIELDS => array('file'=> new \CURLFILE($filePath),'token' => $this->settings->get('api.berkasdigital_key'), 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'kode' => $_POST['kode']), CURLOPT_HTTPHEADER => array(), )); $response = curl_exec($curl); curl_close($curl); - $json = json_decode($response, true); - if($json['status'] == 'Success') { + $json = is_string($response) ? json_decode($response, true) : null; + if(is_array($json) && isset($json['status']) && $json['status'] == 'Success' && isset($json['msg'])) { echo '
                                                '; } else { echo 'Gagal menambahkan gambar'; @@ -1177,7 +2316,7 @@ public function postSaveBerkasDigital() $imgPath = $dir.'/'.$id.'_'.$imgName.'.'.$img->getInfos('type'); $lokasi_file = 'pages/upload/'.$id.'_'.$imgName.'.'.$img->getInfos('type'); $img->save($imgPath); - $query = $this->db('berkas_digital_perawatan')->save(['no_rawat' => $_POST['no_rawat'], 'kode' => $_POST['kode'], 'lokasi_file' => $lokasi_file]); + $query = $this->db('berkas_digital_perawatan')->save(['no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'kode' => $_POST['kode'], 'lokasi_file' => $lokasi_file]); if($query) { echo '
                                                '; } @@ -1235,26 +2374,44 @@ public function postCekWaktu() public function postMaxid() { - $max_id = $this->db('reg_periksa')->select(['no_rawat' => 'ifnull(MAX(CONVERT(RIGHT(no_rawat,6),signed)),0)'])->where('tgl_registrasi', date('Y-m-d'))->oneArray(); - if(empty($max_id['no_rawat'])) { - $max_id['no_rawat'] = '000000'; + if(isset($_POST['tgl_registrasi'])) { + $tgl_registrasi = $_POST['tgl_registrasi']; + } else { + $tgl_registrasi = date('Y-m-d'); } - $_next_no_rawat = sprintf('%06s', ($max_id['no_rawat'] + 1)); - $next_no_rawat = date('Y/m/d').'/'.$_next_no_rawat; + $urut = $this->db('reg_periksa') + ->where('tgl_registrasi', $tgl_registrasi) + ->nextRightNumber('no_rawat', 6); + + $next_no_rawat = + date('Y/m/d', strtotime($tgl_registrasi)) . + '/' . + sprintf('%06d', $urut); + echo $next_no_rawat; + exit(); } public function postMaxAntrian() { - $max_id = $this->db('reg_periksa')->select(['no_reg' => 'ifnull(MAX(CONVERT(RIGHT(no_reg,3),signed)),0)'])->where('kd_poli', $_POST['kd_poli'])->where('tgl_registrasi', date('Y-m-d'))->desc('no_reg')->limit(1)->oneArray(); - if($this->settings->get('settings.dokter_ralan_per_dokter') == 'true') { - $max_id = $this->db('reg_periksa')->select(['no_reg' => 'ifnull(MAX(CONVERT(RIGHT(no_reg,3),signed)),0)'])->where('kd_poli', $_POST['kd_poli'])->where('kd_dokter', $_POST['kd_dokter'])->where('tgl_registrasi', date('Y-m-d'))->desc('no_reg')->limit(1)->oneArray(); + if(isset($_POST['tgl_registrasi'])) { + $tgl_registrasi = $_POST['tgl_registrasi']; + } else { + $tgl_registrasi = date('Y-m-d'); } - if(empty($max_id['no_reg'])) { - $max_id['no_reg'] = '000'; + + $q = $this->db('reg_periksa') + ->where('kd_poli', $_POST['kd_poli']) + ->where('tgl_registrasi', $tgl_registrasi); + + if ($this->settings->get('settings.dokter_ralan_per_dokter') == 'true') { + $q->where('kd_dokter', $_POST['kd_dokter']); } - $_next_no_reg = sprintf('%03s', ($max_id['no_reg'] + 1)); + + $urut = $q->nextRightNumber('no_reg', 3); + + $_next_no_reg = sprintf('%03d', $urut); $date = date('Y-m-d'); $tentukan_hari=date('D',strtotime(date('Y-m-d'))); @@ -1297,67 +2454,101 @@ public function getRegPeriksaInfo($field, $no_rawat) return $row[$field]; } - public function setNoRawat() + public function setNoRawat($date = null) { - $date = date('Y-m-d'); - $last_no_rawat = $this->db()->pdo()->prepare("SELECT ifnull(MAX(CONVERT(RIGHT(no_rawat,6),signed)),0) FROM reg_periksa WHERE tgl_registrasi = '$date'"); - $last_no_rawat->execute(); - $last_no_rawat = $last_no_rawat->fetch(); - if(empty($last_no_rawat[0])) { - $last_no_rawat[0] = '000000'; + $date = $date ?? date('Y-m-d'); + $urut = $this->db('reg_periksa') + ->where('tgl_registrasi', $date) + ->nextRightNumber('no_rawat', 6); + if(empty($urut)) { + $urut = '000000'; } - $next_no_rawat = sprintf('%06s', ($last_no_rawat[0] + 1)); - $next_no_rawat = date('Y/m/d').'/'.$next_no_rawat; + $next_no_rawat = sprintf('%06s', $urut); + $next_no_rawat = str_replace('-', '/', $date).'/'.$next_no_rawat; return $next_no_rawat; } public function postCetak() { - $this->db()->pdo()->exec("DELETE FROM `mlite_temporary`"); - $cari = $_POST['cari']; - $tgl_awal = $_POST['tgl_awal']; - $tgl_akhir = $_POST['tgl_akhir']; - $igd = $this->settings->get('settings.igd'); - $this->db()->pdo()->exec("INSERT INTO `mlite_temporary` ( - `temp1`,`temp2`,`temp3`,`temp4`,`temp5`,`temp6`,`temp7`,`temp8`,`temp9`,`temp10`,`temp11`,`temp12`,`temp13`,`temp14`,`temp15`,`temp16`,`temp17`,`temp18`,`temp19` - ) - SELECT * - FROM `reg_periksa` - WHERE `kd_poli` <> '$igd' - AND `tgl_registrasi` BETWEEN '$tgl_awal' AND '$tgl_akhir' - "); - - $cetak = $this->db('mlite_temporary')->toArray(); - echo $this->draw('cetak.rawat_jalan.html', ['cetak' => $cetak]); - - exit(); + $this->db()->pdo()->exec("DELETE FROM mlite_temporary"); + + $cari = $_POST['cari']; + $tgl_awal = $_POST['tgl_awal']; + $tgl_akhir = $_POST['tgl_akhir']; + $igd = $this->settings->get('settings.igd'); + + $this->db()->pdo()->exec(" + INSERT INTO mlite_temporary ( + `temp1`, + `temp2`, + `temp3`, + `temp4`, + `temp5`, + `temp6`, + `temp7`, + `temp8`, + `temp9`, + `temp10`, + `temp11`, + `temp12`, + `temp13`, + `temp14`, + `temp15`, + `temp16`, + `temp17`, + `temp18`, + `temp19` + ) + SELECT * + FROM reg_periksa + WHERE kd_poli <> '$igd' + AND tgl_registrasi BETWEEN '$tgl_awal' AND '$tgl_akhir' + "); + + exit; } + public function getCetakPdf() { - $mpdf = new \Mpdf\Mpdf([ - 'mode' => 'utf-8', - 'orientation' => 'L' - ]); - - $mpdf->SetHTMLHeader($this->core->setPrintHeader()); - $mpdf->SetHTMLFooter($this->core->setPrintFooter()); - - $url = url('admin/tmp/cetak.rawat_jalan.html'); - $html = file_get_contents($url); - $mpdf->WriteHTML($this->core->setPrintCss(),\Mpdf\HTMLParserMode::HEADER_CSS); - $mpdf->WriteHTML($html,\Mpdf\HTMLParserMode::HTML_BODY); - - // Output a PDF file directly to the browser - $mpdf->Output(); - exit(); + $mpdf = new \Mpdf\Mpdf([ + 'mode' => 'utf-8', + 'orientation' => 'L' + ]); + + $mpdf->SetHTMLHeader($this->core->setPrintHeader()); + $mpdf->SetHTMLFooter($this->core->setPrintFooter()); + + // ambil data + $cetak = $this->db('mlite_temporary')->toArray(); + + // inject ke template + $this->tpl->set('cetak', $cetak); + + // render template (PATH BENAR) + $html = $this->draw('cetak.rawat_jalan.html'); + + // CSS + $mpdf->WriteHTML( + $this->core->setPrintCss(), + \Mpdf\HTMLParserMode::HEADER_CSS + ); + + // BODY + $mpdf->WriteHTML( + $html, + \Mpdf\HTMLParserMode::HTML_BODY + ); + + $mpdf->Output(); + exit; } public function getExcel() { $file = "data.pasien.rawat.jalan.xls"; - $html = file_get_contents(url('admin/tmp/cetak.rawat_jalan.html')); + $html = file_get_contents(url(ADMIN.'/tmp/cetak.rawat_jalan.html')); header("Content-type: application/vnd-ms-excel"); header("Content-Disposition: attachment; filename=$file"); echo ""; @@ -1375,10 +2566,9 @@ public function postObatKronis() $bridging_sep['no_sep'] = ''; } $this->db('mlite_veronisa')->save([ - 'id' => NULL, 'tanggal' => date('Y-m-d'), 'no_rkm_medis' => $reg_periksa['no_rkm_medis'], - 'no_rawat' => $_POST['no_rawat'], + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'tgl_registrasi' => $reg_periksa['tgl_registrasi'], 'nosep' => $bridging_sep['no_sep'], 'status' => 'Belum', @@ -1388,6 +2578,20 @@ public function postObatKronis() exit(); } + public function postKPS() + { + if (isset($_POST['no_rawat']) && $_POST['no_rawat'] !='') { + $this->db('catatan_perawatan')->save([ + 'tanggal' => date('Y-m-d'), + 'jam' => date('H:i:s'), + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'kd_dokter' => $_POST['kd_dokter'], + 'catatan' => 'KPS' + ]); + } + exit(); + } + public function getOdontogram($no_rkm_medis) { @@ -1445,16 +2649,16 @@ public function getOdontogram($no_rkm_medis) $odt['85'] = $this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->where('pemeriksaan', 'gg_85')->desc('tgl_input')->limit(1)->oneArray(); echo $this->draw('odontogram.html', [ - 'odontogram' => $this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->toArray(), - 'ohis' => $this->db('mlite_ohis')->where('no_rkm_medis', $no_rkm_medis)->toArray(), - 'odt' => $odt + 'odontogram' => htmlspecialchars_array($this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->toArray()), + 'ohis' => htmlspecialchars_array($this->db('mlite_ohis')->where('no_rkm_medis', $no_rkm_medis)->toArray()), + 'odt' => htmlspecialchars_array($odt) ]); exit(); } public function getOdontogramTampil($no_rkm_medis) { - echo $this->draw('odontogram.tampil.html', ['odontogram' => $this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->toArray()]); + echo $this->draw('odontogram.tampil.html', ['odontogram' => htmlspecialchars_array($this->db('mlite_odontogram')->where('no_rkm_medis', $no_rkm_medis)->toArray())]); exit(); } @@ -1482,7 +2686,7 @@ public function postOdontogramDelete() public function getOhisTampil($no_rkm_medis) { - echo $this->draw('ohis.tampil.html', ['ohis' => $this->db('mlite_ohis')->where('no_rkm_medis', $no_rkm_medis)->toArray()]); + echo $this->draw('ohis.tampil.html', ['ohis' => htmlspecialchars_array($this->db('mlite_ohis')->where('no_rkm_medis', $no_rkm_medis)->toArray())]); exit(); } @@ -1525,8 +2729,8 @@ public function getSepDetail($no_sep) $this->tpl->set('sep', $this->tpl->noParse_array(htmlspecialchars_array($sep))); $potensi_prb = $this->db('bpjs_prb')->where('no_sep', $no_sep)->oneArray(); - $data_sep['potensi_prb'] = $potensi_prb['prb']; - echo $this->draw('sep.detail.html', ['data_sep' => $data_sep]); + $data_sep['potensi_prb'] = $potensi_prb['prb'] ?? null; + echo $this->draw('sep.detail.html', ['data_sep' => htmlspecialchars_array($data_sep)]); exit(); } @@ -1542,9 +2746,14 @@ public function getSuratRujukan($no_rawat) ->where('no_rkm_medis', $no_rkm_medis) ->oneArray(); $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $sip_dokter = $this->core->getDokterInfo('no_ijn_praktek', $kd_dokter); $this->tpl->set('pasien', $this->tpl->noParse_array(htmlspecialchars_array($pasien))); $this->tpl->set('nm_dokter', $nm_dokter); + $this->tpl->set('sip_dokter', $sip_dokter); + $this->tpl->set('no_rawat', revertNoRawat($no_rawat)); $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($this->settings('settings')))); + $this->tpl->set('surat', $this->db('mlite_surat_rujukan')->where('no_rawat', revertNoRawat($no_rawat))->oneArray()); + $this->tpl->set('nomor_surat', $this->settings->get('settings.set_nomor_surat').'/'.$this->settings->get('settings.prefix_surat').'/'.getRomawi(date('m')).'/'.date('Y')); echo $this->tpl->draw(MODULES.'/rawat_jalan/view/admin/surat.rujukan.html', true); exit(); } @@ -1561,9 +2770,14 @@ public function getSuratSehat($no_rawat) ->where('no_rkm_medis', $no_rkm_medis) ->oneArray(); $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $sip_dokter = $this->core->getDokterInfo('no_ijn_praktek', $kd_dokter); $this->tpl->set('pasien', $this->tpl->noParse_array(htmlspecialchars_array($pasien))); $this->tpl->set('nm_dokter', $nm_dokter); + $this->tpl->set('sip_dokter', $sip_dokter); + $this->tpl->set('no_rawat', revertNoRawat($no_rawat)); $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($this->settings('settings')))); + $this->tpl->set('surat', $this->db('mlite_surat_sehat')->where('no_rawat', revertNoRawat($no_rawat))->oneArray()); + $this->tpl->set('nomor_surat', $this->settings->get('settings.set_nomor_surat').'/'.$this->settings->get('settings.prefix_surat').'/'.getRomawi(date('m')).'/'.date('Y')); echo $this->tpl->draw(MODULES.'/rawat_jalan/view/admin/surat.sehat.html', true); exit(); } @@ -1580,13 +2794,591 @@ public function getSuratSakit($no_rawat) ->where('no_rkm_medis', $no_rkm_medis) ->oneArray(); $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $sip_dokter = $this->core->getDokterInfo('no_ijn_praktek', $kd_dokter); $this->tpl->set('pasien', $this->tpl->noParse_array(htmlspecialchars_array($pasien))); $this->tpl->set('nm_dokter', $nm_dokter); + $this->tpl->set('sip_dokter', $sip_dokter); + $this->tpl->set('no_rawat', revertNoRawat($no_rawat)); $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($this->settings('settings')))); + $this->tpl->set('surat', $this->db('mlite_surat_sakit')->where('no_rawat', revertNoRawat($no_rawat))->oneArray()); + $this->tpl->set('nomor_surat', $this->settings->get('settings.set_nomor_surat').'/'.$this->settings->get('settings.prefix_surat').'/'.getRomawi(date('m')).'/'.date('Y')); echo $this->tpl->draw(MODULES.'/rawat_jalan/view/admin/surat.sakit.html', true); exit(); } + public function postSimpanSuratSakit() + { + $query = $this->db('mlite_surat_sakit')->save([ + 'nomor_surat' => $_POST['nomor_surat'], + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'nm_pasien' => $_POST['nm_pasien'], + 'tgl_lahir' => $_POST['tgl_lahir'], + 'umur' => $_POST['umur'], + 'jk' => $_POST['jk'], + 'alamat' => $_POST['alamat'], + 'keadaan' => $_POST['keadaan'], + 'diagnosa' => $_POST['diagnosa'], + 'lama_angka' => $_POST['lama_angka'], + 'lama_huruf' => $_POST['lama_huruf'], + 'tanggal_mulai' => $_POST['tanggal_mulai'], + 'tanggal_selesai' => $_POST['tanggal_selesai'], + 'dokter' => $_POST['dokter'], + 'petugas' => $_POST['petugas'] + ]); + + if($query) { + $nomor_surat = ltrim($this->settings->get('settings.set_nomor_surat')); + $nomor_surat = sprintf('%03s', ($nomor_surat + 1)); + $this->db('mlite_settings')->where('module', 'settings')->where('field', 'set_nomor_surat')->set('value', $nomor_surat)->update(); + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = $query->errorInfo()['2']; + echo json_encode(htmlspecialchars_array($data)); + } + + exit(); + } + + public function postSimpanSuratSehat() + { + $query = $this->db('mlite_surat_sehat')->save([ + 'nomor_surat' => $_POST['nomor_surat'], + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'nm_pasien' => $_POST['nm_pasien'], + 'tgl_lahir' => $_POST['tgl_lahir'], + 'umur' => $_POST['umur'], + 'jk' => $_POST['jk'], + 'alamat' => $_POST['alamat'], + 'tanggal' => $_POST['tanggal'], + 'berat_badan' => $_POST['berat_badan'], + 'tinggi_badan' => $_POST['tinggi_badan'], + 'tensi' => $_POST['tensi'], + 'gol_darah' => $_POST['gol_darah'], + 'riwayat_penyakit' => $_POST['riwayat_penyakit'], + 'keperluan' => $_POST['keperluan'], + 'dokter' => $_POST['dokter'], + 'petugas' => $_POST['petugas'] + ]); + + if($query) { + $nomor_surat = ltrim($this->settings->get('settings.set_nomor_surat')); + $nomor_surat = sprintf('%03s', ($nomor_surat + 1)); + $this->db('mlite_settings')->where('module', 'settings')->where('field', 'set_nomor_surat')->set('value', $nomor_surat)->update(); + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = $query->errorInfo()['2']; + echo json_encode(htmlspecialchars_array($data)); + } + + exit(); + } + + public function postSimpanSuratRujukan() + { + $query = $this->db('mlite_surat_rujukan')->save([ + 'nomor_surat' => $_POST['nomor_surat'], + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'no_rkm_medis' => $_POST['no_rkm_medis'], + 'nm_pasien' => $_POST['nm_pasien'], + 'tgl_lahir' => $_POST['tgl_lahir'], + 'umur' => $_POST['umur'], + 'jk' => $_POST['jk'], + 'alamat' => $_POST['alamat'], + 'kepada' => $_POST['kepada'], + 'di' => $_POST['di'], + 'anamnesa' => $_POST['anamnesa'], + 'pemeriksaan_fisik' => $_POST['pemeriksaan_fisik'], + 'pemeriksaan_penunjang' => $_POST['pemeriksaan_penunjang'], + 'diagnosa' => $_POST['diagnosa'], + 'terapi' => $_POST['terapi'], + 'alasan_dirujuk' => $_POST['alasan_dirujuk'], + 'dokter' => $_POST['dokter'], + 'petugas' => $_POST['petugas'] + ]); + + if($query) { + $nomor_surat = ltrim($this->settings->get('settings.set_nomor_surat')); + $nomor_surat = sprintf('%03s', ($nomor_surat + 1)); + $this->db('mlite_settings')->where('module', 'settings')->where('field', 'set_nomor_surat')->set('value', $nomor_surat)->update(); + $data['status'] = 'success'; + echo json_encode(htmlspecialchars_array($data)); + } else { + $data['status'] = 'error'; + $data['msg'] = $query->errorInfo()['2']; + echo json_encode(htmlspecialchars_array($data)); + } + + exit(); + } + + public function postSaveICD10() + { + $_POST['status_penyakit'] = 'Baru'; + unset($_POST['nama']); + $this->db('diagnosa_pasien')->save($_POST); + exit(); + } + + public function postHapusICD10() + { + $this->db('diagnosa_pasien')->where('no_rawat', $_POST['no_rawat'])->where('prioritas', $_POST['prioritas'])->delete(); + exit(); + } + + public function postICD10() + { + + if(isset($_POST["query"])){ + $output = ''; + $key = "%".$_POST["query"]."%"; + $rows = $this->db('penyakit')->like('kd_penyakit', $key)->orLike('nm_penyakit', $key)->asc('kd_penyakit')->limit(10)->toArray(); + $output = ''; + if(count($rows)){ + foreach ($rows as $row) { + $output .= ''; + } + } else { + $output .= ''; + } + echo $output; + } + + exit(); + + } + + public function postSaveICD9() + { + unset($_POST['nama']); + $this->db('prosedur_pasien')->save($_POST); + exit(); + } + + public function postHapusICD9() + { + $this->db('prosedur_pasien')->where('no_rawat', $_POST['no_rawat'])->where('prioritas', $_POST['prioritas'])->delete(); + exit(); + } + + public function postICD9() + { + + if(isset($_POST["query"])){ + $output = ''; + $key = "%".$_POST["query"]."%"; + $rows = $this->db('icd9')->like('kode', $key)->orLike('deskripsi_panjang', $key)->asc('kode')->limit(10)->toArray(); + $output = ''; + if(count($rows)){ + foreach ($rows as $row) { + $output .= ''; + } + } else { + $output .= ''; + } + echo $output; + } + + exit(); + + } + + public function getDisplayICD() + { + $no_rawat = $_GET['no_rawat']; + $prosedurs = $this->db('prosedur_pasien') + ->where('no_rawat', $no_rawat) + ->asc('prioritas') + ->toArray(); + $prosedur = []; + foreach ($prosedurs as $row_prosedur) { + $icd9 = $this->db('icd9')->where('kode', $row_prosedur['kode'])->oneArray(); + $row_prosedur['nama'] = $icd9['deskripsi_panjang']; + $prosedur[] = $row_prosedur; + } + + $diagnosas = $this->db('diagnosa_pasien') + ->where('no_rawat', $no_rawat) + ->asc('prioritas') + ->toArray(); + $diagnosa = []; + foreach ($diagnosas as $row_diagnosa) { + $icd10 = $this->db('penyakit')->where('kd_penyakit', $row_diagnosa['kd_penyakit'])->oneArray(); + $row_diagnosa['nama'] = $icd10['nm_penyakit']; + $diagnosa[] = $row_diagnosa; + } + + echo $this->draw('display.icd.html', ['diagnosa' => htmlspecialchars_array($diagnosa), 'prosedur' => htmlspecialchars_array($prosedur)]); + exit(); + } + + public function getAssessment($no_rawat) + { + $no_rawat_reverted = revertNoRawat($no_rawat); + + // Cek apakah data assessment sudah ada + $existing_assessment = $this->db('penilaian_awal_keperawatan_ralan') + ->where('no_rawat', $no_rawat_reverted) + ->oneArray(); + + $penilaian_awal_keperawatan_ralan = null; + + if($existing_assessment) { + // Jika data assessment sudah ada, ambil dengan join petugas + $penilaian_awal_keperawatan_ralan = $this->db('penilaian_awal_keperawatan_ralan') + ->where('no_rawat', $no_rawat_reverted) + ->join('petugas', 'petugas.nip=penilaian_awal_keperawatan_ralan.nip') + ->oneArray(); + } else { + // Jika belum ada, ambil data dari pemeriksaan_ralan sebagai fallback + $pemeriksaan_data = $this->db('pemeriksaan_ralan') + ->where('no_rawat', $no_rawat_reverted) + ->desc('tgl_perawatan') + ->desc('jam_rawat') + ->oneArray(); + + if($pemeriksaan_data) { + // Map data dari pemeriksaan_ralan ke format penilaian_awal_keperawatan_ralan + $penilaian_awal_keperawatan_ralan = [ + 'no_rawat' => $pemeriksaan_data['no_rawat'], + 'tanggal' => $pemeriksaan_data['tgl_perawatan'] . 'T' . substr($pemeriksaan_data['jam_rawat'], 0, 5), + 'informasi' => 'Autoanamnesis', // default + 'td' => $pemeriksaan_data['tensi'] ?? '', + 'nadi' => $pemeriksaan_data['nadi'] ?? '', + 'rr' => $pemeriksaan_data['respirasi'] ?? '', + 'suhu' => $pemeriksaan_data['suhu_tubuh'] ?? '', + 'gcs' => $pemeriksaan_data['gcs'] ?? '', + 'bb' => $pemeriksaan_data['berat'] ?? '', + 'tb' => $pemeriksaan_data['tinggi'] ?? '', + 'bmi' => '', // akan dihitung otomatis jika bb dan tb ada + 'keluhan_utama' => $pemeriksaan_data['keluhan'] ?? '', + 'rpd' => '', + 'rpk' => '', + 'rpo' => '', + 'alergi' => $pemeriksaan_data['alergi'] ?? '', + 'alat_bantu' => 'Tidak', + 'ket_bantu' => '', + 'prothesa' => 'Tidak', + 'ket_pro' => '', + 'adl' => 'Mandiri', + 'status_psiko' => 'Tenang', + 'ket_psiko' => '', + 'hub_keluarga' => 'Baik', + 'tinggal_dengan' => 'Keluarga', + 'ket_tinggal' => '', + 'ekonomi' => 'Cukup', + 'budaya' => 'Tidak Ada', + 'ket_budaya' => '', + 'edukasi' => 'Pasien', + 'ket_edukasi' => '', + 'berjalan_a' => 'Tidak', + 'berjalan_b' => 'Tidak', + 'berjalan_c' => 'Tidak', + 'hasil' => 'Rendah', + 'lapor' => 'Tidak', + 'ket_lapor' => '', + 'sg1' => 'Tidak', + 'nilai1' => '0', + 'sg2' => 'Tidak', + 'nilai2' => '0', + 'total_hasil' => 0, + 'nyeri' => 'Tidak', + 'provokes' => 'Aktivitas', + 'ket_provokes' => '', + 'quality' => 'Seperti Tertusuk', + 'ket_quality' => '', + 'lokasi' => '', + 'menyebar' => 'Tidak', + 'skala_nyeri' => '0', + 'durasi' => '', + 'nyeri_hilang' => 'Istirahat', + 'ket_nyeri' => '', + 'pada_dokter' => 'Tidak', + 'ket_dokter' => '', + 'rencana' => '', + 'nip' => $this->core->getUserInfo('username') ?? '' + ]; + + // Hitung BMI jika bb dan tb tersedia + if(!empty($penilaian_awal_keperawatan_ralan['bb']) && !empty($penilaian_awal_keperawatan_ralan['tb'])) { + $bb = floatval($penilaian_awal_keperawatan_ralan['bb']); + $tb = floatval($penilaian_awal_keperawatan_ralan['tb']) / 100; // convert cm to m + if($tb > 0) { + $bmi = $bb / ($tb * $tb); + $penilaian_awal_keperawatan_ralan['bmi'] = number_format($bmi, 2); + } + } + } + } + + $data_assessment['penilaian_awal_keperawatan_ralan'] = $existing_assessment; + $data_petugas = $this->db('petugas')->select('nip, nama')->where('status', '1')->toArray(); + echo $this->draw('assesment.html', [ + 'reg_periksa' => $this->db('reg_periksa')->where('no_rawat', $no_rawat_reverted)->oneArray(), + 'penilaian_awal_keperawatan_ralan' => htmlspecialchars_array($penilaian_awal_keperawatan_ralan), + 'pasien' => $this->db('pasien')->where('no_rawat', $no_rawat_reverted)->join('reg_periksa','pasien.no_rkm_medis=reg_periksa.no_rkm_medis')->oneArray(), + 'petugas' => $existing_assessment ? $this->db('petugas')->where('no_rawat', $no_rawat_reverted)->join('penilaian_awal_keperawatan_ralan','petugas.nip=penilaian_awal_keperawatan_ralan.nip')->oneArray() : [], + 'data_assessment' => $data_assessment, + 'petugas_list' => $data_petugas + ]); + exit(); + } + + public function postAssessmentsave() + { + // Trim semua input POST untuk menghilangkan whitespace + foreach($_POST as $key => $value) { + if(is_string($value)) { + $_POST[$key] = trim($value); + } + } + + // Log untuk debugging + error_log('POST data received: ' . print_r($_POST, true)); + + // Debug khusus untuk field GCS + error_log('GCS field debug - isset: ' . (isset($_POST['gcs']) ? 'true' : 'false') . ', value: "' . (isset($_POST['gcs']) ? $_POST['gcs'] : 'NOT_SET') . '"'); + + // Validasi input required + $required_fields = ['no_rawat', 'tanggal', 'informasi', 'rr', 'gcs', 'bmi', 'rpk', 'rpo', 'ket_pro', 'ket_psiko', 'ket_tinggal', 'ket_budaya', 'ket_edukasi', 'ket_lapor', 'ket_provokes', 'ket_quality', 'lokasi', 'durasi', 'ket_nyeri', 'ket_dokter', 'rencana', 'nip']; + + foreach($required_fields as $field) { + $value = isset($_POST[$field]) ? $_POST[$field] : ''; + $trimmed_value = is_string($value) ? trim($value) : $value; + + // Log detail untuk setiap field + error_log('Field validation - ' . $field . ': isset=' . (isset($_POST[$field]) ? 'true' : 'false') . ', original="' . $value . '", trimmed="' . $trimmed_value . '", empty=' . (empty($trimmed_value) ? 'true' : 'false')); + + if(empty($trimmed_value) || $trimmed_value === '') { + error_log('Validation failed for field: ' . $field . ', value: "' . $value . '"'); + echo json_encode([ + 'status' => 'error', + 'message' => 'Field ' . $field . ' harus diisi', + 'field' => $field, + 'value' => $value, + 'trimmed_value' => $trimmed_value, + 'debug_info' => [ + 'isset' => isset($_POST[$field]), + 'original_value' => $value, + 'trimmed_value' => $trimmed_value, + 'is_empty' => empty($trimmed_value) + ] + ]); + exit(); + } + } + + // Cek apakah data sudah ada + $existing = $this->db('penilaian_awal_keperawatan_ralan') + ->where('no_rawat', $_POST['no_rawat']) + ->oneArray(); + + $data = [ + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'tanggal' => $_POST['tanggal'], + 'informasi' => $_POST['informasi'], + 'td' => $_POST['td'] ?? '', + 'nadi' => $_POST['nadi'] ?? '', + 'rr' => $_POST['rr'], + 'suhu' => $_POST['suhu'] ?? '', + 'gcs' => $_POST['gcs'], + 'bb' => $_POST['bb'] ?? '', + 'tb' => $_POST['tb'] ?? '', + 'bmi' => $_POST['bmi'], + 'keluhan_utama' => $_POST['keluhan_utama'] ?? '', + 'rpd' => $_POST['rpd'] ?? '', + 'rpk' => $_POST['rpk'], + 'rpo' => $_POST['rpo'], + 'alergi' => $_POST['alergi'] ?? '', + 'alat_bantu' => $_POST['alat_bantu'], + 'ket_bantu' => $_POST['ket_bantu'] ?? '', + 'prothesa' => $_POST['prothesa'], + 'ket_pro' => $_POST['ket_pro'], + 'adl' => $_POST['adl'], + 'status_psiko' => $_POST['status_psiko'], + 'ket_psiko' => $_POST['ket_psiko'], + 'hub_keluarga' => $_POST['hub_keluarga'], + 'tinggal_dengan' => $_POST['tinggal_dengan'], + 'ket_tinggal' => $_POST['ket_tinggal'], + 'ekonomi' => $_POST['ekonomi'], + 'budaya' => $_POST['budaya'], + 'ket_budaya' => $_POST['ket_budaya'], + 'edukasi' => $_POST['edukasi'], + 'ket_edukasi' => $_POST['ket_edukasi'], + 'berjalan_a' => $_POST['berjalan_a'], + 'berjalan_b' => $_POST['berjalan_b'], + 'berjalan_c' => $_POST['berjalan_c'], + 'hasil' => $_POST['hasil'], + 'lapor' => $_POST['lapor'], + 'ket_lapor' => $_POST['ket_lapor'], + 'sg1' => $_POST['sg1'], + 'nilai1' => $_POST['nilai1'], + 'sg2' => $_POST['sg2'], + 'nilai2' => $_POST['nilai2'], + 'total_hasil' => (int)$_POST['total_hasil'], + 'nyeri' => $_POST['nyeri'], + 'provokes' => $_POST['provokes'], + 'ket_provokes' => $_POST['ket_provokes'], + 'quality' => $_POST['quality'], + 'ket_quality' => $_POST['ket_quality'], + 'lokasi' => $_POST['lokasi'], + 'menyebar' => $_POST['menyebar'], + 'skala_nyeri' => $_POST['skala_nyeri'], + 'durasi' => $_POST['durasi'], + 'nyeri_hilang' => $_POST['nyeri_hilang'], + 'ket_nyeri' => $_POST['ket_nyeri'], + 'pada_dokter' => $_POST['pada_dokter'], + 'ket_dokter' => $_POST['ket_dokter'], + 'rencana' => $_POST['rencana'], + 'nip' => $_POST['nip'] + ]; + + try { + if($existing) { + // Update data yang sudah ada + $query = $this->db('penilaian_awal_keperawatan_ralan') + ->where('no_rawat', $_POST['no_rawat']) + ->save($data); + } else { + // Insert data baru + $query = $this->db('penilaian_awal_keperawatan_ralan')->save($data); + } + + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data assessment berhasil disimpan']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan data assessment']); + } + } catch(\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + + public function getAssessmenttampil($no_rawat) + { + $no_rawat = revertNorawat($no_rawat); + $penilaian_awal_keperawatan_ralan = $this->db('penilaian_awal_keperawatan_ralan') + ->join('petugas', 'petugas.nip=penilaian_awal_keperawatan_ralan.nip') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + if($penilaian_awal_keperawatan_ralan) { + $penilaian_awal_keperawatan_ralan['nm_petugas'] = $penilaian_awal_keperawatan_ralan['nama']; + } + + echo $this->draw('assesment.tampil.html', ['penilaian_awal_keperawatan_ralan' => htmlspecialchars_array($penilaian_awal_keperawatan_ralan)]); + exit(); + } + + public function postAssessmentdelete() + { + try { + $query = $this->db('penilaian_awal_keperawatan_ralan') + ->where('no_rawat', $_POST['no_rawat']) + ->delete(); + + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data assessment berhasil dihapus']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menghapus data assessment']); + } + } catch(\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + + public function postRujukanInternal() + { + try { + $query = $this->db('mlite_rujukan_internal_poli') + ->save([ + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'kd_poli' => $_POST['kd_poli'], + 'kd_dokter' => $_POST['kd_dokter'], + 'isi_rujukan' => $_POST['isi_rujukan'] + ]); + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data rujukan internal berhasil disimpan']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan data rujukan internal']); + } + } catch(\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + + public function postGetRujukanInternal() + { + $rujukan = $this->db('mlite_rujukan_internal_poli')->where('no_rawat', $_POST['no_rawat'])->oneArray(); + echo json_encode(htmlspecialchars_array($rujukan)); + exit(); + } + + public function postHapusrujukaninternal() + { + try { + // Get POST data + $no_rawat = isset($_POST['no_rawat']) ? $_POST['no_rawat'] : ''; + + if (empty($no_rawat)) { + echo json_encode(['status' => 'error', 'message' => 'No rawat tidak boleh kosong']); + exit(); + } + + // Delete rujukan internal + $result = $this->db('mlite_rujukan_internal_poli')->where('no_rawat', $no_rawat)->delete(); + + if ($result) { + echo json_encode(['status' => 'success', 'message' => 'Rujukan internal berhasil dihapus']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menghapus rujukan internal atau data tidak ditemukan']); + } + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + + public function postEditrujukaninternal() + { + try { + // Get POST data + $no_rawat = isset($_POST['no_rawat']) ? $_POST['no_rawat'] : ''; + $jawab_rujukan = isset($_POST['jawab_rujukan']) ? $_POST['jawab_rujukan'] : ''; + + if (empty($jawab_rujukan)) { + echo json_encode(['status' => 'error', 'message' => 'Jawaban rujukan tidak boleh kosong']); + exit(); + } + + // Update rujukan internal + $data = [ + 'jawab_rujukan' => $jawab_rujukan + ]; + + $result = $this->db('mlite_rujukan_internal_poli') + ->where('no_rawat', $no_rawat) + ->save($data); + + if ($result) { + echo json_encode(['status' => 'success', 'message' => 'Rujukan internal berhasil diupdate']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal mengupdate rujukan internal']); + } + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + public function getJavascript() { header('Content-type: text/javascript'); @@ -1595,7 +3387,803 @@ public function getJavascript() if($cek_pegawai) { $cek_role = $this->core->getPegawaiInfo('nik', $this->core->getUserInfo('username', $_SESSION['mlite_user'])); } - echo $this->draw(MODULES.'/rawat_jalan/js/admin/rawat_jalan.js', ['cek_role' => $cek_role]); + $poliklinik = $this->db('poliklinik')->where('status', '1')->toArray(); + $dokter = $this->db('dokter')->where('status', '1')->toArray(); + $this->assign['poliklinik'] = $poliklinik; + $this->assign['dokter'] = $dokter; + $this->assign['websocket'] = $this->settings->get('settings.websocket'); + $this->assign['websocket_proxy'] = $this->settings->get('settings.websocket_proxy'); + echo $this->draw(MODULES.'/rawat_jalan/js/admin/rawat_jalan.js', ['cek_role' => $cek_role, 'mlite' => htmlspecialchars_array($this->assign)]); + exit(); + } + + public function anyDataTb() + { + try { + // Add debugging + error_log('anyDataTb called with POST: ' . print_r($_POST, true)); + + // Validate POST data + if(empty($_POST['no_rawat'])) { + throw new \Exception('No rawat tidak ditemukan'); + } + + $no_rawat = $_POST['no_rawat']; + $no_rkm_medis = $_POST['no_rkm_medis'] ?? ''; + $nm_pasien = $_POST['nm_pasien'] ?? ''; + + // Get patient data from reg_periksa and pasien tables + $patient_data = $this->db('reg_periksa') + ->join('pasien', 'pasien.no_rkm_medis=reg_periksa.no_rkm_medis') + ->where('reg_periksa.no_rawat', $no_rawat) + ->oneArray(); + + $tgl_lahir = ''; + $jk = ''; + $alamat = ''; + $no_tlp = ''; + $umur = ''; + + if($patient_data) { + $tgl_lahir = $patient_data['tgl_lahir'] ?? ''; + $jk = $patient_data['jk'] ?? ''; + $alamat = $patient_data['alamat'] ?? ''; + $no_tlp = $patient_data['no_tlp'] ?? ''; + + // Calculate age + if(!empty($patient_data['tgl_lahir'])) { + $birth_date = new \DateTime($patient_data['tgl_lahir']); + $current_date = new \DateTime(); + $age = $current_date->diff($birth_date)->y; + $umur = $age; + } + } + + try { + $data_tb = $this->db('data_tb')->where('no_rawat', $no_rawat)->oneArray(); + if(!$data_tb) { + $data_tb = $this->getDefaultDataTb($no_rawat); + } + } catch(\Exception $e) { + error_log('Error querying data_tb: ' . $e->getMessage()); + $data_tb = $this->getDefaultDataTb($no_rawat); + } + + // Add patient data to data_tb array for template access + $data_tb['tgl_lahir'] = $tgl_lahir; + $data_tb['jk'] = $jk; + $data_tb['alamat'] = $alamat; + $data_tb['no_tlp'] = $no_tlp; + $data_tb['umur'] = $umur; + + $html = $this->draw('form.data_tb.html', [ + 'data_tb' => $data_tb, + 'no_rawat' => $no_rawat, + 'no_rkm_medis' => $no_rkm_medis, + 'nm_pasien' => $nm_pasien + ]); + + error_log('anyDataTb HTML length: ' . strlen($html)); + echo $html; + + } catch(\Exception $e) { + error_log('anyDataTb error: ' . $e->getMessage()); + echo ''; + echo ''; + } + exit(); + } + + private function getDefaultDataTb($no_rawat) { + return [ + 'no_rawat' => $no_rawat, + 'id_tb_03' => '', + 'id_periode_laporan' => '', + 'tanggal_buat_laporan' => '', + 'tahun_buat_laporan' => date('Y'), + 'kd_wasor' => '', + 'noregkab' => '', + 'id_propinsi' => '', + 'kd_kabupaten' => '', + 'id_kecamatan' => '', + 'id_kelurahan' => '', + 'nama_rujukan' => '', + 'sebutkan1' => '', + 'tipe_diagnosis' => '', + 'klasifikasi_lokasi_anatomi' => '', + 'klasifikasi_riwayat_pengobatan' => '', + 'klasifikasi_status_hiv' => '', + 'total_skoring_anak' => '', + 'konfirmasiSkoring5' => '', + 'konfirmasiSkoring6' => '', + 'tanggal_mulai_pengobatan' => '', + 'paduan_oat' => '', + 'sumber_obat' => '', + 'sebutkan' => '', + 'sebelum_pengobatan_hasil_mikroskopis' => '', + 'sebelum_pengobatan_hasil_tes_cepat' => '', + 'sebelum_pengobatan_hasil_biakan' => '', + 'noreglab_bulan_2' => '', + 'hasil_mikroskopis_bulan_2' => '', + 'noreglab_bulan_3' => '', + 'hasil_mikroskopis_bulan_3' => '', + 'noreglab_bulan_5' => '', + 'hasil_mikroskopis_bulan_5' => '', + 'akhir_pengobatan_noreglab' => '', + 'akhir_pengobatan_hasil_mikroskopis' => '', + 'tanggal_hasil_akhir_pengobatan' => '', + 'hasil_akhir_pengobatan' => '', + 'tanggal_dianjurkan_tes' => '', + 'tanggal_tes_hiv' => '', + 'hasil_tes_hiv' => '', + 'ppk' => '', + 'art' => '', + 'tb_dm' => '', + 'terapi_dm' => '', + 'pindah_ro' => '', + 'status_pengobatan' => '', + 'foto_toraks' => '', + 'toraks_tdk_dilakukan' => '', + 'keterangan' => '', + 'kode_icd_x' => '', + // Additional fields found in template + 'tanggal_daftar' => '', + 'tanggal_mulai_berobat' => '', + 'tipe_diagnosis_tb' => '', + 'lokasi_anatomi' => '', + 'klasifikasi_tb' => '', + 'klasifikasi_kasus' => '', + 'sebutkan2' => '', + 'skoring_kontak_tb' => '', + 'skoring_uji_tuberkulin' => '', + 'skoring_status_gizi' => '', + 'skoring_demam_tanpa_sebab' => '', + 'skoring_batuk_kronik' => '', + 'skoring_pembesaran_kelenjar_limfe' => '', + 'skoring_pembengkakan_tulang_sendi' => '', + 'skoring_foto_toraks' => '', + 'skoring_total_skor' => '' + ]; + } + + public function postDataTbSave() + { + try { + // Validasi input + if(empty($_POST['no_rawat'])) { + echo json_encode(['status' => 'error', 'message' => 'No rawat tidak boleh kosong']); + exit(); + } + + // Cek apakah data sudah ada + $existing = $this->db('data_tb')->where('no_rawat', $_POST['no_rawat'])->oneArray(); + + // Siapkan data untuk disimpan + $data = [ + 'no_rawat' => htmlspecialchars($_POST['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'id_tb_03' => isset($_POST['id_tb_03']) ? $_POST['id_tb_03'] : null, + 'id_periode_laporan' => isset($_POST['id_periode_laporan']) ? $_POST['id_periode_laporan'] : null, + 'tanggal_buat_laporan' => isset($_POST['tanggal_buat_laporan']) && !empty($_POST['tanggal_buat_laporan']) ? $_POST['tanggal_buat_laporan'] : null, + 'tahun_buat_laporan' => isset($_POST['tahun_buat_laporan']) && !empty($_POST['tahun_buat_laporan']) ? (int)$_POST['tahun_buat_laporan'] : null, + 'kd_wasor' => isset($_POST['kd_wasor']) && !empty($_POST['kd_wasor']) ? (int)$_POST['kd_wasor'] : null, + 'noregkab' => isset($_POST['noregkab']) && !empty($_POST['noregkab']) ? (int)$_POST['noregkab'] : null, + 'id_propinsi' => isset($_POST['id_propinsi']) ? $_POST['id_propinsi'] : null, + 'kd_kabupaten' => isset($_POST['kd_kabupaten']) ? $_POST['kd_kabupaten'] : null, + 'id_kecamatan' => isset($_POST['id_kecamatan']) ? $_POST['id_kecamatan'] : null, + 'id_kelurahan' => isset($_POST['id_kelurahan']) ? $_POST['id_kelurahan'] : null, + 'nama_rujukan' => isset($_POST['nama_rujukan']) ? $_POST['nama_rujukan'] : null, + 'sebutkan1' => isset($_POST['sebutkan1']) ? $_POST['sebutkan1'] : null, + 'tipe_diagnosis' => isset($_POST['tipe_diagnosis']) ? $_POST['tipe_diagnosis'] : null, + 'klasifikasi_lokasi_anatomi' => isset($_POST['klasifikasi_lokasi_anatomi']) ? $_POST['klasifikasi_lokasi_anatomi'] : null, + 'klasifikasi_riwayat_pengobatan' => isset($_POST['klasifikasi_riwayat_pengobatan']) ? $_POST['klasifikasi_riwayat_pengobatan'] : null, + 'klasifikasi_status_hiv' => isset($_POST['klasifikasi_status_hiv']) ? $_POST['klasifikasi_status_hiv'] : null, + 'total_skoring_anak' => isset($_POST['total_skoring_anak']) ? $_POST['total_skoring_anak'] : null, + 'konfirmasiSkoring5' => isset($_POST['konfirmasiSkoring5']) ? $_POST['konfirmasiSkoring5'] : null, + 'konfirmasiSkoring6' => isset($_POST['konfirmasiSkoring6']) ? $_POST['konfirmasiSkoring6'] : null, + 'tanggal_mulai_pengobatan' => isset($_POST['tanggal_mulai_pengobatan']) && !empty($_POST['tanggal_mulai_pengobatan']) ? $_POST['tanggal_mulai_pengobatan'] : null, + 'paduan_oat' => isset($_POST['paduan_oat']) ? $_POST['paduan_oat'] : null, + 'sumber_obat' => isset($_POST['sumber_obat']) ? $_POST['sumber_obat'] : null, + 'sebutkan' => isset($_POST['sebutkan']) ? $_POST['sebutkan'] : null, + 'sebelum_pengobatan_hasil_mikroskopis' => isset($_POST['sebelum_pengobatan_hasil_mikroskopis']) ? $_POST['sebelum_pengobatan_hasil_mikroskopis'] : null, + 'sebelum_pengobatan_hasil_tes_cepat' => isset($_POST['sebelum_pengobatan_hasil_tes_cepat']) ? $_POST['sebelum_pengobatan_hasil_tes_cepat'] : null, + 'sebelum_pengobatan_hasil_biakan' => isset($_POST['sebelum_pengobatan_hasil_biakan']) ? $_POST['sebelum_pengobatan_hasil_biakan'] : null, + 'noreglab_bulan_2' => isset($_POST['noreglab_bulan_2']) ? $_POST['noreglab_bulan_2'] : null, + 'hasil_mikroskopis_bulan_2' => isset($_POST['hasil_mikroskopis_bulan_2']) ? $_POST['hasil_mikroskopis_bulan_2'] : null, + 'noreglab_bulan_3' => isset($_POST['noreglab_bulan_3']) ? $_POST['noreglab_bulan_3'] : null, + 'hasil_mikroskopis_bulan_3' => isset($_POST['hasil_mikroskopis_bulan_3']) ? $_POST['hasil_mikroskopis_bulan_3'] : null, + 'noreglab_bulan_5' => isset($_POST['noreglab_bulan_5']) ? $_POST['noreglab_bulan_5'] : null, + 'hasil_mikroskopis_bulan_5' => isset($_POST['hasil_mikroskopis_bulan_5']) ? $_POST['hasil_mikroskopis_bulan_5'] : null, + 'akhir_pengobatan_noreglab' => isset($_POST['akhir_pengobatan_noreglab']) ? $_POST['akhir_pengobatan_noreglab'] : null, + 'akhir_pengobatan_hasil_mikroskopis' => isset($_POST['akhir_pengobatan_hasil_mikroskopis']) ? $_POST['akhir_pengobatan_hasil_mikroskopis'] : null, + 'tanggal_hasil_akhir_pengobatan' => isset($_POST['tanggal_hasil_akhir_pengobatan']) && !empty($_POST['tanggal_hasil_akhir_pengobatan']) ? $_POST['tanggal_hasil_akhir_pengobatan'] : null, + 'hasil_akhir_pengobatan' => isset($_POST['hasil_akhir_pengobatan']) ? $_POST['hasil_akhir_pengobatan'] : null, + 'tanggal_dianjurkan_tes' => isset($_POST['tanggal_dianjurkan_tes']) && !empty($_POST['tanggal_dianjurkan_tes']) ? $_POST['tanggal_dianjurkan_tes'] : null, + 'tanggal_tes_hiv' => isset($_POST['tanggal_tes_hiv']) && !empty($_POST['tanggal_tes_hiv']) ? $_POST['tanggal_tes_hiv'] : null, + 'hasil_tes_hiv' => isset($_POST['hasil_tes_hiv']) ? $_POST['hasil_tes_hiv'] : null, + 'ppk' => isset($_POST['ppk']) ? $_POST['ppk'] : null, + 'art' => isset($_POST['art']) ? $_POST['art'] : null, + 'tb_dm' => isset($_POST['tb_dm']) ? $_POST['tb_dm'] : null, + 'terapi_dm' => isset($_POST['terapi_dm']) ? $_POST['terapi_dm'] : null, + 'pindah_ro' => isset($_POST['pindah_ro']) ? $_POST['pindah_ro'] : null, + 'status_pengobatan' => isset($_POST['status_pengobatan']) ? $_POST['status_pengobatan'] : null, + 'foto_toraks' => isset($_POST['foto_toraks']) ? $_POST['foto_toraks'] : null, + 'toraks_tdk_dilakukan' => isset($_POST['toraks_tdk_dilakukan']) ? $_POST['toraks_tdk_dilakukan'] : null, + 'keterangan' => isset($_POST['keterangan']) ? $_POST['keterangan'] : null, + 'kode_icd_x' => isset($_POST['kode_icd_x']) ? $_POST['kode_icd_x'] : null + ]; + + if($existing) { + // Update data yang sudah ada + $query = $this->db('data_tb') + ->where('no_rawat', $_POST['no_rawat']) + ->save($data); + } else { + // Insert data baru + $query = $this->db('data_tb')->save($data); + } + + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data TB berhasil disimpan']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan data TB']); + } + } catch(\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + + public function getDataTbView($no_rawat) + { + $no_rawat = revertNorawat($no_rawat); + $data_tb = $this->db('data_tb') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + if(!$data_tb) { + echo json_encode(['status' => 'error', 'message' => 'Data TB tidak ditemukan']); + exit(); + } + + // Format tanggal untuk tampilan + if($data_tb['tanggal_buat_laporan']) { + $data_tb['tanggal_buat_laporan_formatted'] = date('d/m/Y H:i', strtotime($data_tb['tanggal_buat_laporan'])); + } + if($data_tb['tanggal_mulai_pengobatan']) { + $data_tb['tanggal_mulai_pengobatan_formatted'] = date('d/m/Y', strtotime($data_tb['tanggal_mulai_pengobatan'])); + } + if($data_tb['tanggal_hasil_akhir_pengobatan']) { + $data_tb['tanggal_hasil_akhir_pengobatan_formatted'] = date('d/m/Y', strtotime($data_tb['tanggal_hasil_akhir_pengobatan'])); + } + if($data_tb['tanggal_dianjurkan_tes']) { + $data_tb['tanggal_dianjurkan_tes_formatted'] = date('d/m/Y', strtotime($data_tb['tanggal_dianjurkan_tes'])); + } + if($data_tb['tanggal_tes_hiv']) { + $data_tb['tanggal_tes_hiv_formatted'] = date('d/m/Y', strtotime($data_tb['tanggal_tes_hiv'])); + } + + echo $this->draw('view.data_tb.html', ['data_tb' => htmlspecialchars_array($data_tb)]); + exit(); + } + + public function postDataTbHapus() + { + try { + if(empty($_POST['no_rawat'])) { + echo json_encode(['status' => 'error', 'message' => 'No rawat tidak boleh kosong']); + exit(); + } + + $query = $this->db('data_tb') + ->where('no_rawat', $_POST['no_rawat']) + ->delete(); + + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data TB berhasil dihapus']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menghapus data TB atau data tidak ditemukan']); + } + } catch(\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); + } + + public function apiSaveDiagnosa() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kd_penyakit' => $input['kd_penyakit'], + 'status' => $input['status'] ?? 'Ralan', + 'prioritas' => $input['prioritas'], + 'status_penyakit' => 'Baru' + ]; + + try { + $this->db('diagnosa_pasien')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteDiagnosa() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('diagnosa_pasien') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_penyakit', $input['kd_penyakit']) + ->where('prioritas', $input['prioritas']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveProsedur() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kode' => $input['kode'], + 'status' => $input['status'] ?? 'Ralan', + 'prioritas' => $input['prioritas'] + ]; + + try { + $this->db('prosedur_pasien')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteProsedur() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('prosedur_pasien') + ->where('no_rawat', $input['no_rawat']) + ->where('kode', $input['kode']) + ->where('prioritas', $input['prioritas']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveCatatan() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $input['no_rawat']); + + $data = [ + 'tanggal' => date('Y-m-d'), + 'jam' => date('H:i:s'), + 'no_rawat' => $input['no_rawat'], + 'kd_dokter' => $kd_dokter, + 'catatan' => $input['catatan'] + ]; + + try { + $this->db('catatan_perawatan')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteCatatan() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('catatan_perawatan') + ->where('no_rawat', $input['no_rawat']) + ->where('tanggal', $input['tanggal']) + ->where('jam', $input['jam']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveBerkas() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kode' => $input['judul'] ?? '', + 'lokasi_file' => $input['deskripsi'] ?? '' + ]; + + try { + $this->db('berkas_digital_perawatan')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteBerkas() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('berkas_digital_perawatan') + ->where('no_rawat', $input['no_rawat']) + ->where('kode', $input['judul'] ?? $input['kode']) + ->where('lokasi_file', $input['deskripsi'] ?? $input['lokasi_file']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveResume() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $input['no_rawat']); + + // Check if exists + $exists = $this->db('resume_pasien')->where('no_rawat', $input['no_rawat'])->oneArray(); + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kd_dokter' => $kd_dokter, + 'diagnosa_utama' => $input['diagnosa_utama'] ?? '', + 'diagnosa_sekunder' => $input['diagnosa_sekunder'] ?? '', + 'jalannya_penyakit' => $input['jalannya_penyakit'] ?? '', + 'obat_pulang' => $input['terapi'] ?? '', + 'kondisi_pulang' => $input['kondisi_pulang'] ?? 'Hidup', + // Default required fields + 'keluhan_utama' => '', + 'pemeriksaan_penunjang' => '', + 'hasil_laborat' => '', + 'kd_diagnosa_utama' => '', + 'kd_diagnosa_sekunder' => '', + 'diagnosa_sekunder2' => '', + 'kd_diagnosa_sekunder2' => '', + 'diagnosa_sekunder3' => '', + 'kd_diagnosa_sekunder3' => '', + 'diagnosa_sekunder4' => '', + 'kd_diagnosa_sekunder4' => '', + 'prosedur_utama' => '', + 'kd_prosedur_utama' => '', + 'prosedur_sekunder' => '', + 'kd_prosedur_sekunder' => '', + 'prosedur_sekunder2' => '', + 'kd_prosedur_sekunder2' => '', + 'prosedur_sekunder3' => '', + 'kd_prosedur_sekunder3' => '' + ]; + + try { + if ($exists) { + $this->db('resume_pasien')->where('no_rawat', $input['no_rawat'])->save($data); + } else { + $this->db('resume_pasien')->save($data); + } + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteResume() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + if (!isset($input['no_rawat']) || !isset($input['kd_dokter'])) { + return ['status' => 'error', 'message' => 'Missing required parameters: no_rawat or kd_dokter']; + } + + $this->db('resume_pasien') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_dokter', $input['kd_dokter']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveRujukanInternal() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'kd_poli' => $input['kd_poli'], + 'kd_dokter' => $input['kd_dokter'], + 'isi_rujukan' => $input['catatan'] ?? '' + ]; + + try { + $this->db('mlite_rujukan_internal_poli')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteRujukanInternal() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $this->db('mlite_rujukan_internal_poli') + ->where('no_rawat', $input['no_rawat']) + ->where('kd_poli', $input['kd_poli']) + ->where('kd_dokter', $input['kd_dokter']) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveLaporanOperasi() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_create', 'rawat_jalan')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + $data = [ + 'no_rawat' => $input['no_rawat'], + 'tanggal' => $input['tanggal'] . ' ' . $input['jam'], + 'operator' => $input['operator'], + 'laporan_operasi' => $input['laporan'] ?? '', + // Defaults + 'operator2' => '-', 'operator3' => '-', 'asisten_operator1' => '-', 'asisten_operator2' => '-', 'asisten_operator3' => '-', + 'instrumen' => '-', 'dokter_anak' => '-', 'perawat_resusitas' => '-', 'dokter_anestesi' => '-', 'asisten_anestesi' => '-', + 'bidan' => '-', 'perawat_luar' => '-', 'omloop' => '-', 'omloop2' => '-', 'omloop3' => '-', 'omloop4' => '-', 'omloop5' => '-' + ]; + + try { + $this->db('laporan_operasi')->save($data); + return ['status' => 'success', 'data' => $data]; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiDeleteLaporanOperasi() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_delete', 'rawat_inap')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + $tanggal = $input['tanggal']; + if(isset($input['jam'])) { + $tanggal .= ' ' . $input['jam']; + } + + $this->db('laporan_operasi') + ->where('no_rawat', $input['no_rawat']) + ->where('tanggal', $tanggal) + ->delete(); + return ['status' => 'success']; + } catch (\PDOException $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + // ADIME Gizi Methods + public function postSaveadimegizi() + { + $data = [ + 'no_rawat' => $_POST['no_rawat'], + 'tanggal' => $_POST['tanggal'], + 'asesmen' => $_POST['asesmen'] ?? null, + 'diagnosis' => $_POST['diagnosis'] ?? null, + 'intervensi' => $_POST['intervensi'] ?? null, + 'monitoring' => $_POST['monitoring'] ?? null, + 'evaluasi' => $_POST['evaluasi'] ?? null, + 'instruksi' => $_POST['instruksi'] ?? null, + 'nip' => $this->core->getUserInfo('username', null, true) + ]; + + // Cek apakah sudah ada data dengan no_rawat dan tanggal yang sama + $existing = $this->db('catatan_adime_gizi') + ->where('no_rawat', $data['no_rawat']) + ->where('tanggal', $data['tanggal']) + ->oneArray(); + + try { + if($existing) { + // Update data yang sudah ada + $query = $this->db('catatan_adime_gizi') + ->where('no_rawat', $data['no_rawat']) + ->where('tanggal', $data['tanggal']) + ->save($data); + } else { + // Insert data baru + $query = $this->db('catatan_adime_gizi')->save($data); + } + + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data ADIME Gizi berhasil disimpan']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan data ADIME Gizi']); + } + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + + exit(); + } + + public function postGetadimegizi() + { + $no_rawat = $_POST['no_rawat']; + + try { + $data = $this->db('catatan_adime_gizi') + ->join('petugas', 'petugas.nip=catatan_adime_gizi.nip') + ->select([ + 'catatan_adime_gizi.no_rawat', + 'catatan_adime_gizi.tanggal', + 'catatan_adime_gizi.asesmen', + 'catatan_adime_gizi.diagnosis', + 'catatan_adime_gizi.intervensi', + 'catatan_adime_gizi.monitoring', + 'catatan_adime_gizi.evaluasi', + 'catatan_adime_gizi.instruksi', + 'petugas.nama as nama_petugas' + ]) + ->where('catatan_adime_gizi.no_rawat', $no_rawat) + ->desc('catatan_adime_gizi.tanggal') + ->toArray(); + + echo json_encode(htmlspecialchars_array($data)); + } catch (\Exception $e) { + echo json_encode([]); + } + + exit(); + } + + public function postGetadimegizidetail() + { + $no_rawat = $_POST['no_rawat']; + $tanggal = $_POST['tanggal']; + + try { + $data = $this->db('catatan_adime_gizi') + ->where('no_rawat', $no_rawat) + ->where('tanggal', $tanggal) + ->oneArray(); + + echo json_encode(htmlspecialchars_array($data)); + } catch (\Exception $e) { + echo json_encode(null); + } + + exit(); + } + + public function postDeleteadimegizi() + { + $no_rawat = $_POST['no_rawat']; + $tanggal = $_POST['tanggal']; + + try { + $query = $this->db('catatan_adime_gizi') + ->where('no_rawat', $no_rawat) + ->where('tanggal', $tanggal) + ->delete(); + + if($query) { + echo json_encode(['status' => 'success', 'message' => 'Data ADIME Gizi berhasil dihapus']); + } else { + echo json_encode(['status' => 'error', 'message' => 'Gagal menghapus data ADIME Gizi']); + } + } catch (\Exception $e) { + echo json_encode(['status' => 'error', 'message' => 'Error: ' . $e->getMessage()]); + } + exit(); } @@ -1612,9 +4200,4 @@ private function _addHeaderFiles() $this->core->addJS(url([ADMIN, 'rawat_jalan', 'javascript']), 'footer'); } - protected function data_icd($table) - { - return new DB_ICD($table); - } - } diff --git a/plugins/rawat_jalan/Help.md b/plugins/rawat_jalan/Help.md deleted file mode 100644 index 1169cd41f..000000000 --- a/plugins/rawat_jalan/Help.md +++ /dev/null @@ -1,3 +0,0 @@ -
                                                - -
                                                diff --git a/plugins/rawat_jalan/Info.php b/plugins/rawat_jalan/Info.php index 2ff049176..80925f688 100644 --- a/plugins/rawat_jalan/Info.php +++ b/plugins/rawat_jalan/Info.php @@ -4,8 +4,9 @@ 'name' => 'Rawat Jalan', 'description' => 'Modul pendaftaran layanan untuk mLITE', 'author' => 'Basoro', + 'category' => 'layanan', 'version' => '1.0', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'wheelchair', 'install' => function () use ($core) { }, diff --git a/plugins/rawat_jalan/README.md b/plugins/rawat_jalan/README.md new file mode 100644 index 000000000..87b330134 --- /dev/null +++ b/plugins/rawat_jalan/README.md @@ -0,0 +1,79 @@ +# Plugin Rawat Jalan + +Modul pendaftaran dan pengelolaan layanan rawat jalan di mLITE, mencakup registrasi pasien, booking, jadwal dokter, input tindakan dan obat, hingga integrasi BPJS. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Rawat Jalan**. +- Pilih submenu sesuai kebutuhan: + - Kelola + - Rawat Jalan + - Booking Registrasi + - Booking Periksa + - Jadwal Dokter + +## Panduan Pengguna (Petugas) + +1. **Kelola (Dashboard)** + - Halaman utama Rawat Jalan sebagai titik masuk modul. + +2. **Rawat Jalan** + - Tampil daftar kunjungan rawat jalan hari ini (default), dapat difilter berdasarkan rentang tanggal. + - Filter berdasarkan status periksa: **Belum**, **Selesai**, atau **Lunas**. + - Tampilan dibatasi sesuai poliklinik yang menjadi wewenang akun pengguna (kecuali admin atau centang "Semua Poli"). + - **Mendaftarkan Pasien Baru**: + - Pilih pasien (no rekam medis), poliklinik, dokter, penjamin, dan tanggal. + - Sistem otomatis mengisi no rawat, no urut antrian, biaya registrasi, dan umur pasien. + - Jika tanggal lebih dari hari ini, registrasi dicatat sebagai **booking** (`booking_registrasi`). + - **Input Tindakan**: + - Pilih jenis perawatan, provider (dokter/petugas/dokter+petugas), tanggal, jam, dan jumlah. + - Sistem menyimpan ke tabel `rawat_jl_dr`, `rawat_jl_pr`, atau `rawat_jl_drpr` sesuai provider. + - **Input Obat**: + - Pilih obat, isi jumlah dan aturan pakai. + - Sistem membuat atau menggabungkan resep harian ke tabel `resep_obat` dan `resep_dokter`. + - **Input Racikan**: + - Isi nama racikan, komposisi obat, kandungan, jumlah, dan aturan pakai. + - Data tersimpan di `resep_dokter_racikan` dan `resep_dokter_racikan_detail`. + - **Rujukan Internal**: Aktifkan filter rujukan internal untuk menampilkan pasien yang dirujuk antar poli. + - **Dokumen Pendukung**: Buat surat rujukan, surat sakit, surat sehat, dan persetujuan umum dari halaman detail pasien. + +3. **Booking Registrasi** + - Lihat daftar booking pendaftaran yang belum diproses. + - Ubah status booking menjadi **Terdaftar** untuk mengkonversinya menjadi `reg_periksa` resmi pada hari pemeriksaan. + +4. **Booking Periksa** + - Kelola jadwal booking pemeriksaan pasien yang telah dikonfirmasi. + +5. **Jadwal Dokter** + - Lihat dan kelola jadwal praktik dokter per poliklinik. + - Jadwal bersumber dari tabel `jadwal` yang dikelola di modul Master. + +## Panduan Admin + +1. **Pengaturan Poliklinik dan Dokter** + - Kelola data poliklinik (termasuk biaya registrasi) dan dokter di modul **Master**. + - Pastikan status poliklinik dan dokter aktif (`status = 1`) agar tampil di form pendaftaran. + +2. **Pengaturan IGD** + - Di menu **Settings → Umum**, atur kode poliklinik IGD (`igd`) agar pasien IGD tidak tercampur di daftar rawat jalan biasa. + +3. **Pengaturan Antrian per Dokter** + - Aktifkan opsi `dokter_ralan_per_dokter` di Settings agar nomor urut antrian dihitung per dokter (bukan per poliklinik). + +4. **Hak Akses Poliklinik** + - Atur `cap` (capability) akun petugas dengan kode poliklinik yang menjadi wewenangnya (dipisah koma). + - Admin dapat melihat semua poliklinik; petugas hanya melihat poliklinik sesuai `cap`-nya. + +5. **Integrasi vClaim BPJS** + - Jika modul `vclaim` aktif, tombol pengajuan SEP muncul di daftar pasien. + - Nomor SEP dari bridging ditampilkan di kolom SEP. + +6. **Berkas Digital** + - Berkas digital pasien (persetujuan, form, dll.) diunggah ke `webapps/berkasrawat/pages/upload/`. + +## Catatan + +- Registrasi untuk tanggal yang akan datang otomatis masuk ke `booking_registrasi`; registrasi hari ini langsung ke `reg_periksa`. +- No rawat dihasilkan otomatis dengan format `YYYY/MM/DD/XXXXX`. +- Sistem mencoba kembali hingga 5 kali jika terjadi konflik no rawat (duplicate key) saat pendaftaran bersamaan. diff --git a/plugins/rawat_jalan/js/admin/rawat_jalan.js b/plugins/rawat_jalan/js/admin/rawat_jalan.js index f77cc86fb..ed6fdb8fe 100644 --- a/plugins/rawat_jalan/js/admin/rawat_jalan.js +++ b/plugins/rawat_jalan/js/admin/rawat_jalan.js @@ -9,10 +9,23 @@ $('#provider').hide(); $('#aturan_pakai').hide(); $("#form_kontrol").hide(); +// Inisialisasi jam_rawat saat halaman dibuka +$(function(){ + var baseURL = mlite.url + '/' + mlite.admin; + var $jr = $('input:text[name=jam_rawat]').last(); + if ($jr.length) { + $jr.focus(); + if (!$jr.val()) { + $.post(baseURL + '/rawat_jalan/cekwaktu?t=' + mlite.token, {}, function(data){ + $jr.val(data); + }); + } + } +}); + // tombol buka form diklik $("#index").on('click', '#bukaform', function(){ var baseURL = mlite.url + '/' + mlite.admin; - event.preventDefault(); $("#form").show().load(baseURL + '/rawat_jalan/form?t=' + mlite.token); $("#bukaform").val("Tutup Form"); $("#bukaform").attr("id", "tutupform"); @@ -20,7 +33,6 @@ $("#index").on('click', '#bukaform', function(){ // tombol tutup form diklik $("#index").on('click', '#tutupform', function(){ - event.preventDefault(); $("#form").hide(); $("#tutupform").val("Buka Form"); $("#tutupform").attr("id", "bukaform"); @@ -42,7 +54,9 @@ $("#form").on("click","#no_rawat", function(event){ var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); var url = baseURL + '/rawat_jalan/maxid?t=' + mlite.token; + var tgl_registrasi = $('#tgl_registrasi').val(); $.post(url, { + tgl_registrasi: tgl_registrasi } ,function(data) { $("#no_rawat").val(data); }); @@ -52,12 +66,14 @@ $("#form").on("click","#no_reg", function(event){ var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); var url = baseURL + '/rawat_jalan/maxantrian?t=' + mlite.token; + var tgl_registrasi = $('#tgl_registrasi').val(); var kd_poli = $('select[name=kd_poli]').val(); var kd_dokter = $('select[name=kd_dokter]').val(); $.post(url, { kd_poli: kd_poli, - kd_dokter: kd_dokter + kd_dokter: kd_dokter, + tgl_registrasi: tgl_registrasi } ,function(data) { if(data == '888888') { alert('Kuota pendaftaran sudah terpenuhi.\nSilahkan pilih tanggal lain atau pilih dokter lain.'); @@ -110,23 +126,42 @@ $("#form").on("click", "#simpan", function(event){ kd_pj: kd_pj, stts_daftar: stts_daftar },function(data) { - $("#display").show().load(baseURL + '/rawat_jalan/display?t=' + mlite.token); - bersih(); - $("#status_pendaftaran").hide(); - $('#notif').html("
                                                "+ - "Data pendaftaran rawat jalan telah disimpan!"+ - ""+ - "
                                                ").show(); - }).error(function () { - $('#notif').html("
                                                "+ - "Gagal menyimpan data pendaftaran rawat jalan!"+ - ""+ - "
                                                ").show(); + console.log(data); + data = JSON.parse(data); + var audio = new Audio('{?=url()?}/assets/sound/' + data.status + '.mp3'); + audio.play(); + if(data.status == 'success') { + if(typeof ws != 'undefined' && typeof ws.readyState != 'undefined' && ws.readyState == 1){ + let payload = { + 'action' : 'simpan', + 'modul' : 'rawat_jalan' + } + ws.send(JSON.stringify(payload)); + console.log(payload); + } else { + $("#display").show().load(baseURL + '/rawat_jalan/display?t=' + mlite.token); + } + bersih(); + $("#status_pendaftaran").hide(); + $('#notif').html("
                                                "+ + "Data pendaftaran rawat jalan telah disimpan!"+ + ""+ + "
                                                ").show(); + } + if(data.status == 'error') { + $('#notif').html("
                                                "+ + "Gagal menyimpan data pendaftaran rawat jalan!
                                                "+ + data.msg+ + ""+ + "
                                                ").show(); + } }); } event.preventDefault(); }); + + $("#display").on("click",".antrian", function(event){ var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); @@ -143,6 +178,7 @@ $("#display").on("click",".riwayat_perawatan", function(event){ // ketika baris data diklik $("#display").on("click", ".edit", function(event){ + {if: $this->core->checkPermission($this->core->getUserInfo('username'), 'can_update', 'rawat_jalan') == true} var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); var url = baseURL + '/rawat_jalan/form?t=' + mlite.token; @@ -158,6 +194,7 @@ $("#display").on("click", ".edit", function(event){ $('input:hidden[name=stts_daftar]').val(get_stts_daftar); }); }); + {/if} }); // ketika tombol hapus ditekan @@ -213,6 +250,7 @@ $("#display").on("click", ".sep", function(event){ $('#no_kartu_peserta').text(json_obj[0].response.peserta.noKartu); $('#no_mr_peserta').text(no_rkm_medis); $('#nik_peserta').text(json_obj[0].response.peserta.nik); + $('#prov_umum_peserta').text(json_obj[0].response.peserta.provUmum.nmProvider); $('#tgl_lahir_peserta').text(json_obj[0].response.peserta.tglLahir); $('#status_peserta').text(json_obj[0].response.peserta.statusPeserta.keterangan); $('#jenis_peserta').text(json_obj[0].response.peserta.jenisPeserta.keterangan); @@ -417,8 +455,8 @@ $("#form_soap").on("click", "#simpan_soap", function(event){ event.preventDefault(); var no_rawat = $('input:text[name=no_rawat]').val(); - var tgl_perawatan = $('input:text[name=tgl_perawatan]').val(); - var jam_rawat = $('input:text[name=jam_rawat]').val(); + var tgl_perawatan = $('#soap_tgl_perawatan').val(); + var jam_rawat = $('#soap_jam_rawat').val(); var suhu_tubuh = $('input:text[name=suhu_tubuh]').val(); var tensi = $('input:text[name=tensi]').val(); var nadi = $('input:text[name=nadi]').val(); @@ -497,6 +535,47 @@ $("#form_soap").on("click", "#simpan_soap", function(event){ }); // ketika tombol hapus ditekan +$("#soap").on("click",".copy_soap", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var suhu_tubuh = $(this).attr("data-suhu_tubuh"); + var tensi = $(this).attr("data-tensi"); + var nadi = $(this).attr("data-nadi"); + var respirasi = $(this).attr("data-respirasi"); + var tinggi = $(this).attr("data-tinggi"); + var berat = $(this).attr("data-berat"); + var gcs = $(this).attr("data-gcs"); + var kesadaran = $(this).attr("data-kesadaran"); + var alergi = $(this).attr("data-alergi"); + var lingkar_perut = $(this).attr("data-lingkar_perut"); + var keluhan = $(this).attr("data-keluhan"); + var pemeriksaan = $(this).attr("data-pemeriksaan"); + var penilaian = $(this).attr("data-penilaian"); + var rtl = $(this).attr("data-rtl"); + var instruksi = $(this).attr("data-instruksi"); + var evaluasi = $(this).attr("data-evaluasi"); + var spo2 = $(this).attr("data-spo2"); + + $('input:text[name=suhu_tubuh]').val(suhu_tubuh); + $('input:text[name=tensi]').val(tensi); + $('input:text[name=nadi]').val(nadi); + $('input:text[name=respirasi]').val(respirasi); + $('input:text[name=tinggi]').val(tinggi); + $('input:text[name=berat]').val(berat); + $('input:text[name=gcs]').val(gcs); + $('input:text[name=kesadaran]').val(kesadaran); + $('input:text[name=alergi]').val(alergi); + $('input:text[name=lingkar_perut]').val(lingkar_perut); + $('textarea[name=keluhan]').val(keluhan); + $('textarea[name=pemeriksaan]').val(pemeriksaan); + $('textarea[name=penilaian]').val(penilaian); + $('textarea[name=rtl]').val(rtl); + $('textarea[name=instruksi]').val(instruksi); + $('textarea[name=evaluasi]').val(evaluasi); + $('input:text[name=spo2]').val(spo2); + +}); + $("#soap").on("click",".edit_soap", function(event){ var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); @@ -609,8 +688,6 @@ $("#form_rincian").on("click", "#selesai", function(event){ $("#soap").hide(); $("#berkasdigital").hide(); $("#form_kontrol").hide(); - $("#kontrol").hide(); - $("#form_kontrol").hide(); $("#surat_kontrol").hide(); }); @@ -626,8 +703,6 @@ $("#form_soap").on("click", "#selesai_soap", function(event){ $("#soap").hide(); $("#berkasdigital").hide(); $("#form_kontrol").hide(); - $("#kontrol").hide(); - $("#form_kontrol").hide(); $("#surat_kontrol").hide(); }); @@ -643,12 +718,11 @@ $("#form_kontrol").on("click", "#selesai_kontrol", function(event){ $("#soap").hide(); $("#berkasdigital").hide(); $("#form_kontrol").hide(); - $("#kontrol").hide(); $("#surat_kontrol").hide(); }); // ketika tombol hapus ditekan -$("#kontrol").on("click",".hapus_kontrol", function(event){ +$("#surat_kontrol").on("click",".hapus_kontrol", function(event){ var baseURL = mlite.url + '/' + mlite.admin; event.preventDefault(); var url = baseURL + '/rawat_jalan/hapuskontrol?t=' + mlite.token; @@ -674,7 +748,7 @@ $("#kontrol").on("click",".hapus_kontrol", function(event){ $.post(url, {no_rkm_medis : no_rkm_medis, }, function(data) { // tampilkan data - $("#kontrol").html(data).show(); + $("#surat_kontrol").html(data).show(); }); /* $('input:text[name=suhu_tubuh]').val(""); @@ -776,6 +850,7 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ var aturan_pakai = $('input:text[name=aturan_pakai]').val(); var kat = $('input:hidden[name=kat]').val(); var jml = $('input:text[name=jml]').val(); + var jml_tindakan = $('input:text[name=jml_tindakan]').val(); var url = baseURL + '/rawat_jalan/savedetail?t=' + mlite.token; $.post(url, {no_rawat : no_rawat, @@ -788,7 +863,8 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ biaya : biaya, aturan_pakai : aturan_pakai, kat : kat, - jml : jml + jml : jml, + jml_tindakan : jml_tindakan }, function(data) { // tampilkan data @@ -799,6 +875,11 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ // tampilkan data $("#rincian").html(data).show(); }); + $.post(baseURL + '/rawat_jalan/cekwaktu?t=' + mlite.token, { + } ,function(data) { + $("#form_rincian #rincian_jam_reg").val(data); + $('input:text[name=jam_rawat]').last().val(data).focus(); + }); $('input:hidden[name=kd_jenis_prw]').val(""); $('input:text[name=nm_perawatan]').val(""); $('input:hidden[name=kat]').val(""); @@ -807,6 +888,8 @@ $("#form_rincian").on("click", "#simpan_rincian", function(event){ $('input:text[name=nama_provider2]').val(""); $('input:text[name=kode_provider]').val(""); $('input:text[name=kode_provider2]').val(""); + $('input:text[name=jam_rawat]').last().val(""); + $('input:text[name=jml_tindakan]').val(""); $('#notif').html("
                                                "+ "Data pasien telah disimpan!"+ ""+ @@ -887,7 +970,7 @@ $("#form_kontrol").on("click", "#simpan_kontrol", function(event){ $.post(url, {no_rkm_medis : no_rkm_medis, }, function(data) { // tampilkan data - $("#kontrol").html(data).show(); + $("#surat_kontrol").html(data).show(); }); $('input:text[name=nm_perawatan]').val(""); $('input:text[name=biaya]').val(""); @@ -940,7 +1023,7 @@ $("#form_kontrol").on("click", "#simpan_kontrol_bpjs", function(event){ $.post(url, {no_rkm_medis : no_rkm_medis, }, function(data) { // tampilkan data - $("#kontrol").html(data).show(); + $("#surat_kontrol").html(data).show(); }); $('input:text[name=nm_perawatan]').val(""); $('input:text[name=biaya]').val(""); @@ -1073,3 +1156,263 @@ $("#form_soap").on("click","#odontogram", function(event){ }).modal(); return false; }); + +$("#form_soap").on("click",".assesment", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $('input:text[name=no_rawat]').val(); + + var modal = $('#assesmentModal'); + var modalContent = $('#assesmentModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + // Load form assessment dengan data pasien + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_jalan/assessment/' + set_no_rawat + '?t=' + mlite.token, function() { + // Load data assessment yang sudah ada + $('.tampildata_assessment').load(baseURL + '/rawat_jalan/assessmenttampil/' + set_no_rawat + '?t=' + mlite.token); + }); + }).modal(); + return false; +}); + +// Handler untuk assessment di display juga +$("#display").on("click",".assesment", function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + + var modal = $('#assesmentModal'); + var modalContent = $('#assesmentModal .modal-content'); + + modal.off('show.bs.modal'); + modal.on('show.bs.modal', function () { + // Load form assessment dengan data pasien + var set_no_rawat = no_rawat.replace(/\//g, ''); + modalContent.load(baseURL + '/rawat_jalan/assessment/' + set_no_rawat + '?t=' + mlite.token, function() { + // Load data assessment yang sudah ada + $('.tampildata_assessment').load(baseURL + '/rawat_jalan/assessmenttampil/' + set_no_rawat + '?t=' + mlite.token); + }); + }).modal(); + return false; +}); + +// Event delegation untuk rujuk internal - bekerja untuk elemen dinamis +$(document).on('click', 'a[href="#rujuk_internal"]', function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + var url = baseURL + '/rawat_jalan/rujukaninternal?t=' + mlite.token; + var url_get = baseURL + '/rawat_jalan/getrujukaninternal?t=' + mlite.token; + + $.post(url_get, {no_rawat: no_rawat}, function(data) { + var rujukan = JSON.parse(data); + var kd_poli_val = ''; + var kd_dokter_val = ''; + var isi_rujukan_val = ''; + var jawab_rujukan_val = ''; + var disabled_attr = ''; + + if(rujukan) { + kd_poli_val = rujukan.kd_poli; + kd_dokter_val = rujukan.kd_dokter; + isi_rujukan_val = rujukan.isi_rujukan; + jawab_rujukan_val = rujukan.jawab_rujukan; + disabled_attr = ' disabled'; + } + + var rujuk_internal = '' + + '
                                                ' + + '' + + '' + + '
                                                ' + + '
                                                ' + + '' + + '' + + '
                                                ' + + '
                                                ' + + '' + + '' + + '
                                                ' + + '
                                                ' + + '' + + '' + + '
                                                ' + + ''; + + // tampilkan dialog konfirmasi + bootbox.dialog({ + message: rujuk_internal, + title: 'Rujuk Internal', + buttons: { + main: { + label: 'Simpan', + className: 'btn-primary', + callback() { + var kd_poli = $('#kd_poli').val(); + var kd_dokter = $('#kd_dokter').val(); + var isi_rujukan = $('#isi_rujukan').val(); + var jawab_rujukan = $('#jawab_rujukan').val(); + $.post(url, { + no_rawat: no_rawat, + kd_poli: kd_poli, + kd_dokter: kd_dokter, + isi_rujukan: isi_rujukan, + jawab_rujukan: jawab_rujukan, + } ,function(data) { + var data = JSON.parse(data); + alert(data.message); + // Reload display setelah simpan + $("#display").load(baseURL + '/rawat_jalan/display?t=' + mlite.token); + }); + } + } + } + }); + + // Set values for selects if they exist + if(kd_poli_val) { + $('#kd_poli').val(kd_poli_val); + } + if(kd_dokter_val) { + $('#kd_dokter').val(kd_dokter_val); + } + + $('select').not(':disabled').selectator(); + }); + + event.stopPropagation(); + return false; +}); + +// Event delegation untuk edit rujukan internal +$(document).on('click', 'a[href="#jawab_rujukan_internal"]', function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + var dokter_tujuan = $(this).attr("data-dokter_tujuan"); + var poli_tujuan = $(this).attr("data-poli_tujuan"); + var keterangan = $(this).attr("data-keterangan"); + var keterangan_jawab = $(this).attr("data-keterangan_jawab"); + var url = baseURL + '/rawat_jalan/editrujukaninternal?t=' + mlite.token; + var edit_rujukan_internal = '' + + '
                                                ' + + '' + + '' + + '
                                                ' + + '
                                                ' + + '' + + '' + + '
                                                ' + + '
                                                ' + + '' + + '' + + '
                                                ' + + '
                                                ' + + '' + + '' + + '
                                                ' + + ''; + + // tampilkan dialog konfirmasi + bootbox.dialog({ + message: edit_rujukan_internal, + title: 'Jawab Rujukan Internal', + buttons: { + main: { + label: 'Update', + className: 'btn-primary', + callback() { + var jawab_rujukan = $('#jawab_rujukan').val(); + $.post(url, { + no_rawat: no_rawat, + jawab_rujukan: jawab_rujukan, + } ,function(data) { + var data = JSON.parse(data); + alert(data.message); + // Reload display setelah update + $("#display").load(baseURL + '/rawat_jalan/display?t=' + mlite.token); + }); + } + } + } + }); + $('select').selectator(); + event.stopPropagation(); + return false; +}); + +// Event delegation untuk hapus rujukan internal +$(document).on('click', 'a[href="#hapus_rujukan_internal"]', function(event){ + var baseURL = mlite.url + '/' + mlite.admin; + event.preventDefault(); + var no_rawat = $(this).attr("data-no_rawat"); + var url = baseURL + '/rawat_jalan/hapusrujukaninternal?t=' + mlite.token; + + // tampilkan dialog konfirmasi + bootbox.confirm("Apakah Anda yakin ingin menghapus rujukan internal ini?", function(result){ + if (result){ + $.post(url, { + no_rawat: no_rawat + } ,function(data) { + // console.log(data); + var data = JSON.parse(data); + alert(data.message); + // Reload display setelah hapus + $("#display").load(baseURL + '/rawat_jalan/display?t=' + mlite.token); + }); + } + }); + event.stopPropagation(); + return false; +}); + +{if: $mlite.websocket == 'ya'} + + {if: $mlite.websocket_proxy != ''} + var URL_WEBSOCKET = "{$mlite.websocket_proxy}"; + {else} + var URL_WEBSOCKET = "wss://:3892"; + {/if} + + var ws = new WebSocket(URL_WEBSOCKET); + var baseURL = mlite.url + '/' + mlite.admin; + + ws.onmessage = function(response){ + try{ + output = JSON.parse(response.data); + if(output['action'] == 'simpan'){ + if(output['modul'] == 'rawat_jalan'){ + $("#rawat_jalan #display").show().load(baseURL + '/rawat_jalan/display?t=' + mlite.token); + } + } + }catch(e){ + console.log(e); + } + } + + + ws.onclose = function(){ + // Jika terputus dari websocket server, maka mencoba terhubung kembali. + var interval_reconnect_ws = setInterval(function(){ + if(ws.readyState != 0){ + if(ws.readyState == 1){ // readyState = 1 (Open) , berarti sudah terhubung dengan websocket. Maka gak perlu interval lagi. + clearInterval(interval_reconnect_ws); + }else{ + ws = new WebSocket(URL_WEBSOCKET); + } + } + + },5000); + } + +{/if} diff --git a/plugins/rawat_jalan/view/admin/antrian.html b/plugins/rawat_jalan/view/admin/antrian.html index caad45bbf..1b996868a 100644 --- a/plugins/rawat_jalan/view/admin/antrian.html +++ b/plugins/rawat_jalan/view/admin/antrian.html @@ -37,13 +37,13 @@
                                                - + @@ -57,39 +57,39 @@ diff --git a/plugins/rawat_jalan/view/admin/assesment.html b/plugins/rawat_jalan/view/admin/assesment.html new file mode 100644 index 000000000..474becb8c --- /dev/null +++ b/plugins/rawat_jalan/view/admin/assesment.html @@ -0,0 +1,742 @@ + + + + + + diff --git a/plugins/rawat_jalan/view/admin/assesment.tampil.html b/plugins/rawat_jalan/view/admin/assesment.tampil.html new file mode 100644 index 000000000..544a7bdaf --- /dev/null +++ b/plugins/rawat_jalan/view/admin/assesment.tampil.html @@ -0,0 +1,107 @@ +
                                                {$settings.nama_instansi} {?=isset_or($settings.nama_instansi)?}
                                                -
                                                {$settings.alamat}
                                                - {$settings.nomor_telepon} - {$settings.email} +
                                                {?=isset_or($settings.alamat)?}
                                                + {?=isset_or($settings.nomor_telepon)?} - {?=isset_or($settings.email)?}
                                                - {$rawat_jalan.no_reg} + {?=isset_or($rawat_jalan.no_reg)?}
                                                - ID Daftar{$rawat_jalan.no_rawat} + ID Daftar{?=isset_or($rawat_jalan.no_rawat)?}
                                                - Nama{$rawat_jalan.nm_pasien} + Nama{?=isset_or($rawat_jalan.nm_pasien)?}
                                                - Nomor RM{$rawat_jalan.no_rkm_medis} + Nomor RM{?=isset_or($rawat_jalan.no_rkm_medis)?}
                                                - Poliklinik{$rawat_jalan.nm_poli} + Poliklinik{?=isset_or($rawat_jalan.nm_poli)?}
                                                - Dokter{$rawat_jalan.nm_dokter} + Dokter{?=isset_or($rawat_jalan.nm_dokter)?}
                                                - Penjamin{$rawat_jalan.png_jawab} + Penjamin{?=isset_or($rawat_jalan.png_jawab)?}
                                                + + + + + + + + + + + + + + + {if: $penilaian_awal_keperawatan_ralan} + + + + + + + + + + + + {else} + + + + {/if} + +
                                                Nomor RawatTanggalInformasiKeluhan UtamaVital SignsStatus PsikoNyeriPetugasAksi
                                                {?=isset_or($penilaian_awal_keperawatan_ralan.no_rawat)?}{?=isset_or($penilaian_awal_keperawatan_ralan.tanggal)?}{?=isset_or($penilaian_awal_keperawatan_ralan.informasi)?}{?=isset_or($penilaian_awal_keperawatan_ralan.keluhan_utama)?} + TD: {?=isset_or($penilaian_awal_keperawatan_ralan.td)?}
                                                + Nadi: {?=isset_or($penilaian_awal_keperawatan_ralan.nadi)?}
                                                + RR: {?=isset_or($penilaian_awal_keperawatan_ralan.rr)?}
                                                + Suhu: {?=isset_or($penilaian_awal_keperawatan_ralan.suhu)?}
                                                + GCS: {?=isset_or($penilaian_awal_keperawatan_ralan.gcs)?} +
                                                {?=isset_or($penilaian_awal_keperawatan_ralan.status_psiko)?} + {?=isset_or($penilaian_awal_keperawatan_ralan.nyeri)?}
                                                + Skala: {?=isset_or($penilaian_awal_keperawatan_ralan.skala_nyeri)?} +
                                                {?=isset_or($penilaian_awal_keperawatan_ralan.nm_petugas)?} + + +
                                                Tidak ada data
                                                diff --git a/plugins/rawat_jalan/view/admin/booking.html b/plugins/rawat_jalan/view/admin/booking.html index 55397931d..ada67343e 100644 --- a/plugins/rawat_jalan/view/admin/booking.html +++ b/plugins/rawat_jalan/view/admin/booking.html @@ -1,4 +1,4 @@ -
                                                +
                                                @@ -24,7 +24,7 @@

                                                Kelola Booking Pasien

                                                Jumlah: {?=count($booking.totalRecords)?}

                                                -
                                                +
                                                @@ -61,18 +61,18 @@

                                                Jumlah: {?=count($booking.totalRe {if: !empty($booking.list)} {loop: $booking.list} - - {$value.nm_pasien} - {$value.no_rkm_medis} - {$value.no_reg} - {$value.nm_poli} - {$value.nm_dokter} - {$value.png_jawab} - {$value.tanggal_booking} - {$value.jam_booking} - {$value.tanggal_periksa} - {$value.status} - + + {?=isset_or($value.nm_pasien)?} + {?=isset_or($value.no_rkm_medis)?} + {?=isset_or($value.no_reg)?} + {?=isset_or($value.nm_poli)?} + {?=isset_or($value.nm_dokter)?} + {?=isset_or($value.png_jawab)?} + {?=isset_or($value.tanggal_booking)?} + {?=isset_or($value.jam_booking)?} + {?=isset_or($value.tanggal_periksa)?} + {?=isset_or($value.status)?} + {/loop} {else} @@ -82,11 +82,11 @@

                                                Jumlah: {?=count($booking.totalRe

                                                - {$booking.pagination} + {?=isset_or($booking.pagination)?}
                                                -
                                                +
                                                + + + + + + + diff --git a/plugins/rawat_jalan/view/admin/index.html b/plugins/rawat_jalan/view/admin/index.html index c51320c69..bdf53d77c 100644 --- a/plugins/rawat_jalan/view/admin/index.html +++ b/plugins/rawat_jalan/view/admin/index.html @@ -1,21 +1,21 @@ - +
                                                diff --git a/plugins/rawat_jalan/view/admin/jadwal.form.html b/plugins/rawat_jalan/view/admin/jadwal.form.html index a5185eeb4..cc1732f7a 100644 --- a/plugins/rawat_jalan/view/admin/jadwal.form.html +++ b/plugins/rawat_jalan/view/admin/jadwal.form.html @@ -1,17 +1,17 @@ -
                                                +
                                                -

                                                {$pendaftaran.title}

                                                +

                                                {?=isset_or($pendaftaran.title)?}

                                                -
                                                +
                                                @@ -19,29 +19,29 @@

                                                {$pendaftaran.title}

                                                - +
                                                - +
                                                - +
                                                @@ -51,7 +51,7 @@

                                                {$pendaftaran.title}

                                                -
                                                +
                                              diff --git a/plugins/rawat_jalan/view/admin/odontogram.html b/plugins/rawat_jalan/view/admin/odontogram.html index a7d6471cb..110139f3d 100644 --- a/plugins/rawat_jalan/view/admin/odontogram.html +++ b/plugins/rawat_jalan/view/admin/odontogram.html @@ -276,7 +276,7 @@

                                              Odontogram

                                              - + @@ -309,11 +309,11 @@

                                              History Odontogram

                                              {loop: $odontogram} - {$value.tgl_input} + {?=isset_or($value.tgl_input)?} {?=str_replace('gg_','Gigi ',$value.pemeriksaan)?} - {$value.kondisi} - {$value.catatan} - + {?=isset_or($value.kondisi)?} + {?=isset_or($value.catatan)?} + {/loop} @@ -398,12 +398,12 @@

                                              History OHIS

                                              {loop: $ohis} - {$value.tgl_input} - {$value.debris} - {$value.calculus} - {$value.nilai} - {$value.kriteria} - + {?=isset_or($value.tgl_input)?} + {?=isset_or($value.debris)?} + {?=isset_or($value.calculus)?} + {?=isset_or($value.nilai)?} + {?=isset_or($value.kriteria)?} + {/loop} diff --git a/plugins/rawat_jalan/view/admin/odontogram.tampil.html b/plugins/rawat_jalan/view/admin/odontogram.tampil.html index 29b54c185..d53f6d714 100644 --- a/plugins/rawat_jalan/view/admin/odontogram.tampil.html +++ b/plugins/rawat_jalan/view/admin/odontogram.tampil.html @@ -12,11 +12,11 @@

                                              History Odontogram

                                              {loop: $odontogram} - {$value.tgl_input} + {?=isset_or($value.tgl_input)?} {?=str_replace('gg_','Gigi ',$value.pemeriksaan)?} - {$value.kondisi} - {$value.catatan} - + {?=isset_or($value.kondisi)?} + {?=isset_or($value.catatan)?} + {/loop} diff --git a/plugins/rawat_jalan/view/admin/ohis.tampil.html b/plugins/rawat_jalan/view/admin/ohis.tampil.html index 4e71849df..4943fa431 100644 --- a/plugins/rawat_jalan/view/admin/ohis.tampil.html +++ b/plugins/rawat_jalan/view/admin/ohis.tampil.html @@ -13,12 +13,12 @@

                                              History OHIS

                                              {loop: $ohis} - {$value.tgl_input} - {$value.debris} - {$value.calculus} - {$value.nilai} - {$value.kriteria} - + {?=isset_or($value.tgl_input)?} + {?=isset_or($value.debris)?} + {?=isset_or($value.calculus)?} + {?=isset_or($value.nilai)?} + {?=isset_or($value.kriteria)?} + {/loop} diff --git a/plugins/rawat_jalan/view/admin/pasien.html b/plugins/rawat_jalan/view/admin/pasien.html index 6827ee731..34205e248 100644 --- a/plugins/rawat_jalan/view/admin/pasien.html +++ b/plugins/rawat_jalan/view/admin/pasien.html @@ -21,19 +21,19 @@ {if: $pasien} {loop: $pasien} - {$value.no_rkm_medis} - {$value.nm_pasien} - {$value.tgl_lahir} - {if: $value.jk=='L'}Laki-Laki{else}Perempuan{/if} - {$value.alamat} - {$value.no_tlp} + data-no_rkm_medis="{?=isset_or($value.no_rkm_medis)?}" + data-nm_pasien="{?=isset_or($value.nm_pasien)?}" + data-tgl_lahir="{?=isset_or($value.tgl_lahir)?}" + data-jk="{if: $value.jk == 'L'}Laki-Laki{else}Perempuan{/if}" + data-alamat="{?=isset_or($value.alamat)?}" + data-no_tlp="{?=isset_or($value.no_tlp)?}" + data-pekerjaan="{?=isset_or($value.pekerjaan)?}"> + {?=isset_or($value.no_rkm_medis)?} + {?=isset_or($value.nm_pasien)?} + {?=isset_or($value.tgl_lahir)?} + {if: $value.jk == 'L'}Laki-Laki{else}Perempuan{/if} + {?=isset_or($value.alamat)?} + {?=isset_or($value.no_tlp)?} {/loop} {else} diff --git a/plugins/rawat_jalan/view/admin/persetujuan.umum.html b/plugins/rawat_jalan/view/admin/persetujuan.umum.html new file mode 100644 index 000000000..db071028d --- /dev/null +++ b/plugins/rawat_jalan/view/admin/persetujuan.umum.html @@ -0,0 +1,325 @@ + + + + +
                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                              Nama Pasien: {?=isset_or($pasien.nm_pasien)?}
                                              Nomor RM: {?=isset_or($pasien.no_rkm_medis)?}
                                              Tanggal Lahir: {?=isset_or($pasien.tgl_lahir)?}
                                              Alamat: {?=isset_or($pasien.alamat)?}
                                              Nomor HP: {?=isset_or($pasien.no_tlp)?}
                                              +
                                              +
                                              + Yang bertanda tangan dibawah ini: +
                                              +
                                              Nama: {?=isset_or($pasien.tgl_lahir)?}
                                              Alamat: {?=isset_or($pasien.alamat)?}
                                              Nomor HP: {?=isset_or($pasien.no_tlp)?}
                                              + Selaku Pasien/Wali hukum {?=isset_or($pasien.nm_pasien)?} dengan menyatakan persetujuan : +
                                              +
                                              +
                                              + I. PERSETUJUAN UNTUK PERAWATAN DAN PENGOBATAN +
                                              +
                                              + Saya menyetujui untuk perawatan di {?=isset_or($settings.nama_instansi)?} sebagai pasien rawat jalan atau rawat inap tergantung kepada kebutuhan medis. + Pengobatan dapat meliputi pemeriksaan x-ray/radiology, tes darah, perawatan rutin dan prosedur seperti cairan infus atau suntikan dan evaluasi (contohnya wawancara dan pemeriksaan fisik). + Persetujuan yang saya berikan tidak termasuk persetujuan untuk prosedur/tindakan invasif (misalnya, operasi) atau tindakan yang mempunyai resiko tinggi. + Jika saya memutuskan untuk menghentikan perawatan medis untuk diri saya sendiri. Saya memahami dan menyadari bahwa {?=isset_or($settings.nama_instansi)?} atau dokter tidak bertanggung jawab atas hasil yang merugikan Saya. +

                                              +
                                              + II. PERSETUJUAN PELEPASAN INFORMASI +
                                              +
                                              + Saya memahami informasi yang ada didalam diri Saya, termasuk Diagnosis, hasil laboratorium dan hasil tes diagnostik yang akan di gunakan untuk perawatan medis, {?=isset_or($settings.nama_instansi)?} akan menjamin kerahasiaannya. + Saya memberi wewenang kepada {?=isset_or($settings.nama_instansi)?} untuk memberikan informasi tentang tentang diagnosis, hasil pelayanan dan pengobatan bila diperlukan untuk memproses klaim asuransi/ perusahaan dan atau lembaga pemerintah. + Saya memberi wewenang kepada {?=isset_or($settings.nama_instansi)?} untuk memberikan informasi tentang diagnosis, hasil pelayanan dan pengobatan saya kepada anggota keluarga saya. +

                                              +
                                              + III. HAK DAN TANGGUNG JAWAB PASIEN +
                                              +
                                              + Saya memiliki hak untuk mengambil bagian dalam keputusan mengenai penyakit saya dan dalam hal perawatan medis dan rencana pengobatan. + Saya telah mendapat informasi tentang “Hak dan tanggung jawab pasien“ di {?=isset_or($settings.nama_instansi)?} melalui Leaflet dan banner yang diediakan oleh petugas. + Saya memahami bahwa {?=isset_or($settings.nama_instansi)?} tidak bertanggung jawab atas kehilangan barang-barang pribadi dan barang berharga yang di bawa ke {?=isset_or($settings.nama_instansi)?}. +

                                              +
                                              + IV. INFORMASI RAWAT INAP +
                                              +
                                              + Saya Tidak di perkenankan untuk membawa barang-barang berharga ke ruang rawat inap, jika ada anggota keluarga atau teman harus diminta untuk membawa pulang uang atau perhiasan. + Bila tidak ada anggota keluarga, {?=isset_or($settings.nama_instansi)?} menyediakan tempat penitipan barang milik pasien di tempat resmi yang telah disediakan {?=isset_or($settings.nama_instansi)?}. + Saya telah menerima informasi tentang peraturan yang diberlakukan oleh {?=isset_or($settings.nama_instansi)?} dan saya beserta keluarga bersedia untuk mematuhinya, termasuk akan mematuhi jam berkunjung pasien sesuai dengan aturan di {?=isset_or($settings.nama_instansi)?}. + Anggota keluarga saya yang menunggu saya, bersedia untuk selalu memakai tanda pengenal khusus yang diberikan oleh {?=isset_or($settings.nama_instansi)?}, dan demi keamanan seluruh pasien setiap keluarga dan siapapun yang akan megunjungi saya diluar jam berkunjung, bersedia untuk diminta/diperiksa identitasnya dan memakai identitias yang diberikan oleh {?=isset_or($settings.nama_instansi)?}. +

                                              +
                                              + V. INFORMASI BIAYA
                                              +
                                              +
                                              + Saya memahami tentang informasi biaya pengobatan atau biaya tindakan yang dijelaskan oleh petugas {?=isset_or($settings.nama_instansi)?}

                                              +
                                              + VI.TANDA TANGAN
                                              +
                                              +
                                              + Dengan tanda tangan saya di bawah, saya menyatakan bahwa saya telah membaca dan memahami item pada Persetujuan Umum/ General Consent. +
                                              +

                                              +
                                              + +
                                              +
                                              + + + + + + + \ No newline at end of file diff --git a/plugins/rawat_jalan/view/admin/rincian.html b/plugins/rawat_jalan/view/admin/rincian.html index e480031d3..f4391b332 100644 --- a/plugins/rawat_jalan/view/admin/rincian.html +++ b/plugins/rawat_jalan/view/admin/rincian.html @@ -13,29 +13,29 @@

                                              Rincian Tindakan

                                              {loop: $rawat_jl_dr} - {$value.tgl_perawatan} {$value.jam_rawat} - {$value.nm_perawatan} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?} + {?=isset_or($value.nm_perawatan)?} Dokter Rp. {?= number_format($value.biaya_rawat,2,',','.')?} - + {/loop} {loop: $rawat_jl_pr} - {$value.tgl_perawatan} {$value.jam_rawat} - {$value.nm_perawatan} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?} + {?=isset_or($value.nm_perawatan)?} Perawat Rp. {?= number_format($value.biaya_rawat,2,',','.')?} - + {/loop} {loop: $rawat_jl_drpr} - {$value.tgl_perawatan} {$value.jam_rawat} - {$value.nm_perawatan} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?} + {?=isset_or($value.nm_perawatan)?} Dokter & Perawat Rp. {?= number_format($value.biaya_rawat,2,',','.')?} - + {/loop} diff --git a/plugins/rawat_jalan/view/admin/sep.detail.html b/plugins/rawat_jalan/view/admin/sep.detail.html index a18ffb76f..8df567c33 100644 --- a/plugins/rawat_jalan/view/admin/sep.detail.html +++ b/plugins/rawat_jalan/view/admin/sep.detail.html @@ -23,7 +23,7 @@ SURAT ELEGIBILITAS PESERTA
                                              - {$sep.nmppkpelayanan} + {?=isset_or($sep.nmppkpelayanan)?}
                                              @@ -35,11 +35,11 @@ @@ -57,7 +57,7 @@ :
                                              - {$data_sep.potensi_prb} + {?=isset_or($data_sep.potensi_prb)?}
                                              - +
                                              - {$sep.no_sep} + {?=isset_or($sep.no_sep)?}
                                              @@ -74,7 +74,7 @@ : - {$sep.tglsep} + {?=isset_or($sep.tglsep)?} @@ -91,7 +91,7 @@ : - {$sep.no_kartu} ( MR: {$sep.nomr}) + {?=isset_or($sep.no_kartu)?} ( MR: {?=isset_or($sep.nomr)?}) Peserta @@ -100,7 +100,7 @@ : - {$sep.peserta} + {?=isset_or($sep.peserta)?} @@ -117,7 +117,7 @@ : - {$sep.nama_pasien} + {?=isset_or($sep.nama_pasien)?} COB @@ -126,7 +126,7 @@ : - {$sep.cob} + {?=isset_or($sep.cob)?} @@ -143,7 +143,7 @@ : - {$sep.tanggal_lahir} Kelamin: {$sep.jkel} + {?=isset_or($sep.tanggal_lahir)?} Kelamin: {?=isset_or($sep.jkel)?} Jns. Rawat @@ -169,7 +169,7 @@ : - {$sep.notelep} + {?=isset_or($sep.notelep)?} Kls. Rawat @@ -178,7 +178,7 @@ : - {$print_sep.kelas_naik} + {?=isset_or($print_sep.kelas_naik)?} @@ -195,7 +195,7 @@ : - {$sep.nmpolitujuan} + {?=isset_or($sep.nmpolitujuan)?} Kls. Hak @@ -204,7 +204,7 @@ : - Kelas {$sep.klsrawat} + Kelas {?=isset_or($sep.klsrawat)?} @@ -221,7 +221,7 @@ : - {$sep.nmdpdjp} + {?=isset_or($sep.nmdpdjp)?} @@ -238,7 +238,7 @@ : - {$sep.nmppkrujukan} + {?=isset_or($sep.nmppkrujukan)?} @@ -255,7 +255,7 @@ : - {$sep.nmdiagnosaawal} + {?=isset_or($sep.nmdiagnosaawal)?} @@ -272,7 +272,7 @@ : - {$sep.catatan} + {?=isset_or($sep.catatan)?} Pasien/Keluarga Pasien @@ -291,11 +291,11 @@ *Saya Menyetujui BPJS Kesehatan menggunakan informasi Medis Pasien jika diperlukan.
                                              **SEP bukan sebagai bukti penjaminan peserta
                                              Cetakan ke 1 {?=date("d/m/Y H:i:s A")?}
                                              - Masa berlaku {$sep.tglrujukan} s/d {$print_sep.batas_rujukan} + Masa berlaku {?=isset_or($sep.tglrujukan)?} s/d {?=isset_or($print_sep.batas_rujukan)?} - {$sep.nama_pasien}
                                              + {?=isset_or($sep.nama_pasien)?}
                                              diff --git a/plugins/rawat_jalan/view/admin/soap.html b/plugins/rawat_jalan/view/admin/soap.html index 2d8d80c01..279ce8c37 100644 --- a/plugins/rawat_jalan/view/admin/soap.html +++ b/plugins/rawat_jalan/view/admin/soap.html @@ -8,7 +8,7 @@
                                              - {include: ../plugins/icd/view/admin/display.html} + {include: ../plugins/rawat_jalan/view/admin/display.icd.html}

                                              Rincian Riwayat

                                              @@ -38,187 +38,221 @@

                                              Rincian Riwayat

                                              {loop: $pemeriksaan} {if: $admin_mode == 'complex'} - {$value.nomor} + {?=isset_or($value.nomor)?} Rawat Jalan
                                              - {$value.tgl_perawatan} {$value.jam_rawat}
                                              - {$value.departemen_petugas} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?}
                                              + {?=isset_or($value.departemen_petugas)?} - {$value.suhu_tubuh} - {$value.tensi} - {$value.nadi} - {$value.respirasi} - {$value.tinggi} - {$value.berat} - {$value.gcs} - {$value.spo2} - {$value.alergi} + {?=isset_or($value.suhu_tubuh)?} + {?=isset_or($value.tensi)?} + {?=isset_or($value.nadi)?} + {?=isset_or($value.respirasi)?} + {?=isset_or($value.tinggi)?} + {?=isset_or($value.berat)?} + {?=isset_or($value.gcs)?} + {?=isset_or($value.spo2)?} + {?=isset_or($value.alergi)?} - Instruksi: {$value.instruksi}

                                              - Evaluasi: {$value.evaluasi}

                                              -
                                              - {$value.nama_petugas} + Instruksi: {?=isset_or($value.instruksi)?}

                                              + Evaluasi: {?=isset_or($value.evaluasi)?}

                                              +
                                              + {?=isset_or($value.nama_petugas)?} {else} - {$value.nomor} + {?=isset_or($value.nomor)?} Rawat Jalan
                                              - {$value.tgl_perawatan} {$value.jam_rawat}
                                              - {$value.departemen_petugas} + {?=isset_or($value.tgl_perawatan)?} {?=isset_or($value.jam_rawat)?}
                                              + {?=isset_or($value.departemen_petugas)?} {/if} {if: $admin_mode == 'complex'} Kesadaran - {$value.kesadaran} + {?=isset_or($value.kesadaran)?} Lingkar Perut - {$value.lingkar_perut} + {?=isset_or($value.lingkar_perut)?} {/if} Subyektif - {$value.keluhan} + {?=isset_or($value.keluhan)?} Obyektif - {$value.pemeriksaan} + {?=isset_or($value.pemeriksaan)?} Assesment - {$value.penilaian} + {?=isset_or($value.penilaian)?}
                                              - {if: $this->core->getUserInfo('username', !empty($_SESSION['mlite_user'])) == $value.nip} + - {/if}
                                              Plan - {$value.rtl} + {?=isset_or($value.rtl)?} {/loop} {if: $admin_mode == 'complex'} {loop: $pemeriksaan_ranap as $data} - {$data.nomor} + {?=isset_or($data.nomor)?} Rawat Inap
                                              - {$data.tgl_perawatan} {$data.jam_rawat}
                                              - {$data.departemen_petugas} + {?=isset_or($data.tgl_perawatan)?} {?=isset_or($data.jam_rawat)?}
                                              + {?=isset_or($data.departemen_petugas)?} - {$data.suhu_tubuh} - {$data.tensi} - {$data.nadi} - {$data.respirasi} - {$data.tinggi} - {$data.berat} - {$data.gcs} - {$data.spo2} - {$data.alergi} + {?=isset_or($data.suhu_tubuh)?} + {?=isset_or($data.tensi)?} + {?=isset_or($data.nadi)?} + {?=isset_or($data.respirasi)?} + {?=isset_or($data.tinggi)?} + {?=isset_or($data.berat)?} + {?=isset_or($data.gcs)?} + {?=isset_or($data.spo2)?} + {?=isset_or($data.alergi)?} - Instruksi: {$data.instruksi}

                                              - Evaluasi: {$data.evaluasi}

                                              -
                                              - {$data.nama_petugas} + Instruksi: {?=isset_or($data.instruksi)?}

                                              + Evaluasi: {?=isset_or($data.evaluasi)?}

                                              +
                                              + {?=isset_or($data.nama_petugas)?} Kesadaran - {$data.kesadaran} + {?=isset_or($data.kesadaran)?} Subyektif - {$data.keluhan} + {?=isset_or($data.keluhan)?} Obyektif - {$data.pemeriksaan} + {?=isset_or($data.pemeriksaan)?} Assesment - {$data.penilaian} + {?=isset_or($data.penilaian)?}
                                              - {if: $this->core->getUserInfo('username', !empty($_SESSION['mlite_user'])) == $value.nip} + - {/if}
                                              Plan - {$data.rtl} + {?=isset_or($data.rtl)?} {/loop} {/if} diff --git a/plugins/rawat_jalan/view/admin/stts.daftar.html b/plugins/rawat_jalan/view/admin/stts.daftar.html index b74011b1b..3e79c68f5 100644 --- a/plugins/rawat_jalan/view/admin/stts.daftar.html +++ b/plugins/rawat_jalan/view/admin/stts.daftar.html @@ -1,7 +1,7 @@ -
                                              +
                                              - - + +
                                              diff --git a/plugins/rawat_jalan/view/admin/surat.rujukan.html b/plugins/rawat_jalan/view/admin/surat.rujukan.html index 196a67b50..56c93ad4b 100644 --- a/plugins/rawat_jalan/view/admin/surat.rujukan.html +++ b/plugins/rawat_jalan/view/admin/surat.rujukan.html @@ -13,9 +13,13 @@ font-family: georgia; } @media print { - #printPageButton { + #saveButton, #printPageButton { display: none; } + textarea { + border: none; + resize: none; + } } + + + +
                                              @@ -50,7 +114,7 @@
                                              - + -

                                              {$settings.nama_instansi}
                                              - Alamat: {$settings.alamat} - {$settings.kota} - {$settings.propinsi}
                                              - Telepon: {$settings.nomor_telepon} - Email: {$settings.email}

                                              +

                                              {?=isset_or($settings.nama_instansi)?}
                                              + Alamat: {?=isset_or($settings.alamat)?} - {?=isset_or($settings.kota)?} - {?=isset_or($settings.propinsi)?}
                                              + Telepon: {?=isset_or($settings.nomor_telepon)?} - Email: {?=isset_or($settings.email)?}

                                              SURAT RUJUKAN

                                              - Nomor:

                                              + Nomor:

                                              @@ -60,10 +124,9 @@

                                              Kepada Yth.
                                              Rekan Sejawat
                                              -
                                              -
                                              +
                                              Di
                                              - +

                                              @@ -79,12 +142,12 @@

                                              Nama

                                              - + - + @@ -94,7 +157,7 @@

                                              Alamat

                                              - + @@ -103,42 +166,42 @@

                                              a. Anamnesis

                                              @@ -152,12 +215,18 @@

                                              : {$pasien.nm_pasien}{?=isset_or($pasien.nm_pasien)?}
                                              Tanggal Lahir / Umur : {$pasien.tgl_lahir} / {?=hitungUmur($pasien.tgl_lahir)?}{?=isset_or($pasien.tgl_lahir)?} / {?=hitungUmur($pasien.tgl_lahir)?}
                                              Jenis Kelamin : {$pasien.alamat}, {$pasien.nm_kel}, {$pasien.nm_kec}, {$pasien.nm_kab}, {$pasien.nm_prop}{?=isset_or($pasien.alamat)?}, {?=isset_or($pasien.nm_kel)?}, {?=isset_or($pasien.nm_kec)?}, {?=isset_or($pasien.nm_kab)?}, {?=isset_or($pasien.nm_prop)?}

                                              Hasil-hasil penatalaksanaan yang telah kami lakukan terhadap pasien tersebut sebagai berikut.
                                              : - +
                                              b. Pemeriksaan fisik : - +
                                              c. Pemeriksaan penunjang : - +
                                              d. Diagnosis : - +
                                              e. Terapi : - +
                                              e. Alasan dirujuk : - +
                                              - {$settings.kota}, {?=date('Y-m-d')?}
                                              - Salam Sejawat






                                              - {$nm_dokter} + {?=isset_or($settings.kota)?}, {?=date('Y-m-d')?}
                                              + Salam Sejawat

                                              +

                                              + {?=isset_or($nm_dokter)?}
                                              +

                                              - + diff --git a/plugins/rawat_jalan/view/admin/surat.sakit.html b/plugins/rawat_jalan/view/admin/surat.sakit.html index 8d83a7b74..9dbcb9f8e 100644 --- a/plugins/rawat_jalan/view/admin/surat.sakit.html +++ b/plugins/rawat_jalan/view/admin/surat.sakit.html @@ -13,9 +13,13 @@ font-family: georgia; } @media print { - #printPageButton { + #saveButton, #printPageButton { display: none; } + textarea { + border: none; + resize: none; + } } + + +
                                              @@ -47,14 +106,14 @@
                                              - + -

                                              {$settings.nama_instansi}
                                              - Alamat: {$settings.alamat} - {$settings.kota} - {$settings.propinsi}
                                              - Telepon: {$settings.nomor_telepon} - Email: {$settings.email}

                                              +

                                              {?=isset_or($settings.nama_instansi)?}
                                              + Alamat: {?=isset_or($settings.alamat)?} - {?=isset_or($settings.kota)?} - {?=isset_or($settings.propinsi)?}
                                              + Telepon: {?=isset_or($settings.nomor_telepon)?} - Email: {?=isset_or($settings.email)?}

                                              SURAT KETERANGAN SAKIT

                                              - Nomor:

                                              + Nomor:



                                              @@ -64,29 +123,29 @@

                                              Nama

                                              - + - + - + - + @@ -100,12 +159,17 @@

                                              - Yang bertanda tangan di bawah ini Dokter Puskesmas Simpang Pandan, Menerangkan bahwa;

                                              + Yang bertanda tangan di bawah ini Dokter {?=isset_or($settings.nama_instansi)?}, Menerangkan bahwa;

                                              : {$pasien.nm_pasien}{?=isset_or($pasien.nm_pasien)?}
                                              Tanggal Lahir / Umur : {$pasien.tgl_lahir} / {?=hitungUmur($pasien.tgl_lahir)?}{?=isset_or($pasien.tgl_lahir)?} / {?=hitungUmur($pasien.tgl_lahir)?}
                                              Jenis Kelamin : {$pasien.jk}{if: $pasien.jk == 'L'}Laki-Laki{else}Perempuan{/if}
                                              Alamat : {$pasien.alamat}, {$pasien.nm_kel}, {$pasien.nm_kec}, {$pasien.nm_kab}, {$pasien.nm_prop}{?=isset_or($pasien.alamat)?}, {?=isset_or($pasien.nm_kel)?}, {?=isset_or($pasien.nm_kec)?}, {?=isset_or($pasien.nm_kab)?}, {?=isset_or($pasien.nm_prop)?}

                                              - Berdasarkan hasil pemeriksaan klinis / laboratories / radiologi*, yang bersangkutan dalam keadaan - - dengan diagnosa penyakit , dan perlu istirahatselama ( ) hari, terhitung mulai tanggal sampai dengan tanggal . + Berdasarkan hasil pemeriksaan klinis, yang bersangkutan dalam keadaan + + dengan diagnosa penyakit , dan perlu istirahat selama ( ) hari, terhitung mulai tanggal sampai dengan tanggal .


                                              - {$settings.kota}, {?=date('Y-m-d')?}
                                              -







                                              - {$nm_dokter} + {?=isset_or($settings.kota)?}, {?=date('Y-m-d')?}

                                              +

                                              + {?=isset_or($nm_dokter)?}
                                              +

                                              - + diff --git a/plugins/rawat_jalan/view/admin/surat.sehat.html b/plugins/rawat_jalan/view/admin/surat.sehat.html index c9d0b5a53..f15177a63 100644 --- a/plugins/rawat_jalan/view/admin/surat.sehat.html +++ b/plugins/rawat_jalan/view/admin/surat.sehat.html @@ -13,33 +13,93 @@ font-family: georgia; } @media print { - #printPageButton { + #saveButton, #printPageButton { display: none; } + textarea { + border: none; + resize: none; + } } + + + -
                                              @@ -51,14 +111,14 @@
                                              - + -

                                              {$settings.nama_instansi}
                                              - Alamat: {$settings.alamat} - {$settings.kota} - {$settings.propinsi}
                                              - Telepon: {$settings.nomor_telepon} - Email: {$settings.email}

                                              +

                                              {?=isset_or($settings.nama_instansi)?}
                                              + Alamat: {?=isset_or($settings.alamat)?} - {?=isset_or($settings.kota)?} - {?=isset_or($settings.propinsi)?}
                                              + Telepon: {?=isset_or($settings.nomor_telepon)?} - Email: {?=isset_or($settings.email)?}

                                              SURAT KETERANGAN SEHAT

                                              - Nomor:

                                              + Nomor:



                                              @@ -68,58 +128,58 @@

                                              Nama

                                              - + - + - + - + - + - + - + - + - + @@ -133,12 +193,17 @@

                                              - Yang bertanda tangan di bawah ini Dokter {$settings.nama_instansi}, Menerangkan bahwa;

                                              + Yang bertanda tangan di bawah ini Dokter {?=isset_or($settings.nama_instansi)?}, Menerangkan bahwa;

                                              : {$pasien.nm_pasien}{?=isset_or($pasien.nm_pasien)?}
                                              Tanggal Lahir / Umur : {$pasien.tgl_lahir} / {?=hitungUmur($pasien.tgl_lahir)?}{?=isset_or($pasien.tgl_lahir)?} / {?=hitungUmur($pasien.tgl_lahir)?}
                                              Jenis Kelamin : {if: $pasien.jk}Laki-Laki{else}Perempuan{/if}{if: $pasien.jk == 'L'}Laki-Laki{else}Perempuan{/if}
                                              Alamat : {$pasien.alamat}, {$pasien.nm_kel}, {$pasien.nm_kec}, {$pasien.nm_kab}, {$pasien.nm_prop}{?=isset_or($pasien.alamat)?}, {?=isset_or($pasien.nm_kel)?}, {?=isset_or($pasien.nm_kec)?}, {?=isset_or($pasien.nm_kab)?}, {?=isset_or($pasien.nm_prop)?}

                                              Hasil pemeriksaan fisik kami pada tanggal adalah sebagai berikut:

                                              Hasil pemeriksaan fisik kami pada tanggal adalah sebagai berikut:
                                              Berat Badan : Kg Kg
                                              Tinggi Badan : cm cm
                                              Tekanan Darah : mmHg mmHg
                                              Golongan Darah :
                                              Riwayat Penyakit : - +

                                              - Surat Keterangan Sehat ini dipergunakan sebagai + Surat Keterangan Sehat ini dipergunakan sebagai


                                              - {$settings.kota}, {?=date('Y-m-d')?}
                                              -







                                              - {$nm_dokter} + {?=isset_or($settings.kota)?}, {?=date('Y-m-d')?}

                                              +

                                              + {?=isset_or($nm_dokter)?}
                                              +

                                              - + diff --git a/plugins/satu_sehat/Admin.php b/plugins/satu_sehat/Admin.php index 53ed4d988..c226bc7a3 100755 --- a/plugins/satu_sehat/Admin.php +++ b/plugins/satu_sehat/Admin.php @@ -2,11 +2,32 @@ namespace Plugins\Satu_Sehat; +use SatuSehat\Src\CarePlan; use Systems\AdminModule; +use SatuSehat\Src\ClinicalImpression; +use SatuSehat\Src\Composition; +use SatuSehat\Src\Condition; +use SatuSehat\Src\DiagnosticReport; +use SatuSehat\Src\Respiratory; +use SatuSehat\Src\Observation; +use SatuSehat\Src\Medication; +use SatuSehat\Src\MedicationDispense; +use SatuSehat\Src\MedicationRequest; +use SatuSehat\Src\Procedure; +use SatuSehat\Src\QuestionareMedication; +use SatuSehat\Src\ServiceRequest; +use SatuSehat\Src\Temperature; +use SatuSehat\Src\Specimen; class Admin extends AdminModule { + private $authurl; + private $fhirurl; + private $clientid; + private $secretkey; + private $organizationid; + public function init() { $this->authurl = $this->settings->get('satu_sehat.authurl'); @@ -16,18 +37,47 @@ public function init() $this->organizationid = $this->settings->get('satu_sehat.organizationid'); } + public function getObatByCode($code) + { + if ($this->getAccessToken() === '') { + return ['error' => 'Gagal mendapatkan access token']; + } + + $url = $this->settings->get('satu_sehat.authurl'); + $parsed = parse_url($url); + $baseUrl = $parsed['scheme'] . '://' . $parsed['host']; + + $ch = curl_init(); + curl_setopt_array($ch, [ + CURLOPT_URL => $baseUrl . '/kfa-v2/products?identifier=kfa&code=' . urlencode($code), + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ + 'Authorization: Bearer ' . $this->getAccessToken(), + 'Accept: application/json' + ] + ]); + + $response = curl_exec($ch); + curl_close($ch); + + return json_decode($response, true); + } + public function navigation() { return [ - 'Kelola' => 'manage', - 'Referensi Praktisi' => 'praktisi', - 'Referensi Pasien' => 'pasien', - 'Mapping Departemen' => 'departemen', - 'Mapping Lokasi' => 'lokasi', - 'Mapping Praktisi' => 'mappingpraktisi', - 'Data Response' => 'response', - 'Verifikasi KYC' => 'kyc', - 'Pengaturan' => 'settings', + 'Kelola' => 'manage', + 'Referensi Praktisi' => 'praktisi', + 'Referensi Pasien' => 'pasien', + 'Mapping Departemen' => 'departemen', + 'Mapping Lokasi' => 'lokasi', + 'Mapping Praktisi' => 'mappingpraktisi', + 'Mapping Obat' => 'mappingobat', + 'Mapping Laboratorium' => 'mappinglab', + 'Mapping Radiologi' => 'mappingrad', + 'Data Response' => 'response', + 'Verifikasi KYC' => 'kyc', + 'Pengaturan' => 'settings', ]; } @@ -39,8 +89,11 @@ public function getManage() ['name' => 'Mapping Departemen', 'url' => url([ADMIN, 'satu_sehat', 'departemen']), 'icon' => 'heart', 'desc' => 'Mapping departemen satu sehat'], ['name' => 'Mapping Lokasi', 'url' => url([ADMIN, 'satu_sehat', 'lokasi']), 'icon' => 'heart', 'desc' => 'Mapping lokasi satu sehat'], ['name' => 'Mapping Praktisi', 'url' => url([ADMIN, 'satu_sehat', 'mappingpraktisi']), 'icon' => 'heart', 'desc' => 'Mapping praktisi satu sehat'], + ['name' => 'Mapping Obat', 'url' => url([ADMIN, 'satu_sehat', 'mappingobat']), 'icon' => 'heart', 'desc' => 'Mapping obat satu sehat'], + ['name' => 'Mapping Laboratorium', 'url' => url([ADMIN, 'satu_sehat', 'mappinglab']), 'icon' => 'heart', 'desc' => 'Mapping laboratorium satu sehat'], + ['name' => 'Mapping Radiologi', 'url' => url([ADMIN, 'satu_sehat', 'mappingrad']), 'icon' => 'heart', 'desc' => 'Mapping radiologi satu sehat'], ['name' => 'Data Response', 'url' => url([ADMIN, 'satu_sehat', 'response']), 'icon' => 'heart', 'desc' => 'Data encounter satu sehat'], - ['name' => 'Verifikasi KYC', 'url' => url([ADMIN, 'satu_sehat', 'kyc']), 'icon' => 'heart', 'desc' => 'Data encounter satu sehat'], + ['name' => 'Verifikasi KYC', 'url' => url([ADMIN, 'satu_sehat', 'kyc']), 'icon' => 'heart', 'desc' => 'Verifikasi KYC satu sehat'], ['name' => 'Pengaturan', 'url' => url([ADMIN, 'satu_sehat', 'settings']), 'icon' => 'heart', 'desc' => 'Pengaturan satu sehat'], ]; return $this->draw('manage.html', ['sub_modules' => $sub_modules]); @@ -71,6 +124,16 @@ public function getToken() // exit(); } + private function getAccessToken(): string + { + $raw = $this->getToken(); + $obj = json_decode($raw); + if (is_object($obj) && isset($obj->access_token) && is_string($obj->access_token)) { + return $obj->access_token; + } + return ''; + } + public function getPractitioner($nik_dokter) { @@ -84,7 +147,7 @@ public function getPractitioner($nik_dokter) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'GET' )); @@ -97,6 +160,31 @@ public function getPractitioner($nik_dokter) } + public function getDicomRouter() + { + + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => 'https://api-satusehat.kemkes.go.id/dicom-router', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'GET' + )); + + $response = curl_exec($curl); + + curl_close($curl); + echo '
                                              ' . $response . '
                                              '; + exit(); + + } + public function getPractitionerID($nik_dokter) { echo json_decode($this->getPractitioner($nik_dokter))->entry[0]->resource->id; @@ -117,7 +205,7 @@ public function getPractitionerByID($id_dokter) CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), )); $response = curl_exec($curl); @@ -140,7 +228,7 @@ public function getPatient($nik_pasien) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'GET' )); @@ -173,7 +261,7 @@ public function getPatientByID($id_pasien) CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), )); $response = curl_exec($curl); @@ -201,7 +289,7 @@ public function getOrganization($kode_departemen, $kode_organization = '') CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => '{ "resourceType": "Organization", @@ -306,7 +394,7 @@ public function getOrganizationById($kode_departemen) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'GET', )); @@ -332,7 +420,7 @@ public function getOrganizationByPart($kode_departemen) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'GET', )); @@ -358,7 +446,7 @@ public function getOrganizationUpdate($kode_departemen) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'PUT', CURLOPT_POSTFIELDS => '{ "resourceType": "Organization", @@ -467,7 +555,7 @@ public function getLocation($kode, $kode_organization = '') CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => '{ "resourceType": "Location", @@ -560,22 +648,21 @@ public function getLocation($kode, $kode_organization = '') $response = curl_exec($curl); - if(json_decode($response)->issue[0]->code == 'duplicate') { + if (json_decode($response)->issue[0]->code == 'duplicate') { $curl = curl_init(); curl_setopt_array($curl, array( - CURLOPT_URL => $this->settings->get('satu_sehat.fhirurl').'/Location?organization='.$kode_organization, + CURLOPT_URL => $this->settings->get('satu_sehat.fhirurl') . '/Location?organization=' . $kode_organization, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer '.json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'GET', )); - + $response = curl_exec($curl); - } curl_close($curl); @@ -599,7 +686,7 @@ public function getLocationByOrgId($kode_departemen) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'GET', )); @@ -625,7 +712,7 @@ public function getLocationUpdate($kode_departemen) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'PUT', CURLOPT_POSTFIELDS => '{ "resourceType": "Location", @@ -728,7 +815,7 @@ public function getLocationUpdate($kode_departemen) exit(); } - public function getEncounter($no_rawat) + public function getEncounter($no_rawat, $render = true) { $zonawaktu = '+07:00'; @@ -753,23 +840,6 @@ public function getEncounter($no_rawat) $tgl_registrasi = $this->core->getRegPeriksaInfo('tgl_registrasi', $no_rawat); $jam_reg = $this->core->getRegPeriksaInfo('jam_reg', $no_rawat); $endTime = date("H:i:s", strtotime('+10 minutes', strtotime($jam_reg))); - $mlite_billing = $this->db('mlite_billing')->where('no_rawat', $no_rawat)->oneArray(); - if ($this->settings->get('satu_sehat.billing') == 'khanza') { - $mlite_billing = $this->db('nota_jalan')->select([ - 'tgl_billing' => 'tanggal', - 'jam_billing' => 'jam' - ]) - ->where('no_rawat', $no_rawat) - ->oneArray(); - if ($status_lanjut == 'Ranap') { - $mlite_billing = $this->db('nota_inap')->select([ - 'tgl_billing' => 'tanggal', - 'jam_billing' => 'jam' - ]) - ->where('no_rawat', $no_rawat) - ->oneArray(); - } - } $code = 'AMB'; $display = 'ambulatory'; @@ -782,6 +852,15 @@ public function getEncounter($no_rawat) } $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $kd_poli)->oneArray(); + $praktisi_id = isset($no_ktp_dokter['practitioner_id']) ? $no_ktp_dokter['practitioner_id'] : ''; + $lokasi_id = isset($mlite_satu_sehat_lokasi['id_lokasi_satusehat']) ? $mlite_satu_sehat_lokasi['id_lokasi_satusehat'] : ''; + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $ihs_patient = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $ihs_patient = $__patientJson->entry[0]->resource->id; + } $curl = curl_init(); $json = '{ @@ -789,11 +868,11 @@ public function getEncounter($no_rawat) "status": "arrived", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", - "code": "'.$code.'", - "display": "'.$display.'" + "code": "' . $code . '", + "display": "' . $display . '" }, "subject": { - "reference": "Patient/' . json_decode($this->getPatient($no_ktp_pasien))->entry[0]->resource->id . '", + "reference": "Patient/' . $ihs_patient . '", "display": "' . $nama_pasien . '" }, "participant": [ @@ -810,7 +889,7 @@ public function getEncounter($no_rawat) } ], "individual": { - "reference": "Practitioner/' . $no_ktp_dokter['practitioner_id'] . '", + "reference": "Practitioner/' . $praktisi_id . '", "display": "' . $nama_dokter . '" } } @@ -821,7 +900,7 @@ public function getEncounter($no_rawat) "location": [ { "location": { - "reference": "Location/' . $mlite_satu_sehat_lokasi['id_lokasi_satusehat'] . '", + "reference": "Location/' . $lokasi_id . '", "display": "' . $kd_poli . ' ' . $nm_poli . '" } } @@ -844,7 +923,7 @@ public function getEncounter($no_rawat) "value": "' . $no_rawat . '" } ] - }'; + }'; curl_setopt_array($curl, array( CURLOPT_URL => $this->fhirurl . '/Encounter', CURLOPT_RETURNTRANSFER => true, @@ -853,14 +932,15 @@ public function getEncounter($no_rawat) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => $json, )); $response = curl_exec($curl); - $id_encounter = json_decode($response)->id; + $decoded = json_decode($response); + $id_encounter = (is_object($decoded) && isset($decoded->id)) ? $decoded->id : null; $pesan = 'Gagal mengirim encounter platform Satu Sehat!!'; if ($id_encounter) { $this->db('mlite_satu_sehat_response')->save([ @@ -871,12 +951,45 @@ public function getEncounter($no_rawat) } curl_close($curl); - // echo $response; - echo $this->draw('encounter.html', ['pesan' => $pesan, 'response' => $response, 'json' => $json]); + if ($render) { + echo $this->draw('encounter.html', ['pesan' => $pesan, 'response' => $response, 'json' => $json]); + } else { + $data = json_decode($response); + echo $data ? json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) : $response; + } + exit(); + } + + public function getEncounterById($encounter_id, $type) + { + if ($type == '') { + $type = 'ClinicalImpression'; + } + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $this->fhirurl . '/' . $type . '?encounter=' . $encounter_id, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'GET', + )); + + $response = curl_exec($curl); + + curl_close($curl); + + $result = json_decode($response, true); + + echo $result['entry'][0]['resource']['id'] ?? null; exit(); } - public function getEncounterBundle($no_rawat) + public function getEncounterBundle($no_rawat, $param = '') { $zonawaktu = '+00:00'; @@ -893,39 +1006,22 @@ public function getEncounterBundle($no_rawat) $status_lanjut = $this->core->getRegPeriksaInfo('status_lanjut', $no_rawat); $tgl_registrasi = $this->core->getRegPeriksaInfo('tgl_registrasi', $no_rawat); $jam_reg = $this->core->getRegPeriksaInfo('jam_reg', $no_rawat); - $inProg = $this->db('pemeriksaan_ralan')->select(['tgl' => 'tgl_perawatan', 'jam' => 'jam_rawat','respirasi' => 'respirasi','suhu' => 'suhu_tubuh','tensi'=> 'tensi','nadi' => 'nadi'])->where('no_rawat', $no_rawat)->oneArray(); + $inProg = $this->db('pemeriksaan_ralan')->select(['tgl' => 'tgl_perawatan', 'jam' => 'jam_rawat', 'respirasi' => 'respirasi', 'suhu' => 'suhu_tubuh', 'tensi' => 'tensi', 'nadi' => 'nadi', 'penilaian' => 'penilaian', 'keluhan' => 'keluhan'])->where('no_rawat', $no_rawat)->oneArray(); $diagnosa_pasien = $this->db('diagnosa_pasien') ->join('penyakit', 'penyakit.kd_penyakit=diagnosa_pasien.kd_penyakit') ->where('no_rawat', $no_rawat) ->where('diagnosa_pasien.status', $status_lanjut) ->where('prioritas', '1') ->oneArray(); - $_prosedure_pasien = $this->db('prosedur_pasien')->select(['deskripsi_pendek' => 'icd9.deskripsi_pendek','kode' => 'icd9.kode'])->join('icd9','icd9.kode = prosedur_pasien.kode')->where('prosedur_pasien.no_rawat',$no_rawat)->where('prosedur_pasien.status','Ralan')->where('prosedur_pasien.prioritas','1')->oneArray(); - $prosedure_pasien = $_prosedure_pasien['deskripsi_pendek']; - $kode_prosedure_pasien = $_prosedure_pasien['kode']; - if (strpos($kode_prosedure_pasien, '.') !== false) { - $kode_prosedure_pasien = $kode_prosedure_pasien; - } else { - $kode_prosedure_pasien = substr_replace($kode_prosedure_pasien,'.',2,0); + $_prosedure_pasien = $this->db('prosedur_pasien')->select(['deskripsi_pendek' => 'icd9.deskripsi_pendek', 'kode' => 'icd9.kode'])->join('icd9', 'icd9.kode = prosedur_pasien.kode')->where('prosedur_pasien.no_rawat', $no_rawat)->where('prosedur_pasien.status', 'Ralan')->where('prosedur_pasien.prioritas', '1')->oneArray(); + $prosedure_pasien = $_prosedure_pasien['deskripsi_pendek'] ?? ''; + $kode_prosedure_pasien = $_prosedure_pasien['kode'] ?? ''; + // Harden: avoid deprecated calls with null and only mutate when safe + if ($kode_prosedure_pasien !== '' && strpos($kode_prosedure_pasien, '.') === false && strlen($kode_prosedure_pasien) >= 2) { + $kode_prosedure_pasien = substr_replace($kode_prosedure_pasien, '.', 2, 0); } $mlite_billing = $this->db('mlite_billing')->where('no_rawat', $no_rawat)->oneArray(); - if ($this->settings->get('satu_sehat.billing') == 'khanza') { - $mlite_billing = $this->db('nota_jalan')->select([ - 'tgl_billing' => 'tanggal', - 'jam_billing' => 'jam' - ]) - ->where('no_rawat', $no_rawat) - ->oneArray(); - if ($status_lanjut == 'Ranap') { - $mlite_billing = $this->db('nota_inap')->select([ - 'tgl_billing' => 'tanggal', - 'jam_billing' => 'jam' - ]) - ->where('no_rawat', $no_rawat) - ->oneArray(); - } - } $kunjungan = 'Kunjungan'; if ($status_lanjut == 'Ranap') { @@ -959,124 +1055,23 @@ public function getEncounterBundle($no_rawat) $uuid_nadi = $this->gen_uuid(); $uuid_procedure = $this->gen_uuid(); $uuid_composition = $this->gen_uuid(); + $uuid_clinical_impression_history = $this->gen_uuid(); + $uuid_clinical_impression_prognosis = $this->gen_uuid(); // $cek_ihs = $this->core->getPasienInfo('nip',$no_rkm_medis); // $ihs_patient = $cek_ihs; // if ($ihs_patient == '' || $ihs_patient == '-') { - $ihs_patient = json_decode($this->getPatient($no_ktp_pasien))->entry[0]->resource->id; - // $this->db('pasien')->where('no_rkm_medis',$no_rkm_medis)->update('nip',$ihs_patient); + $ihs_patient = ''; + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $ihs_patient = $__patientJson->entry[0]->resource->id; + } + // $this->db('pasien')->where('no_rkm_medis',$no_rkm_medis)->update('nip',$ihs_patient); // } $sistole = strtok($inProg['tensi'], '/'); $diastole = substr($inProg['tensi'], strpos($inProg['tensi'], '/') + 1); - if ($inProg['respirasi'] != '') { - $respiratory = '{ - "fullUrl": "urn:uuid:' . $uuid_respiration . '", - "resource": { - "resourceType": "Observation", - "status": "final", - "category": [ - { - "coding": [ - { - "system": "http://terminology.hl7.org/CodeSystem/observation-category", - "code": "vital-signs", - "display": "Vital Signs" - } - ] - } - ], - "code": { - "coding": [ - { - "system": "http://loinc.org", - "code": "9279-1", - "display": "Respiratory rate" - } - ] - }, - "subject": { - "reference": "Patient/' . $ihs_patient . '" - }, - "performer": [ - { - "reference": "Practitioner/' . $no_ktp_dokter['practitioner_id'] . '" - } - ], - "encounter": { - "reference": "urn:uuid:' . $uuid_encounter . '", - "display": "Pemeriksaan Fisik Pernafasan ' . $nama_pasien . ' di ' . $tgl_registrasi . '" - }, - "effectiveDateTime": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "issued": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "valueQuantity": { - "value": '.$inProg['respirasi'].', - "unit": "breaths/minute", - "system": "http://unitsofmeasure.org", - "code": "/min" - } - }, - "request": { - "method": "POST", - "url": "Observation" - } - },'; - } - - if ($inProg['nadi'] != '') { - $nadi = '{ - "fullUrl": "urn:uuid:' . $uuid_nadi . '", - "resource": { - "resourceType": "Observation", - "status": "final", - "category": [ - { - "coding": [ - { - "system": "http://terminology.hl7.org/CodeSystem/observation-category", - "code": "vital-signs", - "display": "Vital Signs" - } - ] - } - ], - "code": { - "coding": [ - { - "system": "http://loinc.org", - "code": "8867-4", - "display": "Heart rate" - } - ] - }, - "subject": { - "reference": "Patient/' . $ihs_patient . '" - }, - "performer": [ - { - "reference": "Practitioner/' . $no_ktp_dokter['practitioner_id'] . '" - } - ], - "encounter": { - "reference": "urn:uuid:' . $uuid_encounter . '", - "display": "Pemeriksaan Fisik Nadi ' . $nama_pasien . ' di ' . $tgl_registrasi . '" - }, - "effectiveDateTime": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "issued": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "valueQuantity": { - "value": '.$inProg['nadi'].', - "unit": "beats/minute", - "system": "http://unitsofmeasure.org", - "code": "/min" - } - }, - "request": { - "method": "POST", - "url": "Observation" - } - },'; - } - if ($inProg['tensi'] != '') { $diastole = '{ "fullUrl": "urn:uuid:' . $uuid_diastolik . '", @@ -1115,8 +1110,8 @@ public function getEncounterBundle($no_rawat) "reference": "urn:uuid:' . $uuid_encounter . '", "display": "Pemeriksaan Fisik Diastolik ' . $nama_pasien . ' di ' . $tgl_registrasi . '" }, - "effectiveDateTime": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "issued": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", + "effectiveDateTime": "' . $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu . '", + "issued": "' . $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu . '", "bodySite": { "coding": [ { @@ -1127,7 +1122,7 @@ public function getEncounterBundle($no_rawat) ] }, "valueQuantity": { - "value": '.$diastole.', + "value": ' . $diastole . ', "unit": "mm[Hg]", "system": "http://unitsofmeasure.org", "code": "mm[Hg]" @@ -1187,10 +1182,10 @@ public function getEncounterBundle($no_rawat) "reference": "urn:uuid:' . $uuid_encounter . '", "display": "Pemeriksaan Fisik Sistole ' . $nama_pasien . ' di ' . $tgl_registrasi . '" }, - "effectiveDateTime": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "issued": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", + "effectiveDateTime": "' . $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu . '", + "issued": "' . $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu . '", "valueQuantity": { - "value": '.$inProg['respirasi'].', + "value": ' . $inProg['respirasi'] . ', "unit": "breaths/minute", "system": "http://unitsofmeasure.org", "code": "/min" @@ -1203,6 +1198,40 @@ public function getEncounterBundle($no_rawat) },'; } + $composition_json = ''; + $display_composition = "Kunjungan ' . $nama_pasien . ' di tanggal ' . $tgl_registrasi . '"; + $zonaWaktu_composition = $this->convertTimeSatset($mlite_billing['tgl_billing'] . ' ' . $mlite_billing['jam_billing']) . '' . $zonawaktu; + $composition = new Composition( + $uuid_encounter, + $uuid_composition, + $ihs_patient, + $no_ktp_dokter['practitioner_id'], + $nama_pasien, + $nama_dokter, + $no_rawat, + $this->organizationid, + $display_composition, + $zonaWaktu_composition + ); + $composition_json = $composition->toJson(); + + $respiratory_json = ''; + if (!in_array($inProg['respirasi'], ['', '-'])) { + $zonaWaktu = $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu; + $display_respiratory = "Pemeriksaan Fisik Pernafasan ' . $nama_pasien . ' di ' . $tgl_registrasi . '"; + $respiratory = new Respiratory( + $uuid_encounter, + $uuid_respiration, + $ihs_patient, + $no_ktp_dokter['practitioner_id'], + $inProg['respirasi'], + $zonaWaktu, + $display_respiratory + ); + $respiratory_json = $respiratory->toJson(); + } + + $temperatur_json = ''; if ($inProg['suhu'] != '') { $value_temp = 'N'; $display_temp = 'Normal'; @@ -1217,189 +1246,348 @@ public function getEncounterBundle($no_rawat) $display_temp = 'Low'; $text_temp = 'bawah'; } - $suhu = '{ - "fullUrl": "urn:uuid:' . $uuid_suhu . '", - "resource": { - "resourceType": "Observation", - "status": "final", - "category": [ - { - "coding": [ - { - "system": "http://terminology.hl7.org/CodeSystem/observation-category", - "code": "vital-signs", - "display": "Vital Signs" - } - ] - } - ], - "code": { - "coding": [ - { - "system": "http://loinc.org", - "code": "8310-5", - "display": "Body temperature" - } - ] - }, - "subject": { - "reference": "Patient/' . $ihs_patient . '" - }, - "performer": [ - { - "reference": "Practitioner/' . $no_ktp_dokter['practitioner_id'] . '" - } - ], - "encounter": { - "reference": "urn:uuid:' . $uuid_encounter . '", - "display": "Pemeriksaan Fisik Suhu ' . $nama_pasien . ' di ' . $tgl_registrasi . '" - }, - "effectiveDateTime": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "issued": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "valueQuantity": { - "value": '.str_replace(',','.',$inProg['suhu']).', - "unit": "C", - "system": "http://unitsofmeasure.org", - "code": "Cel" - }, - "interpretation": [ - { - "coding": [ - { - "system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation", - "code": "'.$value_temp.'", - "display": "'.$display_temp.'" - } - ], - "text": "Di '.$text_temp.' nilai referensi" - } - ] - }, - "request": { - "method": "POST", - "url": "Observation" - } - },'; + $display_encounter_temp = "Pemeriksaan Fisik Suhu ' . $nama_pasien . ' di ' . $tgl_registrasi . '"; + $zonaWaktu = $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu; + $suhu = new Temperature( + $uuid_encounter, + $uuid_suhu, + $ihs_patient, + $no_ktp_dokter['practitioner_id'], + str_replace(',', '.', $inProg['suhu']), + $display_encounter_temp, + $value_temp, + $display_temp, + $text_temp, + $zonaWaktu + ); + $temperatur_json = $suhu->toJson(); + } + + $heart_rate_json = ''; + if (!in_array($inProg['nadi'], ['', '-'])) { + $zonaWaktu = $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu; + $display_nadi = "Pemeriksaan Fisik Nadi ' . $nama_pasien . ' di ' . $tgl_registrasi . '"; + $nadi = new Observation($uuid_encounter, $uuid_nadi, $ihs_patient, $no_ktp_dokter['practitioner_id'], $inProg['nadi'], $zonaWaktu, $display_nadi, 'nadi'); + $heart_rate_json = $nadi->toJsonBundle() . ','; } + $condition_json = ''; + if ($diagnosa_pasien['kd_penyakit'] != '') { + $display_condition = $kunjungan . ' ' . $nama_pasien . ' dari tanggal ' . $tgl_registrasi; + $condition = new Condition( + $uuid_encounter, + $uuid_condition, + $diagnosa_pasien['kd_penyakit'], + $diagnosa_pasien['nm_penyakit'], + $ihs_patient, + $nama_pasien, + $display_condition + ); + $condition_json = $condition->toJson(); + } + + $procedure_json = ''; if ($prosedure_pasien) { - $procedure = '{ - "fullUrl": "urn:uuid:' . $uuid_procedure . '", - "resource": { - "resourceType": "Procedure", - "status": "completed", - "category": { - "coding": [ - { - "system": "http://snomed.info/sct", - "code": "103693007", - "display": "Diagnostic procedure" - } - ], - "text": "Diagnostic procedure" - }, - "code": { - "coding": [ - { - "system": "http://hl7.org/fhir/sid/icd-9-cm", - "code": "'.$kode_prosedure_pasien.'", - "display": "'.$prosedure_pasien.'" - } - ] - }, - "subject": { - "reference": "Patient/' . $ihs_patient . '", - "display": "' . $nama_pasien . '" - }, - "encounter": { - "reference": "urn:uuid:' . $uuid_encounter . '", - "display": "Tindakan pada ' . $nama_pasien . ' di tanggal ' . $tgl_registrasi . '" - }, - "performedPeriod": { - "start": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "end": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '" - }, - "performer": [ - { - "actor": { - "reference": "Practitioner/' . $no_ktp_dokter['practitioner_id'] . '", - "display": "' . $nama_dokter . '" - } - } - ], - "reasonCode": [ - { - "coding": [ - { - "system": "http://hl7.org/fhir/sid/icd-10", - "code": "' . $diagnosa_pasien['kd_penyakit'] . '", - "display": "' . $diagnosa_pasien['nm_penyakit'] . '" - } - ] - } - ] - }, - "request": { - "method": "POST", - "url": "Procedure" + $display_procedure = "Tindakan pada ' . $nama_pasien . ' di tanggal ' . $tgl_registrasi . '"; + $zonaWaktu = $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu; + $procedure = new Procedure( + $uuid_encounter, + $uuid_procedure, + $kode_prosedure_pasien, + $prosedure_pasien, + $ihs_patient, + $nama_pasien, + $display_procedure, + $zonaWaktu, + $no_ktp_dokter['practitioner_id'], + $nama_dokter, + $diagnosa_pasien['kd_penyakit'], + $diagnosa_pasien['nm_penyakit'] + ); + $procedure_json = $procedure->toJson(); + } + + $careplan_json = ''; + $cek_ranap = $this->db('kamar_inap')->where('no_rawat', $no_rawat)->oneArray(); + if ($cek_ranap) { + $uuid_careplan = $this->gen_uuid(); + $careplan = new CarePlan($ihs_patient, $uuid_encounter, $uuid_careplan, "Pasien Dirawat Inapkan", "Rawat Inap", $no_ktp_dokter['practitioner_id']); + $careplan_json = $careplan->toJsonBundle() . ','; + } + + $medicationforrequest_json = ''; + $medicationrequest_json = ''; + // map of MedicationRequest UUIDs by drug code for later linking + $medicationrequest_ids = []; + $no = 1; + $cek_resep = $this->db('resep_dokter')->join('resep_obat', 'resep_obat.no_resep = resep_dokter.no_resep')->where('no_rawat', $no_rawat)->where('status', 'ralan')->toArray(); + foreach ($cek_resep as $value) { + $cek_obat = $this->db('mlite_satu_sehat_mapping_obat')->where('kode_brng', $value['kode_brng'])->oneArray(); + if ($cek_obat) { + $uuid_medication = $this->gen_uuid(); + $uuid_medicationrequest = $this->gen_uuid(); + $system_cek = 'http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm'; + if ($cek_obat['satuan_den'] == '385057009' || $cek_obat['satuan_den'] == '421366001') { + $system_cek = 'http://snomed.info/sct'; } - },'; + + $medication = new Medication( + $uuid_medication, + $this->organizationid, + $no_rawat, + $cek_obat['kode_kfa'], + $cek_obat['nama_kfa'], + $cek_obat['kode_sediaan'], + $cek_obat['nama_sediaan'], + $cek_obat['kode_bahan'], + $cek_obat['nama_bahan'], + $cek_obat['satuan_num'], + $cek_obat['numerator'], + $cek_obat['satuan_den'], + $system_cek, + $value['jml'], + $no . $this->ran_char() + ); + $medicationforrequest_json .= $medication->toJson(); + + $time_authored = $this->convertTimeSatset($value['tgl_peresepan'] . ' ' . $value['jam_peresepan']) . $zonawaktu; + $medicationrequest = new MedicationRequest( + $uuid_medication, + $uuid_medicationrequest, + $this->organizationid, + $value['no_resep'], + $cek_obat['nama_kfa'], + $ihs_patient, + $nama_pasien, + $time_authored, + $no_ktp_dokter['practitioner_id'], + $nama_dokter, + $uuid_condition, + $uuid_encounter, + $diagnosa_pasien['nm_penyakit'], + $value['aturan_pakai'], + $cek_obat['kode_route'], + $cek_obat['nama_route'], + $value['jml'], + $cek_obat['satuan_den'], + $system_cek, + $cek_obat['satuan_den'], + $no . $this->ran_char() + ); + $medicationrequest_json .= $medicationrequest->toJson(); + // store MR id by drug code for linking in dispense section + if (!empty($value['kode_brng'])) { + $medicationrequest_ids[$value['kode_brng']] = $uuid_medicationrequest; + } + + $no++; + } } - $composition = '{ - "fullUrl": "urn:uuid:' . $uuid_composition . '", - "resource": { - "resourceType": "Composition", - "identifier": { - "system": "http://sys-ids.kemkes.go.id/composition/' . $this->organizationid . '", - "value": "' . $no_rawat . '" - }, - "status": "final", - "type": { - "coding": [ - { - "system": "http://loinc.org", - "code": "18842-5", - "display": "Discharge summary" - } - ] - }, - "category": [ - { - "coding": [ - { - "system": "http://loinc.org", - "code": "LP173421-1", - "display": "Report" - } - ] - } - ], - "subject": { - "reference": "Patient/' . $ihs_patient . '", - "display": "' . $nama_pasien . '" - }, - "encounter": { - "reference": "urn:uuid:' . $uuid_encounter . '", - "display": "Kunjungan ' . $nama_pasien . ' di tanggal ' . $tgl_registrasi . '" - }, - "date": "' . $this->convertTimeSatset($mlite_billing['tgl_billing'].' '.$mlite_billing['jam_billing']) . '' . $zonawaktu . '", - "author": [ - { - "reference": "Practitioner/' . $no_ktp_dokter['practitioner_id'] . '", - "display": "' . $nama_dokter . '" - } - ], - "title": "Resume Medis Rawat Jalan", - "custodian": { - "reference": "Organization/' . $this->organizationid . '" - } - }, - "request": { - "method": "POST", - "url": "Composition" + $medicationfordispense_json = ''; + $medicationdispense_json = ''; + $no = 1; + $cek_detail = $this->db('detail_pemberian_obat')->where('no_rawat', $no_rawat)->toArray(); + $praktisi_apoteker = $this->db('mlite_satu_sehat_mapping_praktisi')->select('practitioner_id', 'kd_dokter')->where('jenis_praktisi', 'Apoteker')->toArray(); + // Guard against empty practitioner list + if (!is_array($praktisi_apoteker) || empty($praktisi_apoteker)) { + // Fallback: attempt to use prescribing doctor as pharmacist context + $id_praktisi_apoteker = [ + 'practitioner_id' => $no_ktp_dokter['practitioner_id'] ?? ($no_ktp_dokter['practitioner_id'] ?? ''), + 'kd_dokter' => $kd_dokter + ]; + } else { + $id_praktisi_apoteker = $praktisi_apoteker[array_rand($praktisi_apoteker)]; + } + $nama_praktisi_apoteker = $this->core->getPegawaiInfo('nama', $id_praktisi_apoteker['kd_dokter'] ?? $kd_dokter); + foreach ($cek_detail as $value) { + $cek_obat = $this->db('mlite_satu_sehat_mapping_obat')->where('kode_brng', $value['kode_brng'])->oneArray(); + $cek_aturan_pakai = $this->db('aturan_pakai')->where('no_rawat', $no_rawat)->where('kode_brng', $value['kode_brng'])->where('jam', $value['jam'])->oneArray(); + if ($cek_obat && $cek_aturan_pakai) { + $uuid_medication_for_dispense = $this->gen_uuid(); + $uuid_medication_dispense = $this->gen_uuid(); + $system_cek = 'http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm'; + if ($cek_obat['satuan_den'] == '385057009' || $cek_obat['satuan_den'] == '421366001') { + $system_cek = 'http://snomed.info/sct'; + } + + $medication_for_dispense = new Medication( + $uuid_medication_for_dispense, + $this->organizationid, + $no_rawat, + $cek_obat['kode_kfa'], + $cek_obat['nama_kfa'], + $cek_obat['kode_sediaan'], + $cek_obat['nama_sediaan'], + $cek_obat['kode_bahan'], + $cek_obat['nama_bahan'], + $cek_obat['satuan_num'], + $cek_obat['numerator'], + $cek_obat['satuan_den'], + $system_cek, + $value['jml'], + $no . $this->ran_char() + ); + $medicationfordispense_json .= $medication_for_dispense->toJson(); + + $time_prepared_handed = $this->convertTimeSatset($value['tgl_perawatan'] . ' ' . $value['jam']) . $zonawaktu; + // find matching MedicationRequest id by drug code; fallback to new UUID + $mr_uuid_for_dispense = $medicationrequest_ids[$value['kode_brng']] ?? $this->gen_uuid(); + $medication_dispense = new MedicationDispense( + $uuid_medication_dispense, + $this->organizationid, + $no_rawat, + $uuid_medication_for_dispense, + $cek_obat['nama_kfa'], + $ihs_patient, + $nama_pasien, + $uuid_encounter, + $id_praktisi_apoteker['practitioner_id'], + $nama_praktisi_apoteker, + $mlite_satu_sehat_lokasi['id_lokasi_satusehat'], + $mr_uuid_for_dispense, + $time_prepared_handed, + $time_prepared_handed, + $cek_aturan_pakai['aturan'], + $value['jml'], + $cek_obat['satuan_den'], + $system_cek, + $cek_obat['satuan_den'], + $no . $this->ran_char() + ); + $medicationdispense_json .= $medication_dispense->toJson(); + + $no++; } - }'; + } + + $questionare_json = ''; + $careplan_medication_json = ''; + if ($medicationdispense_json) { + $uuid_questionare = $this->gen_uuid(); + $questionare = new QuestionareMedication($uuid_questionare, $uuid_encounter, $ihs_patient, $nama_pasien, $id_praktisi_apoteker['practitioner_id'], $nama_praktisi_apoteker); + $questionare_json = $questionare->toJson(); + + $uuid_careplan = $this->gen_uuid(); + $careplan = new CarePlan($ihs_patient, $uuid_encounter, $uuid_careplan, "Pasien Mendapatkan Resep Obat", "Resep Obat", $no_ktp_dokter['practitioner_id']); + $careplan_medication_json = $careplan->toJsonBundle() . ','; + } + + $clinical_impression_json_history = ''; + if ($inProg['keluhan'] != '') { + $clinicalimpression_history = new ClinicalImpression( + $this->organizationid, + $uuid_clinical_impression_history, + $no_rawat, + $ihs_patient, + $nama_pasien, + $uuid_encounter, + $inProg['keluhan'], + "in-progress" + ); + $clinical_impression_json_history = $clinicalimpression_history->toJsonBundle() . ','; + } + + $clinical_impression_json_prognosis = ''; + if ($inProg['penilaian'] != '') { + $clinicalimpression = new ClinicalImpression( + $this->organizationid, + $uuid_clinical_impression_prognosis, + $no_rawat, + $ihs_patient, + $nama_pasien, + $uuid_encounter, + $inProg['penilaian'], + "completed" + ); + $clinical_impression_json_prognosis = $clinicalimpression->toJsonBundle() . ','; + } + + $service_request_lab_json = []; + $specimen_json = []; + $observation_lab_json = []; + $diagnostic_report_json = []; + $permintaan_lab = $this->db('permintaan_lab')->join('permintaan_pemeriksaan_lab', 'permintaan_lab.noorder = permintaan_pemeriksaan_lab.noorder')->where('no_rawat', $no_rawat)->toArray(); + foreach ($permintaan_lab as $value) { + $check_mapping_lab = $this->db('mlite_satu_sehat_mapping_lab')->where('kd_jenis_prw', $value['kd_jenis_prw'])->oneArray(); + if ($check_mapping_lab && $check_mapping_lab['id_template'] != '' && $check_mapping_lab['jenis_pemeriksaan'] == 'tunggal') { + $praktisi_lab = $this->db('mlite_satu_sehat_mapping_praktisi')->select('practitioner_id', 'kd_dokter')->where('jenis_praktisi', 'Laboratorium')->toArray(); + $id_praktisi_lab = $praktisi_lab[array_rand($praktisi_lab)]; + $nama_praktisi_lab = $this->core->getPegawaiInfo('nama', $id_praktisi_lab['kd_dokter']); + $no_ktp_dokter_perujuk = $this->db('mlite_satu_sehat_mapping_praktisi')->select('practitioner_id')->where('kd_dokter', $value['dokter_perujuk'])->oneArray(); + $nama_dokter_perujuk = $this->core->getPegawaiInfo('nama', $value['dokter_perujuk']); + $nama_tindakan = $this->db('jns_perawatan_lab')->select('nm_perawatan')->where('kd_jenis_prw', $value['kd_jenis_prw'])->oneArray(); + $time_sampled = $this->convertTimeSatset($value['tgl_sample'] . ' ' . $value['jam_sample']) . $zonawaktu; + $time_result = $this->convertTimeSatset($value['tgl_hasil'] . ' ' . $value['jam_hasil']) . $zonawaktu; + + $uuid_service_request_lab = $this->gen_uuid(); + $uuid_specimen_lab = $this->gen_uuid(); + $uuid_observation_lab = $this->gen_uuid(); + $uuid_diagnostic_report = $this->gen_uuid(); + + + $service_request_lab = new ServiceRequest( + $uuid_service_request_lab, + $this->organizationid, + $no_rawat, + $ihs_patient, + $uuid_encounter, + $no_ktp_dokter_perujuk['practitioner_id'], + $nama_dokter_perujuk, + $check_mapping_lab['code_loinc'], + $check_mapping_lab['display_loinc'], + $check_mapping_lab['code_kptl'], + $check_mapping_lab['display_kptl'], + $nama_tindakan['nm_perawatan'] + ); + $service_request_lab_json[] = $service_request_lab->toJsonBundle() . ','; + + $specimen_lab = new Specimen($uuid_specimen_lab, $this->organizationid, $ihs_patient, $nama_pasien, $uuid_service_request_lab, $no_rawat, $time_sampled); + $specimen_json[] = $specimen_lab->toJsonBundle() . ','; + + $cek_hasil_lab = $this->db('detail_periksa_lab')->where('no_rawat', $no_rawat)->where('kd_jenis_prw', $value['kd_jenis_prw'])->where('tgl_periksa', $value['tgl_hasil'])->where('jam', $value['jam_hasil'])->oneArray(); + $observation_lab = new Observation( + $uuid_encounter, + $uuid_observation_lab, + $ihs_patient, + $id_praktisi_lab, + $cek_hasil_lab['nilai'], + $time_result, + "", + "lab", + $uuid_specimen_lab, + $uuid_service_request_lab, + $check_mapping_lab['code_loinc'], + $check_mapping_lab['display_loinc'] + ); + $observation_lab_json[] = $observation_lab->toJsonBundle() . ','; + + $diagnostic_report_lab = new DiagnosticReport( + $uuid_diagnostic_report, + $uuid_specimen_lab, + $uuid_encounter, + $uuid_service_request_lab, + $uuid_observation_lab, + $id_praktisi_lab, + $ihs_patient, + $check_mapping_lab['code_loinc'], + $check_mapping_lab['display_loinc'], + $time_result + ); + $diagnostic_report_json[] = $diagnostic_report_lab->toJsonBundle() . ','; + } + } + $service_request_lab_json_decode = implode("\n", $service_request_lab_json); + $specimen_lab_json_decode = implode("\n", $specimen_json); + $observation_lab_json_decode = implode("\n", $observation_lab_json); + $diagnostic_report_json_decode = implode("\n", $diagnostic_report_json); + + $careplan_service_request_lab_json = ''; + if ($service_request_lab_json_decode) { + $uuid_careplan = $this->gen_uuid(); + $careplan = new CarePlan($ihs_patient, $uuid_encounter, $uuid_careplan, "Pasien Mendapatkan Pemeriksaan Laboratorium", "Pemeriksaan Laboratorium", $no_ktp_dokter['practitioner_id']); + $careplan_service_request_lab_json = $careplan->toJsonBundle() . ','; + } // Bundle dari sini ---------------------------------------------------------------------- $json_bundle = '{ @@ -1413,8 +1601,8 @@ public function getEncounterBundle($no_rawat) "status": "finished", "class": { "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode", - "code": "'.$code.'", - "display": "'.$display.'" + "code": "' . $code . '", + "display": "' . $display . '" }, "subject": { "reference": "Patient/' . $ihs_patient . '", @@ -1440,8 +1628,8 @@ public function getEncounterBundle($no_rawat) } ], "period": { - "start": "' . $this->convertTimeSatset($tgl_registrasi.' '.$jam_reg) . '' . $zonawaktu . '", - "end": "' . $this->convertTimeSatset($mlite_billing['tgl_billing'].' '.$mlite_billing['jam_billing']) . '' . $zonawaktu . '" + "start": "' . $this->convertTimeSatset($tgl_registrasi . ' ' . $jam_reg) . '' . $zonawaktu . '", + "end": "' . $this->convertTimeSatset($mlite_billing['tgl_billing'] . ' ' . $mlite_billing['jam_billing']) . '' . $zonawaktu . '" }, "location": [ { @@ -1473,22 +1661,22 @@ public function getEncounterBundle($no_rawat) { "status": "arrived", "period": { - "start": "' . $this->convertTimeSatset($tgl_registrasi.' '.$jam_reg) . '' . $zonawaktu . '", - "end": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '" + "start": "' . $this->convertTimeSatset($tgl_registrasi . ' ' . $jam_reg) . '' . $zonawaktu . '", + "end": "' . $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu . '" } }, { "status": "in-progress", "period": { - "start": "' . $this->convertTimeSatset($inProg['tgl'].' '.$inProg['jam']) . '' . $zonawaktu . '", - "end": "' . $this->convertTimeSatset($mlite_billing['tgl_billing'].' '.$mlite_billing['jam_billing']) . '' . $zonawaktu . '" + "start": "' . $this->convertTimeSatset($inProg['tgl'] . ' ' . $inProg['jam']) . '' . $zonawaktu . '", + "end": "' . $this->convertTimeSatset($mlite_billing['tgl_billing'] . ' ' . $mlite_billing['jam_billing']) . '' . $zonawaktu . '" } }, { "status": "finished", "period": { - "start": "' . $this->convertTimeSatset($mlite_billing['tgl_billing'].' '.$mlite_billing['jam_billing']) . '' . $zonawaktu . '", - "end": "' . $this->convertTimeSatset($mlite_billing['tgl_billing'].' '.$mlite_billing['jam_billing']) . '' . $zonawaktu . '" + "start": "' . $this->convertTimeSatset($mlite_billing['tgl_billing'] . ' ' . $mlite_billing['jam_billing']) . '' . $zonawaktu . '", + "end": "' . $this->convertTimeSatset($mlite_billing['tgl_billing'] . ' ' . $mlite_billing['jam_billing']) . '' . $zonawaktu . '" } } ], @@ -1506,59 +1694,27 @@ public function getEncounterBundle($no_rawat) "method": "POST", "url": "Encounter" } - },'. - $respiratory. - $suhu. - $nadi - .'{ - "fullUrl": "urn:uuid:' . $uuid_condition . '", - "resource": { - "resourceType": "Condition", - "clinicalStatus": { - "coding": [ - { - "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", - "code": "active", - "display": "Active" - } - ] - }, - "category": [ - { - "coding": [ - { - "system": "http://terminology.hl7.org/CodeSystem/condition-category", - "code": "encounter-diagnosis", - "display": "Encounter Diagnosis" - } - ] - } - ], - "code": { - "coding": [ - { - "system": "http://hl7.org/fhir/sid/icd-10", - "code": "' . $diagnosa_pasien['kd_penyakit'] . '", - "display": "' . $diagnosa_pasien['nm_penyakit'] . '" - } - ] - }, - "subject": { - "reference": "Patient/' . $ihs_patient . '", - "display": "' . $nama_pasien . '" - }, - "encounter": { - "reference": "urn:uuid:' . $uuid_encounter . '", - "display": "' . $kunjungan . ' ' . $nama_pasien . ' dari tanggal ' . $tgl_registrasi . '" - } - }, - "request": { - "method": "POST", - "url": "Condition" - } - },' - .$procedure - .$composition. + },' . + $respiratory_json . + $temperatur_json . + $heart_rate_json . + $clinical_impression_json_history . + $careplan_json . + $careplan_service_request_lab_json . + $service_request_lab_json_decode . + $specimen_lab_json_decode . + $observation_lab_json_decode . + $diagnostic_report_json_decode . + $condition_json . + $procedure_json . + $careplan_medication_json . + $medicationforrequest_json . + $medicationrequest_json . + $questionare_json . + $medicationfordispense_json . + $medicationdispense_json . + $clinical_impression_json_prognosis . + $composition_json . '] }'; $curl = curl_init(); @@ -1583,12 +1739,25 @@ public function getEncounterBundle($no_rawat) $id_observation_nadi = NULL; $id_procedure = NULL; $id_composition = NULL; - - $entry = json_decode($response)->entry; + $id_medication_for_request = NULL; + $id_medication_request = NULL; + $id_medication_dispense = NULL; + $id_clinical_impression = NULL; + $id_service_request_lab = NULL; + $id_specimen_lab = NULL; + $id_observation_lab = NULL; + $id_diagnostic_report_lab = NULL; + $id_careplan = NULL; + + $decodedResponse = json_decode($response); + $entry = (is_object($decodedResponse) && isset($decodedResponse->entry) && is_array($decodedResponse->entry)) ? $decodedResponse->entry : []; $index = ''; - foreach ($entry as $key => $value) { - $resourceType = $value->response->resourceType; - $index = $index.' '.$key.'|'.$resourceType.' '; + foreach ((array) $entry as $key => $value) { + $resourceType = (isset($value->response) && isset($value->response->resourceType)) ? $value->response->resourceType : null; + if ($resourceType === null) { + continue; + } + $index = $index . ' { ' . $key . '. ' . $resourceType . ' } '; if ($resourceType == 'Encounter') { $id_encounter = $value->response->resourceID; } @@ -1596,7 +1765,7 @@ public function getEncounterBundle($no_rawat) $id_condition = $value->response->resourceID; } if ($resourceType == 'Observation') { - if (!empty($respiratory && $suhu && $nadi)) { + if (!empty($respiratory_json && $temperatur_json && $heart_rate_json)) { if ($key == '1') { $id_observation_respiratory = $value->response->resourceID; } @@ -1607,7 +1776,7 @@ public function getEncounterBundle($no_rawat) $id_observation_nadi = $value->response->resourceID; } } - if (!empty($respiratory && $suhu) && empty($nadi)) { + if (!empty($respiratory_json && $temperatur_json) && empty($heart_rate_json)) { if ($key == '1') { $id_observation_respiratory = $value->response->resourceID; } @@ -1615,7 +1784,7 @@ public function getEncounterBundle($no_rawat) $id_observation_temp = $value->response->resourceID; } } - if (!empty($respiratory && $nadi) && empty($suhu)) { + if (!empty($respiratory_json && $heart_rate_json) && empty($temperatur_json)) { if ($key == '1') { $id_observation_respiratory = $value->response->resourceID; } @@ -1623,7 +1792,7 @@ public function getEncounterBundle($no_rawat) $id_observation_nadi = $value->response->resourceID; } } - if (!empty($suhu && $nadi) && empty($respiratory)) { + if (!empty($temperatur_json && $heart_rate_json) && empty($respiratory_json)) { if ($key == '1') { $id_observation_temp = $value->response->resourceID; } @@ -1631,22 +1800,21 @@ public function getEncounterBundle($no_rawat) $id_observation_nadi = $value->response->resourceID; } } - if (!empty($respiratory) && empty($suhu && $nadi)) { + if (!empty($respiratory_json) && empty($temperatur_json && $heart_rate_json)) { if ($key == '1') { $id_observation_respiratory = $value->response->resourceID; } } - if (!empty($suhu) && empty($respiratory && $nadi)) { + if (!empty($temperatur_json) && empty($respiratory_json && $heart_rate_json)) { if ($key == '1') { $id_observation_temp = $value->response->resourceID; } } - if (!empty($nadi) && empty($respiratory && $suhu)) { + if (!empty($heart_rate_json) && empty($respiratory_json && $temperatur_json)) { if ($key == '1') { $id_observation_nadi = $value->response->resourceID; } } - } if ($resourceType == 'Procedure') { $id_procedure = $value->response->resourceID; @@ -1654,9 +1822,36 @@ public function getEncounterBundle($no_rawat) if ($resourceType == 'Composition') { $id_composition = $value->response->resourceID; } + if ($resourceType == 'Medication') { + $id_medication_for_request = $value->response->resourceID; + } + if ($resourceType == 'MedicationRequest') { + $id_medication_request = $value->response->resourceID; + } + if ($resourceType == 'MedicationDispense') { + $id_medication_dispense = $value->response->resourceID; + } + if ($resourceType == 'ClinicalImpression') { + $id_clinical_impression = $value->response->resourceID; + } + if ($resourceType == 'ServiceRequest') { + $id_service_request_lab = $value->response->resourceID; + } + if ($resourceType == 'Specimen') { + $id_specimen_lab = $value->response->resourceID; + } + if ($resourceType == 'Observation' && $observation_lab_json_decode) { + $id_observation_lab = $value->response->resourceID; + } + if ($resourceType == 'DiagnosticReport') { + $id_diagnostic_report_lab = $value->response->resourceID; + } + if ($resourceType == 'CarePlan') { + $id_careplan = $value->response->resourceID; + } } - $pesan = 'Gagal mengirim encounter & condition platform Satu Sehat!!'; + $pesan = 'Gagal mengirim pasien dengan No Rawat : ' . $no_rawat . ' ke platform Satu Sehat!!'; if ($id_encounter) { $this->db('mlite_satu_sehat_response')->save([ 'no_rawat' => $no_rawat, @@ -1666,21 +1861,30 @@ public function getEncounterBundle($no_rawat) 'id_observation_ttvsuhu' => $id_observation_temp, 'id_observation_ttvnadi' => $id_observation_nadi, 'id_procedure' => $id_procedure, - 'id_composition' => $id_composition + 'id_composition' => $id_composition, + 'id_medication_request' => $id_medication_request, + 'id_medication_dispense' => $id_medication_dispense, + 'id_clinical_impression' => $id_clinical_impression, + 'id_lab_pk_request' => $id_service_request_lab, + 'id_lab_pk_specimen' => $id_specimen_lab, + 'id_lab_pk_observation' => $id_observation_lab, + 'id_lab_pk_diagnostic' => $id_diagnostic_report_lab, + 'id_careplan' => $id_careplan, ]); - $pesan = 'Sukses mengirim '.$index.' platform Satu Sehat!! '; + $pesan = 'Sukses mengirim pasien dengan No Rawat : ' . $no_rawat . ' ' . $index . ' ke platform Satu Sehat!! '; } curl_close($curl); - echo $this->draw('encounter.html', ['pesan' => $pesan, 'response' => $response]); - // DEBUG ****** - // $response = json_decode($json_bundle); - // print_r($json_bundle); - exit(); + if ($param == "all") { + return json_decode($response); + } else { + echo $this->draw('encounter.html', ['pesan' => $pesan, 'response' => $response]); + exit(); + } } - public function getCondition($no_rawat) + public function getCondition($no_rawat, $render = true) { $zonawaktu = '+07:00'; @@ -1719,6 +1923,36 @@ public function getCondition($no_rawat) $kunjungan = 'Perawatan'; } + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $ihs_patient = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $ihs_patient = $__patientJson->entry[0]->resource->id; + } + + $kd_penyakit = $diagnosa_pasien['kd_penyakit'] ?? null; + $nm_penyakit = $diagnosa_pasien['nm_penyakit'] ?? null; + $encounter_id = $mlite_satu_sehat_response['id_encounter'] ?? null; + + if ($ihs_patient === '' || !$kd_penyakit || !$nm_penyakit || !$encounter_id) { + $error = [ + 'error' => 'Data tidak lengkap untuk Condition', + 'missing' => [ + 'patient_id' => $ihs_patient === '' ? 'missing' : 'ok', + 'kd_penyakit' => !$kd_penyakit ? 'missing' : 'ok', + 'nm_penyakit' => !$nm_penyakit ? 'missing' : 'ok', + 'id_encounter' => !$encounter_id ? 'missing' : 'ok' + ] + ]; + $response = json_encode($error, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('condition.html', ['pesan' => 'Gagal mengirim condition platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $curl = curl_init(); curl_setopt_array($curl, array( @@ -1757,17 +1991,17 @@ public function getCondition($no_rawat) "coding": [ { "system": "http://hl7.org/fhir/sid/icd-10", - "code": "' . $diagnosa_pasien['kd_penyakit'] . '", - "display": "' . $diagnosa_pasien['nm_penyakit'] . '" + "code": "' . $kd_penyakit . '", + "display": "' . $nm_penyakit . '" } ] }, "subject": { - "reference": "Patient/' . json_decode($this->getPatient($no_ktp_pasien))->entry[0]->resource->id . '", + "reference": "Patient/' . $ihs_patient . '", "display": "' . $nama_pasien . '" }, "encounter": { - "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '", + "reference": "Encounter/' . $encounter_id . '", "display": "' . $kunjungan . ' ' . $nama_pasien . ' dari tanggal ' . $tgl_registrasi . '" } }', @@ -1776,7 +2010,8 @@ public function getCondition($no_rawat) $response = curl_exec($curl); - $id_condition = json_decode($response)->id; + $decoded = json_decode($response); + $id_condition = (is_object($decoded) && isset($decoded->id)) ? $decoded->id : null; $pesan = 'Gagal mengirim condition platform Satu Sehat!!'; if ($id_condition) { $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); @@ -1798,12 +2033,16 @@ public function getCondition($no_rawat) } curl_close($curl); - // echo $response; - echo $this->draw('condition.html', ['pesan' => $pesan, 'response' => $response]); + if ($render) { + echo $this->draw('condition.html', ['pesan' => $pesan, 'response' => $response]); + } else { + $data = json_decode($response); + echo $data ? json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) : $response; + } exit(); } - public function getObservation($no_rawat, $ttv) + public function getObservation($no_rawat, $ttv, $render = true) { $zonawaktu = '+07:00'; @@ -1830,6 +2069,19 @@ public function getObservation($no_rawat, $ttv) $mlite_billing = $this->db('mlite_billing')->where('no_rawat', $no_rawat)->oneArray(); $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $ihs_patient = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $ihs_patient = $__patientJson->entry[0]->resource->id; + } + $__pracResp = $this->getPractitioner($no_ktp_dokter); + $__pracJson = json_decode($__pracResp); + $practitioner_id = ''; + if (is_object($__pracJson) && isset($__pracJson->entry) && is_array($__pracJson->entry) && isset($__pracJson->entry[0]) && isset($__pracJson->entry[0]->resource) && isset($__pracJson->entry[0]->resource->id)) { + $practitioner_id = $__pracJson->entry[0]->resource->id; + } + $encounter_id = $mlite_satu_sehat_response['id_encounter'] ?? null; $pemeriksaan = $this->db('pemeriksaan_ralan') ->where('no_rawat', $no_rawat) @@ -1858,7 +2110,17 @@ public function getObservation($no_rawat, $ttv) $ttv_hl7_display = 'Vital Signs'; $ttv_loinc_code = '8867-4'; $ttv_loinc_display = 'Heart rate'; - $ttv_unitsofmeasure_value = $pemeriksaan['nadi']; + $val = isset($pemeriksaan['nadi']) ? trim((string) $pemeriksaan['nadi']) : ''; + if ($val === '') { + $response = json_encode(['error' => 'Data tidak lengkap untuk Observation', 'missing' => ['nadi' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $ttv_unitsofmeasure_value = $val; $ttv_unitsofmeasure_unit = 'beats/minute'; $ttv_unitsofmeasure_code = '/min'; } @@ -1868,7 +2130,17 @@ public function getObservation($no_rawat, $ttv) $ttv_hl7_display = 'Vital Signs'; $ttv_loinc_code = '9279-1'; $ttv_loinc_display = 'Respiratory rate'; - $ttv_unitsofmeasure_value = $pemeriksaan['respirasi']; + $val = isset($pemeriksaan['respirasi']) ? trim((string) $pemeriksaan['respirasi']) : ''; + if ($val === '') { + $response = json_encode(['error' => 'Data tidak lengkap untuk Observation', 'missing' => ['respirasi' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $ttv_unitsofmeasure_value = $val; $ttv_unitsofmeasure_unit = 'breaths/minute'; $ttv_unitsofmeasure_code = '/min'; } @@ -1878,7 +2150,17 @@ public function getObservation($no_rawat, $ttv) $ttv_hl7_display = 'Vital Signs'; $ttv_loinc_code = '8310-5'; $ttv_loinc_display = 'Body temperature'; - $ttv_unitsofmeasure_value = $pemeriksaan['suhu_tubuh']; + $val = isset($pemeriksaan['suhu_tubuh']) ? trim((string) $pemeriksaan['suhu_tubuh']) : ''; + if ($val === '') { + $response = json_encode(['error' => 'Data tidak lengkap untuk Observation', 'missing' => ['suhu_tubuh' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $ttv_unitsofmeasure_value = $val; $ttv_unitsofmeasure_unit = 'degree Celsius'; $ttv_unitsofmeasure_code = 'Cel'; } @@ -1888,7 +2170,17 @@ public function getObservation($no_rawat, $ttv) $ttv_hl7_display = 'Vital Signs'; $ttv_loinc_code = '59408-5'; $ttv_loinc_display = 'Oxygen saturation'; - $ttv_unitsofmeasure_value = $pemeriksaan['spo2']; + $val = isset($pemeriksaan['spo2']) ? trim((string) $pemeriksaan['spo2']) : ''; + if ($val === '') { + $response = json_encode(['error' => 'Data tidak lengkap untuk Observation', 'missing' => ['spo2' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $ttv_unitsofmeasure_value = $val; $ttv_unitsofmeasure_unit = 'percent saturation'; $ttv_unitsofmeasure_code = '%'; } @@ -1898,7 +2190,17 @@ public function getObservation($no_rawat, $ttv) $ttv_hl7_display = 'Vital Signs'; $ttv_loinc_code = '9269-2'; $ttv_loinc_display = 'Glasgow coma score total'; - $ttv_unitsofmeasure_value = $pemeriksaan['gcs']; + $val = isset($pemeriksaan['gcs']) ? trim((string) $pemeriksaan['gcs']) : ''; + if ($val === '') { + $response = json_encode(['error' => 'Data tidak lengkap untuk Observation', 'missing' => ['gcs' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $ttv_unitsofmeasure_value = $val; $ttv_unitsofmeasure_code = '{score}'; } @@ -1907,7 +2209,17 @@ public function getObservation($no_rawat, $ttv) $ttv_hl7_display = 'Vital Signs'; $ttv_loinc_code = '8302-2'; $ttv_loinc_display = 'Body height'; - $ttv_unitsofmeasure_value = $pemeriksaan['tinggi']; + $val = isset($pemeriksaan['tinggi']) ? trim((string) $pemeriksaan['tinggi']) : ''; + if ($val === '') { + $response = json_encode(['error' => 'Data tidak lengkap untuk Observation', 'missing' => ['tinggi' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $ttv_unitsofmeasure_value = $val; $ttv_unitsofmeasure_unit = 'centimeter'; $ttv_unitsofmeasure_code = 'cm'; } @@ -1917,7 +2229,17 @@ public function getObservation($no_rawat, $ttv) $ttv_hl7_display = 'Vital Signs'; $ttv_loinc_code = '29463-7'; $ttv_loinc_display = 'Body weight'; - $ttv_unitsofmeasure_value = $pemeriksaan['berat']; + $val = isset($pemeriksaan['berat']) ? trim((string) $pemeriksaan['berat']) : ''; + if ($val === '') { + $response = json_encode(['error' => 'Data tidak lengkap untuk Observation', 'missing' => ['berat' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $ttv_unitsofmeasure_value = $val; $ttv_unitsofmeasure_unit = 'kilogram'; $ttv_unitsofmeasure_code = 'kg'; } @@ -1927,7 +2249,17 @@ public function getObservation($no_rawat, $ttv) $ttv_hl7_display = 'Vital Signs'; $ttv_loinc_code = '8280-0'; $ttv_loinc_display = 'Waist Circumference at umbilicus by Tape measure'; - $ttv_unitsofmeasure_value = $pemeriksaan['berat']; + $val = isset($pemeriksaan['lingkar_perut']) ? trim((string) $pemeriksaan['lingkar_perut']) : ''; + if ($val === '') { + $response = json_encode(['error' => 'Data tidak lengkap untuk Observation', 'missing' => ['lingkar_perut' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $ttv_unitsofmeasure_value = $val; $ttv_unitsofmeasure_unit = 'centimeter'; $ttv_unitsofmeasure_code = 'cm'; } @@ -1937,8 +2269,24 @@ public function getObservation($no_rawat, $ttv) $ttv_hl7_display = 'Vital Signs'; $ttv_loinc_code = '35094-2'; $ttv_loinc_display = 'Blood pressure panel'; - $sistole = strtok($pemeriksaan['tensi'], '/'); - $diastole = substr($pemeriksaan['tensi'], strpos($pemeriksaan['tensi'], '/') + 1); + $bp = isset($pemeriksaan['tensi']) ? trim((string) $pemeriksaan['tensi']) : ''; + if ($bp === '' || strpos($bp, '/') === false) { + $error = [ + 'error' => 'Data tidak lengkap untuk Observation', + 'missing' => [ + 'tensi' => 'missing' + ] + ]; + $response = json_encode($error, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + $sistole = strtok($bp, '/'); + $diastole = substr($bp, strpos($bp, '/') + 1); $ttv_unitsofmeasure_unit = 'mmHg'; $ttv_unitsofmeasure_code = 'mm[Hg]'; } @@ -1946,13 +2294,42 @@ public function getObservation($no_rawat, $ttv) if ($ttv == 'kesadaran') { $ttv_hl7_code = 'exam'; $ttv_hl7_display = 'Exam'; - $ttv_unitsofmeasure_value = 'Alert'; - if ($pemeriksaan['kesadaran'] == 'Somnolence') { - $ttv_unitsofmeasure_value = 'Voice'; + $val = isset($pemeriksaan['kesadaran']) ? trim((string) $pemeriksaan['kesadaran']) : ''; + if ($val === '') { + $response = json_encode(['error' => 'Data tidak lengkap untuk Observation', 'missing' => ['kesadaran' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); } - if ($pemeriksaan['kesadaran'] == 'Sopor') { + $ttv_unitsofmeasure_value = $val; + if ($val === 'Somnolence') { + $ttv_unitsofmeasure_value = 'Voice'; + } elseif ($val === 'Sopor') { $ttv_unitsofmeasure_value = 'Pain'; + } elseif ($val === 'Compos Mentis') { + $ttv_unitsofmeasure_value = 'Alert'; + } + } + + if ($ihs_patient === '' || !$encounter_id || $practitioner_id === '') { + $error = [ + 'error' => 'Data tidak lengkap untuk Observation', + 'missing' => [ + 'patient_id' => $ihs_patient === '' ? 'missing' : 'ok', + 'id_encounter' => !$encounter_id ? 'missing' : 'ok', + 'practitioner_id' => $practitioner_id === '' ? 'missing' : 'ok' + ] + ]; + $response = json_encode($error, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('observation.html', ['pesan' => 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; } + exit(); } $curl = curl_init(); @@ -1966,7 +2343,7 @@ public function getObservation($no_rawat, $ttv) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => '{ "resourceType": "Observation", @@ -1992,15 +2369,15 @@ public function getObservation($no_rawat, $ttv) ] }, "subject": { - "reference": "Patient/' . json_decode($this->getPatient($no_ktp_pasien))->entry[0]->resource->id . '" + "reference": "Patient/' . $ihs_patient . '" }, "performer": [ { - "reference": "Practitioner/' . json_decode($this->getPractitioner($no_ktp_dokter))->entry[0]->resource->id . '" + "reference": "Practitioner/' . $practitioner_id . '" } ], "encounter": { - "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '", + "reference": "Encounter/' . $encounter_id . '", "display": "Pemeriksaan fisik ' . $ttv . ' ' . $nama_pasien . ' tanggal ' . $tgl_registrasi . '" }, "effectiveDateTime": "' . $pemeriksaan['tgl_perawatan'] . 'T' . $pemeriksaan['jam_rawat'] . '' . $zonawaktu . '", @@ -2019,7 +2396,7 @@ public function getObservation($no_rawat, $ttv) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => '{ "resourceType": "Observation", @@ -2046,15 +2423,15 @@ public function getObservation($no_rawat, $ttv) "text": "Blood pressure systolic & diastolic" }, "subject": { - "reference": "Patient/' . json_decode($this->getPatient($no_ktp_pasien))->entry[0]->resource->id . '" + "reference": "Patient/' . $ihs_patient . '" }, "performer": [ { - "reference": "Practitioner/' . json_decode($this->getPractitioner($no_ktp_dokter))->entry[0]->resource->id . '" + "reference": "Practitioner/' . $practitioner_id . '" } ], "encounter": { - "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '", + "reference": "Encounter/' . $encounter_id . '", "display": "Pemeriksaan fisik ' . $ttv . ' ' . $nama_pasien . ' tanggal ' . $tgl_registrasi . '" }, "effectiveDateTime": "' . $pemeriksaan['tgl_perawatan'] . 'T' . $pemeriksaan['jam_rawat'] . '' . $zonawaktu . '", @@ -2106,7 +2483,7 @@ public function getObservation($no_rawat, $ttv) CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => '{ "resourceType": "Observation", @@ -2132,15 +2509,15 @@ public function getObservation($no_rawat, $ttv) ] }, "subject": { - "reference": "Patient/' . json_decode($this->getPatient($no_ktp_pasien))->entry[0]->resource->id . '" + "reference": "Patient/' . $ihs_patient . '" }, "performer": [ { - "reference": "Practitioner/' . json_decode($this->getPractitioner($no_ktp_dokter))->entry[0]->resource->id . '" + "reference": "Practitioner/' . $practitioner_id . '" } ], "encounter": { - "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '", + "reference": "Encounter/' . $encounter_id . '", "display": "Pemeriksaan fisik ' . $ttv . ' ' . $nama_pasien . ' tanggal ' . $tgl_registrasi . '" }, "effectiveDateTime": "' . $pemeriksaan['tgl_perawatan'] . 'T' . $pemeriksaan['jam_rawat'] . '' . $zonawaktu . '", @@ -2158,7 +2535,8 @@ public function getObservation($no_rawat, $ttv) $response = curl_exec($curl); - $id_observation = json_decode($response)->id; + $decoded = json_decode($response); + $id_observation = (is_object($decoded) && isset($decoded->id)) ? $decoded->id : null; $pesan = 'Gagal mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!'; if ($id_observation) { $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); @@ -2169,81 +2547,242 @@ public function getObservation($no_rawat, $ttv) 'no_rawat' => $no_rawat, 'id_observation_ttv' . $ttv . '' => $id_observation ]); - } else { - $this->db('mlite_satu_sehat_response') - ->save([ - 'no_rawat' => $no_rawat, - 'id_observation_ttv' . $ttv . '' => $id_condition - ]); + $pesan = 'Sukses mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!'; } - $pesan = 'Sukses mengirim observation ttv ' . $ttv . ' ke platform Satu Sehat!!'; } curl_close($curl); - // echo $response; - echo $this->draw('observation.html', ['pesan' => $pesan, 'response' => $response]); + if ($render) { + echo $this->draw('observation.html', ['pesan' => $pesan, 'response' => $response]); + } else { + $data = json_decode($response); + echo $data ? json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) : $response; + } exit(); } - public function getSettings() + public function getMappingLab() { - return $this->draw('settings.html', ['satu_sehat' => $this->settings->get('satu_sehat')]); + $this->_addHeaderFiles(); + $mapping_lab = $this->db('mlite_satu_sehat_mapping_lab') + ->join('template_laboratorium', 'template_laboratorium.id_template = mlite_satu_sehat_mapping_lab.id_template') + ->toArray(); + $template_laboratorium = $this->db('template_laboratorium')->toArray(); + return $this->draw('mapping.lab.html', ['mapping_lab_satu_sehat' => $mapping_lab, 'template_laboratorium' => $template_laboratorium]); } - public function postSaveSettings() + public function getMappingRad() { - foreach ($_POST['satu_sehat'] as $key => $val) { - $this->settings('satu_sehat', $key, $val); - } - - $this->notify('success', 'Pengaturan telah disimpan'); - redirect(url([ADMIN, 'satu_sehat', 'settings'])); + $this->_addHeaderFiles(); + $mapping_rad = $this->db('mlite_satu_sehat_mapping_rad') + ->join('jns_perawatan_radiologi', 'jns_perawatan_radiologi.kd_jenis_prw = mlite_satu_sehat_mapping_rad.kd_jenis_prw') + ->toArray(); + $jns_perawatan_radiologi = $this->db('jns_perawatan_radiologi')->toArray(); + return $this->draw('mapping.rad.html', ['mapping_rad_satu_sehat' => $mapping_rad, 'jns_perawatan_radiologi' => $jns_perawatan_radiologi]); } - public function anyPraktisi() + public function getLookupMaster() { - $response = []; - if (isset($_POST['nik_dokter']) && $_POST['nik_dokter'] != '') { - $response = json_decode($this->getPractitioner($_POST['nik_dokter'])); + header('Content-type: application/json'); + $type = isset($_GET['type']) ? (string) $_GET['type'] : ''; + $q = isset($_GET['q']) ? trim((string) $_GET['q']) : ''; + + if ($q === '') { + echo json_encode([]); + exit(); } - return $this->draw('praktisi.html', ['response' => json_encode($response, JSON_PRETTY_PRINT)]); + + $items = []; + + if ($type === 'loinc_lab') { + $rows = $this->db('mlite_loinc_lab') + ->like('Code', '%'.$q.'%') + ->orLike('NamaPemeriksaan', '%'.$q.'%') + ->orLike('Display', '%'.$q.'%') + ->limit(50) + ->toArray(); + + foreach ($rows as $row) { + $code = trim((string) ($row['Code'] ?? '')); + $display = trim((string) ($row['NamaPemeriksaan'] ?? ($row['Display'] ?? ''))); + if ($code === '') continue; + $items[] = [ + 'value' => $code, + 'text' => '['.$code.'] '.($display !== '' ? $display : $code), + 'code' => $code, + 'display' => $display, + 'code_system' => 'http://loinc.org' + ]; + } + } elseif ($type === 'loinc_rad') { + $rows = $this->db('mlite_loinc_radiologi') + ->like('Code', '%'.$q.'%') + ->orLike('NamaPemeriksaan', '%'.$q.'%') + ->orLike('Display', '%'.$q.'%') + ->limit(50) + ->toArray(); + + foreach ($rows as $row) { + $code = trim((string) ($row['Code'] ?? '')); + $display = trim((string) ($row['NamaPemeriksaan'] ?? ($row['Display'] ?? ''))); + if ($code === '') continue; + $items[] = [ + 'value' => $code, + 'text' => '['.$code.'] '.($display !== '' ? $display : $code), + 'code' => $code, + 'display' => $display, + 'code_system' => 'http://loinc.org', + 'body_site_code' => (string) ($row['BodySiteCode'] ?? ''), + 'body_site_display' => (string) ($row['BodySiteDisplay'] ?? ''), + 'body_site_code_system' => (string) ($row['BodySiteCodeSystem'] ?? '') + ]; + } + } elseif ($type === 'snomed') { + $rows = $this->db('mlite_snomed') + ->like('kode', '%'.$q.'%') + ->orLike('istilah', '%'.$q.'%') + ->limit(50) + ->toArray(); + + foreach ($rows as $row) { + $code = trim((string) ($row['kode'] ?? '')); + $display = trim((string) ($row['istilah'] ?? '')); + if ($code === '') continue; + $items[] = [ + 'value' => $code, + 'text' => '['.$code.'] '.($display !== '' ? $display : $code), + 'code' => $code, + 'display' => $display, + 'code_system' => 'http://snomed.info/sct' + ]; + } + } elseif ($type === 'kfa') { + $rows = $this->db('mlite_kfa') + ->like('kode_kfa', '%'.$q.'%') + ->orLike('nama_kfa', '%'.$q.'%') + ->limit(50) + ->toArray(); + + foreach ($rows as $row) { + $code = trim((string) ($row['kode_kfa'] ?? '')); + $display = trim((string) ($row['nama_kfa'] ?? '')); + if ($code === '') continue; + $items[] = [ + 'kode_kfa' => $code, + 'nama_kfa' => $display, + 'text' => '['.$code.'] '.($display !== '' ? $display : $code), + 'kode_bahan' => (string) ($row['kode_bahan'] ?? ''), + 'nama_bahan' => (string) ($row['nama_bahan'] ?? ''), + 'numerator' => (string) ($row['numerator'] ?? ''), + 'satuan_num' => (string) ($row['satuan_num'] ?? ''), + 'denominator' => (string) ($row['denominator'] ?? ''), + 'satuan_den' => (string) ($row['satuan_den'] ?? ''), + 'nama_satuan_den' => (string) ($row['nama_satuan_den'] ?? ''), + 'kode_sediaan' => (string) ($row['kode_sediaan'] ?? ''), + 'nama_sediaan' => (string) ($row['nama_sediaan'] ?? '') + ]; + } + } + + echo json_encode(htmlspecialchars_array($items), true); + exit(); } - public function anyPasien() + public function postSaveRad() { - $response = []; - if (isset($_POST['nik_pasien']) && $_POST['nik_pasien'] != '') { - $response = json_decode($this->getPatient($_POST['nik_pasien'])); + if (isset($_POST['simpan'])) { + $query = $this->db('mlite_satu_sehat_mapping_rad')->save( + [ + 'kd_jenis_prw' => $_POST['kd_jenis_prw'], + 'code' => $_POST['code'], + 'system' => $_POST['code_system'], + 'display' => $_POST['display'], + 'sampel_code' => $_POST['sample_code'], + 'sampel_system' => $_POST['sample_system'], + 'sampel_display' => $_POST['sample_display'] + ] + ); + + if ($query) { + $this->notify('success', 'Mapping radiologi telah disimpan'); + } else { + $this->notify('danger', 'Mapping radiologi gagal disimpan'); + } } - return $this->draw('pasien.html', ['response' => json_encode($response, JSON_PRETTY_PRINT)]); + + if (isset($_POST['hapus'])) { + $query = $this->db('mlite_satu_sehat_mapping_rad') + ->where('kd_jenis_prw', $_POST['kd_jenis_prw']) + ->delete(); + if ($query) { + $this->notify('success', 'Mapping radiologi telah dihapus'); + } else { + $this->notify('danger', 'Mapping radiologi gagal dihapus'); + } + } + + redirect(url([ADMIN, 'satu_sehat', 'mappingrad'])); } - public function getDepartemen() + public function postSaveLab() { - $poli = $this->db('poliklinik')->where('status', '1')->toArray(); - $mlite_satset = $this->db('mlite_satu_sehat_departemen')->toArray(); - $satu_sehat = []; - foreach ($mlite_satset as $value) { - $nama = $this->core->getDepartemenInfo($value['dep_id']); - if ($nama == '') { - $nama = $this->core->getPoliklinikInfo('nm_poli', $value['dep_id']); + if (isset($_POST['simpan'])) { + $id_template = (int) ($_POST['id_template'] ?? 0); + $kd_jenis_prw = trim((string) ($_POST['kd_jenis_prw'] ?? '')); + if ($id_template <= 0) { + $this->notify('danger', 'Perawatan belum dipilih'); + redirect(url([ADMIN, 'satu_sehat', 'mappinglab'])); + } + if ($kd_jenis_prw === '') { + $tpl = $this->db('template_laboratorium')->where('id_template', $id_template)->oneArray(); + $kd_jenis_prw = trim((string) ($tpl['kd_jenis_prw'] ?? '')); + } + $query = $this->db('mlite_satu_sehat_mapping_lab')->save( + [ + 'id_template' => $id_template, + 'kd_jenis_prw' => $kd_jenis_prw, + 'code' => $_POST['code'], + 'system' => $_POST['code_system'], + 'display' => $_POST['display'], + 'sampel_code' => $_POST['sample_code'], + 'sampel_system' => $_POST['sample_system'], + 'sampel_display' => $_POST['sample_display'] + ] + ); + + if ($query) { + $this->notify('success', 'Mapping laboratorium telah disimpan'); + } else { + $this->notify('danger', 'Mapping laboratorium gagal disimpan'); } - $value['nama'] = $nama; - $satu_sehat[] = $value; } - return $this->draw('departemen.html', ['departemen' => $this->db('departemen')->toArray(), 'poli' => $poli, 'satu_sehat_departemen' => $satu_sehat]); + + if (isset($_POST['hapus'])) { + $id_template = (int) ($_POST['id_template'] ?? 0); + if ($id_template <= 0) { + $this->notify('danger', 'Perawatan belum dipilih'); + redirect(url([ADMIN, 'satu_sehat', 'mappinglab'])); + } + $query = $this->db('mlite_satu_sehat_mapping_lab') + ->where('id_template', $id_template) + ->delete(); + if ($query) { + $this->notify('success', 'Mapping laboratorium telah dihapus'); + } else { + $this->notify('danger', 'Mapping laboratorium gagal dihapus'); + } + } + + redirect(url([ADMIN, 'satu_sehat', 'mappinglab'])); } public function postSaveDepartemen() { - if(isset($_POST['simpan'])) { + if (isset($_POST['simpan'])) { $get_id_organisasi_satusehat = json_decode($this->getOrganization($_POST['dep_id'])); - // $id_organisasi_satusehat = $get_id_organisasi_satusehat->id; - - // echo json_encode($get_id_organisasi_satusehat, true); - if($get_id_organisasi_satusehat->issue[0]->code == 'duplicate') { + if ($get_id_organisasi_satusehat->issue[0]->code == 'duplicate') { $curl = curl_init(); @@ -2255,35 +2794,34 @@ public function postSaveDepartemen() CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), CURLOPT_CUSTOMREQUEST => 'GET', )); - + $response = curl_exec($curl); - + curl_close($curl); - + $get_id_organisasi_satusehat = json_decode($response); $get_id_organisasi_satusehat = json_encode($get_id_organisasi_satusehat, true); // echo $get_id_organisasi_satusehat; foreach (json_decode($get_id_organisasi_satusehat)->entry as $item) { - if ($item->resource->identifier[0]->value == $_POST['dep_id']) { - $id_organisasi_satusehat = $item->resource->id; - echo $id_organisasi_satusehat; - } - } - + if ($item->resource->identifier[0]->value == $_POST['dep_id']) { + $id_organisasi_satusehat = $item->resource->id; + echo $id_organisasi_satusehat; + } + } } - - if($id_organisasi_satusehat !='') { + + if ($id_organisasi_satusehat != '') { $query = $this->db('mlite_satu_sehat_departemen')->save( [ - 'dep_id' => $_POST['dep_id'], + 'dep_id' => $_POST['dep_id'], 'id_organisasi_satusehat' => $id_organisasi_satusehat ] - ); - if($query){ + ); + if ($query) { $this->notify('success', 'Mapping departemen telah disimpan'); } else { $this->notify('danger', 'Mapping departemen gagal disimpan'); @@ -2305,16 +2843,3227 @@ public function postSaveDepartemen() } } - if (isset($_POST['hapus'])) { - $query = $this->db('mlite_satu_sehat_departemen') - ->where('id_organisasi_satusehat', $_POST['id_organisasi_satusehat']) - ->delete(); - if ($query) { - $this->notify('success', 'Mapping departemen telah dihapus'); + if (isset($_POST['hapus'])) { + $query = $this->db('mlite_satu_sehat_departemen') + ->where('id_organisasi_satusehat', $_POST['id_organisasi_satusehat']) + ->delete(); + if ($query) { + $this->notify('success', 'Mapping departemen telah dihapus'); + } + } + + redirect(url([ADMIN, 'satu_sehat', 'departemen'])); + } + + public function getProcedure($no_rawat, $render = true) + { + + $zonawaktu = '+07:00'; + if ($this->settings->get('satu_sehat.zonawaktu') == 'WITA') { + $zonawaktu = '+08:00'; + } + if ($this->settings->get('satu_sehat.zonawaktu') == 'WIT') { + $zonawaktu = '+09:00'; + } + + + $no_rawat = revertNoRawat($no_rawat); + $kd_poli = $this->core->getRegPeriksaInfo('kd_poli', $no_rawat); + $nm_poli = $this->core->getPoliklinikInfo('nm_poli', $kd_poli); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $no_ktp_dokter = $this->core->getPegawaiInfo('no_ktp', $kd_dokter); + $nama_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $nama_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $status_lanjut = $this->core->getRegPeriksaInfo('status_lanjut', $no_rawat); + $tgl_registrasi = $this->core->getRegPeriksaInfo('tgl_registrasi', $no_rawat); + $jam_reg = $this->core->getRegPeriksaInfo('jam_reg', $no_rawat); + $mlite_billing = $this->db('mlite_billing')->where('no_rawat', $no_rawat)->oneArray(); + $prosedur_pasien = $this->db('prosedur_pasien') + ->join('icd9', 'icd9.kode=prosedur_pasien.kode') + ->where('no_rawat', $no_rawat) + ->where('prosedur_pasien.status', $status_lanjut) + ->where('prioritas', '1') + ->oneArray(); + + $pemeriksaan_ralan = $this->db('pemeriksaan_ralan')->where('no_rawat', $no_rawat)->oneArray(); + + if (!is_array($prosedur_pasien) || !isset($prosedur_pasien['kode']) || !isset($prosedur_pasien['deskripsi_panjang'])) { + $resp = json_encode(['error' => 'Data tidak lengkap untuk Procedure', 'missing' => ['prosedur_pasien.kode' => 'missing', 'prosedur_pasien.deskripsi_panjang' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('procedure.html', ['pesan' => 'Gagal mengirim procedure platform Satu Sehat!!', 'response' => $resp]); + } else { + echo $resp; + } + exit(); + } + + $kode_icd9 = $prosedur_pasien['kode']; + $deskripsi_icd9 = $prosedur_pasien['deskripsi_panjang']; + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + $resp = json_encode(['error' => 'Data tidak lengkap untuk Procedure', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('procedure.html', ['pesan' => 'Gagal mengirim procedure platform Satu Sehat!!', 'response' => $resp]); + } else { + echo $resp; + } + exit(); + } + $id_encounter = $mlite_satu_sehat_response['id_encounter']; + $tgl_pulang = isset_or($mlite_billing['tgl_billing'], $pemeriksaan_ralan['tgl_perawatan']); + $jam_pulang = isset_or($mlite_billing['jam_billing'], $pemeriksaan_ralan['jam_rawat']); + + $kunjungan = 'Kunjungan'; + if ($status_lanjut == 'Ranap') { + $kunjungan = 'Perawatan'; + } + + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $this->fhirurl . '/Procedure', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => '{ + "resourceType": "Procedure", + "status": "completed", + "category": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "103693007", + "display": "Diagnostic procedure" + } + ], + "text":"Diagnostic procedure" + }, + "code": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "code": "' . $kode_icd9 . '", + "display": "' . $deskripsi_icd9 . '" + + } + ] + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nama_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $id_encounter . '", + "display": "Prosedur kepada ' . $nama_pasien . ' selama ' . $kunjungan . ' dari tanggal ' . $tgl_registrasi . 'T' . $jam_reg . '' . $zonawaktu . ' sampai ' . $tgl_pulang . 'T' . $jam_pulang . '' . $zonawaktu . '" + }, + "performedPeriod": { + "start": "' . $tgl_registrasi . 'T' . $jam_reg . '' . $zonawaktu . '", + "end": "' . $tgl_pulang . 'T' . $jam_pulang . '' . $zonawaktu . '" + } + }', + )); + + $response = curl_exec($curl); + + $id_procedure = isset(json_decode($response)->id) ? json_decode($response)->id : null; + $pesan = 'Gagal mengirim procedure platform Satu Sehat!!'; + if ($id_procedure) { + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + if ($mlite_satu_sehat_response) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'no_rawat' => $no_rawat, + 'id_procedure' => $id_procedure + ]); + } else { + $this->db('mlite_satu_sehat_response') + ->save([ + 'no_rawat' => $no_rawat, + 'id_procedure' => $id_procedure + ]); + } + $pesan = 'Sukses mengirim procedure platform Satu Sehat!!'; + } + + curl_close($curl); + // echo $response; + if ($render) { + echo $this->draw('procedure.html', ['pesan' => $pesan, 'response' => $response]); + } else { + $data = json_decode($response); + echo $data ? json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) : $response; + } + exit(); + } + + public function getDietGizi($no_rawat, $render = true) + { + + $zonawaktu = '+07:00'; + if ($this->settings->get('satu_sehat.zonawaktu') == 'WITA') { + $zonawaktu = '+08:00'; + } + if ($this->settings->get('satu_sehat.zonawaktu') == 'WIT') { + $zonawaktu = '+09:00'; + } + + + $no_rawat = revertNoRawat($no_rawat); + $kd_poli = $this->core->getRegPeriksaInfo('kd_poli', $no_rawat); + $nm_poli = $this->core->getPoliklinikInfo('nm_poli', $kd_poli); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $no_ktp_dokter = $this->core->getPegawaiInfo('no_ktp', $kd_dokter); + $nama_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $nama_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $status_lanjut = $this->core->getRegPeriksaInfo('status_lanjut', $no_rawat); + $tgl_registrasi = $this->core->getRegPeriksaInfo('tgl_registrasi', $no_rawat); + $jam_reg = $this->core->getRegPeriksaInfo('jam_reg', $no_rawat); + $mlite_billing = $this->db('mlite_billing')->where('no_rawat', $no_rawat)->oneArray(); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi')->select('practitioner_id')->where('kd_dokter', $kd_dokter)->oneArray(); + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + $resp = json_encode(['error' => 'Data tidak lengkap untuk Diet Gizi', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('dietgizi.html', ['pesan' => 'Gagal mengirim diet gizi platform Satu Sehat!!', 'response' => $resp]); + } else { + echo $resp; + } + exit(); + } + $id_encounter = $mlite_satu_sehat_response['id_encounter']; + + $date = date('Y-m-d'); + $time = date('H:i:s'); + + $nama_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $tgl_registrasi = $this->core->getRegPeriksaInfo('tgl_registrasi', $no_rawat); + $adime_gizi = $this->db('catatan_adime_gizi')->where('no_rawat', $no_rawat)->oneArray(); + $instruksi = isset_or($adime_gizi['instruksi'], ''); + + $curl = curl_init(); + + $data = '{ + "resourceType" : "Composition", + "identifier" : { + "system" : "http://sys-ids.kemkes.go.id/composition/' . $this->organizationid . '", + "value" : "' . $no_rawat . '" + }, + "status" : "final", + "type" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "18842-5", + "display" : "Discharge summary" + } + ] + }, + "category" : [ + { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "LP173421-1", + "display" : "Report" + } + ] + } + ], + "subject" : { + "reference" : "Patient/' . $id_pasien . '", + "display" : "' . $nama_pasien . '" + }, + "encounter" : { + "reference" : "Encounter/' . $id_encounter . '", + "display" : "Kunjungan ' . $nama_pasien . ' pada tanggal ' . $tgl_registrasi . ' dengan nomor kunjungan ' . $no_rawat . '" + }, + "date" : "' . $date . 'T' . $time . '' . $zonawaktu . '", + "author" : [ + { + "reference" : "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display" : "' . $nama_dokter . '" + } + ], + "title" : "Modul Gizi", + "custodian" : { + "reference" : "Organization/' . $this->organizationid . '" + }, + "section" : [ + { + "code" : { + "coding" : [ + { + "system" : "http://loinc.org", + "code" : "42344-2", + "display" : "Discharge diet (narrative)" + } + ] + }, + "text" : { + "status" : "additional", + "div" : "' . $instruksi . '" + } + } + ] + }'; + + curl_setopt_array($curl, array( + CURLOPT_URL => $this->fhirurl . '/Composition', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $data + )); + + $response = curl_exec($curl); + + $id_composition = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim composition platform Satu Sehat!!'; + if ($id_composition) { + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + if ($mlite_satu_sehat_response) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'no_rawat' => $no_rawat, + 'id_composition' => $id_composition + ]); + } else { + $this->db('mlite_satu_sehat_response') + ->save([ + 'no_rawat' => $no_rawat, + 'id_composition' => $id_composition + ]); + } + $pesan = 'Sukses mengirim id_composition platform Satu Sehat!!'; + } + + curl_close($curl); + // echo $response; + // echo '
                                              ' . $data . '
                                              '; + if ($render) { + echo $this->draw('dietgizi.html', ['pesan' => $pesan, 'response' => $response]); + } else { + echo $response; + } + exit(); + } + + public function getQuestionnaire($no_rawat, $render = true) + { + + $zonawaktu = '+07:00'; + if ($this->settings->get('satu_sehat.zonawaktu') == 'WITA') { + $zonawaktu = '+08:00'; + } + if ($this->settings->get('satu_sehat.zonawaktu') == 'WIT') { + $zonawaktu = '+09:00'; + } + + + $no_rawat = revertNoRawat($no_rawat); + $kd_poli = $this->core->getRegPeriksaInfo('kd_poli', $no_rawat); + $nm_poli = $this->core->getPoliklinikInfo('nm_poli', $kd_poli); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $no_ktp_dokter = $this->core->getPegawaiInfo('no_ktp', $kd_dokter); + $nama_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $nama_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $status_lanjut = $this->core->getRegPeriksaInfo('status_lanjut', $no_rawat); + $tgl_registrasi = $this->core->getRegPeriksaInfo('tgl_registrasi', $no_rawat); + $jam_reg = $this->core->getRegPeriksaInfo('jam_reg', $no_rawat); + $mlite_billing = $this->db('mlite_billing')->where('no_rawat', $no_rawat)->oneArray(); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi')->select('practitioner_id')->where('kd_dokter', $kd_dokter)->oneArray(); + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + $resp = json_encode(['error' => 'Data tidak lengkap untuk Diet Gizi', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('dietgizi.html', ['pesan' => 'Gagal mengirim diet gizi platform Satu Sehat!!', 'response' => $resp]); + } else { + echo $resp; + } + exit(); + } + $id_encounter = $mlite_satu_sehat_response['id_encounter']; + + $date = date('Y-m-d'); + $time = date('H:i:s'); + + $nama_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $tgl_registrasi = $this->core->getRegPeriksaInfo('tgl_registrasi', $no_rawat); + $adime_gizi = $this->db('catatan_adime_gizi')->where('no_rawat', $no_rawat)->oneArray(); + $instruksi = isset_or($adime_gizi['instruksi'], ''); + + $catatan_perawatan = $this->db('catatan_perawatan')->where('no_rawat', $no_rawat)->where('kd_dokter', $kd_dokter)->where('catatan', 'KPS')->oneArray(); + + $curl = curl_init(); + + $data = '{ + "resourceType": "QuestionnaireResponse", + "questionnaire": "https://fhir.kemkes.go.id/Questionnaire/Q0002", + "status": "completed", + "subject": { + "reference" : "Patient/' . $id_pasien . '", + "display" : "' . $nama_pasien . '" + }, + "encounter": { + "reference" : "Encounter/' . $id_encounter . '" + }, + "authored": "' . $catatan_perawatan['tanggal'] . 'T' . $catatan_perawatan['jam'] . '' . $zonawaktu . '", + "author": { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '" + }, + "source": { + "reference": "Patient/' . $id_pasien . '" + }, + "item": [ + { + "linkId": "1", + "text": "Status Kesejahteraan", + "answer": [ + { + "valueString": "Keluarga Pra Sejahtera (KPS)" + } + ] + } + ] + }'; + + // echo '
                                              ' . $data . '
                                              '; + + curl_setopt_array($curl, array( + CURLOPT_URL => $this->fhirurl . '/QuestionnaireResponse', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $data + )); + + $response = curl_exec($curl); + + $id_questionnaire = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim questionnaire response platform Satu Sehat!!'; + if ($id_questionnaire) { + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + if ($mlite_satu_sehat_response) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'no_rawat' => $no_rawat, + 'id_questionnaire' => $id_questionnaire + ]); + } else { + $this->db('mlite_satu_sehat_response') + ->save([ + 'no_rawat' => $no_rawat, + 'id_questionnaire' => $id_questionnaire + ]); + } + $pesan = 'Sukses mengirim questionnaire response platform Satu Sehat!!'; + } + + curl_close($curl); + // echo $response; + // echo '
                                              ' . $data . '
                                              '; + if ($render) { + echo $this->draw('questionnaire.html', ['pesan' => $pesan, 'response' => $response]); + } else { + echo $response; + } + exit(); + } + + public function getVaksin($no_rawat, $render = true) + { + + $zonawaktu = '+07:00'; + if ($this->settings->get('satu_sehat.zonawaktu') == 'WITA') { + $zonawaktu = '+08:00'; + } + if ($this->settings->get('satu_sehat.zonawaktu') == 'WIT') { + $zonawaktu = '+09:00'; + } + + + $no_rawat = revertNoRawat($no_rawat); + + // Data resep dan mapping obat + $row['medications'] = $this->db('resep_obat') + ->join('resep_dokter', 'resep_dokter.no_resep = resep_obat.no_resep') + ->join('mlite_satu_sehat_mapping_obat', 'mlite_satu_sehat_mapping_obat.kode_brng = resep_dokter.kode_brng') + ->where('mlite_satu_sehat_mapping_obat.type', 'vaksin') + ->where('no_rawat', $no_rawat) + ->toArray(); + + // Data pasien dan dokter + $kd_poli = $this->core->getRegPeriksaInfo('kd_poli', $no_rawat); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + $resp = json_encode(['error' => 'Data tidak lengkap untuk Vaksin', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('vaksin.html', ['pesan' => 'Gagal mengirim vaksin platform Satu Sehat!!', 'response' => $resp]); + } else { + echo $resp; + } + exit(); + } + $id_encounter = $mlite_satu_sehat_response['id_encounter']; + + foreach ($row['medications'] as $i => $obat) { + $medReqId = $this->gen_uuid(); + $medId = $obat['no_resep'] . '' . $obat['kode_brng']; + $medUuid = "urn:uuid:" . $this->gen_uuid(); + $system_cek = 'http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm'; + if (is_string($obat['satuan_den']) && ctype_digit($obat['satuan_den'])) { + $system_cek = 'http://snomed.info/sct'; + } + + // Parsing aturan pakai + if (preg_match_all('/\d+/', $obat['aturan_pakai'], $m) && count($m[0]) >= 2) { + $frequency = (int) $m[0][0]; + $doseValue = (int) $m[0][1]; + } else { + $frequency = 1; + $doseValue = 1; + } + + // $duration = max(1, (int)round($obat['jml'] / $frequency / $doseValue)); + // $startDate = $obat['tgl_peresepan']; + // $endDate = date('Y-m-d', strtotime("$startDate +{$duration} days")); + + // $satu_sehat_mapping_obat = $this->db('mlite_satu_sehat_mapping_obat')->where('kode_brng', $obat['kode_brng'])->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $kd_poli)->oneArray(); + $databarang = $this->db('databarang')->where('kode_brng', $obat['kode_brng'])->oneArray(); + $gudangbarang = $this->db('gudangbarang')->where('kode_brng', $obat['kode_brng'])->where('kd_bangsal', $this->core->getSettings('satu_sehat', 'farmasi'))->oneArray(); + // $batch['no_batch'] = '121212'; + + $batch['no_batch'] = !empty($gudangbarang['no_batch']) + ? $gudangbarang['no_batch'] + : 'BATCH-' . date('YmdHis'); + + $data = '{ + "resourceType": "Immunization", + "status": "completed", + "vaccineCode": { + "coding": [ + { + "system": "http://sys-ids.kemkes.go.id/kfa", + "code": "' . $obat['kode_kfa'] . '", + "display": "' . $obat['nama_kfa'] . '" + } + ] + }, + "patient": { + "reference": "Patient/' . $id_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $id_encounter . '" + }, + "occurrenceDateTime": "' . $obat['tgl_perawatan'] . 'T' . $obat['jam'] . '' . $zonawaktu . '", + "expirationDate": "' . $databarang['expire'] . '", + "recorded": "' . $obat['tgl_perawatan'] . 'T' . $obat['jam'] . '' . $zonawaktu . '", + "primarySource": true, + "location": { + "reference": "Location/' . $mlite_satu_sehat_lokasi['id_lokasi_satusehat'] . '", + "display": "' . $mlite_satu_sehat_lokasi['lokasi'] . '" + }, + "lotNumber": "' . $batch['no_batch'] . '", + "route": { + "coding": [ + { + "system": "http://www.whocc.no/atc", + "code": "' . $obat['kode_route'] . '", + "display": "' . $obat['nama_route'] . '" + } + ] + }, + "doseQuantity": { + "value": ' . (int) $obat['jml'] . ', + "unit": "' . $obat['satuan_num'] . '", + "system": "' . $obat['system_num'] . '", + "code": "' . $obat['satuan_num'] . '" + }, + "performer": [ + { + "function": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0443", + "code": "AP", + "display": "Administering Provider" + } + ] + }, + "actor": { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://terminology.kemkes.go.id/CodeSystem/immunization-reason", + "code": "IM-Program", + "display" : "Imunisasi Program" + } + ] + } + ], + "protocolApplied" : [ + { + "doseNumberPositiveInt" : ' . (int) $doseValue . ' + } + ] + }'; + + $url = $this->fhirurl . '/Immunization'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $data, + )); + + $response = curl_exec($curl); + + $id_immunization = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim vaksin/imunisasi platform Satu Sehat!!'; + if ($id_immunization) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_immunization' => $id_immunization + ]); + $pesan = 'Sukses mengirim vaksin/imunisasi platform Satu Sehat!!'; + } + + curl_close($curl); + + // echo '
                                              '. $data. '
                                              '; + + } + + if ($render) { + echo $this->draw('vaksin.html', ['pesan' => isset($pesan) ? $pesan : '', 'response' => isset($response) ? $response : '']); + } else { + echo isset($response) ? $response : ''; + } + exit(); + } + + public function getClinicalImpression($no_rawat, $render = true) + { + + $zonawaktu = '+07:00'; + if ($this->settings->get('satu_sehat.zonawaktu') == 'WITA') { + $zonawaktu = '+08:00'; + } + if ($this->settings->get('satu_sehat.zonawaktu') == 'WIT') { + $zonawaktu = '+09:00'; + } + + $no_rawat = revertNoRawat($no_rawat); + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $pemeriksaan_ralan = $this->db('pemeriksaan_ralan')->where('no_rawat', $no_rawat)->oneArray(); + + $keluhan = isset_or($pemeriksaan_ralan['keluhan'], ''); + $pemeriksaan = isset_or($pemeriksaan_ralan['pemeriksaan'], ''); + $penilaian = isset_or($pemeriksaan_ralan['penilaian'], ''); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $nama_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $tgl_perawatan = isset_or($pemeriksaan_ralan['tgl_perawatan'], date('Y-m-d')); + $jam_rawat = isset_or($pemeriksaan_ralan['jam_rawat'], date('H:i:s')); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi')->select('practitioner_id')->where('kd_dokter', $kd_dokter)->oneArray(); + $nama_dokter = $this->db('dokter')->where('kd_dokter', $kd_dokter)->oneArray(); + $id_condition = isset_or($mlite_satu_sehat_response['id_condition'], ''); + $diagnosa_pasien = $this->db('diagnosa_pasien') + ->join('penyakit', 'penyakit.kd_penyakit=diagnosa_pasien.kd_penyakit') + ->where('no_rawat', $no_rawat) + ->where('prioritas', '1') + ->oneArray(); + + $kd_penyakit = isset_or($diagnosa_pasien['kd_penyakit'], ''); + $nm_penyakit = isset_or($diagnosa_pasien['nm_penyakit'], ''); + + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + $resp = json_encode(['error' => 'Data tidak lengkap untuk Clinical Impression', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('clinical.impression.html', ['pesan' => 'Gagal mengirim clinical impression platform Satu Sehat!!', 'response' => $resp]); + } else { + echo $resp; + } + exit(); + } + + $id_encounter = $mlite_satu_sehat_response['id_encounter']; + + $data = '{ + "resourceType": "ClinicalImpression", + "status": "completed", + "description": "Evaluasi klinis untuk pasien dengan ' . $keluhan . ', ' . $pemeriksaan . '.", + "subject": { + "reference": "Patient/' . $id_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $id_encounter . '" + }, + "effectiveDateTime": "' . $tgl_perawatan . 'T' . $jam_rawat . '' . $zonawaktu . '", + "date": "' . $tgl_perawatan . 'T' . $jam_rawat . '' . $zonawaktu . '", + "assessor": { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '" + }, + "summary": "' . $penilaian . '", + "finding": [ + { + "itemCodeableConcept": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/icd-10", + "code": "' . $kd_penyakit . '", + "display": "' . $nm_penyakit . '" + } + ] + }, + "itemReference": { + "reference": "Condition/' . $id_condition . '" + } + } + ], + "prognosisCodeableConcept": [ + { + "coding": [ + { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "PR000001", + "display": "Prognosis" + } + ] + } + ] + }'; + + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $this->fhirurl . '/ClinicalImpression', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $data, + )); + + $response = curl_exec($curl); + + $id_clinical_impression = isset(json_decode($response)->id) ? json_decode($response)->id : null; + $pesan = 'Gagal mengirim clinical impression platform Satu Sehat!!'; + if ($id_clinical_impression) { + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + if ($mlite_satu_sehat_response) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'no_rawat' => $no_rawat, + 'id_clinical_impression' => $id_clinical_impression + ]); + } else { + $this->db('mlite_satu_sehat_response') + ->save([ + 'no_rawat' => $no_rawat, + 'id_clinical_impression' => $id_clinical_impression + ]); + } + $pesan = 'Sukses mengirim clinical impression platform Satu Sehat!!'; + } + + curl_close($curl); + // echo '
                                              ' . $data . '
                                              '; + + if ($render) { + echo $this->draw('clinical.impression.html', ['pesan' => $pesan, 'response' => $response]); + } else { + echo $response; + } + exit(); + } + + public function getMedication(string $no_rawat = '', string $tipe = 'request', $render = true) + { + // Zona waktu + $zonawaktu = match ($this->settings->get('satu_sehat.zonawaktu')) { + 'WITA' => '+08:00', + 'WIT' => '+09:00', + default => '+07:00', + }; + + $kode_brng = $no_rawat; + $no_rawat = revertNoRawat($no_rawat); + + if ($tipe === 'request') { + + // Data resep dan mapping obat + $row['medications'] = $this->db('resep_obat') + ->join('resep_dokter', 'resep_dokter.no_resep = resep_obat.no_resep') + ->join('mlite_satu_sehat_mapping_obat', 'mlite_satu_sehat_mapping_obat.kode_brng = resep_dokter.kode_brng') + ->where('mlite_satu_sehat_mapping_obat.type', 'obat') + ->where('no_rawat', $no_rawat) + ->toArray(); + + if (count($row['medications']) === 0) { + echo json_encode(['error' => 'Data tidak lengkap untuk Medication Request', 'missing' => ['noresep' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Medication', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + + foreach ($row['medications'] as $i => $obat) { + $medReqId = $this->gen_uuid(); + $medId = $obat['no_resep'] . '' . $obat['kode_brng']; + $medUuid = "urn:uuid:" . $this->gen_uuid(); + $system_cek = 'http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm'; + if (ctype_digit($obat['satuan_den'])) { + $system_cek = 'http://snomed.info/sct'; + } + + // Parsing aturan pakai + if (preg_match_all('/\d+/', $obat['aturan_pakai'], $m) && count($m[0]) >= 2) { + $frequency = (int) $m[0][0]; + $doseValue = (int) $m[0][1]; + } else { + $frequency = 1; + $doseValue = 1; + } + + // $duration = max(1, (int)round($obat['jml'] / $frequency / $doseValue)); + // $startDate = $obat['tgl_peresepan']; + // $endDate = date('Y-m-d', strtotime("$startDate +{$duration} days")); + + $satu_sehat_mapping_obat = $this->db('mlite_satu_sehat_mapping_obat')->where('kode_brng', $obat['kode_brng'])->oneArray(); + + $data = '{ + "resourceType": "MedicationRequest", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/prescription/' . $this->organizationid . '", + "use": "official", + "value": "' . $obat['no_resep'] . '" + }, + { + "system": "http://sys-ids.kemkes.go.id/prescription-item/' . $this->organizationid . '", + "use": "official", + "value": "' . $obat['kode_brng'] . '" + } + ], + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", + "code": "outpatient", + "display": "Outpatient" + } + ] + } + ], + "medicationReference": { + "reference": "Medication/' . $satu_sehat_mapping_obat['id_medication'] . '", + "display": "' . $obat['nama_kfa'] . '" + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '" + }, + "authoredOn": "' . $obat['tgl_peresepan'] . 'T' . $obat['jam_peresepan'] . '' . $zonawaktu . '", + "requester": { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display": "' . $nm_dokter . '" + }, + "dosageInstruction": [ + { + "sequence": 1, + "patientInstruction": "' . $obat['aturan_pakai'] . '", + "timing": { + "repeat": { + "frequency": ' . $doseValue . ', + "period": 1, + "periodUnit": "d" + } + }, + "route": { + "coding": [ + { + "system": "http://www.whocc.no/atc", + "code": "' . $obat['kode_route'] . '", + "display": "' . $obat['nama_route'] . '" + } + ] + }, + "doseAndRate": [ + { + "doseQuantity": { + "value": ' . $frequency . ', + "unit": "' . $obat['satuan_den'] . '", + "system": "' . $system_cek . '", + "code": "' . $obat['satuan_den'] . '" + } + } + ] + } + ], + "dispenseRequest": { + "quantity": { + "value": ' . $obat['jml'] . ', + "unit": "' . $obat['satuan_den'] . '", + "system": "' . $system_cek . '", + "code": "' . $obat['satuan_den'] . '" + }, + "performer": { + "reference": "Organization/' . $this->organizationid . '" + } + } + }'; + + $url = $this->fhirurl . '/MedicationRequest'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $data, + )); + + $response = curl_exec($curl); + + $id_medication_request = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim medication request platform Satu Sehat!!'; + if ($id_medication_request) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_medication_request' => $id_medication_request + ]); + $pesan = 'Sukses mengirim medication request platform Satu Sehat!!'; + } + + curl_close($curl); + + // echo '
                                              '. $data. '
                                              '; + + } + } else if ($tipe === 'dispense') { + // Data resep dan mapping obat + $row['medications'] = $this->db('resep_obat') + ->join('resep_dokter', 'resep_dokter.no_resep = resep_obat.no_resep') + ->join('mlite_satu_sehat_mapping_obat', 'mlite_satu_sehat_mapping_obat.kode_brng = resep_dokter.kode_brng') + ->where('mlite_satu_sehat_mapping_obat.type', 'obat') + ->where('no_rawat', $no_rawat) + ->toArray(); + + if (count($row['medications']) === 0) { + echo json_encode(['error' => 'Data tidak lengkap untuk Medication Dispense', 'missing' => ['noresep' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Medication', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'farmasi'))->oneArray(); + + foreach ($row['medications'] as $i => $obat) { + $medReqId = $this->gen_uuid(); + $medId = $obat['no_resep'] . '' . $obat['kode_brng']; + $medUuid = "urn:uuid:" . $this->gen_uuid(); + $system_cek = 'http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm'; + if (ctype_digit($obat['satuan_den'])) { + $system_cek = 'http://snomed.info/sct'; + } + + // Parsing aturan pakai + if (preg_match_all('/\d+/', $obat['aturan_pakai'], $m) && count($m[0]) >= 2) { + $frequency = (int) $m[0][0]; + $doseValue = (int) $m[0][1]; + } else { + $frequency = 1; + $doseValue = 1; + } + + // $duration = max(1, (int)round($obat['jml'] / $frequency / $doseValue)); + // $startDate = $obat['tgl_peresepan']; + // $endDate = date('Y-m-d', strtotime("$startDate +{$duration} days")); + + $satu_sehat_mapping_obat = $this->db('mlite_satu_sehat_mapping_obat')->where('kode_brng', $obat['kode_brng'])->oneArray(); + + $data = '{ + "resourceType": "MedicationDispense", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/prescription/' . $this->organizationid . '", + "use": "official", + "value": "' . $obat['no_resep'] . '" + }, + { + "system": "http://sys-ids.kemkes.go.id/prescription-item/' . $this->organizationid . '", + "use": "official", + "value": "' . $obat['kode_brng'] . '" + } + ], + "status": "completed", + "category": { + "coding": [ + { + "system": "http://terminology.hl7.org/fhir/CodeSystem/medicationdispense-category", + "code": "outpatient", + "display": "Outpatient" + } + ] + }, + "medicationReference": { + "reference": "Medication/' . $satu_sehat_mapping_obat['id_medication'] . '", + "display": "' . $obat['nama_kfa'] . '" + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "context": { + "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '" + }, + "performer": [ + { + "actor": { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display": "' . $nm_dokter . '" + } + } + ], + "location": { + "reference": "Location/' . $mlite_satu_sehat_lokasi['id_lokasi_satusehat'] . '", + "display": "' . $mlite_satu_sehat_lokasi['lokasi'] . '" + }, + "authorizingPrescription": [{ + "reference": "MedicationRequest/' . $mlite_satu_sehat_response['id_medication_request'] . '" + }], + "quantity": { + "system": "' . $system_cek . '", + "code": "' . $obat['satuan_den'] . '", + "value": ' . $obat['jml'] . ' + }, + "whenPrepared": "' . $obat['tgl_peresepan'] . 'T' . $obat['jam_peresepan'] . '' . $zonawaktu . '", + "whenHandedOver": "' . $obat['tgl_perawatan'] . 'T' . $obat['jam'] . '' . $zonawaktu . '", + "dosageInstruction": [ + { + "sequence": 1, + "text": "' . $obat['aturan_pakai'] . '", + "timing": { + "repeat": { + "frequency": ' . $doseValue . ', + "period": 1, + "periodUnit": "d" + } + }, + "route": { + "coding": [ + { + "system": "http://www.whocc.no/atc", + "code": "' . $obat['kode_route'] . '", + "display": "' . $obat['nama_route'] . '" + } + ] + }, + "doseAndRate": [ + { + "doseQuantity": { + "value": ' . $frequency . ', + "unit": "' . $obat['satuan_den'] . '", + "system": "' . $system_cek . '", + "code": "' . $obat['satuan_den'] . '" + } + } + ] + } + ] + }'; + + $url = $this->fhirurl . '/MedicationDispense'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $data, + )); + + $response = curl_exec($curl); + + $id_medication_dispense = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim medication dispense platform Satu Sehat!!'; + if ($id_medication_dispense) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_medication_dispense' => $id_medication_dispense + ]); + $pesan = 'Sukses mengirim medication dispense platform Satu Sehat!!'; + } + + curl_close($curl); + + // echo '
                                              '. $data. '
                                              '; + + } + } else if ($tipe === 'statement') { + + // Data resep dan mapping obat + $row['medications'] = $this->db('resep_obat') + ->join('resep_dokter', 'resep_dokter.no_resep = resep_obat.no_resep') + ->join('mlite_satu_sehat_mapping_obat', 'mlite_satu_sehat_mapping_obat.kode_brng = resep_dokter.kode_brng') + ->where('mlite_satu_sehat_mapping_obat.type', 'obat') + ->where('no_rawat', $no_rawat) + ->toArray(); + + if (count($row['medications']) === 0) { + echo json_encode(['error' => 'Data tidak lengkap untuk Medication Dispense', 'missing' => ['noresep' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Medication', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'farmasi'))->oneArray(); + + foreach ($row['medications'] as $i => $obat) { + $medReqId = $this->gen_uuid(); + $medId = $obat['no_resep'] . '' . $obat['kode_brng']; + $medUuid = "urn:uuid:" . $this->gen_uuid(); + $system_cek = 'http://terminology.hl7.org/CodeSystem/v3-orderableDrugForm'; + if (ctype_digit($obat['satuan_den'])) { + $system_cek = 'http://snomed.info/sct'; + } + + // Parsing aturan pakai + if (preg_match_all('/\d+/', $obat['aturan_pakai'], $m) && count($m[0]) >= 2) { + $frequency = (int) $m[0][0]; + $doseValue = (int) $m[0][1]; + } else { + $frequency = 1; + $doseValue = 1; + } + + // $duration = max(1, (int)round($obat['jml'] / $frequency / $doseValue)); + // $startDate = $obat['tgl_peresepan']; + // $endDate = date('Y-m-d', strtotime("$startDate +{$duration} days")); + + $satu_sehat_mapping_obat = $this->db('mlite_satu_sehat_mapping_obat')->where('kode_brng', $obat['kode_brng'])->oneArray(); + + $data = '{ + "resourceType": "MedicationStatement", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/medicationstatement/' . $this->organizationid . '", + "use": "official", + "value": "' . $obat['no_resep'] . '-' . $obat['kode_brng'] . '" + } + ], + "status": "completed", + "category": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/medication-statement-category", + "code": "outpatient", + "display": "Outpatient" + } + ] + }, + "medicationReference": { + "reference": "Medication/' . $satu_sehat_mapping_obat['id_medication'] . '", + "display": "' . $obat['nama_kfa'] . '" + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "dosage": [ + { + "text": "' . $obat['aturan_pakai'] . '", + "timing": { + "repeat": { + "frequency": ' . $doseValue . ', + "period": 1, + "periodUnit": "d" + } + }, + "route": { + "coding": [ + { + "system": "http://www.whocc.no/atc", + "code": "' . $obat['kode_route'] . '", + "display": "' . $obat['nama_route'] . '" + } + ] + }, + "doseAndRate": [ + { + "doseQuantity": { + "value": ' . $frequency . ', + "unit": "' . $obat['satuan_den'] . '", + "system": "' . $system_cek . '", + "code": "' . $obat['satuan_den'] . '" + } + } + ] + } + ], + "dateAsserted": "' . $obat['tgl_penyerahan'] . 'T' . $obat['jam_penyerahan'] . '' . $zonawaktu . '", + "informationSource": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "context": { + "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '" + }, + "note": [{ + "text": "Sudah dilakukan proses telaah obat oleh petugas dan obat sudah diserahkan ke pasien." + }] + }'; + + // echo '
                                              '. $data. '
                                              '; + + $url = $this->fhirurl . '/MedicationStatement'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $data, + )); + + $response = curl_exec($curl); + + $id_medication_statement = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim medication statement platform Satu Sehat!!'; + if ($id_medication_statement) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_medication_statement' => $id_medication_statement + ]); + $pesan = 'Sukses mengirim medication statement platform Satu Sehat!!'; + } + + curl_close($curl); + + } + } else if ($tipe == 'mapping') { + $satu_sehat_mapping_obat = $this->db('mlite_satu_sehat_mapping_obat')->where('kode_brng', $kode_brng)->oneArray(); + $data = '{ + "resourceType": "Medication", + "meta": { + "profile": [ + "https://fhir.kemkes.go.id/r4/StructureDefinition/Medication" + ] + }, + "identifier": [ + { + "system" : "http://sys-ids.kemkes.go.id/medication/' . $this->organizationid . '", + "use": "official", + "value" : "' . $satu_sehat_mapping_obat['kode_brng'] . '" + } + ], + "code": { + "coding": [ + { + "system": "http://sys-ids.kemkes.go.id/kfa", + "code": "' . $satu_sehat_mapping_obat['kode_kfa'] . '", + "display": "' . $satu_sehat_mapping_obat['nama_kfa'] . '" + } + ] + }, + "status": "active", + "form": { + "coding": [ + { + "system": "http://terminology.kemkes.go.id/CodeSystem/medication-form", + "code": "' . $satu_sehat_mapping_obat['kode_sediaan'] . '", + "display": "' . $satu_sehat_mapping_obat['nama_sediaan'] . '" + } + ] + }, + "extension": [ + { + "url": "https://fhir.kemkes.go.id/r4/StructureDefinition/MedicationType", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.kemkes.go.id/CodeSystem/medication-type", + "code": "NC", + "display": "Non-compound" + } + ] + } + } + ] + }'; + + $url = $this->fhirurl . '/Medication'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $data, + )); + + $response = curl_exec($curl); + + $id_medication = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim mapping medication platform Satu Sehat!!'; + if ($id_medication) { + $this->db('mlite_satu_sehat_mapping_obat') + ->where('kode_brng', $kode_brng) + ->save([ + 'id_medication' => $id_medication + ]); + $pesan = 'Sukses mengirim mapping medication platform Satu Sehat!!'; + } + + curl_close($curl); + } + + if ($render) { + echo $this->draw('medication.html', [ + 'pesan' => isset_or($pesan, ''), + 'response' => isset_or($response, '') + ]); + } else { + echo isset($response) ? $response : ''; + } + exit(); + } + + public function getLaboratory(string $no_rawat = '', string $tipe = 'request', $render = true) + { + + $zonawaktu = '+07:00'; + if ($this->settings->get('satu_sehat.zonawaktu') == 'WITA') { + $zonawaktu = '+08:00'; + } + if ($this->settings->get('satu_sehat.zonawaktu') == 'WIT') { + $zonawaktu = '+09:00'; + } + + $permintaan_lab = $this->db('permintaan_lab') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + $no_rawat = revertNoRawat($no_rawat); + $pesan = ''; + $response = ''; + $laboratory = ''; + + if ($tipe == 'request') { + + $row['permintaan_lab'] = $this->db('permintaan_lab') + ->where('no_rawat', $no_rawat) + ->oneArray(); + if (!is_array($row['permintaan_lab']) || !isset($row['permintaan_lab']['noorder'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory request', 'missing' => ['permintaan_lab.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $row['permintaan_pemeriksaan_lab'] = $this->db('permintaan_pemeriksaan_lab') + ->join('jns_perawatan_lab', 'jns_perawatan_lab.kd_jenis_prw = permintaan_pemeriksaan_lab.kd_jenis_prw') + ->where('noorder', $row['permintaan_lab']['noorder']) + ->oneArray(); + if (!is_array($row['permintaan_pemeriksaan_lab']) || !isset($row['permintaan_pemeriksaan_lab']['kd_jenis_prw'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory request', 'missing' => ['permintaan_pemeriksaan_lab.kd_jenis_prw' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $mapping_lab = $this->db('mlite_satu_sehat_mapping_lab')->where('kd_jenis_prw', $row['permintaan_pemeriksaan_lab']['kd_jenis_prw'])->oneArray(); + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory request', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'laboratorium'))->oneArray(); + + $laboratory = ' + { + "resourceType": "ServiceRequest", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/servicerequest/' . $this->organizationid . '", + "value": "' . $row['permintaan_pemeriksaan_lab']['noorder'] . '" + } + ], + "status": "active", + "intent": "order", + "priority": "routine", + "category": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "108252007", + "display": "Laboratory procedure" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "' . isset_or($mapping_lab['system'], 'http://loinc.org') . '", + "code": "' . $mapping_lab['code'] . '", + "display": "' . $mapping_lab['display'] . '" + } + ], + "text": "' . $row['permintaan_pemeriksaan_lab']['nm_perawatan'] . '" + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '" + }, + "occurrenceDateTime": "' . $row['permintaan_lab']['tgl_permintaan'] . 'T' . $row['permintaan_lab']['jam_permintaan'] . $zonawaktu . '", + "requester": { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display": "' . $nm_dokter . '" + }, + "performer": [ + { + "reference": "Organization/' . $mlite_satu_sehat_lokasi['id_organisasi_satusehat'] . '", + "display": "' . $mlite_satu_sehat_lokasi['lokasi'] . '" + } + ], + "reasonCode": [ + { + "text": "' . $row['permintaan_lab']['diagnosa_klinis'] . '" + } + ] + } + '; + + $url = $this->fhirurl . '/ServiceRequest'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . $this->getAccessToken()), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $laboratory, + )); + + $response = curl_exec($curl); + + $id_laboratory_request = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim laboratory request lab PK platform Satu Sehat!!'; + if ($id_laboratory_request) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_lab_pk_request' => $id_laboratory_request + ]); + $pesan = 'Sukses mengirim laboratory request lab PK platform Satu Sehat!!'; + } + + curl_close($curl); + + } + if ($tipe == 'specimen') { + + $row['permintaan_lab'] = $this->db('permintaan_lab') + ->where('no_rawat', $no_rawat) + ->oneArray(); + if (!is_array($row['permintaan_lab']) || !isset($row['permintaan_lab']['noorder'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory specimen', 'missing' => ['permintaan_lab.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $row['permintaan_pemeriksaan_lab'] = $this->db('permintaan_pemeriksaan_lab') + ->join('jns_perawatan_lab', 'jns_perawatan_lab.kd_jenis_prw = permintaan_pemeriksaan_lab.kd_jenis_prw') + ->where('noorder', $row['permintaan_lab']['noorder']) + ->oneArray(); + if (!is_array($row['permintaan_pemeriksaan_lab']) || !isset($row['permintaan_pemeriksaan_lab']['kd_jenis_prw'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory specimen', 'missing' => ['permintaan_pemeriksaan_lab.kd_jenis_prw' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $mapping_lab = $this->db('mlite_satu_sehat_mapping_lab')->where('kd_jenis_prw', $row['permintaan_pemeriksaan_lab']['kd_jenis_prw'])->oneArray(); + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory specimen', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'laboratorium'))->oneArray(); + + $laboratory = ' + { + "resourceType": "Specimen", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/specimen/' . $this->organizationid . '", + "value": "' . $row['permintaan_pemeriksaan_lab']['noorder'] . '" + } + ], + "status": "available", + "type": { + "coding": [ + { + "system": "' . isset_or($mapping_lab['sampel_system'], 'http://snomed.info/sct') . '", + "code": "' . isset_or($mapping_lab['sampel_code'], '119364003') . '", + "display": "' . isset_or($mapping_lab['sampel_display'], 'Serum specimen') . '" + } + ] + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "receivedTime": "' . $row['permintaan_lab']['tgl_permintaan'] . 'T' . $row['permintaan_lab']['jam_permintaan'] . $zonawaktu . '", + "request": [ + { + "reference": "ServiceRequest/' . $mlite_satu_sehat_response['id_lab_pk_request'] . '" + } + ] + } + '; + + // echo json_decode(json_encode($laboratory)); + + $url = $this->fhirurl . '/Specimen'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $laboratory, + )); + + $response = curl_exec($curl); + + $id_laboratory_specimen = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim laboratory specimen lab PK platform Satu Sehat!!'; + if ($id_laboratory_specimen) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_lab_pk_specimen' => $id_laboratory_specimen + ]); + $pesan = 'Sukses mengirim laboratory specimen lab PK platform Satu Sehat!!'; + } + + curl_close($curl); + + } + if ($tipe == 'observation') { + + $row['permintaan_lab'] = $this->db('permintaan_lab') + ->where('no_rawat', $no_rawat) + ->oneArray(); + if (!is_array($row['permintaan_lab']) || !isset($row['permintaan_lab']['noorder'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory observation', 'missing' => ['permintaan_lab.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $row['permintaan_pemeriksaan_lab'] = $this->db('permintaan_pemeriksaan_lab') + ->join('jns_perawatan_lab', 'jns_perawatan_lab.kd_jenis_prw = permintaan_pemeriksaan_lab.kd_jenis_prw') + ->where('noorder', $row['permintaan_lab']['noorder']) + ->oneArray(); + $mapping_lab = $this->db('mlite_satu_sehat_mapping_lab')->where('kd_jenis_prw', $row['permintaan_pemeriksaan_lab']['kd_jenis_prw'])->oneArray(); + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory observation', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'laboratorium'))->oneArray(); + + $detail_periksa_lab = $this->db('detail_periksa_lab') + ->where('no_rawat', $no_rawat) + ->where('kd_jenis_prw', $row['permintaan_pemeriksaan_lab']['kd_jenis_prw']) + ->where('tgl_periksa', $row['permintaan_lab']['tgl_hasil']) + ->where('jam', $row['permintaan_lab']['jam_hasil']) + ->oneArray(); + + $laboratory = ' + { + "resourceType": "Observation", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/observation/' . $this->organizationid . '", + "value": "' . $row['permintaan_pemeriksaan_lab']['noorder'] . '" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory", + "display": "Laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "' . isset_or($mapping_lab['system'], 'http://loinc.org') . '", + "code": "' . $mapping_lab['code'] . '", + "display": "' . $mapping_lab['display'] . '" + } + ] + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "performer": [ + { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display": "' . $nm_dokter . '" + } + ], + "encounter": { + "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '", + "display": "Hasil Pemeriksaan Lab ' . $row['permintaan_pemeriksaan_lab']['nm_perawatan'] . ' dengan No.Rawat ' . $no_rawat . ', Atas Nama Pasien ' . $nm_pasien . ', Nomor RM ' . $no_rkm_medis . ', Pada Tanggal ' . $row['permintaan_lab']['tgl_hasil'] . ' jam ' . $row['permintaan_lab']['jam_hasil'] . '" + }, + "specimen": { + "reference": "Specimen/' . $mlite_satu_sehat_response['id_lab_pk_specimen'] . '" + }, + "effectiveDateTime": "' . $row['permintaan_lab']['tgl_hasil'] . 'T' . $row['permintaan_lab']['jam_hasil'] . $zonawaktu . '", + "valueString": "Hasil Lab ' . $row['permintaan_pemeriksaan_lab']['nm_perawatan'] . ' dengan Nilai ' . isset_or($detail_periksa_lab['nilai'], '') . ' pada Tanggal ' . $row['permintaan_lab']['tgl_hasil'] . ' jam ' . $row['permintaan_lab']['jam_hasil'] . '" + } + '; + + // echo json_decode(json_encode($laboratory)); + + $url = $this->fhirurl . '/Observation'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $laboratory, + )); + + $response = curl_exec($curl); + + $id_laboratory_observation = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim laboratory observation lab PK platform Satu Sehat!!'; + if ($id_laboratory_observation) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_lab_pk_observation' => $id_laboratory_observation + ]); + $pesan = 'Sukses mengirim laboratory observation lab PK platform Satu Sehat!!'; + } + + curl_close($curl); + + } + if ($tipe == 'diagnostic') { + + $row['permintaan_lab'] = $this->db('permintaan_lab') + ->where('no_rawat', $no_rawat) + ->oneArray(); + if (!is_array($row['permintaan_lab']) || !isset($row['permintaan_lab']['noorder'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory diagnostic report', 'missing' => ['permintaan_lab.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $row['permintaan_pemeriksaan_lab'] = $this->db('permintaan_pemeriksaan_lab') + ->join('jns_perawatan_lab', 'jns_perawatan_lab.kd_jenis_prw = permintaan_pemeriksaan_lab.kd_jenis_prw') + ->where('noorder', $row['permintaan_lab']['noorder']) + ->oneArray(); + $mapping_lab = $this->db('mlite_satu_sehat_mapping_lab')->where('kd_jenis_prw', $row['permintaan_pemeriksaan_lab']['kd_jenis_prw'])->oneArray(); + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Laboratory diagnostic report', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'laboratorium'))->oneArray(); + + $detail_periksa_lab = $this->db('detail_periksa_lab') + ->where('no_rawat', $no_rawat) + ->where('kd_jenis_prw', $row['permintaan_pemeriksaan_lab']['kd_jenis_prw']) + ->where('tgl_periksa', $row['permintaan_lab']['tgl_hasil']) + ->where('jam', $row['permintaan_lab']['jam_hasil']) + ->oneArray(); + + $laboratory = ' + { + "resourceType": "DiagnosticReport", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/diagnostic/' . $this->organizationid . '/lab", + "use": "official", + "value": "' . $row['permintaan_pemeriksaan_lab']['noorder'] . '" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0074", + "code": "LAB", + "display": "Laboratory" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "' . isset_or($mapping_lab['system'], 'http://loinc.org') . '", + "code": "' . $mapping_lab['code'] . '", + "display": "' . $mapping_lab['display'] . '" + } + ] + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '" + }, + "effectiveDateTime": "' . $row['permintaan_lab']['tgl_hasil'] . 'T' . $row['permintaan_lab']['jam_hasil'] . $zonawaktu . '", + "issued": "' . $row['permintaan_lab']['tgl_hasil'] . 'T' . $row['permintaan_lab']['jam_hasil'] . $zonawaktu . '", + "performer": [ + { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display": "' . $nm_dokter . '" + } + ], + "specimen": [ + { + "reference": "Specimen/' . $mlite_satu_sehat_response['id_lab_pk_specimen'] . '" + } + ], + "result": [ + { + "reference": "Observation/' . $mlite_satu_sehat_response['id_lab_pk_observation'] . '" + } + ], + "basedOn": [ + { + "reference": "ServiceRequest/' . $mlite_satu_sehat_response['id_lab_pk_request'] . '" + } + ], + "conclusion": "Hasil pemeriksaan menunjukkan kadar glukosa darah tinggi, konsisten dengan diagnosis diabetes mellitus." + } + '; + + // echo json_decode(json_encode($laboratory)); + + $url = $this->fhirurl . '/DiagnosticReport'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $laboratory, + )); + + $response = curl_exec($curl); + + $id_laboratory_diagnostic = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim laboratory diagnostic lab PK platform Satu Sehat!!'; + if ($id_laboratory_diagnostic) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_lab_pk_diagnostic' => $id_laboratory_diagnostic + ]); + $pesan = 'Sukses mengirim laboratory diagnostic lab PK platform Satu Sehat!!'; + } + + curl_close($curl); + + } + ; + + if ($render) { + echo $this->draw('laboratory.html', ['pesan' => $pesan, 'response' => $response]); + } else { + echo $response; + } + exit(); + } + + public function getRadiology($no_rawat = '', $tipe = '', $render = true) + { + + $zonawaktu = '+07:00'; + if ($this->settings->get('satu_sehat.zonawaktu') == 'WITA') { + $zonawaktu = '+08:00'; + } + if ($this->settings->get('satu_sehat.zonawaktu') == 'WIT') { + $zonawaktu = '+09:00'; + } + + + $no_rawat = revertNoRawat($no_rawat); + $pesan = ''; + $response = ''; + + $radiologi = ''; + + if ($tipe == 'request') { + + $row['permintaan_radiologi'] = $this->db('permintaan_radiologi') + ->where('no_rawat', $no_rawat) + ->oneArray(); + if (!is_array($row['permintaan_radiologi']) || !isset($row['permintaan_radiologi']['noorder'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology request', 'missing' => ['permintaan_radiologi.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $row['permintaan_pemeriksaan_radiologi'] = $this->db('permintaan_pemeriksaan_radiologi') + ->join('jns_perawatan_radiologi', 'jns_perawatan_radiologi.kd_jenis_prw = permintaan_pemeriksaan_radiologi.kd_jenis_prw') + ->where('noorder', $row['permintaan_radiologi']['noorder']) + ->oneArray(); + if (!is_array($row['permintaan_pemeriksaan_radiologi']) || !isset($row['permintaan_pemeriksaan_radiologi']['kd_jenis_prw'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology request', 'missing' => ['permintaan_pemeriksaan_radiologi.kd_jenis_prw' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $mapping_radiologi = $this->db('mlite_satu_sehat_mapping_rad')->where('kd_jenis_prw', $row['permintaan_pemeriksaan_radiologi']['kd_jenis_prw'])->oneArray(); + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology request', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'radiologi'))->oneArray(); + + $radiologi = '{ + "resourceType": "ServiceRequest", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/acsn/' . $this->organizationid . '", + "value": "' . $row['permintaan_radiologi']['noorder'] . '" + } + ], + "status": "active", + "intent": "order", + "priority": "routine", + "category": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "363679005", + "display": "Imaging" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "' . isset_or($mapping_radiologi['system'], 'http://loinc.org') . '", + "code": "' . $mapping_radiologi['code'] . '", + "display": "' . $mapping_radiologi['display'] . '" + } + ], + "text": "' . $row['permintaan_pemeriksaan_radiologi']['nm_perawatan'] . '" + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '", + "display": "Permintaan ' . $row['permintaan_pemeriksaan_radiologi']['nm_perawatan'] . ' Atas nama ' . $nm_pasien . ' No.RM ' . $no_rkm_medis . ' No. Rawat ' . $no_rawat . ' pada tangga ' . $row['permintaan_radiologi']['tgl_permintaan'] . ' jam ' . $row['permintaan_radiologi']['jam_permintaan'] . '" + }, + "occurrenceDateTime": "' . $row['permintaan_radiologi']['tgl_permintaan'] . 'T' . $row['permintaan_radiologi']['jam_permintaan'] . $zonawaktu . '", + "requester": { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display": "' . $nm_dokter . '" + }, + "performer": [ + { + "reference": "Organization/' . $mlite_satu_sehat_lokasi['id_organisasi_satusehat'] . '", + "display": "' . $mlite_satu_sehat_lokasi['lokasi'] . '" + } + ], + "reasonCode": [ + { + "text": "Permintaan pemeriksaan radiologi dengan Accession Number ' . $row['permintaan_radiologi']['noorder'] . ' dan diagnosa klinis: ' . $row['permintaan_radiologi']['diagnosa_klinis'] . '" + } + ] + }'; + + // echo json_decode(json_encode($radiologi)); + + $url = $this->fhirurl . '/ServiceRequest'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $radiologi, + )); + + $response = curl_exec($curl); + + $id_radiologi_request = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim radiologi request platform Satu Sehat!!'; + if ($id_radiologi_request) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_rad_request' => $id_radiologi_request + ]); + $pesan = 'Sukses mengirim radiologi request platform Satu Sehat!!'; + } + + curl_close($curl); + + } elseif ($tipe == 'specimen') { + $row['permintaan_radiologi'] = $this->db('permintaan_radiologi') + ->where('no_rawat', $no_rawat) + ->oneArray(); + if (!is_array($row['permintaan_radiologi']) || !isset($row['permintaan_radiologi']['noorder'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology specimen', 'missing' => ['permintaan_radiologi.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $row['permintaan_pemeriksaan_radiologi'] = $this->db('permintaan_pemeriksaan_radiologi') + ->join('jns_perawatan_radiologi', 'jns_perawatan_radiologi.kd_jenis_prw = permintaan_pemeriksaan_radiologi.kd_jenis_prw') + ->where('noorder', $row['permintaan_radiologi']['noorder']) + ->oneArray(); + if (!is_array($row['permintaan_pemeriksaan_radiologi']) || !isset($row['permintaan_pemeriksaan_radiologi']['kd_jenis_prw'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology specimen', 'missing' => ['permintaan_pemeriksaan_radiologi.kd_jenis_prw' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $mapping_radiologi = $this->db('mlite_satu_sehat_mapping_rad')->where('kd_jenis_prw', $row['permintaan_pemeriksaan_radiologi']['kd_jenis_prw'])->oneArray(); + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology specimen', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'radiologi'))->oneArray(); + + + $radiologi = '{ + "resourceType": "Specimen", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/specimen/' . $this->organizationid . '", + "value": "' . $row['permintaan_radiologi']['noorder'] . '" + } + ], + "status": "available", + "type": { + "coding": [ + { + "system": "' . isset_or($mapping_radiologi['sampel_system'], 'http://snomed.info/sct') . '", + "code": "' . isset_or($mapping_radiologi['sampel_code'], '') . '", + "display": "' . isset_or($mapping_radiologi['sampel_display'], '') . '" + } + ] + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "receivedTime": "' . $row['permintaan_radiologi']['tgl_permintaan'] . 'T' . $row['permintaan_radiologi']['jam_permintaan'] . $zonawaktu . '", + "request": [ + { + "reference": "ServiceRequest/' . $mlite_satu_sehat_response['id_rad_request'] . '" + } + ] + }'; + + // echo json_decode(json_encode($radiologi)); + + $url = $this->fhirurl . '/Specimen'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $radiologi, + )); + + $response = curl_exec($curl); + + $id_radiologi_specimen = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim radiologi specimen platform Satu Sehat!!'; + if ($id_radiologi_specimen) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_rad_specimen' => $id_radiologi_specimen + ]); + $pesan = 'Sukses mengirim radiologi specimen platform Satu Sehat!!'; + } + + curl_close($curl); + + } elseif ($tipe == 'observation') { + + $row['permintaan_radiologi'] = $this->db('permintaan_radiologi') + ->where('no_rawat', $no_rawat) + ->oneArray(); + if (!is_array($row['permintaan_radiologi']) || !isset($row['permintaan_radiologi']['noorder'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology result', 'missing' => ['permintaan_radiologi.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $row['permintaan_pemeriksaan_radiologi'] = $this->db('permintaan_pemeriksaan_radiologi') + ->join('jns_perawatan_radiologi', 'jns_perawatan_radiologi.kd_jenis_prw = permintaan_pemeriksaan_radiologi.kd_jenis_prw') + ->where('noorder', $row['permintaan_radiologi']['noorder']) + ->oneArray(); + if (!is_array($row['permintaan_pemeriksaan_radiologi']) || !isset($row['permintaan_pemeriksaan_radiologi']['kd_jenis_prw'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology result', 'missing' => ['permintaan_pemeriksaan_radiologi.kd_jenis_prw' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $mapping_radiologi = $this->db('mlite_satu_sehat_mapping_rad')->where('kd_jenis_prw', $row['permintaan_pemeriksaan_radiologi']['kd_jenis_prw'])->oneArray(); + + $hasil_radiologi = $this->db('hasil_radiologi') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology observation', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'radiologi'))->oneArray(); + + + $radiologi = '{ + "resourceType": "Observation", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/observation/' . $this->organizationid . '", + "value": "' . $row['permintaan_radiologi']['noorder'] . '" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "imaging", + "display": "Imaging" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "' . isset_or($mapping_radiologi['system'], 'http://loinc.org') . '", + "code": "' . $mapping_radiologi['code'] . '", + "display": "' . $mapping_radiologi['display'] . '" + } + ] + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '" + }, + "effectiveDateTime": "' . $row['permintaan_radiologi']['tgl_hasil'] . 'T' . $row['permintaan_radiologi']['jam_hasil'] . $zonawaktu . '", + "performer": [ + { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display": "dr. ' . $nm_dokter . ', Sp.Rad" + } + ], + "valueString": "' . isset_or($hasil_radiologi['hasil'], '') . '" + }'; + + + // echo json_decode(json_encode($radiologi)); + + $url = $this->fhirurl . '/Observation'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $radiologi, + )); + + $response = curl_exec($curl); + + $id_radiologi_observation = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim radiologi observation platform Satu Sehat!!'; + if ($id_radiologi_observation) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_rad_observation' => $id_radiologi_observation + ]); + $pesan = 'Sukses mengirim radiologi observation platform Satu Sehat!!'; + } + + curl_close($curl); + + } elseif ($tipe == 'diagnostic') { + + $row['permintaan_radiologi'] = $this->db('permintaan_radiologi') + ->where('no_rawat', $no_rawat) + ->oneArray(); + if (!is_array($row['permintaan_radiologi']) || !isset($row['permintaan_radiologi']['noorder'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology result', 'missing' => ['permintaan_radiologi.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $row['permintaan_pemeriksaan_radiologi'] = $this->db('permintaan_pemeriksaan_radiologi') + ->join('jns_perawatan_radiologi', 'jns_perawatan_radiologi.kd_jenis_prw = permintaan_pemeriksaan_radiologi.kd_jenis_prw') + ->where('noorder', $row['permintaan_radiologi']['noorder']) + ->oneArray(); + if (!is_array($row['permintaan_pemeriksaan_radiologi']) || !isset($row['permintaan_pemeriksaan_radiologi']['kd_jenis_prw'])) { + echo json_encode(['error' => 'Data tidak lengkap untuk Radiology result', 'missing' => ['permintaan_pemeriksaan_radiologi.kd_jenis_prw' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + $mapping_radiologi = $this->db('mlite_satu_sehat_mapping_rad')->where('kd_jenis_prw', $row['permintaan_pemeriksaan_radiologi']['kd_jenis_prw'])->oneArray(); + + $hasil_radiologi = $this->db('hasil_radiologi') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + // Data pasien dan dokter + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $nm_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $nm_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + if ($id_pasien === '') { + echo json_encode(['error' => 'Data tidak lengkap untuk Radilogy diagnostic report', 'missing' => ['patient_id' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit(); + } + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $this->core->getSettings('satu_sehat', 'radiologi'))->oneArray(); + + + $radiologi = '{ + "resourceType": "DiagnosticReport", + "identifier": [ + { + "system": "http://sys-ids.kemkes.go.id/diagnostic/' . $this->organizationid . '/rad", + "value": "' . $row['permintaan_radiologi']['noorder'] . '" + } + ], + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v2-0074", + "code": "RAD", + "display": "Radiology" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "' . isset_or($mapping_radiologi['system'], 'http://loinc.org') . '", + "code": "' . $mapping_radiologi['code'] . '", + "display": "' . $mapping_radiologi['display'] . '" + } + ] + }, + "subject": { + "reference": "Patient/' . $id_pasien . '", + "display": "' . $nm_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $mlite_satu_sehat_response['id_encounter'] . '" + }, + "effectiveDateTime": "' . $row['permintaan_radiologi']['tgl_hasil'] . 'T' . $row['permintaan_radiologi']['jam_hasil'] . $zonawaktu . '", + "issued": "' . $row['permintaan_radiologi']['tgl_hasil'] . 'T' . $row['permintaan_radiologi']['jam_hasil'] . $zonawaktu . '", + "performer": [ + { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display": "dr. ' . $nm_dokter . ', Sp.Rad" + } + ], + "specimen": [ + { + "reference": "Specimen/' . $mlite_satu_sehat_response['id_rad_specimen'] . '" + } + ], + "result": [ + { + "reference": "Observation/' . $mlite_satu_sehat_response['id_rad_observation'] . '" + } + ], + "basedOn": [ + { + "reference": "ServiceRequest/' . $mlite_satu_sehat_response['id_rad_request'] . '" + } + ] + }'; + + // echo json_decode(json_encode($radiologi)); + + $url = $this->fhirurl . '/DiagnosticReport'; + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $radiologi, + )); + + $response = curl_exec($curl); + + $id_radiologi_diagnostic = isset_or(json_decode($response)->id, ''); + $pesan = 'Gagal mengirim radiologi diagnostic platform Satu Sehat!!'; + if ($id_radiologi_diagnostic) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_rad_diagnostic' => $id_radiologi_diagnostic + ]); + $pesan = 'Sukses mengirim radiologi diagnostic platform Satu Sehat!!'; + } + + curl_close($curl); + + } elseif ($tipe == 'image') { + + $row['permintaan_radiologi'] = $this->db('permintaan_radiologi') + ->where('no_rawat', $no_rawat) + ->oneArray(); + if (!is_array($row['permintaan_radiologi']) || !isset($row['permintaan_radiologi']['noorder'])) { + echo '
                                              ' . json_encode(['error' => 'Data tidak lengkap untuk Radiology image', 'missing' => ['permintaan_radiologi.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . '
                                              '; + exit(); + } + $noorder = $row['permintaan_radiologi']['noorder']; + + if ($this->settings->get('satu_sehat.imaging') == 'mini_pacs') { + + // Cari study Mini PACS berdasarkan no_rawat + $pacs_study = $this->db('mlite_mini_pacs_study') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + if (!$pacs_study) { + $response = json_encode([ + 'error' => 'Data study Mini PACS tidak ditemukan', + 'missing' => ['mlite_mini_pacs_study.no_rawat' => $no_rawat] + ], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + $pesan = 'Gagal: Study Mini PACS tidak ditemukan untuk no_rawat ' . $no_rawat; + } else { + // Panggil SatusehatDicomClient langsung — hindari nested HTTP (504) + try { + require_once '../plugins/mini_pacs/SatusehatDicomClient.php'; + + $config = [ + 'base_url' => 'https://api-satusehat.kemkes.go.id', + 'client_key' => $this->core->getSettings('satu_sehat', 'clientid'), + 'secret_key' => $this->core->getSettings('satu_sehat', 'secretkey'), + 'organization_id' => $this->core->getSettings('satu_sehat', 'organizationid'), + ]; + $client = new \Plugins\Mini_Pacs\SatusehatDicomClient($config); + + // Ambil series & instance pertama + $pacs_series = $this->db('mlite_mini_pacs_series') + ->where('study_id', $pacs_study['id']) + ->oneArray(); + + if (!$pacs_series) { + throw new \Exception('Series Mini PACS tidak ditemukan untuk study_id ' . $pacs_study['id']); + } + + $pacs_instance = $this->db('mlite_mini_pacs_instance') + ->where('series_id', $pacs_series['id']) + ->oneArray(); + + if (!$pacs_instance ) { + throw new \Exception('File DICOM tidak ditemukan atau belum dikonversi'); + } + + // 1. Upload DICOM + $upload = $client->uploadDicom($pacs_instance['file_path']); + $isDuplicate = (isset($upload['status']) && $upload['status'] === 'duplicate'); + + // 2. Data penunjang + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + $permintaan_radiologi = $this->db('permintaan_radiologi') + ->where('no_rawat', $no_rawat) + ->oneArray(); + + $pasien = $this->db('reg_periksa') + ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') + ->where('reg_periksa.no_rawat', $no_rawat) + ->oneArray(); + + $no_ktp_pasien = $pasien['no_ktp'] ?? ''; + + // Ambil patient IHS ID + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $id_pasien = ''; + if ( + is_object($__patientJson) && + isset($__patientJson->entry[0]->resource->id) + ) { + $id_pasien = $__patientJson->entry[0]->resource->id; + } + + // 3. Kirim ImagingStudy ke FHIR + $fhirResult = $client->sendImagingStudy([ + 'patientId' => $id_pasien, + 'encounterId' => $mlite_satu_sehat_response['id_encounter'] ?? '', + 'serviceRequestId' => $mlite_satu_sehat_response['id_rad_request'] ?? '', + 'noRawat' => $no_rawat, + 'noOrder' => $permintaan_radiologi['noorder'] ?? '', + 'studyUID' => $pacs_study['study_instance_uid'] ?? '', + 'seriesUID' => $pacs_series['series_instance_uid'] ?? '', + 'instanceUID' => $pacs_instance['sop_instance_uid'] ?? '', + ]); + + $fhirString = $fhirResult['response']; + $fhirArr = json_decode($fhirString, true); + $fhirPayloadArr = json_decode($fhirResult['payload'] ?? '{}', true); + + $response = json_encode([ + 'status' => $isDuplicate ? 'duplicate' : 'success', + 'message' => $isDuplicate ? 'DICOM sudah ada di Satu Sehat (Duplicate).' : 'Berhasil kirim ke Satu Sehat', + 'dicom_raw' => $upload['raw'] ?? '', + 'fhir_payload' => $fhirPayloadArr ?: ($fhirResult['payload'] ?? ''), + 'fhir_raw' => $fhirArr ?: $fhirString, + ], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + + $id_imaging_study = isset_or(json_decode($response)->fhir_raw->id, ''); + + $pesan = $isDuplicate + ? 'DICOM sudah ada di Satu Sehat (Duplicate) — Mini PACS' + : 'Sukses mengirim image ke Satu Sehat via Mini PACS!! — ID ImagingStudy: ' . $id_imaging_study; + + // 4. Simpan ID ImagingStudy ke database + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'id_imaging_study' => $id_imaging_study + ]); + + + } catch (\Exception $e) { + $response = json_encode(['error' => $e->getMessage()], JSON_PRETTY_PRINT); + $pesan = 'Gagal mengirim image ke Satu Sehat via Mini PACS: ' . $e->getMessage(); + } + } + + } else { + + // Alur Orthanc (default) + $accessionNumber = $this->getStudiIdByNoOrder($noorder); + if (!$accessionNumber) { + echo '
                                              ' . json_encode(['error' => 'Tidak ada data image studi untuk accession number ' . $noorder, 'missing' => ['permintaan_radiologi.noorder' => 'missing']], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . '
                                              '; + exit(); + } + + $orthanc_server = $this->settings->get('orthanc.server'); + // $orthanc_server = 'http://172.18.0.7:8042'; + $orthanc_user = $this->settings->get('orthanc.username'); + $orthanc_password = $this->settings->get('orthanc.password'); + + $curl = curl_init(); + + curl_setopt_array($curl, [ + CURLOPT_URL => $orthanc_server . '/modalities/DCMROUTER/store', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_TIMEOUT => 30, + CURLOPT_CUSTOMREQUEST => 'POST', + + // Orthanc REST API butuh BASIC AUTH + CURLOPT_USERPWD => $orthanc_user . ':' . $orthanc_password, + + // UUID instance Orthanc (plain text, BUKAN JSON) + CURLOPT_POSTFIELDS => $accessionNumber, + + CURLOPT_HTTPHEADER => [ + 'Content-Type: text/plain' + ], + ]); + + $response = curl_exec($curl); + + curl_close($curl); + + } + } + if ($render) { + echo $this->draw('radiology.html', ['pesan' => $pesan, 'response' => $response]); + } else { + echo $response; + } + exit(); + } + + public function getStudiIdByNoOrder($noorder) + { + + $orthanc_server = $this->settings->get('orthanc.server'); + // $orthanc_server = 'http://172.18.0.7:8042'; + $orthanc_user = $this->settings->get('orthanc.username'); + $orthanc_password = $this->settings->get('orthanc.password'); + + $ch = curl_init($orthanc_server . '/tools/find'); + + curl_setopt_array($ch, [ + CURLOPT_RETURNTRANSFER => true, + CURLOPT_USERPWD => $orthanc_user . ':' . $orthanc_password, + CURLOPT_POST => true, + CURLOPT_HTTPHEADER => ["Content-Type: application/json"], + CURLOPT_POSTFIELDS => json_encode([ + "Level" => "Study", + "Query" => [ + "AccessionNumber" => $noorder + ] + ]) + ]); + + $response = curl_exec($ch); + curl_close($ch); + + $studyIds = json_decode($response, true); + // print_r($studyIds); + return $studyIds[0] ?? ''; + } + + public function getCarePlan($no_rawat, $render = true) + { + + $zonawaktu = '+07:00'; + if ($this->settings->get('satu_sehat.zonawaktu') == 'WITA') { + $zonawaktu = '+08:00'; + } + if ($this->settings->get('satu_sehat.zonawaktu') == 'WIT') { + $zonawaktu = '+09:00'; + } + + + $no_rawat = revertNoRawat($no_rawat); + $kd_poli = $this->core->getRegPeriksaInfo('kd_poli', $no_rawat); + $nm_poli = $this->core->getPoliklinikInfo('nm_poli', $kd_poli); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $no_ktp_dokter = $this->core->getPegawaiInfo('no_ktp', $kd_dokter); + $nama_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $nama_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $status_lanjut = $this->core->getRegPeriksaInfo('status_lanjut', $no_rawat); + $tgl_registrasi = $this->core->getRegPeriksaInfo('tgl_registrasi', $no_rawat); + $jam_reg = $this->core->getRegPeriksaInfo('jam_reg', $no_rawat); + $mlite_billing = $this->db('mlite_billing')->where('no_rawat', $no_rawat)->oneArray(); + $pemeriksaan = $this->db('pemeriksaan_ralan')->where('no_rawat', $no_rawat)->oneArray(); + + $rtl = $pemeriksaan['rtl'] ?? null; + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $kunjungan = 'Kunjungan'; + if ($status_lanjut == 'Ranap') { + $kunjungan = 'Perawatan'; + $row['pemeriksaan'] = $this->db('pemeriksaan_ranap') + ->where('no_rawat', $no_rawat) + ->limit(1) + ->desc('tgl_perawatan') + ->oneArray(); + $rtl = $pemeriksaan['rtl'] ?? null; + } + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $ihs_patient = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $ihs_patient = $__patientJson->entry[0]->resource->id; + } + + $encounter_id = $mlite_satu_sehat_response['id_encounter'] ?? null; + + if ($ihs_patient === '' || !$rtl || !$encounter_id) { + $error = [ + 'error' => 'Data tidak lengkap untuk CarePlan', + 'missing' => [ + 'patient_id' => $ihs_patient === '' ? 'missing' : 'ok', + 'rtl' => !$rtl ? 'missing' : 'ok', + 'id_encounter' => !$encounter_id ? 'missing' : 'ok' + ] + ]; + $response = json_encode($error, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('careplan.html', ['pesan' => 'Gagal mengirim careplan platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + + $careplan = '{ + "resourceType" : "CarePlan", + "identifier" : { + "system" : "http://sys-ids.kemkes.go.id/careplan/' . $this->organizationid . '", + "value" : "' . $no_rawat . '" + }, + "title" : "Instruksi Medik dan Keperawatan Pasien", + "status" : "active", + "category" : [ + { + "coding" : [ + { + "system" : "http://snomed.info/sct", + "code" : "736271009", + "display" : "Outpatient care plan" + } + ] + } + ], + "intent" : "plan", + "description" : "' . $rtl . '", + "subject" : { + "reference" : "Patient/' . $ihs_patient . '", + "display" : "' . $nama_pasien . '" + }, + "encounter" : { + "reference": "Encounter/' . $encounter_id . '", + "display": "' . $kunjungan . ' ' . $nama_pasien . ' dari tanggal ' . $tgl_registrasi . '" + }, + "created" : "' . $pemeriksaan['tgl_perawatan'] . 'T' . $pemeriksaan['jam_rawat'] . $zonawaktu . '", + "author" : { + "reference" : "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display" : "' . $nama_dokter . '" + } + }'; + + // echo '
                                              '.$careplan.'
                                              '; + + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => $this->fhirurl . '/CarePlan', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $careplan, + )); + + $response = curl_exec($curl); + + $decoded = json_decode($response); + $id_careplan = (is_object($decoded) && isset($decoded->id)) ? $decoded->id : null; + $pesan = 'Gagal mengirim careplan platform Satu Sehat!!'; + if ($id_careplan) { + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + if ($mlite_satu_sehat_response) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'no_rawat' => $no_rawat, + 'id_careplan' => $id_careplan + ]); + } else { + $this->db('mlite_satu_sehat_response') + ->save([ + 'no_rawat' => $no_rawat, + 'id_careplan' => $id_careplan + ]); + } + $pesan = 'Sukses mengirim careplan platform Satu Sehat!!'; + } + + curl_close($curl); + + if ($render) { + echo $this->draw('careplan.html', ['pesan' => $pesan, 'response' => $response]); + } else { + echo $response; + } + exit(); + } + + public function getAllergy($no_rawat, $render = true) + { + + $zonawaktu = '+07:00'; + if ($this->settings->get('satu_sehat.zonawaktu') == 'WITA') { + $zonawaktu = '+08:00'; + } + if ($this->settings->get('satu_sehat.zonawaktu') == 'WIT') { + $zonawaktu = '+09:00'; + } + + + $no_rawat = revertNoRawat($no_rawat); + $kd_poli = $this->core->getRegPeriksaInfo('kd_poli', $no_rawat); + $nm_poli = $this->core->getPoliklinikInfo('nm_poli', $kd_poli); + $kd_dokter = $this->core->getRegPeriksaInfo('kd_dokter', $no_rawat); + $no_ktp_dokter = $this->core->getPegawaiInfo('no_ktp', $kd_dokter); + $nama_dokter = $this->core->getPegawaiInfo('nama', $kd_dokter); + $no_rkm_medis = $this->core->getRegPeriksaInfo('no_rkm_medis', $no_rawat); + $no_ktp_pasien = $this->core->getPasienInfo('no_ktp', $no_rkm_medis); + $nama_pasien = $this->core->getPasienInfo('nm_pasien', $no_rkm_medis); + $status_lanjut = $this->core->getRegPeriksaInfo('status_lanjut', $no_rawat); + $tgl_registrasi = $this->core->getRegPeriksaInfo('tgl_registrasi', $no_rawat); + $jam_reg = $this->core->getRegPeriksaInfo('jam_reg', $no_rawat); + $mlite_billing = $this->db('mlite_billing')->where('no_rawat', $no_rawat)->oneArray(); + $pemeriksaan = $this->db('pemeriksaan_ralan')->where('no_rawat', $no_rawat)->oneArray(); + + $rtl = $pemeriksaan['rtl'] ?? null; + + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + + $id_dokter = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('practitioner_id') + ->where('kd_dokter', $kd_dokter) + ->oneArray(); + + $kunjungan = 'Kunjungan'; + if ($status_lanjut == 'Ranap') { + $kunjungan = 'Perawatan'; + $row['pemeriksaan'] = $this->db('pemeriksaan_ranap') + ->where('no_rawat', $no_rawat) + ->limit(1) + ->desc('tgl_perawatan') + ->oneArray(); + $rtl = $pemeriksaan['rtl'] ?? null; + } + + $__patientResp = $this->getPatient($no_ktp_pasien); + $__patientJson = json_decode($__patientResp); + $ihs_patient = ''; + if (is_object($__patientJson) && isset($__patientJson->entry) && is_array($__patientJson->entry) && isset($__patientJson->entry[0]) && isset($__patientJson->entry[0]->resource) && isset($__patientJson->entry[0]->resource->id)) { + $ihs_patient = $__patientJson->entry[0]->resource->id; + } + + $encounter_id = $mlite_satu_sehat_response['id_encounter'] ?? null; + + if ($ihs_patient === '' || !$encounter_id) { + $error = [ + 'error' => 'Data tidak lengkap untuk Allergy', + 'missing' => [ + 'patient_id' => $ihs_patient === '' ? 'missing' : 'ok', + 'rtl' => !$rtl ? 'missing' : 'ok', + 'id_encounter' => !$encounter_id ? 'missing' : 'ok' + ] + ]; + $response = json_encode($error, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + if ($render) { + echo $this->draw('allergy.html', ['pesan' => 'Gagal mengirim allergy platform Satu Sehat!!', 'response' => $response]); + } else { + echo $response; + } + exit(); + } + + $allergy_list = [ + [ + 'deskripsi' => 'Allergy to food', + 'snomed_ct' => '414285001', + 'icd_10' => 'T78.1', + 'category' => 'food' + ], + [ + 'deskripsi' => 'Allergy to drug', + 'snomed_ct' => '416098002', + 'icd_10' => 'T88.7', + 'category' => 'drug' + ], + [ + 'deskripsi' => 'Allergy to nutraceutical', + 'snomed_ct' => '300910009', + 'icd_10' => 'J30.1', + 'category' => 'environment' + ], + [ + 'deskripsi' => 'Allergy to dust', + 'snomed_ct' => '232350006', + 'icd_10' => 'J30.8', + 'category' => 'environment' + ], + [ + 'deskripsi' => 'Allergic disposition', + 'snomed_ct' => '609328004', + 'icd_10' => 'T78.4', + 'category' => 'environment' + ] + ]; + + $allergy_icd10 = array_column($allergy_list, 'icd_10'); + + $row['allergy'] = []; + + $allergy = $this->db('diagnosa_pasien') + ->join('penyakit', 'penyakit.kd_penyakit = diagnosa_pasien.kd_penyakit') + ->where('no_rawat', $no_rawat) + ->where('diagnosa_pasien.status', $status_lanjut) + ->in('diagnosa_pasien.kd_penyakit', $allergy_icd10) + ->oneArray(); + + $allergy_map = array_column($allergy_list, null, 'icd_10'); + + if (!empty($allergy) && isset($allergy_map[$allergy['kd_penyakit']])) { + $row['allergy'] = $allergy_map[$allergy['kd_penyakit']]; + } + + $allergy = '{ + "resourceType" : "AllergyIntolerance", + "identifier" : { + "system" : "http://sys-ids.kemkes.go.id/allergy/' . $this->organizationid . '", + "use" : "official", + "value" : "' . $no_rawat . '" + }, + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical", + "code": "active", + "display": "Active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/allergyintolerance-verification", + "code": "confirmed", + "display": "Confirmed" + } + ] + }, + "category": [ + "food" + ], + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "' . $row['allergy']['snomed_ct'] . '", + "display": "' . $row['allergy']['deskripsi'] . '" + } + ], + "text": "' . $row['allergy']['deskripsi'] . '" + }, + "patient": { + "reference": "Patient/' . $ihs_patient . '", + "display": "' . $nama_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $encounter_id . '", + "display": "' . $kunjungan . ' ' . $nama_pasien . ' dari tanggal ' . $tgl_registrasi . '" + }, + "recordedDate": "' . $pemeriksaan['tgl_perawatan'] . 'T' . $pemeriksaan['jam_rawat'] . $zonawaktu . '", + "recorder": { + "reference": "Practitioner/' . $id_dokter['practitioner_id'] . '", + "display": "' . $nama_dokter . '" + } + }'; + + $curl = curl_init(); + // echo '
                                              ' . $allergy . '
                                              '; + + curl_setopt_array($curl, array( + CURLOPT_URL => $this->fhirurl . '/AllergyIntolerance', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_HTTPHEADER => array('Content-Type: application/json', 'Authorization: Bearer ' . json_decode($this->getToken())->access_token), + CURLOPT_CUSTOMREQUEST => 'POST', + CURLOPT_POSTFIELDS => $allergy + )); + + $response = curl_exec($curl); + + $decoded = json_decode($response); + $id_allergy = (is_object($decoded) && isset($decoded->id)) ? $decoded->id : null; + $pesan = 'Gagal mengirim allergy platform Satu Sehat!!'; + if ($id_allergy) { + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + if ($mlite_satu_sehat_response) { + $this->db('mlite_satu_sehat_response') + ->where('no_rawat', $no_rawat) + ->save([ + 'no_rawat' => $no_rawat, + 'id_allergy' => $id_allergy + ]); + } else { + $this->db('mlite_satu_sehat_response') + ->save([ + 'no_rawat' => $no_rawat, + 'id_allergy' => $id_allergy + ]); + } + $pesan = 'Sukses mengirim allergy platform Satu Sehat!!'; + } + + curl_close($curl); + + if ($render) { + echo $this->draw('allergy.html', ['pesan' => $pesan, 'response' => $response]); + } else { + echo $response; + } + exit(); + } + + public function getSettings() + { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'satu_sehat', 'praktisi'])); + } + return $this->draw('settings.html', ['satu_sehat' => $this->settings->get('satu_sehat'), 'mapping_lokasi' => $this->db('mlite_satu_sehat_lokasi')->toArray(), 'bidang' => $this->db('bidang')->toArray()]); + } + + public function postSaveSettings() + { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'satu_sehat', 'praktisi'])); + } + foreach ($_POST['satu_sehat'] as $key => $val) { + $this->settings('satu_sehat', $key, $val); + } + + $this->notify('success', 'Pengaturan telah disimpan'); + redirect(url([ADMIN, 'satu_sehat', 'settings'])); + } + + public function anyPraktisi() + { + $response = []; + if (isset($_POST['nik_dokter']) && $_POST['nik_dokter'] != '') { + $response = json_decode($this->getPractitioner($_POST['nik_dokter'])); + } + return $this->draw('praktisi.html', ['response' => json_encode($response, JSON_PRETTY_PRINT)]); + } + + public function anyPasien() + { + $response = []; + if (isset($_POST['nik_pasien']) && $_POST['nik_pasien'] != '') { + $response = json_decode($this->getPatient($_POST['nik_pasien'])); + } + return $this->draw('pasien.html', ['response' => json_encode($response, JSON_PRETTY_PRINT)]); + } + + public function getDepartemen() + { + $poli = $this->db('poliklinik')->where('status', '1')->toArray(); + $mlite_satset = $this->db('mlite_satu_sehat_departemen')->toArray(); + $satu_sehat = []; + foreach ($mlite_satset as $value) { + $nama = $this->core->getDepartemenInfo($value['dep_id']); + if ($nama == '') { + $nama = $this->core->getPoliklinikInfo('nm_poli', $value['dep_id']); } + $value['nama'] = $nama; + $satu_sehat[] = $value; } - - redirect(url([ADMIN, 'satu_sehat', 'departemen'])); + return $this->draw('departemen.html', ['departemen' => $this->db('departemen')->toArray(), 'poli' => $poli, 'satu_sehat_departemen' => $satu_sehat]); } public function getLokasi() @@ -2401,25 +6150,57 @@ public function postSaveLokasi() public function getMappingPraktisi() { + $this->_addHeaderFiles(); + $apotek_setting = $this->settings->get('satu_sehat.praktisiapotek'); + $lab_setting = $this->settings->get('satu_sehat.praktisilab'); $mapping_praktisi = $this->db('mlite_satu_sehat_mapping_praktisi') - ->join('dokter', 'dokter.kd_dokter=mlite_satu_sehat_mapping_praktisi.kd_dokter') - ->toArray(); + ->join('dokter', 'dokter.kd_dokter=mlite_satu_sehat_mapping_praktisi.kd_dokter') + ->toArray(); + $mapping_praktisi_apoteker = $this->db('mlite_satu_sehat_mapping_praktisi') + ->select('pegawai.nama as nm_dokter, mlite_satu_sehat_mapping_praktisi.*') + ->join('pegawai', 'pegawai.nik=mlite_satu_sehat_mapping_praktisi.kd_dokter')->toArray(); + + $combined = array_merge($mapping_praktisi, $mapping_praktisi_apoteker); + $unique = []; + $seen = []; + + foreach ($combined as $item) { + $key = $item['kd_dokter']; + if (!isset($seen[$key])) { + $seen[$key] = true; + $unique[] = $item; + } + } + $dokter = $this->db('dokter')->where('status', '1')->toArray(); - return $this->draw('mapping.praktisi.html', ['mapping_praktisi' => $mapping_praktisi, 'dokter' => $dokter]); + $apoteker = $this->db('pegawai')->where('stts_aktif', 'AKTIF')->where('bidang', $apotek_setting)->toArray(); + $lab = $this->db('pegawai')->where('stts_aktif', 'AKTIF')->where('bidang', $lab_setting)->toArray(); + $lab_apoteker = array_merge($lab, $apoteker); + return $this->draw('mapping.praktisi.html', ['mapping_praktisi' => $unique, 'dokter' => $dokter, 'apoteker' => $lab_apoteker]); } public function postSaveMappingPraktisi() { if (isset($_POST['simpan'])) { - $kd_dokter = $_POST['dokter']; + $kd_dokter = (is_null($_POST['dokter'])) ? $_POST['medis'] : $_POST['dokter']; $nik = $this->core->getPegawaiInfo('no_ktp', $kd_dokter); + $bidang = $this->core->getPegawaiInfo('bidang', $kd_dokter); $send_json = json_decode($this->getPractitioner($nik))->entry[0]->resource->id; - + $apotek_setting = $this->settings->get('satu_sehat.praktisiapotek'); + $lab_setting = $this->settings->get('satu_sehat.praktisilab'); + $jenis_praktisi = 'Dokter'; + if ($bidang == $apotek_setting) { + $jenis_praktisi = 'Apoteker'; + } + if ($bidang == $lab_setting) { + $jenis_praktisi = 'Laboratorium'; + } if ($send_json != '') { $query = $this->db('mlite_satu_sehat_mapping_praktisi')->save( [ 'practitioner_id' => $send_json, - 'kd_dokter' => $_POST['dokter'] + 'kd_dokter' => $_POST['dokter'], + 'jenis_praktisi' => $jenis_praktisi, ] ); if ($query) { @@ -2429,7 +6210,7 @@ public function postSaveMappingPraktisi() } } } - + if (isset($_POST['hapus'])) { $query = $this->db('mlite_satu_sehat_mapping_praktisi') ->where('kd_dokter', $_POST['dokter']) @@ -2442,45 +6223,440 @@ public function postSaveMappingPraktisi() redirect(url([ADMIN, 'satu_sehat', 'mappingpraktisi'])); } - public function getResponse() + public function getCodeDrugForm($keyword) + { + $url = 'https://terminology.hl7.org/6.4.0/CodeSystem-v3-orderableDrugForm.json'; + + // Get JSON data from the URL + $json = file_get_contents($url); + + // Decode JSON to PHP array + $data = json_decode($json, true); + + // Access values + foreach ($data['concept'] as $value) { + if ($value['display'] === $keyword) { + return $value['code']; + } + } + } + + public function searchObat($keyword) + { + + $url = $this->settings->get('satu_sehat.authurl'); + $parsed = parse_url($url); + $baseUrl = $parsed['scheme'] . '://' . $parsed['host']; + + if ($this->getAccessToken() === '') { + return ['error' => 'Gagal mendapatkan access token']; + } + + $ch = curl_init(); + curl_setopt_array($ch, [ + CURLOPT_URL => $baseUrl . '/kfa-v2/products/all?page=1&size=5&product_type=farmasi&keyword=' . urlencode($keyword), + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ + 'Authorization: Bearer ' . $this->getAccessToken(), + 'Accept: application/json' + ] + ]); + + $response = curl_exec($ch); + curl_close($ch); + + return json_decode($response, true); + } + + public function searchIdentifierObat($keyword) + { + + $url = $this->settings->get('satu_sehat.authurl'); + $parsed = parse_url($url); + $baseUrl = $parsed['scheme'] . '://' . $parsed['host']; + + if ($this->getAccessToken() === '') { + return ['error' => 'Gagal mendapatkan access token']; + } + + $ch = curl_init(); + curl_setopt_array($ch, [ + CURLOPT_URL => $baseUrl . '/kfa-v2/products?identifier=kfa&code=' . urlencode($keyword), + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ + 'Authorization: Bearer ' . $this->getAccessToken(), + 'Accept: application/json' + ] + ]); + + $response = curl_exec($ch); + curl_close($ch); + + return json_decode($response, true); + } + + public function getMappingObat() + { + $this->_addHeaderFiles(); + $databarang = $this->db('databarang')->where('status', '1')->toArray(); + $mapping_obat = $this->db('mlite_satu_sehat_mapping_obat')->toArray(); + return $this->draw('mapping.obat.html', ['databarang' => $databarang, 'mapping_obat_satu_sehat' => $mapping_obat]); + } + + public function getMappingObatSearch() + { + echo json_encode($this->searchObat($_GET['keyword'])); + exit(); + } + + public function regexZatAktif($string) + { + if (preg_match('/([\d\.]+)\s*([^\d\s]+)/', $string, $matches)) { + return [ + 'value' => $matches[1], + 'unit' => $matches[2], + ]; + } + + return null; + } + + public function postSaveObat() + { + if (isset($_POST['simpan'])) { + + $kfa = $this->db('mlite_kfa')->where('kode_kfa', $_POST['select_kfa'])->oneArray(); + if (!$kfa) { + $this->notify('danger', 'Data KFA tidak ditemukan di master. Silakan import master KFA terlebih dahulu.'); + redirect(url([ADMIN, 'satu_sehat', 'mappingobat'])); + } + + $query = $this->db('mlite_satu_sehat_mapping_obat')->save( + [ + 'kode_brng' => $_POST['kode_brng'], + 'kode_kfa' => $_POST['select_kfa'], + 'nama_kfa' => $kfa['nama_kfa'] ?? null, + 'kode_bahan' => $kfa['kode_bahan'] ?? null, + 'nama_bahan' => $kfa['nama_bahan'] ?? null, + 'numerator' => $kfa['numerator'] ?? null, + 'satuan_num' => $kfa['satuan_num'] ?? null, + 'denominator' => $kfa['denominator'] ?? null, + 'satuan_den' => $kfa['satuan_den'] ?? null, + 'nama_satuan_den' => $kfa['nama_satuan_den'] ?? null, + 'kode_sediaan' => $kfa['kode_sediaan'] ?? null, + 'nama_sediaan' => $kfa['nama_sediaan'] ?? null, + 'kode_route' => null, + 'nama_route' => null, + 'type' => $_POST['type'], + ] + ); + if ($query) { + $this->notify('success', 'Mapping obat telah disimpan'); + } else { + $this->notify('danger', 'Mapping obat gagal disimpan'); + } + } + + // if (isset($_POST['update'])) { + // $query = $this->db('mlite_satu_sehat_mapping_obat') + // ->where('kode_brng', $_POST['kode_brng']) + // ->save( + // [ + // 'obat_code' => $_POST['select_kfa'], + // 'obat_system' => '', + // 'obat_display' => $cari_obat['result']['name'], + // 'type' => $_POST['type'] + // ] + // ); + // if ($query) { + // $this->notify('success', 'Mapping obat telah disimpan'); + // } + // } + + if (isset($_POST['hapus'])) { + $query = $this->db('mlite_satu_sehat_mapping_obat') + ->where('kode_brng', $_POST['kode_brng']) + ->delete(); + if ($query) { + $this->notify('success', 'Mapping obat telah dihapus'); + } + } + + redirect(url([ADMIN, 'satu_sehat', 'mappingobat'])); + } + + public function getBunban($periode = '') { $this->_addHeaderFiles(); - $periode = date('Y-m-d'); - if (isset($_GET['periode']) && $_GET['periode'] != '') { - $periode = $_GET['periode']; + if ($periode == '') { + $periode = date('Y-m-d'); + } + if (isset($periode) && $periode != '') { + $periode = $periode; } $data_response = []; + $url = url([ADMIN, 'satu_sehat', 'bunban', $periode]); + $mainMenu = url([ADMIN, 'satu_sehat', 'manage']); + echo 'Tanggal Yang Dipilih : ' . $periode; + echo '
                                              + + + + + + '; + echo '
                                              '; + $cekbundle = $this->db('mlite_satu_sehat_log')->where('tgl_registrasi', $periode)->where('response', 'Belum')->limit(5)->toArray(); + if (!$cekbundle) { + $limit = 5; + $offset = 0; + if (isset($_GET['offset']) && $_GET['offset'] != '') { + $offset = $_GET['offset']; + } + $result = $this->db('reg_periksa') + ->select('no_rawat') + ->where('reg_periksa.tgl_registrasi', $periode) + ->where('stts', '!=', 'Batal') + ->where('kd_poli', '!=', 'IGD01') + ->where('status_lanjut', 'Ralan') + ->limit($limit) + ->offset($offset) + ->toArray(); + $no = 1; + foreach ($result as $row) { + $no_rawat = $row['no_rawat']; + $cek_data = $this->db('mlite_satu_sehat_log')->where('no_rawat', $no_rawat)->oneArray(); + if (!$cek_data) { + $this->db('mlite_satu_sehat_log')->save([ + 'no_rawat' => $no_rawat, + 'tgl_registrasi' => $periode, + 'response' => 'Belum' + ]); + echo $no_rawat . "
                                              "; + echo "Menyimpan data
                                              "; + echo '==========================================
                                              '; + } else { + echo $no . "Sudah Ada
                                              "; + echo '==========================================
                                              '; + } + $no++; + } + $offset += $limit; + echo ''; + } else { + foreach ($cekbundle as $row) { + $no_rawat = $row['no_rawat']; + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $no_rawat)->oneArray(); + $row['response'] = null; + if ($mlite_satu_sehat_response['id_encounter'] != '') { + $row['response'] = $mlite_satu_sehat_response['id_encounter']; + $this->db('mlite_satu_sehat_log')->where('no_rawat', $no_rawat)->update([ + 'response' => $mlite_satu_sehat_response['id_encounter'] + ]); + } else { + $row['response'] = $this->getEncounterBundle(convertNorawat($no_rawat), 'all'); + $response = json_decode(json_encode($row['response']), true); + if ($response['issue'][0]['severity'] == 'error') { + $this->db('mlite_satu_sehat_log')->where('no_rawat', $no_rawat)->update([ + 'response' => $response['issue'][0]['details']['text'] + ]); + } + ; + if ($response['entry'][0]['response']['status'] == '201 Created') { + $this->db('mlite_satu_sehat_log')->where('no_rawat', $no_rawat)->update([ + 'response' => $response['entry'][0]['response']['resourceID'] + ]); + } + } + $row['id_encounter'] = isset_or($mlite_satu_sehat_response['id_encounter'], ''); + $row['id_condition'] = isset_or($mlite_satu_sehat_response['id_condition'], ''); + $row['id_observation_ttvtensi'] = isset_or($mlite_satu_sehat_response['id_observation_ttvtensi'], ''); + $row['id_observation_ttvnadi'] = isset_or($mlite_satu_sehat_response['id_observation_ttvnadi'], ''); + $row['id_observation_ttvrespirasi'] = isset_or($mlite_satu_sehat_response['id_observation_ttvrespirasi'], ''); + $row['id_observation_ttvsuhu'] = isset_or($mlite_satu_sehat_response['id_observation_ttvsuhu'], ''); + $row['id_observation_ttvspo2'] = isset_or($mlite_satu_sehat_response['id_observation_ttvspo2'], ''); + $row['id_observation_ttvgcs'] = isset_or($mlite_satu_sehat_response['id_observation_ttvgcs'], ''); + $row['id_observation_ttvtinggi'] = isset_or($mlite_satu_sehat_response['id_observation_ttvtinggi'], ''); + $row['id_observation_ttvberat'] = isset_or($mlite_satu_sehat_response['id_observation_ttvberat'], ''); + $row['id_observation_ttvperut'] = isset_or($mlite_satu_sehat_response['id_observation_ttvperut'], ''); + $row['id_observation_ttvkesadaran'] = isset_or($mlite_satu_sehat_response['id_observation_ttvkesadaran'], ''); + $row['id_procedure'] = isset_or($mlite_satu_sehat_response['id_procedure'], ''); + $row['id_composition'] = isset_or($mlite_satu_sehat_response['id_composition'], ''); + $data_response[] = $row; + } + $json = json_encode($data_response); + $return = json_decode($json, true); + foreach ($return as $value) { + echo '
                                              '; + echo 'Encounter : ' . $value['id_encounter'] . '
                                              '; + echo 'Condition : ' . $value['id_condition'] . '
                                              '; + echo 'Procedure : ' . $value['id_procedure'] . '
                                              '; + echo 'Nadi : ' . $value['id_observation_ttvnadi'] . '
                                              '; + echo 'Respirasi : ' . $value['id_observation_ttvrespirasi'] . '
                                              '; + echo 'Suhu : ' . $value['id_observation_ttvsuhu'] . '
                                              '; + // echo 'Poli : '.$this->core->getPoliklinikInfo('nm_poli',$value['kd_poli']); + echo '
                                              '; + echo 'Nama Pasien : ' . $this->core->getPasienInfo('nm_pasien', $this->core->getRegPeriksaInfo('no_rkm_medis', $value['no_rawat'])); + echo '
                                              '; + echo 'No Rawat : ' . $value['no_rawat']; + echo '
                                              '; + echo (json_encode($value['response']) == null) ? '' : json_encode($value['response']); + echo '
                                              '; + echo '=========================================='; + } + echo '
                                              '; + echo '
                                              '; + echo ''; + } + echo ' Menu Utama'; + exit(); + } + + public function getResponse() + { + $this->_addHeaderFiles(); + return $this->draw('response.html'); + } + + public function postResponseApi() + { + $this->_addHeaderFiles(); + // Ambil rentang tanggal dari query string + $start_date = isset($_GET['tanggal_awal']) && $_GET['tanggal_awal'] !== '' ? $_GET['tanggal_awal'] : date('Y-m-d'); + $end_date = isset($_GET['tanggal_akhir']) && $_GET['tanggal_akhir'] !== '' ? $_GET['tanggal_akhir'] : $start_date; + + // Validasi format YYYY-MM-DD + if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $start_date)) { + $start_date = date('Y-m-d'); + } + if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $end_date)) { + $end_date = $start_date; + } + // Pastikan urutan start <= end + if ($start_date > $end_date) { + $tmp = $start_date; + $start_date = $end_date; + $end_date = $tmp; + } + + $start = intval($_POST['start'] ?? 0); + $length = intval($_POST['length'] ?? 10); + $draw = intval($_POST['draw'] ?? 1); // untuk datatables tracking + + $searchTerm = $_POST['search']['value'] ?? ''; + + $total = $this->db('reg_periksa') + ->where('reg_periksa.tgl_registrasi', '>=', $start_date) + ->where('reg_periksa.tgl_registrasi', '<=', $end_date) + ->where('stts', '!=', 'Batal') + ->where('status_lanjut', 'Ralan') + ->count(); + $query = $this->db('reg_periksa') - ->where('reg_periksa.tgl_registrasi', $periode) + ->join('pasien', 'pasien.no_rkm_medis = reg_periksa.no_rkm_medis') + ->join('dokter', 'dokter.kd_dokter = reg_periksa.kd_dokter') + ->leftJoin('pegawai', 'pegawai.nik = reg_periksa.kd_dokter') + ->where('reg_periksa.tgl_registrasi', '>=', $start_date) + ->where('reg_periksa.tgl_registrasi', '<=', $end_date) ->where('stts', '!=', 'Batal') - // ->limit(30) + ->where('status_lanjut', 'Ralan'); + + if ($searchTerm) { + $query->where(function ($q) use ($searchTerm) { + $q->where('reg_periksa.no_rawat', 'LIKE', "%$searchTerm%") + ->orWhere('reg_periksa.no_rkm_medis', 'LIKE', "%$searchTerm%") + ->orWhere('reg_periksa.tgl_registrasi', 'LIKE', "%$searchTerm%") + ->orWhere('pasien.nm_pasien', 'LIKE', "%$searchTerm%") + ->orWhere('pasien.no_ktp', 'LIKE', "%$searchTerm%") + ->orWhere('dokter.nm_dokter', 'LIKE', "%$searchTerm%") + ->orWhere('reg_periksa.kd_dokter', 'LIKE', "%$searchTerm%") + ->orWhere('pegawai.no_ktp', 'LIKE', "%$searchTerm%"); + }); + } + + $filteredTotal = $query->count(); + + $query_data = $query->select(['reg_periksa.*', 'nm_pasien' => 'pasien.nm_pasien', 'no_ktp_pasien' => 'pasien.no_ktp', 'nm_dokter' => 'dokter.nm_dokter', 'no_ktp_dokter' => 'pegawai.no_ktp']) + ->limit($length) + ->offset($start) ->toArray(); - foreach ($query as $row) { - $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $row['no_rawat'])->oneArray(); + $data_response = []; + foreach ($query_data as $row) { - $row['no_ktp_pasien'] = $this->core->getPasienInfo('no_ktp', $row['no_rkm_medis']); - $row['nm_pasien'] = $this->core->getPasienInfo('nm_pasien', $row['no_rkm_medis']); - $row['nm_dokter'] = $this->core->getDokterInfo('nm_dokter', $row['kd_dokter']); - $row['no_ktp_dokter'] = $this->core->getPegawaiInfo('no_ktp', $row['kd_dokter']); + $mlite_satu_sehat_response = $this->db('mlite_satu_sehat_response')->where('no_rawat', $row['no_rawat'])->oneArray(); + $row['no_rawat_converted'] = convertNoRawat($row['no_rawat']); $row['nm_poli'] = $this->core->getPoliklinikInfo('nm_poli', $row['kd_poli']); + $praktisi_id = $this->db('mlite_satu_sehat_mapping_praktisi')->where('kd_dokter', $row['kd_dokter'])->oneArray(); + $row['praktisi_id'] = (is_array($praktisi_id) && isset($praktisi_id['practitioner_id'])) ? $praktisi_id['practitioner_id'] : ''; + $mlite_billing = $this->db('mlite_billing')->where('no_rawat', $row['no_rawat'])->oneArray(); - if($this->settings->get('satu_sehat.billing') == 'khanza') { - $mlite_billing = $this->db('nota_jalan')->select([ - 'tgl_billing' => 'tanggal' - ]) - ->where('no_rawat', $row['no_rawat']) - ->oneArray(); - if($status_lanjut == 'Ranap') { - $mlite_billing = $this->db('nota_inap')->select([ - 'tgl_billing' => 'tanggal' - ]) - ->where('no_rawat', $row['no_rawat']) - ->oneArray(); - } - } - $row['tgl_pulang'] = isset_or($mlite_billing['tgl_billing'], ''); + + $pemeriksaan_ralan = $this->db('pemeriksaan_ralan')->where('no_rawat', $row['no_rawat'])->oneArray(); + + $row['tgl_pulang'] = isset_or($mlite_billing['tgl_billing'], isset_or($pemeriksaan_ralan['tgl_perawatan'], '')); if ($row['status_lanjut'] == 'Ranap') { $row['kd_kamar'] = $this->core->getKamarInapInfo('kd_kamar', $row['no_rawat']); @@ -2489,8 +6665,8 @@ public function getResponse() } $mlite_satu_sehat_lokasi = $this->db('mlite_satu_sehat_lokasi')->where('kode', $row['kd_poli'])->oneArray(); - $row['id_organisasi'] = $mlite_satu_sehat_lokasi['id_organisasi_satusehat']; - $row['id_lokasi'] = $mlite_satu_sehat_lokasi['id_lokasi_satusehat']; + $row['id_organisasi'] = isset_or($mlite_satu_sehat_lokasi['id_organisasi_satusehat'], ''); + $row['id_lokasi'] = isset_or($mlite_satu_sehat_lokasi['id_lokasi_satusehat'], ''); $row['pemeriksaan'] = $this->db('pemeriksaan_ralan') ->where('no_rawat', $row['no_rawat']) @@ -2513,8 +6689,136 @@ public function getResponse() ->where('prioritas', '1') ->oneArray(); + $row['prosedur_pasien'] = $this->db('prosedur_pasien') + ->join('icd9', 'icd9.kode=prosedur_pasien.kode') + ->where('no_rawat', $row['no_rawat']) + ->where('prosedur_pasien.status', $row['status_lanjut']) + ->where('prioritas', '1') + ->oneArray(); + + $row['adime_gizi'] = $this->db('catatan_adime_gizi') + ->where('no_rawat', $row['no_rawat'])->oneArray(); + + $row['immunization'] = $this->db('resep_obat') + ->join('resep_dokter', 'resep_dokter.no_resep=resep_obat.no_resep') + ->join('mlite_satu_sehat_mapping_obat', 'mlite_satu_sehat_mapping_obat.kode_brng=resep_dokter.kode_brng') + ->where('mlite_satu_sehat_mapping_obat.type', 'vaksin') + ->where('no_rawat', $row['no_rawat'])->oneArray(); + + $row['clinical_impression'] = isset_or($row['pemeriksaan']['penilaian'], ''); + + $row['medications'] = $this->db('resep_obat') + ->join('resep_dokter', 'resep_dokter.no_resep=resep_obat.no_resep') + ->where('no_rawat', $row['no_rawat'])->oneArray(); + + $row['medication_request'] = isset_or($row['medications']['tgl_peresepan'], ''); + + $row['medication_dispense'] = isset_or($row['medications']['tgl_perawatan'], ''); + + $row['medication_statement'] = isset_or($row['medications']['tgl_penyerahan'], ''); + + $row['permintaan_radiologi'] = $this->db('permintaan_radiologi') + ->where('no_rawat', $row['no_rawat']) + ->oneArray(); + + $row['service_request_radiologi'] = isset_or($row['permintaan_radiologi']['tgl_permintaan'], ''); + + $row['specimen_radiologi'] = isset_or($row['permintaan_radiologi']['tgl_sampel'], ''); + + $row['observation_radiologi'] = isset_or($row['permintaan_radiologi']['tgl_hasil'], ''); + + $row['diagnostic_report_radiologi'] = isset_or($row['permintaan_radiologi']['tgl_hasil'], ''); + + $pacs_study = $this->db('mlite_mini_pacs_study') + ->where('no_rawat', $row['no_rawat']) + ->oneArray(); + $row['imaging_study_radiologi'] = isset($pacs_study['id']) ? $pacs_study['id'] : null; + + $row['permintaan_lab'] = $this->db('permintaan_lab') + ->where('no_rawat', $row['no_rawat']) + ->oneArray(); + + $row['service_request_lab_pk'] = isset_or($row['permintaan_lab']['tgl_permintaan'], ''); + + $row['service_request_lab_pa'] = isset_or($row['permintaan_lab']['tgl_permintaan'], ''); + + $row['service_request_lab_mb'] = isset_or($row['permintaan_lab']['tgl_permintaan'], ''); + + $row['specimen_lab_pk'] = isset_or($row['permintaan_lab']['tgl_sampel'], ''); + + $row['specimen_lab_pa'] = $row['permintaan_lab']; + + $row['specimen_lab_mb'] = $row['permintaan_lab']; + + $row['observation_lab_pk'] = isset_or($row['permintaan_lab']['tgl_hasil'], ''); + + $row['observation_lab_pa'] = $row['permintaan_lab']; + + $row['observation_lab_mb'] = $row['permintaan_lab']; + + $row['diagnostic_report_lab_pk'] = isset_or($row['permintaan_lab']['tgl_hasil'], ''); + + $row['diagnostic_report_lab_pa'] = $row['permintaan_lab']; + + $row['diagnostic_report_lab_mb'] = $row['permintaan_lab']; + + $row['care_plan'] = isset_or($row['pemeriksaan']['rtl'], ''); + + $allergy_list = [ + [ + 'deskripsi' => 'Allergy to food', + 'snomed_ct' => '414285001', + 'icd_10' => 'T78.1', + 'category' => 'food' + ], + [ + 'deskripsi' => 'Allergy to drug', + 'snomed_ct' => '416098002', + 'icd_10' => 'T88.7', + 'category' => 'drug' + ], + [ + 'deskripsi' => 'Allergy to nutraceutical', + 'snomed_ct' => '300910009', + 'icd_10' => 'J30.1', + 'category' => 'environment' + ], + [ + 'deskripsi' => 'Allergy to dust', + 'snomed_ct' => '232350006', + 'icd_10' => 'J30.8', + 'category' => 'environment' + ], + [ + 'deskripsi' => 'Allergic disposition', + 'snomed_ct' => '609328004', + 'icd_10' => 'T78.4', + 'category' => 'environment' + ] + ]; + + $allergy_icd10 = array_column($allergy_list, 'icd_10'); + + $row['allergy'] = []; + + $allergy = $this->db('diagnosa_pasien') + ->join('penyakit', 'penyakit.kd_penyakit = diagnosa_pasien.kd_penyakit') + ->where('no_rawat', $row['no_rawat']) + ->where('diagnosa_pasien.status', $row['status_lanjut']) + ->in('diagnosa_pasien.kd_penyakit', $allergy_icd10) + ->oneArray(); + + $allergy_map = array_column($allergy_list, null, 'icd_10'); + + if (!empty($allergy) && isset($allergy_map[$allergy['kd_penyakit']])) { + $row['allergy'][] = $allergy_map[$allergy['kd_penyakit']]; + } + + $row['questionnaire'] = $this->db('catatan_perawatan')->where('no_rawat', $row['no_rawat'])->where('catatan', 'KPS')->oneArray(); + $row['id_encounter'] = isset_or($mlite_satu_sehat_response['id_encounter'], ''); $row['id_condition'] = isset_or($mlite_satu_sehat_response['id_condition'], ''); + $row['id_clinical_impression'] = isset_or($mlite_satu_sehat_response['id_clinical_impression'], ''); $row['id_observation_ttvtensi'] = isset_or($mlite_satu_sehat_response['id_observation_ttvtensi'], ''); $row['id_observation_ttvnadi'] = isset_or($mlite_satu_sehat_response['id_observation_ttvnadi'], ''); $row['id_observation_ttvrespirasi'] = isset_or($mlite_satu_sehat_response['id_observation_ttvrespirasi'], ''); @@ -2527,9 +6831,46 @@ public function getResponse() $row['id_observation_ttvkesadaran'] = isset_or($mlite_satu_sehat_response['id_observation_ttvkesadaran'], ''); $row['id_procedure'] = isset_or($mlite_satu_sehat_response['id_procedure'], ''); $row['id_composition'] = isset_or($mlite_satu_sehat_response['id_composition'], ''); + $row['id_medication_for_request'] = isset_or($mlite_satu_sehat_response['id_medication_for_request'], ''); + $row['id_medication_request'] = isset_or($mlite_satu_sehat_response['id_medication_request'], ''); + $row['id_medication_for_dispense'] = isset_or($mlite_satu_sehat_response['id_medication_for_dispense'], ''); + $row['id_medication_dispense'] = isset_or($mlite_satu_sehat_response['id_medication_dispense'], ''); + $row['id_immunization'] = isset_or($mlite_satu_sehat_response['id_immunization'], ''); + $row['id_procedure'] = isset_or($mlite_satu_sehat_response['id_procedure'], ''); + $row['id_clinical_impression'] = isset_or($mlite_satu_sehat_response['id_clinical_impression'], ''); + $row['id_medication_request'] = isset_or($mlite_satu_sehat_response['id_medication_request'], ''); + $row['id_medication_dispense'] = isset_or($mlite_satu_sehat_response['id_medication_dispense'], ''); + $row['id_medication_statement'] = isset_or($mlite_satu_sehat_response['id_medication_statement'], ''); + $row['id_rad_request'] = isset_or($mlite_satu_sehat_response['id_rad_request'], ''); + $row['id_rad_specimen'] = isset_or($mlite_satu_sehat_response['id_rad_specimen'], ''); + $row['id_rad_observation'] = isset_or($mlite_satu_sehat_response['id_rad_observation'], ''); + $row['id_rad_diagnostic'] = isset_or($mlite_satu_sehat_response['id_rad_diagnostic'], ''); + $row['id_imaging_study'] = isset_or($mlite_satu_sehat_response['id_imaging_study'], ''); + $row['id_lab_pk_request'] = isset_or($mlite_satu_sehat_response['id_lab_pk_request'], ''); + $row['id_service_request_lab_pa'] = isset_or($mlite_satu_sehat_response['id_service_request_lab_pa'], ''); + $row['id_service_request_lab_mb'] = isset_or($mlite_satu_sehat_response['id_service_request_lab_mb'], ''); + $row['id_lab_pk_specimen'] = isset_or($mlite_satu_sehat_response['id_lab_pk_specimen'], ''); + $row['id_specimen_lab_pa'] = isset_or($mlite_satu_sehat_response['id_specimen_lab_pa'], ''); + $row['id_specimen_lab_mb'] = isset_or($mlite_satu_sehat_response['id_specimen_lab_mb'], ''); + $row['id_lab_pk_observation'] = isset_or($mlite_satu_sehat_response['id_lab_pk_observation'], ''); + $row['id_observation_lab_pa'] = isset_or($mlite_satu_sehat_response['id_observation_lab_pa'], ''); + $row['id_observation_lab_mb'] = isset_or($mlite_satu_sehat_response['id_observation_lab_mb'], ''); + $row['id_lab_pk_diagnostic'] = isset_or($mlite_satu_sehat_response['id_lab_pk_diagnostic'], ''); + $row['id_diagnostic_report_lab_pa'] = isset_or($mlite_satu_sehat_response['id_diagnostic_report_lab_pa'], ''); + $row['id_diagnostic_report_lab_mb'] = isset_or($mlite_satu_sehat_response['id_diagnostic_report_lab_mb'], ''); + $row['id_careplan'] = isset_or($mlite_satu_sehat_response['id_careplan'], ''); + $row['id_allergy'] = isset_or($mlite_satu_sehat_response['id_allergy'], ''); + $row['id_questionnaire'] = isset_or($mlite_satu_sehat_response['id_questionnaire'], ''); $data_response[] = $row; } - return $this->draw('response.html', ['data_response' => $data_response]); + // Format hasil + echo json_encode([ + "draw" => $draw, + "recordsFiltered" => $filteredTotal, + "recordsTotal" => $total, + "data" => $data_response + ]); + exit(); } public function gen_uuid() @@ -2559,6 +6900,17 @@ public function gen_uuid() ); } + public function ran_char() + { + $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + $randomChars = ''; + + for ($i = 0; $i < 3; $i++) { + $randomChars .= $characters[random_int(0, strlen($characters) - 1)]; + } + return $randomChars; + } + public function convertTimeSatset($waktu) { $zonawaktu = '-7 hours'; @@ -2587,42 +6939,80 @@ public function getKyc() $auth_url = $this->authurl; $api_url = 'https://api-satusehat.kemkes.go.id/kyc/v1/generate-url'; $environment = 'production'; - + // nama petugas/operator Fasilitas Pelayanan Kesehatan (Fasyankes) yang akan melakukan validasi $agent_name = $this->core->getUserInfo('fullname', null, true); - + // NIK petugas/operator Fasilitas Pelayanan Kesehatan (Fasyankes) yang akan melakukan validasi - $agent_nik = $this->core->getPegawaiInfo('no_ktp', $this->core->getUserInfo('username', null, true)); - + $agent_nik = $this->core->getPegawaiInfo('no_ktp', $this->core->getUserInfo('username', null, true)); + // auth to satusehat $auth_result = $this->authenticateWithOAuth2($client_id, $client_secret, $auth_url); - + + // Validate authentication result + if ($auth_result === null) { + error_log('Satu Sehat authentication failed: Invalid client credentials or auth URL'); + return $this->draw('error.html', [ + 'title' => 'Authentication Error', + 'message' => 'Failed to authenticate with Satu Sehat API. Please check your client credentials and try again.' + ]); + } + + // Log successful authentication + error_log('Satu Sehat authentication successful'); + // Example usage - $kyc = new Kyc; - $json = $kyc->generateUrl($agent_name, $agent_nik , $auth_result, $api_url, $environment); - - $validation_web = json_decode($json, TRUE); + try { + $kyc = new Kyc; + $json = $kyc->generateUrl($agent_name, $agent_nik, $auth_result, $api_url, $environment); + + $validation_web = json_decode($json, TRUE); + + if (json_last_error() !== JSON_ERROR_NONE) { + error_log('Satu Sehat KYC JSON Parse Error: ' . json_last_error_msg() . ' - Response: ' . $json); + return $this->draw('error.html', [ + 'title' => 'KYC Response Error', + 'message' => 'Failed to parse KYC response from Satu Sehat API. Please try again later.' + ]); + } + + if (!isset($validation_web["data"]["url"])) { + error_log('Satu Sehat KYC Error: No URL in response - ' . $json); + return $this->draw('error.html', [ + 'title' => 'KYC URL Error', + 'message' => 'KYC URL not found in Satu Sehat API response. Please check your configuration.' + ]); + } - $url = $validation_web["data"]["url"]; + $url = $validation_web["data"]["url"]; + error_log('Satu Sehat KYC URL generated successfully'); - return $this->draw('kyc.html', ['url' => $url]); + return $this->draw('kyc.html', ['url' => $url]); + + } catch (\Exception $e) { + error_log('Satu Sehat KYC Exception: ' . $e->getMessage()); + return $this->draw('error.html', [ + 'title' => 'KYC Generation Error', + 'message' => 'An error occurred while generating KYC URL: ' . $e->getMessage() + ]); + } } - public function authenticateWithOAuth2($clientId, $clientSecret, $tokenUrl) { - + public function authenticateWithOAuth2($clientId, $clientSecret, $tokenUrl) + { $curl = curl_init(); $params = [ 'grant_type' => 'client_credentials', 'client_id' => $clientId, 'client_secret' => $clientSecret ]; - + curl_setopt_array($curl, array( - CURLOPT_URL => "${tokenUrl}/accesstoken?grant_type=client_credentials", + CURLOPT_URL => "$tokenUrl/accesstoken?grant_type=client_credentials", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, - CURLOPT_TIMEOUT => 0, + CURLOPT_TIMEOUT => 30, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', @@ -2631,25 +7021,77 @@ public function authenticateWithOAuth2($clientId, $clientSecret, $tokenUrl) { 'Content-Type: application/x-www-form-urlencoded' ), )); - + $response = curl_exec($curl); - + $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + $curlError = curl_error($curl); + curl_close($curl); - // echo $response; + + // Check for cURL errors + if ($curlError) { + error_log('Satu Sehat OAuth2 cURL Error: ' . $curlError); + return null; + } + + // Check HTTP status code + if ($httpCode !== 200) { + error_log('Satu Sehat OAuth2 HTTP Error: ' . $httpCode . ' - Response: ' . $response); + return null; + } + // Parse the response body $data = json_decode($response, true); - - // Return the access token + + if (json_last_error() !== JSON_ERROR_NONE) { + error_log('Satu Sehat OAuth2 JSON Parse Error: ' . json_last_error_msg() . ' - Response: ' . $response); + return null; + } + + // Check if access token exists in response + if (!isset($data['access_token'])) { + error_log('Satu Sehat OAuth2 Error: No access token in response - ' . json_encode($data)); + return null; + } + + // Log successful authentication (without exposing the token) + error_log('Satu Sehat OAuth2 authentication successful'); + + // Return the access token return $data['access_token']; } + public function get($url) + { + $ch = curl_init($url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + $res = curl_exec($ch); + curl_close($ch); + return $res; + } + + public function postFHIR($url, $token, $data) + { + $ch = curl_init($url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + "Content-Type: application/fhir+json", + "Authorization: Bearer $token" + ]); + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); + $response = curl_exec($ch); + curl_close($ch); + return $response; + } + private function _addHeaderFiles() { $this->core->addCSS(url('assets/css/dataTables.bootstrap.min.css')); - $this->core->addCSS(url('https://cdn.datatables.net/fixedcolumns/4.3.0/css/fixedColumns.dataTables.min.css')); + $this->core->addCSS(url('assets/css/fixedColumns.dataTables.min.css')); $this->core->addJS(url('assets/jscripts/jquery.dataTables.min.js')); $this->core->addJS(url('assets/jscripts/dataTables.bootstrap.min.js')); - $this->core->addJS(url('https://cdn.datatables.net/fixedcolumns/4.3.0/js/dataTables.fixedColumns.min.js')); + $this->core->addJS(url('assets/jscripts/dataTables.fixedColumns.min.js')); $this->core->addCSS(url('assets/css/bootstrap-datetimepicker.css')); $this->core->addJS(url('assets/jscripts/moment-with-locales.js')); $this->core->addJS(url('assets/jscripts/bootstrap-datetimepicker.js')); diff --git a/plugins/satu_sehat/Help.md b/plugins/satu_sehat/Help.md deleted file mode 100644 index 7f5f62d7a..000000000 --- a/plugins/satu_sehat/Help.md +++ /dev/null @@ -1,3 +0,0 @@ -
                                              - -
                                              diff --git a/plugins/satu_sehat/Info.php b/plugins/satu_sehat/Info.php index 80f0ed92d..0a3d6206b 100755 --- a/plugins/satu_sehat/Info.php +++ b/plugins/satu_sehat/Info.php @@ -1,13 +1,14 @@ 'Satu Sehat', - 'description' => 'Modul Satu Sehat Kemkes', - 'author' => 'Basoro', - 'version' => '1.0', - 'compatibility' => '4.*.*', - 'icon' => 'heartbeat', - 'install' => function () use ($core) { + 'name' => 'Satu Sehat', + 'description' => 'Modul Satu Sehat Kemkes', + 'author' => 'Basoro', + 'category' => 'bridging', + 'version' => '1.0', + 'compatibility' => '6.*.*', + 'icon' => 'heartbeat', + 'install' => function () use ($core) { $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'organizationid', '')"); $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'clientid', '')"); $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'secretkey', '')"); @@ -21,9 +22,15 @@ $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'longitude', '')"); $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'latitude', '')"); $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'zonawaktu', 'WIB')"); - $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'billing', 'mlite')"); + $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'farmasi', '')"); + $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'laboratorium', '')"); + $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'radiologi', '')"); + $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'praktisiapotek', '')"); + $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'praktisilab', '')"); + $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'praktisirad', '')"); + $core->db()->pdo()->exec("INSERT INTO `mlite_settings` (`module`, `field`, `value`) VALUES ('satu_sehat', 'imaging', 'mini_pacs')"); }, - 'uninstall' => function () use ($core) { + 'uninstall' => function () use ($core) { $core->db()->pdo()->exec("DELETE FROM `mlite_settings` WHERE `module` = 'satu_sehat'"); } ]; diff --git a/plugins/satu_sehat/Kyc.php b/plugins/satu_sehat/Kyc.php index f23d8f9ee..f863437c5 100644 --- a/plugins/satu_sehat/Kyc.php +++ b/plugins/satu_sehat/Kyc.php @@ -2,6 +2,7 @@ namespace Plugins\Satu_Sehat; +use Exception; use phpseclib3\Crypt\PublicKeyLoader; use phpseclib3\Crypt\RSA; use phpseclib3\Crypt\AES; @@ -141,9 +142,23 @@ public function encryptMessage($message, $pubPEM) { //done php_sec_lib public function decryptMessage($message, $privateKey) { + // Check if the response is a JSON error message instead of encrypted data + $trimmedMessage = trim($message); + if (substr($trimmedMessage, 0, 1) === '{') { + // This is a JSON response, likely an error from the server + error_log('Satu Sehat API returned JSON response instead of encrypted data: ' . $message); + return $message; // Return the JSON response as-is for error handling + } + $beginTag = "-----BEGIN ENCRYPTED MESSAGE-----"; $endTag = "-----END ENCRYPTED MESSAGE-----"; + // Check if the message has the expected encrypted format + if (strpos($message, $beginTag) === false || strpos($message, $endTag) === false) { + error_log('Invalid encrypted message format. Response: ' . substr($message, 0, 200)); + throw new \Exception('Invalid encrypted message format received from server'); + } + // Fetch the part of the PEM string between beginTag and endTag $messageContents = substr( $message, @@ -153,20 +168,37 @@ public function decryptMessage($message, $privateKey) // Base64 decode the string to get the binary data $binaryDerString = base64_decode($messageContents); + + if ($binaryDerString === false) { + error_log('Failed to base64 decode encrypted message'); + throw new \Exception('Failed to decode encrypted message'); + } // Split the binary data into wrapped key and encrypted message - $wrappedKeyLength = 256; + $wrappedKeyLength = 256; // RSA 2048-bit key produces 256 bytes when encrypted + + if (strlen($binaryDerString) < $wrappedKeyLength) { + error_log('Binary data too short. Expected at least ' . $wrappedKeyLength . ' bytes, got ' . strlen($binaryDerString)); + throw new \Exception('Encrypted data is too short'); + } + $wrappedKey = substr($binaryDerString, 0, $wrappedKeyLength); $encryptedMessage = substr($binaryDerString, $wrappedKeyLength); - // Unwrap the key using RSA private key - $key = PublicKeyLoader::load($privateKey); - $aesKey = $key->decrypt($wrappedKey); - - // Decrypt the encrypted message using the unwrapped key - $decryptedMessage = $this->aesDecrypt($encryptedMessage, $aesKey); - - return $decryptedMessage; + try { + // Unwrap the key using RSA private key with OAEP padding + $key = PublicKeyLoader::load($privateKey); + $key = $key->withPadding(RSA::ENCRYPTION_OAEP); + $aesKey = $key->decrypt($wrappedKey); + + // Decrypt the encrypted message using the unwrapped key + $decryptedMessage = $this->aesDecrypt($encryptedMessage, $aesKey); + + return $decryptedMessage; + } catch (\Exception $e) { + error_log('RSA decryption failed: ' . $e->getMessage()); + throw new \Exception('RSA decryption failed: ' . $e->getMessage()); + } } //not need php_sec_lib directly @@ -238,7 +270,41 @@ public function generateUrl($agen,$nik_agen,$accessToken, $apiUrl, $environment) curl_close($ch); // Output the response - return $this->decryptMessage($response,$privateKey); + $decryptedResponse = $this->decryptMessage($response, $privateKey); + + // Check if the response is a JSON response + $trimmedResponse = trim($decryptedResponse); + if (substr($trimmedResponse, 0, 1) === '{') { + // Parse JSON to check if it's an error or success response + $responseData = json_decode($decryptedResponse, true); + + if (json_last_error() !== JSON_ERROR_NONE) { + error_log('Failed to parse JSON response: ' . $decryptedResponse); + throw new \Exception('Invalid JSON response from Satu Sehat API'); + } + + // Check if it's an error response (has 'fault' field) + if (isset($responseData['fault'])) { + error_log('Satu Sehat KYC API Error Response: ' . $decryptedResponse); + throw new \Exception('Satu Sehat API Error: ' . json_encode($responseData['fault'])); + } + + // Check if it's a successful response (has 'metadata' with code 200 and 'data' field) + if (isset($responseData['metadata']) && + isset($responseData['metadata']['code']) && + $responseData['metadata']['code'] === '200' && + isset($responseData['data'])) { + // This is a successful response, return it as-is + error_log('Satu Sehat KYC API Success Response: ' . $decryptedResponse); + return $decryptedResponse; + } + + // If it's neither a clear error nor a clear success, log and return + error_log('Satu Sehat KYC API Unknown JSON Response: ' . $decryptedResponse); + return $decryptedResponse; + } + + return $decryptedResponse; } } diff --git a/plugins/satu_sehat/README.md b/plugins/satu_sehat/README.md new file mode 100644 index 000000000..0656bab43 --- /dev/null +++ b/plugins/satu_sehat/README.md @@ -0,0 +1,91 @@ +# Plugin Satu Sehat + +Modul integrasi platform **Satu Sehat** Kementerian Kesehatan RI di mLITE, menggunakan standar FHIR R4 untuk pengiriman data kunjungan, diagnosa, tindakan, obat, laboratorium, dan radiologi ke platform nasional. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Satu Sehat**. +- Pilih submenu sesuai kebutuhan: + - Kelola + - Referensi Praktisi + - Referensi Pasien + - Mapping Departemen + - Mapping Lokasi + - Mapping Praktisi + - Mapping Obat + - Mapping Laboratorium + - Mapping Radiologi + - Data Response + - Verifikasi KYC + - Pengaturan + +## Panduan Pengguna (Petugas) + +1. **Referensi Praktisi** + - Cari ID IHS dokter/tenaga kesehatan dari Satu Sehat menggunakan NIK dokter. + - Hasil pencarian menampilkan `practitioner_id` yang diperlukan untuk mapping. + +2. **Referensi Pasien** + - Cari ID IHS pasien dari Satu Sehat menggunakan NIK pasien. + - Digunakan untuk verifikasi identitas pasien sebelum pengiriman data encounter. + +3. **Data Response** + - Lihat riwayat respons FHIR yang diterima dari platform Satu Sehat untuk setiap encounter yang dikirim. + - Gunakan untuk memantau status keberhasilan pengiriman data. + +4. **Verifikasi KYC** + - Lakukan verifikasi KYC (Know Your Customer) pasien melalui integrasi Satu Sehat. + - Pastikan data NIK pasien sudah benar sebelum melakukan verifikasi. + +## Panduan Admin + +1. **Pengaturan (Wajib dikonfigurasi pertama kali)** + - Buka **Satu Sehat → Pengaturan** dan isi: + - **Organization ID**: ID organisasi fasyankes di Satu Sehat. + - **Client ID**: Client ID aplikasi dari konsol Satu Sehat. + - **Secret Key**: Secret key aplikasi dari konsol Satu Sehat. + - **Auth URL**: URL autentikasi OAuth2 (default: environment dev Kemkes). + - **FHIR URL**: URL FHIR R4 (default: environment dev Kemkes). + - **Zona Waktu**: WIB / WITA / WIT — digunakan pada timestamp FHIR. + - **Kode Pos, Kelurahan, Kecamatan, Kabupaten, Propinsi**: kode wilayah administratif fasyankes. + - **Longitude & Latitude**: koordinat lokasi fasyankes. + - **Imaging**: `mini_pacs` (default) — pengaturan sistem imaging radiologi. + - Simpan pengaturan sebelum menggunakan fitur lain. + +2. **Mapping Departemen** + - Daftarkan setiap departemen/poliklinik fasyankes sebagai **Organization** di Satu Sehat. + - Klik **Daftar** pada departemen yang belum memiliki ID Satu Sehat — sistem mengirim request POST ke `/Organization`. + - ID organisasi yang diterima disimpan di tabel `mlite_satu_sehat_departemen`. + - Gunakan **Update** untuk memperbarui data organisasi jika ada perubahan. + +3. **Mapping Lokasi** + - Daftarkan setiap poliklinik/bangsal sebagai **Location** di Satu Sehat. + - Klik **Daftar** — sistem mengirim request POST ke `/Location` dengan data alamat dan koordinat fasyankes. + - ID lokasi yang diterima disimpan di tabel `mlite_satu_sehat_lokasi`. + - Mapping lokasi diperlukan sebelum pengiriman data Encounter. + +4. **Mapping Praktisi** + - Petakan setiap dokter/tenaga kesehatan lokal ke ID IHS di Satu Sehat. + - Masukkan NIK dokter untuk mencari `practitioner_id` dari platform Satu Sehat. + - Data mapping tersimpan di tabel `mlite_satu_sehat_mapping_praktisi`. + +5. **Mapping Obat** + - Petakan kode obat lokal ke kode KFA (Katalog Farmasi Alat Kesehatan) Satu Sehat. + - Gunakan fitur pencarian kode KFA untuk menemukan kode yang sesuai. + - Data mapping tersimpan di tabel mapping obat Satu Sehat. + +6. **Mapping Laboratorium & Mapping Radiologi** + - Petakan jenis pemeriksaan laboratorium dan radiologi lokal ke kode LOINC atau kode standar Satu Sehat yang sesuai. + +7. **Pengiriman Data Encounter** + - Setelah semua mapping selesai, pengiriman Encounter dapat dilakukan dari modul Rawat Jalan/Rawat Inap. + - Encounter mendukung tipe **ambulatory** (rawat jalan) dan **inpatient encounter** (rawat inap). + +## Catatan + +- Konfigurasi awal (Organization ID, Client ID, Secret Key, URL) **wajib** diisi sebelum fitur lain dapat digunakan. +- Urutan setup: Pengaturan → Mapping Departemen → Mapping Lokasi → Mapping Praktisi → Mapping Obat/Lab/Rad. +- Ganti **Auth URL** dan **FHIR URL** ke endpoint produksi Kemkes saat siap go-live (hilangkan `-dev` dari URL). +- Access token OAuth2 diambil otomatis setiap kali ada request FHIR — tidak perlu refresh manual. +- Data NIK pasien harus diisi dengan benar di master pasien agar pencarian ID IHS berhasil. diff --git a/plugins/satu_sehat/Site.php b/plugins/satu_sehat/Site.php new file mode 100644 index 000000000..2e7a3234b --- /dev/null +++ b/plugins/satu_sehat/Site.php @@ -0,0 +1,801 @@ +route('satu-sehat/encounter/(:any)', 'forwardEncounter'); + $this->route('satu-sehat/condition/(:any)', 'forwardCondition'); + $this->route('satu-sehat/observation/(:any)/(:any)', 'forwardObservation'); + $this->route('satu-sehat/procedure/(:any)', 'forwardProcedure'); + $this->route('satu-sehat/diet-gizi/(:any)', 'forwardDietGizi'); + $this->route('satu-sehat/vaksin/(:any)', 'forwardVaksin'); + $this->route('satu-sehat/care-plan/(:any)', 'forwardCarePlan'); + $this->route('satu-sehat/allergy/(:any)', 'forwardAllergy'); + $this->route('satu-sehat/questionnaire/(:any)', 'forwardQuestionnaire'); + $this->route('satu-sehat/clinical-impression/(:any)', 'forwardClinicalImpression'); + $this->route('satu-sehat/medication/(:any)/(:any)', 'forwardMedication'); + $this->route('satu-sehat/medication/(:any)', 'forwardMedication'); + $this->route('satu-sehat/laboratory/(:any)/(:any)', 'forwardLaboratory'); + $this->route('satu-sehat/laboratory/(:any)', 'forwardLaboratory'); + $this->route('satu-sehat/radiology/(:any)/(:any)', 'forwardRadiology'); + $this->route('satu-sehat/radiology/(:any)', 'forwardRadiology'); + $this->route('satu-sehat/forward-norawat/(:any)', 'forwardByNoRawat'); + $this->route('satu-sehat/forward-norawat', 'forwardByNoRawat'); + $this->route('satu-sehat/forward-tanggal/(:any)', 'forwardByDate'); + $this->route('satu-sehat/forward-tanggal', 'forwardByDate'); + } + + public function forwardEncounter($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getEncounter($no_rawat, false); + } + + public function forwardCondition($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getCondition($no_rawat, false); + } + + public function forwardObservation($no_rawat = null, $ttv = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($ttv === null && isset($_GET['ttv'])) { + $ttv = $_GET['ttv']; + } + + // Manual fix for router issue consuming slashes + if ($ttv === null && strpos($no_rawat, '/') !== false) { + $parts = explode('/', $no_rawat); + $last = end($parts); + if (in_array($last, ["tensi", "nadi", "respirasi", "suhu", "spo2", "gcs", "kesadaran", "berat", "tinggi", "perut"])) { + $ttv = $last; + array_pop($parts); + $no_rawat = implode('/', $parts); + } + } + + if ($no_rawat === null || $ttv === null) { + echo json_encode(['error' => 'parameter kosong', 'no_rawat' => htmlspecialchars($no_rawat, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), 'ttv' => htmlspecialchars($ttv, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')]); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getObservation($no_rawat, $ttv, false); + } + + public function forwardProcedure($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getProcedure($no_rawat, false); + } + + public function forwardDietGizi($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getDietGizi($no_rawat, false); + } + + public function forwardVaksin($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getVaksin($no_rawat, false); + } + + public function forwardClinicalImpression($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getClinicalImpression($no_rawat, false); + } + + public function forwardMedication($no_rawat = null, $tipe = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($tipe === null && isset($_GET['tipe'])) { + $tipe = $_GET['tipe']; + } + + // Manual fix for router issue consuming slashes + if ($tipe === null && strpos($no_rawat, '/') !== false) { + $parts = explode('/', $no_rawat); + $last = end($parts); + if (in_array($last, ['request', 'dispense', 'statement'])) { + $tipe = $last; + array_pop($parts); + $no_rawat = implode('/', $parts); + } + } + + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + if ($tipe === null) { + $tipe = 'request'; + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getMedication((string)$no_rawat, (string)$tipe, false); + } + + public function forwardCarePlan($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getCarePlan($no_rawat, false); + } + + public function forwardAllergy($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getAllergy($no_rawat, false); + } + + public function forwardQuestionnaire($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getQuestionnaire($no_rawat, false); + } + + public function forwardLaboratory($no_rawat = null, $tipe = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($tipe === null && isset($_GET['tipe'])) { + $tipe = $_GET['tipe']; + } + + // Manual fix for router issue consuming slashes + if ($tipe === null && strpos($no_rawat, '/') !== false) { + $parts = explode('/', $no_rawat); + $last = end($parts); + if (in_array($last, ['request', 'specimen', 'observation', 'diagnostic'])) { + $tipe = $last; + array_pop($parts); + $no_rawat = implode('/', $parts); + } + } + + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + if ($tipe === null) { + $tipe = 'request'; + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getLaboratory((string)$no_rawat, (string)$tipe, false); + } + + public function forwardRadiology($no_rawat = null, $tipe = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($tipe === null && isset($_GET['tipe'])) { + $tipe = $_GET['tipe']; + } + + // Manual fix for router issue consuming slashes + if ($tipe === null && strpos($no_rawat, '/') !== false) { + $parts = explode('/', $no_rawat); + $last = end($parts); + if (in_array($last, ['request', 'specimen', 'observation', 'diagnostic', 'image'])) { + $tipe = $last; + array_pop($parts); + $no_rawat = implode('/', $parts); + } + } + + if ($no_rawat === null) { + echo json_encode(['error' => 'no_rawat kosong']); + exit(); + } + if ($tipe === null) { + $tipe = 'request'; + } + $admin = new \Plugins\Satu_Sehat\Admin($this->core); + $admin->init(); + return $admin->getRadiology((string)$no_rawat, (string)$tipe, false); + } + + public function forwardByDate($tanggal = null) + { + if ($tanggal === null && isset($_GET['tanggal'])) { + $tanggal = $_GET['tanggal']; + } + if ($tanggal === null) { + $tanggal = date('Y-m-d'); + } + if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $tanggal)) { + $tanggal = date('Y-m-d'); + } + $rows = $this->db('reg_periksa') + ->select('no_rawat') + ->where('reg_periksa.tgl_registrasi', $tanggal) + ->where('stts', '!=', 'Batal') + ->toArray(); + $list = []; + foreach ($rows as $r) { + $list[] = [ + 'display' => htmlspecialchars($r['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'url' => str_replace('/', '', htmlspecialchars($r['no_rawat'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')) + ]; + } + $encBase = '/satu-sehat/encounter/'; + $condBase = '/satu-sehat/condition/'; + $obsBase = '/satu-sehat/observation/'; + $procBase = '/satu-sehat/procedure/'; + $impBase = '/satu-sehat/clinical-impression/'; + $vaxBase = '/satu-sehat/vaksin/'; + $dietBase = '/satu-sehat/diet-gizi/'; + $careBase = '/satu-sehat/care-plan/'; + $allergyBase = '/satu-sehat/allergy/'; + $questionnaireBase = '/satu-sehat/questionnaire/'; + $medBase = '/satu-sehat/medication/'; + $labBase = '/satu-sehat/laboratory/'; + $radBase = '/satu-sehat/radiology/'; + + echo ' + + + + Forward Satu Sehat + + + + + + +

                                              Proses tanggal ' . htmlspecialchars($tanggal, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') . '

                                              + +
                                              + +
                                              +
                                              Ringkasan JSON
                                              +
                                              
                                              +        
                                              + + + + + '; + + echo ''; + exit(); + } + + + + public function forwardByNoRawat($no_rawat = null) + { + if ($no_rawat === null && isset($_GET['no_rawat'])) { + $no_rawat = $_GET['no_rawat']; + } + if ($no_rawat === null) { + $no_rawat = ''; + } + $list = []; + if ($no_rawat !== '') { + $list[] = [ + 'display' => htmlspecialchars($no_rawat, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'), + 'url' => str_replace('/', '', htmlspecialchars($no_rawat, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')) + ]; + } + + $encBase = '/satu-sehat/encounter/'; + $condBase = '/satu-sehat/condition/'; + $obsBase = '/satu-sehat/observation/'; + $procBase = '/satu-sehat/procedure/'; + $impBase = '/satu-sehat/clinical-impression/'; + $vaxBase = '/satu-sehat/vaksin/'; + $dietBase = '/satu-sehat/diet-gizi/'; + $careBase = '/satu-sehat/care-plan/'; + $allergyBase = '/satu-sehat/allergy/'; + $questionnaireBase = '/satu-sehat/questionnaire/'; + $medBase = '/satu-sehat/medication/'; + $labBase = '/satu-sehat/laboratory/'; + $radBase = '/satu-sehat/radiology/'; + + echo ' + + + + Forward Satu Sehat + + + + + +

                                              Proses no_rawat ' . htmlspecialchars($no_rawat, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') . '

                                              + +
                                              + +
                                              +
                                              Ringkasan JSON
                                              +
                                              
                                              +        
                                              + + + + + '; + + echo ''; + exit(); + } + +} diff --git a/plugins/satu_sehat/src/CarePlan.php b/plugins/satu_sehat/src/CarePlan.php new file mode 100644 index 000000000..439380958 --- /dev/null +++ b/plugins/satu_sehat/src/CarePlan.php @@ -0,0 +1,67 @@ +patient_id = $patient_id; + $this->uuid_encounter = $uuid_encounter; + $this->uuid_careplan = $uuid_careplan; + $this->instruction = $instruction; + $this->title = $title; + $this->no_ktp_dokter = $no_ktp_dokter; + } + + public function toJson() + { + $data = [ + "resourceType" => "CarePlan", + "status" => "active", + "intent" => "plan", + "category" => [ + [ + "coding" => [ + [ + "system" => "http://snomed.info/sct", + "code" => "736271009", + "display" => "Outpatient care plan" + ] + ] + ] + ], + "title" => $this->title, + "description" => $this->instruction, + "subject" => [ + "reference" => "Patient/".$this->patient_id, + ], + "encounter" => [ + "reference" => "urn:uuid:".$this->uuid_encounter, + ], + "author" => [ + "reference" => "Practitioner/".$this->no_ktp_dokter, + ] + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } + public function toJsonBundle() + { + $data = [ + "fullUrl" => "urn:uuid:" . $this->uuid_careplan, + "resource" => json_decode($this->toJson(), true), + "request" => [ + "method" => "POST", + "url" => "CarePlan" + ] + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/ClinicalImpression.php b/plugins/satu_sehat/src/ClinicalImpression.php new file mode 100644 index 000000000..6a6bbde0c --- /dev/null +++ b/plugins/satu_sehat/src/ClinicalImpression.php @@ -0,0 +1,128 @@ +org_id = $org_id; + $this->uuid_clinical_impression = $uuid_clinical_impression; + $this->no_rawat = $no_rawat; + $this->ihs_patient = $ihs_patient; + $this->nama_pasien = $nama_pasien; + $this->uuid_encounter = $uuid_encounter; + $this->keluhan_utama = $keluhan_utama; + $this->status_clinical_impression = $status_clinical_impression; + } + + public function toJson() + { + $prognosis = $this->status_clinical_impression === 'completed' ? $this->completed() : []; + $coding = $this->status_clinical_impression === 'in-progress' ? $this->inProgress() : []; + $data = array_merge( + [ + "resourceType" => "ClinicalImpression", + "status" => $this->status_clinical_impression, + ], + $coding, + [ + "identifier" => [ + [ + "use" => "official", + "system" => "http://sys-ids.kemkes.go.id/clinicalimpression/" . $this->org_id, + "value" => $this->no_rawat + ] + ], + "subject" => [ + "reference" => "Patient/" . $this->ihs_patient, + "display" => $this->nama_pasien + ], + "encounter" => [ + "reference" => "Encounter/" . $this->uuid_encounter + ], + ], + $prognosis, + [ + "summary" => $this->keluhan_utama, + ] + ); + return $data; + } + + public function inProgress() + { + $data = [ + "code" => [ + "coding" => [ + [ + "system" => "http://snomed.info/sct", + "code" => "312850006", + "display" => "History of disorder" + ] + ] + ], + "prognosisCodeableConcept" => [ + [ + "coding" => [ + [ + "system" => "http://snomed.info/sct", + "code" => "65872000", + "display" => "Fair prognosis" + ] + ] + ] + ] + ]; + return $data; + } + + public function completed() + { + $data = [ + "code" => [ + "coding" => [ + [ + "system" => "http://snomed.info/sct", + "code" => "20481000", + "display" => "Determination of prognosis" + ] + ] + ], + "prognosisCodeableConcept" => [ + [ + "coding" => [ + [ + "system" => "http://snomed.info/sct", + "code" => "65872000", + "display" => "Fair prognosis" + ] + ] + ] + ] + ]; + return $data; + } + + public function toJsonBundle() + { + $data = [ + "fullUrl" => "urn:uuid:" . $this->uuid_clinical_impression, + "resource" => $this->toJson(), + "request" => [ + "method" => "POST", + "url" => "ClinicalImpression" + ] + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/Composition.php b/plugins/satu_sehat/src/Composition.php new file mode 100644 index 000000000..e27d51b3e --- /dev/null +++ b/plugins/satu_sehat/src/Composition.php @@ -0,0 +1,89 @@ +uuid_encounter = $uuid_encounter; + $this->uuid_composition = $uuid_composition; + $this->ihs_patient = $ihs_patient; + $this->no_ktp_dokter = $no_ktp_dokter; + $this->nama_pasien = $nama_pasien; + $this->nama_dokter = $nama_dokter; + $this->no_rawat = $no_rawat; + $this->org_id = $org_id; + $this->display_encounter = $display_encounter; + $this->zonawaktu = $zonawaktu; + } + + public function toJson() + { + return '{ + "fullUrl": "urn:uuid:' . $this->uuid_composition . '", + "resource": { + "resourceType": "Composition", + "identifier": { + "system": "http://sys-ids.kemkes.go.id/composition/' . $this->org_id . '", + "value": "' . $this->no_rawat . '" + }, + "status": "final", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "18842-5", + "display": "Discharge summary" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "LP173421-1", + "display": "Report" + } + ] + } + ], + "subject": { + "reference": "Patient/' . $this->ihs_patient . '", + "display": "' . $this->nama_pasien . '" + }, + "encounter": { + "reference": "urn:uuid:' . $this->uuid_encounter . '", + "display": "'.$this->display_encounter.'" + }, + "date": "' . $this->zonawaktu . '", + "author": [ + { + "reference": "Practitioner/' . $this->no_ktp_dokter . '", + "display": "' . $this->nama_dokter . '" + } + ], + "title": "Resume Medis Rawat Jalan", + "custodian": { + "reference": "Organization/' . $this->org_id . '" + } + }, + "request": { + "method": "POST", + "url": "Composition" + } + }'; + } +} diff --git a/plugins/satu_sehat/src/Condition.php b/plugins/satu_sehat/src/Condition.php new file mode 100644 index 000000000..5f5914563 --- /dev/null +++ b/plugins/satu_sehat/src/Condition.php @@ -0,0 +1,76 @@ +uuid_encounter = $uuid_encounter; + $this->uuid_condition = $uuid_condition; + $this->code = $code; + $this->display = $display; + $this->patient_ihs = $patient_ihs; + $this->patient_display = $patient_display; + $this->display_encounter = $display_encounter; + } + + public function toJson() + { + return '{ + "fullUrl": "urn:uuid:' . $this->uuid_condition . '", + "resource": { + "resourceType": "Condition", + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active", + "display": "Active" + } + ] + }, + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-category", + "code": "encounter-diagnosis", + "display": "Encounter Diagnosis" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/icd-10", + "code": "' . $this->code . '", + "display": "' . $this->display . '" + } + ] + }, + "subject": { + "reference": "Patient/' . $this->patient_ihs . '", + "display": "' . $this->patient_display . '" + }, + "encounter": { + "reference": "urn:uuid:' . $this->uuid_encounter . '", + "display": "' . $this->display_encounter . '" + } + }, + "request": { + "method": "POST", + "url": "Condition" + } + },'; + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/DiagnosticReport.php b/plugins/satu_sehat/src/DiagnosticReport.php new file mode 100644 index 000000000..bc22b3fa9 --- /dev/null +++ b/plugins/satu_sehat/src/DiagnosticReport.php @@ -0,0 +1,91 @@ +uuid_diagnostic_report = $uuid_diagnostic_report; + $this->uuid_specimen = $uuid_specimen; + $this->uuid_encounter = $uuid_encounter; + $this->uuid_service_request = $uuid_service_request; + $this->no_ktp_dokter = $no_ktp_dokter; + $this->ihs_patient = $ihs_patient; + $this->code_loinc = $code_loinc; + $this->display_loinc = $display_loinc; + $this->waktu_hasil = $waktu_hasil; + $this->uuid_observation_lab = $uuid_observation_lab; + } + + public function toJson() + { + + $data = [ + "resourceType" => "DiagnosticReport", + "status" => "final", + "code" => [ + "coding" => [ + [ + "system" => "http://loinc.org", + "code" => $this->code_loinc, + "display" => $this->display_loinc + ] + ] + ], + "subject" => [ + "reference" => "Patient/". $this->ihs_patient, + ], + "encounter" => [ + "reference" => "urn:uuid:".$this->uuid_encounter + ], + "effectiveDateTime" => $this->waktu_hasil, + "issued" => $this->waktu_hasil, + "performer" => [ + [ + "reference" => "Practitioner/" . $this->no_ktp_dokter, + ] + ], + "specimen" => [ + [ + "reference" => "urn:uuid:" . $this->uuid_specimen + ] + ], + "basedOn" => [ + [ + "reference" => "urn:uuid:". $this->uuid_service_request + ] + ], + "result" => [ + [ + "reference" => "urn:uuid:" . $this->uuid_observation_lab + ] + ], + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } + + public function toJsonBundle() + { + $data = [ + "fullUrl" => "urn:uuid:" . $this->uuid_diagnostic_report, + "resource" => json_decode($this->toJson(), true), + "request" => [ + "method" => "POST", + "url" => "DiagnosticReport" + ] + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/Medication.php b/plugins/satu_sehat/src/Medication.php new file mode 100644 index 000000000..aaf50da0b --- /dev/null +++ b/plugins/satu_sehat/src/Medication.php @@ -0,0 +1,129 @@ +uuid_medication = $uuid_medication; + $this->identifier_org = $identifier_org; + $this->identifier_value = $identifier_value; + $this->kfa_coding = $kfa_coding; + $this->kfa_display = $kfa_display; + $this->form_coding = $form_coding; + $this->form_display = $form_display; + $this->ingredient_coding = $ingredient_coding; + $this->ingredient_display = $ingredient_display; + $this->numerator_code = $numerator_code; + $this->numerator_value = $numerator_value; + $this->denominator_code = $denominator_code; + $this->denominator_system = $denominator_system; + $this->denominator_value = $denominator_value; + $this->no = $no; + } + + public function toJson() + { + return '{ + "fullUrl": "urn:uuid:'.$this->uuid_medication.'", + "resource": { + "resourceType": "Medication", + "meta": { + "profile": [ + "https://fhir.kemkes.go.id/r4/StructureDefinition/Medication" + ] + }, + "extension": [ + { + "url": "https://fhir.kemkes.go.id/r4/StructureDefinition/MedicationType", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://terminology.kemkes.go.id/CodeSystem/medication-type", + "code": "NC", + "display": "Non-compound" + } + ] + } + } + ], + "identifier": [ + { + "use": "official", + "system": "http://sys-ids.kemkes.go.id/medication/'. $this->identifier_org . '", + "value": "'.$this->identifier_value.'-'.$this->no.'" + } + ], + "code": { + "coding": [ + { + "system": "http://sys-ids.kemkes.go.id/kfa", + "code": "'.$this->kfa_coding.'", + "display": "'.$this->kfa_display.'" + } + ] + }, + "status": "active", + "form": { + "coding": [ + { + "system": "http://terminology.kemkes.go.id/CodeSystem/medication-form", + "code": "'.$this->form_coding.'", + "display": "'.$this->form_display.'" + } + ] + }, + "ingredient": [ + { + "itemCodeableConcept": { + "coding": [ + { + "system": "http://sys-ids.kemkes.go.id/kfa", + "code": "'.$this->ingredient_coding.'", + "display": "'.$this->ingredient_display.'" + } + ] + }, + "isActive": true, + "strength": { + "numerator": { + "value": '.$this->numerator_value.', + "system": "http://unitsofmeasure.org", + "code": "'.$this->numerator_code.'" + }, + "denominator": { + "value": '.$this->denominator_value.', + "system": "'.$this->denominator_system.'", + "code": "'.$this->denominator_code.'" + } + } + } + ] + }, + "request": { + "method": "POST", + "url": "Medication" + } + },'; + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/MedicationDispense.php b/plugins/satu_sehat/src/MedicationDispense.php new file mode 100644 index 000000000..c7f2a6ea8 --- /dev/null +++ b/plugins/satu_sehat/src/MedicationDispense.php @@ -0,0 +1,170 @@ +uuid_medication_dispense = $uuid_medication_dispense; + $this->organization_id = $organization_id; + $this->identifier_value = $identifier_value; + $this->uuid_medication_for_dispense = $uuid_medication_for_dispense; + $this->medication_name = $medication_name; + $this->ihs_patient = $ihs_patient; + $this->ihs_patient_name = $ihs_patient_name; + $this->uuid_encounter = $uuid_encounter; + $this->practitioner_id = $practitioner_id; + $this->practitioner_name = $practitioner_name; + $this->location_id = $location_id; + $this->uuid_medication_request = $uuid_medication_request; + $this->whenPrepared = $whenPrepared; + $this->whenHanded = $whenHanded; + $this->patient_instruction = $patient_instruction; + $this->dose_value = $dose_value; + $this->dose_unit = $dose_unit; + $this->dose_system = $dose_system; + $this->dose_code = $dose_code; + $this->no = $no; + } + + public function toJson() + { + return '{ + "fullUrl": "urn:uuid:'.$this->uuid_medication_dispense.'", + "resource": { + "resourceType": "MedicationDispense", + "identifier": [ + { + "use": "official", + "system": "http://sys-ids.kemkes.go.id/prescription/'.$this->organization_id.'", + "value": "'.$this->identifier_value.'" + }, + { + "use": "official", + "system": "http://sys-ids.kemkes.go.id/prescription-item/'.$this->organization_id.'", + "value": "'.$this->identifier_value.'-'.$this->no.'" + } + ], + "status": "completed", + "category": { + "coding": [ + { + "system": "http://terminology.hl7.org/fhir/CodeSystem/medicationdispense-category", + "code": "outpatient", + "display": "Outpatient" + } + ] + }, + "medicationReference": { + "reference": "urn:uuid:'.$this->uuid_medication_for_dispense.'", + "display": "'.$this->medication_name.'" + }, + "subject": { + "reference": "Patient/'.$this->ihs_patient.'", + "display": "'.$this->ihs_patient_name.'" + }, + "context": { + "reference": "urn:uuid:'.$this->uuid_encounter.'" + }, + "performer": [ + { + "actor": { + "reference": "Practitioner/'.$this->practitioner_id.'", + "display": "Apoteker '.$this->practitioner_name.'" + } + } + ], + "location": { + "reference": "Location/'.$this->location_id.'", + "display": "Farmasi" + }, + "authorizingPrescription": [ + { + "reference": "urn:uuid:'.$this->uuid_medication_request.'" + } + ], + "quantity": { + "value": '.$this->dose_value.', + "system": "'.$this->dose_system.'", + "code": "'.$this->dose_code.'" + }, + "whenPrepared": "'.$this->whenPrepared.'", + "whenHandedOver": "'.$this->whenHanded.'", + "dosageInstruction": [ + { + "sequence": 1, + "additionalInstruction": [ + { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "418577003", + "display": "Take at regular intervals. Complete the prescribed course unless otherwise directed" + } + ] + } + ], + "patientInstruction": "'.$this->patient_instruction.'", + "timing": { + "repeat": { + "frequency": 1, + "period": 1, + "periodUnit": "d" + } + }, + "doseAndRate": [ + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", + "code": "ordered", + "display": "Ordered" + } + ] + }, + "doseQuantity": { + "value": '.$this->dose_value.', + "unit": "'.$this->dose_unit.'", + "system": "'.$this->dose_system.'", + "code": "'.$this->dose_code.'" + } + } + ] + } + ] + }, + "request": { + "method": "POST", + "url": "MedicationDispense" + } + },'; + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/MedicationRequest.php b/plugins/satu_sehat/src/MedicationRequest.php new file mode 100644 index 000000000..b0433f3ff --- /dev/null +++ b/plugins/satu_sehat/src/MedicationRequest.php @@ -0,0 +1,170 @@ +uuid_medication = $uuid_medication; + $this->uuid_medicationrequest = $uuid_medicationrequest; + $this->organization_id = $organization_id; + $this->identifier_value = $identifier_value; + $this->medication_reference = $medication_reference; + $this->ihs_patient = $ihs_patient; + $this->nama_pasien = $nama_pasien; + $this->time_authored = $time_authored; + $this->no_ktp_dokter = $no_ktp_dokter; + $this->nama_dokter = $nama_dokter; + $this->uuid_condition = $uuid_condition; + $this->uuid_encounter = $uuid_encounter; + $this->reason_reference = $reason_reference; + $this->patient_instruction = $patient_instruction; + $this->route_code = $route_code; + $this->route_display = $route_display; + $this->dose_value = $dose_value; + $this->dose_unit = $dose_unit; + $this->dose_system = $dose_system; + $this->dose_code = $dose_code; + $this->no = $no; + } + + public function toJson() + { + return '{ + "fullUrl": "urn:uuid:'.$this->uuid_medicationrequest.'", + "resource": { + "resourceType": "MedicationRequest", + "identifier": [ + { + "use": "official", + "system": "http://sys-ids.kemkes.go.id/prescription/'. $this->organization_id . '", + "value": "'.$this->identifier_value.'" + }, + { + "use": "official", + "system": "http://sys-ids.kemkes.go.id/prescription-item/'. $this->organization_id . '", + "value": "'.$this->identifier_value.'-'.$this->no.'" + } + ], + "status": "completed", + "intent": "order", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/medicationrequest-category", + "code": "outpatient", + "display": "Outpatient" + } + ] + } + ], + "priority": "routine", + "medicationReference": { + "reference": "Medication/'.$this->uuid_medication.'", + "display": "'.$this->medication_reference.'" + }, + "subject": { + "reference": "Patient/' . $this->ihs_patient . '", + "display": "' . $this->nama_pasien . '" + }, + "encounter": { + "reference": "Encounter/' . $this->uuid_encounter . '" + }, + "authoredOn": "'.$this->time_authored.'", + "requester": { + "reference": "Practitioner/' . $this->no_ktp_dokter . '", + "display": "' . $this->nama_dokter . '" + }, + "reasonReference": [ + { + "reference": "Condition/' . $this->uuid_condition . '", + "display": "' . $this->reason_reference . '" + } + ], + "dosageInstruction": [ + { + "sequence": 1, + "patientInstruction": "'.$this->patient_instruction.'", + "route": { + "coding": [ + { + "system": "http://www.whocc.no/atc", + "code": "'.$this->route_code.'", + "display": "'.$this->route_display.'" + } + ] + }, + "doseAndRate": [ + { + "type": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/dose-rate-type", + "code": "ordered", + "display": "Ordered" + } + ] + }, + "doseQuantity": { + "value": '.$this->dose_value.', + "unit": "'.$this->dose_unit.'", + "system": "'.$this->dose_system.'", + "code": "'.$this->dose_code.'" + } + } + ] + } + ], + "dispenseRequest": { + "dispenseInterval": { + "value": 1, + "unit": "days", + "system": "http://unitsofmeasure.org", + "code": "d" + }, + "quantity": { + "value": '.$this->dose_value.', + "unit": "'.$this->dose_unit.'", + "system": "'.$this->dose_system.'", + "code": "'.$this->dose_code.'" + }, + "performer": { + "reference": "Organization/'. $this->organization_id . '" + } + } + }, + "request": { + "method": "POST", + "url": "MedicationRequest" + } + },'; + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/Observation.php b/plugins/satu_sehat/src/Observation.php new file mode 100644 index 000000000..dae8c54f2 --- /dev/null +++ b/plugins/satu_sehat/src/Observation.php @@ -0,0 +1,190 @@ +uuid_encounter = $uuid_encounter; + $this->uuid_observation = $uuid_observation; + $this->ihs_patient = $ihs_patient; + $this->no_ktp_dokter = $no_ktp_dokter; + $this->inProg = $inProg; + $this->zonawaktu = $zonawaktu; + $this->display_nadi = $display_nadi; + $this->observation_type = $observation_type; + $this->uuid_specimen = $uuid_specimen; + $this->uuid_service_request = $uuid_service_request; + $this->code_loinc = $code_loinc; + $this->display_loinc = $display_loinc; + } + + public function toJson() + { + return '{ + "fullUrl": "urn:uuid:' . $this->uuid_observation . '", + "resource": { + "resourceType": "Observation", + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8867-4", + "display": "Heart rate" + } + ] + }, + "subject": { + "reference": "Patient/' . $this->ihs_patient . '" + }, + "performer": [ + { + "reference": "Practitioner/' . $this->no_ktp_dokter . '" + } + ], + "encounter": { + "reference": "urn:uuid:' . $this->uuid_encounter . '", + "display": "' . $this->display_nadi . '" + }, + "effectiveDateTime": "' . $this->zonawaktu . '", + "issued": "' . $this->zonawaktu . '", + "valueQuantity": { + "value": '.$this->inProg.', + "unit": "beats/minute", + "system": "http://unitsofmeasure.org", + "code": "/min" + } + }, + "request": { + "method": "POST", + "url": "Observation" + } + },'; + } + + public function toJsonObservation() + { + if ($this->observation_type == 'nadi') { + $category_coding = [ + [ + "system" => "http://terminology.hl7.org/CodeSystem/observation-category", + "code" => "vital-signs", + "display" => "Vital Signs" + ] + ]; + $code_coding = [ + [ + "system" => "http://loinc.org", + "code" => "8867-4", + "display" => "Heart rate" + ] + ]; + $value_additional = [ + "valueQuantity" => [ + "value" => (float) $this->inProg, + "unit" => "beats/minute", + "system" => "http://unitsofmeasure.org", + "code" => "/min" + ] + ]; + + } + + if ($this->observation_type == 'lab') { + $category_coding = [ + [ + "system" => "http://terminology.hl7.org/CodeSystem/observation-category", + "code" => "laboratory", + "display" => "Laboratory" + ] + ]; + $code_coding = [ + [ + "system" => "http://loinc.org", + "code" => $this->code_loinc, + "display" => $this->display_loinc + ] + ]; + $value_additional = [ + "specimen" => [ + "reference" => "urn:uuid:".$this->uuid_specimen + ], + "basedOn" => [ + [ + "reference" => "urn:uuid:".$this->uuid_service_request + ] + ] + ]; + } + + $data = array_merge( + [ + "resourceType" => "Observation", + "status" => "final", + "category" => [ + [ + "coding" => $category_coding + ] + ], + "code" => [ + "coding" => $code_coding + ], + "subject" => [ + "reference" => "Patient/".$this->ihs_patient + ], + "performer" => [ + [ + "reference" => "Practitioner/".$this->no_ktp_dokter + ] + ], + "encounter" => [ + "reference" => "urn:uuid:" . $this->uuid_encounter, + ], + "effectiveDateTime" => $this->zonawaktu, + "issued" => $this->zonawaktu, + ], + $value_additional + ); + + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } + + public function toJsonBundle() + { + $data = [ + "fullUrl" => "urn:uuid:" . $this->uuid_observation, + "resource" => json_decode($this->toJsonObservation(), true), + "request" => [ + "method" => "POST", + "url" => "Observation" + ] + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/Procedure.php b/plugins/satu_sehat/src/Procedure.php new file mode 100644 index 000000000..753b7a4e0 --- /dev/null +++ b/plugins/satu_sehat/src/Procedure.php @@ -0,0 +1,102 @@ +uuid_encounter = $uuid_encounter; + $this->uuid_procedure = $uuid_procedure; + $this->code_procedure = $code_procedure; + $this->display_procedure = $display_procedure; + $this->ihs_patient = $ihs_patient; + $this->patient_name = $patient_name; + $this->display_encounter = $display_encounter; + $this->zonawaktu = $zonawaktu; + $this->no_ktp_dokter = $no_ktp_dokter; + $this->nama_dokter = $nama_dokter; + $this->coding_code = $coding_code; + $this->coding_display = $coding_display; + } + + public function toJson(){ + return '{ + "fullUrl": "urn:uuid:' . $this->uuid_procedure . '", + "resource": { + "resourceType": "Procedure", + "status": "completed", + "category": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "103693007", + "display": "Diagnostic procedure" + } + ], + "text": "Diagnostic procedure" + }, + "code": { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/icd-9-cm", + "code": "'.$this->code_procedure.'", + "display": "'.$this->display_procedure.'" + } + ] + }, + "subject": { + "reference": "Patient/' . $this->ihs_patient . '", + "display": "' . $this->patient_name . '" + }, + "encounter": { + "reference": "urn:uuid:' . $this->uuid_encounter . '", + "display": "'. $this->display_encounter . '" + }, + "performedPeriod": { + "start": "' . $this->zonawaktu . '", + "end": "' . $this->zonawaktu . '" + }, + "performer": [ + { + "actor": { + "reference": "Practitioner/' . $this->no_ktp_dokter . '", + "display": "' . $this->nama_dokter . '" + } + } + ], + "reasonCode": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/sid/icd-10", + "code": "' . $this->coding_code . '", + "display": "' . $this->coding_display . '" + } + ] + } + ] + }, + "request": { + "method": "POST", + "url": "Procedure" + } + },'; + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/QuestionareMedication.php b/plugins/satu_sehat/src/QuestionareMedication.php new file mode 100644 index 000000000..d5460e88e --- /dev/null +++ b/plugins/satu_sehat/src/QuestionareMedication.php @@ -0,0 +1,228 @@ +uuid_questionare = $uuid_questionare; + $this->uuid_encounter = $uuid_encounter; + $this->patient_ihs = $patient_ihs; + $this->patient_name = $patient_name; + $this->practitioner_code = $practitioner_code; + $this->practitioner_name = $practitioner_name; + } + + public function toJson() + { + return '{ + "fullUrl": "urn:uuid:'.$this->uuid_questionare.'", + "resource": { + "resourceType": "QuestionnaireResponse", + "questionnaire": "https://fhir.kemkes.go.id/Questionnaire/Q0007", + "status": "completed", + "subject": { + "reference": "Patient/'.$this->patient_ihs.'", + "display": "'.$this->patient_name.'" + }, + "encounter": { + "reference": "urn:uuid:'.$this->uuid_encounter.'" + }, + "authored": "2023-08-31T03:00:00+00:00", + "author": { + "reference": "Practitioner/'.$this->practitioner_code.'", + "display": "Apoteker '.$this->practitioner_name.'" + }, + "source": { + "reference": "Patient/'.$this->patient_ihs.'" + }, + "item": [ + { + "linkId": "1", + "text": "Persyaratan Administrasi", + "item": [ + { + "linkId": "1.1", + "text": "Apakah nama, umur, jenis kelamin, berat badan dan tinggi badan pasien sudah sesuai?", + "answer": [ + { + "valueCoding": { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "OV000052", + "display": "Sesuai" + } + } + ] + }, + { + "linkId": "1.2", + "text": "Apakah nama, nomor ijin, alamat dan paraf dokter sudah sesuai?", + "answer": [ + { + "valueCoding": { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "OV000052", + "display": "Sesuai" + } + } + ] + }, + { + "linkId": "1.3", + "text": "Apakah tanggal resep sudah sesuai?", + "answer": [ + { + "valueCoding": { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "OV000052", + "display": "Sesuai" + } + } + ] + }, + { + "linkId": "1.4", + "text": "Apakah ruangan/unit asal resep sudah sesuai?", + "answer": [ + { + "valueCoding": { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "OV000052", + "display": "Sesuai" + } + } + ] + }, + { + "linkId": "2", + "text": "Persyaratan Farmasetik", + "item": [ + { + "linkId": "2.1", + "text": "Apakah nama obat, bentuk dan kekuatan sediaan sudah sesuai?", + "answer": [ + { + "valueCoding": { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "OV000052", + "display": "Sesuai" + } + } + ] + }, + { + "linkId": "2.2", + "text": "Apakah dosis dan jumlah obat sudah sesuai?", + "answer": [ + { + "valueCoding": { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "OV000052", + "display": "Sesuai" + } + } + ] + }, + { + "linkId": "2.3", + "text": "Apakah stabilitas obat sudah sesuai?", + "answer": [ + { + "valueCoding": { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "OV000052", + "display": "Sesuai" + } + } + ] + }, + { + "linkId": "2.4", + "text": "Apakah aturan dan cara penggunaan obat sudah sesuai?", + "answer": [ + { + "valueCoding": { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "OV000052", + "display": "Sesuai" + } + } + ] + } + ] + }, + { + "linkId": "3", + "text": "Persyaratan Klinis", + "item": [ + { + "linkId": "3.1", + "text": "Apakah ketepatan indikasi, dosis, dan waktu penggunaan obat sudah sesuai?", + "answer": [ + { + "valueCoding": { + "system": "http://terminology.kemkes.go.id/CodeSystem/clinical-term", + "code": "OV000052", + "display": "Sesuai" + } + } + ] + }, + { + "linkId": "3.2", + "text": "Apakah terdapat duplikasi pengobatan?", + "answer": [ + { + "valueBoolean": false + } + ] + }, + { + "linkId": "3.3", + "text": "Apakah terdapat alergi dan reaksi obat yang tidak dikehendaki (ROTD)?", + "answer": [ + { + "valueBoolean": false + } + ] + }, + { + "linkId": "3.4", + "text": "Apakah terdapat kontraindikasi pengobatan?", + "answer": [ + { + "valueBoolean": false + } + ] + }, + { + "linkId": "3.5", + "text": "Apakah terdapat dampak interaksi obat?", + "answer": [ + { + "valueBoolean": false + } + ] + } + ] + } + ] + } + ] + }, + "request": { + "method": "POST", + "url": "QuestionnaireResponse" + } + },'; + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/Respiratory.php b/plugins/satu_sehat/src/Respiratory.php new file mode 100644 index 000000000..9bbebbeeb --- /dev/null +++ b/plugins/satu_sehat/src/Respiratory.php @@ -0,0 +1,80 @@ +uuid_encounter = $uuid_encounter; + $this->uuid_respiration = $uuid_respiration; + $this->ihs_patient = $ihs_patient; + $this->no_ktp_dokter = $no_ktp_dokter; + $this->inProg = $inProg; + $this->zonawaktu = $zonawaktu; + $this->display_respiration = $display_respiration; + } + + public function toJson() + { + return '{ + "fullUrl": "urn:uuid:' . $this->uuid_respiration . '", + "resource": { + "resourceType": "Observation", + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "9279-1", + "display": "Respiratory rate" + } + ] + }, + "subject": { + "reference": "Patient/' . $this->ihs_patient . '" + }, + "performer": [ + { + "reference": "Practitioner/' . $this->no_ktp_dokter . '" + } + ], + "encounter": { + "reference": "urn:uuid:' . $this->uuid_encounter . '", + "display": "'.$this->display_respiration.'" + }, + "effectiveDateTime": "' . $this->zonawaktu . '", + "issued": "' . $this->zonawaktu . '", + "valueQuantity": { + "value": '.$this->inProg.', + "unit": "breaths/minute", + "system": "http://unitsofmeasure.org", + "code": "/min" + } + }, + "request": { + "method": "POST", + "url": "Observation" + } + },'; + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/src/ServiceRequest.php b/plugins/satu_sehat/src/ServiceRequest.php new file mode 100644 index 000000000..c63561808 --- /dev/null +++ b/plugins/satu_sehat/src/ServiceRequest.php @@ -0,0 +1,101 @@ +uuid_service_request = $uuid_service_request; + $this->org_id = $org_id; + $this->lab_srid_ordinal = $lab_srid_ordinal; + $this->patient_id = $patient_id; + $this->encounter_id = $encounter_id; + $this->practitioner_id = $practitioner_id; + $this->practitioner_name = $practitioner_name; + $this->code_loinc = $code_loinc; + $this->display_loinc = $display_loinc; + $this->code_kptl = $code_kptl; + $this->display_kptl = $display_kptl; + $this->pemeriksaan = $pemeriksaan; + $this->practitioner_lab = $practitioner_lab; + } + + public function toJson() + { + $data = [ + "resourceType" => "ServiceRequest", + "identifier" => [ + [ + "system" => "http://sys-ids.kemkes.go.id/servicerequest/" . $this->org_id, + "value" => $this->lab_srid_ordinal + ] + ], + "status" => "active", + "intent" => "original-order", + "category" => [ + [ + "coding" => [ + [ + "system" => "http://snomed.info/sct", + "code" => "108252007", + "display" => "Laboratory procedure" + ] + ] + ] + ], + "code" => [ + "coding" => [ + [ + "system" => "http://loinc.org", + "code" => $this->code_loinc, + "display" => $this->display_loinc + ] + ], + "text" => "Pemeriksaan ".$this->pemeriksaan + ], + "subject" => [ + "reference" => "Patient/".$this->patient_id, + ], + "encounter" => [ + "reference" => "urn:uuid:".$this->encounter_id, + ], + "requester" => [ + "reference" => "Practitioner/".$this->practitioner_id, + "display" => $this->practitioner_name + ], + "performer" => [ + [ + "reference" => "Practitioner/10038040334" + ] + ], + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } + public function toJsonBundle() + { + $data = [ + "fullUrl" => "urn:uuid:" . $this->uuid_service_request, + "resource" => json_decode($this->toJson(), true), + "request" => [ + "method" => "POST", + "url" => "ServiceRequest" + ] + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } +} diff --git a/plugins/satu_sehat/src/Specimen.php b/plugins/satu_sehat/src/Specimen.php new file mode 100644 index 000000000..70e1f448d --- /dev/null +++ b/plugins/satu_sehat/src/Specimen.php @@ -0,0 +1,89 @@ +uuid_specimen = $uuid_specimen; + $this->org_id = $org_id; + $this->patient_id = $patient_id; + $this->patient_name = $patient_name; + $this->uuid_service_request = $uuid_service_request; + $this->no_rawat = $no_rawat; + $this->waktu_pengambilan = $waktu_pengambilan; + } + + public function toJson() + { + $data = [ + "resourceType" => "Specimen", + "identifier" => [ + [ + "system" => "http://sys-ids.kemkes.go.id/specimen/" . $this->org_id, + "value" => $this->no_rawat, + "assigner" => [ + "reference" => "Organization/" . $this->org_id, + ] + ] + ], + "status" => "available", + "type" => [ + "coding" => [ + [ + "system" => "http://snomed.info/sct", + "code" => "119297000", + "display" => "Blood specimen (specimen)" + ] + ] + ], + "processing" => [ + [ + "procedure" => [ + "coding" => [ + [ + "system" => "http://snomed.info/sct", + "code" => "9265001", + "display" => "Specimen processing" + ] + ] + ], + "timeDateTime" => $this->waktu_pengambilan, + ] + ], + "subject" => [ + "reference" => "Patient/" . $this->patient_id, + "display" => $this->patient_name + ], + "request" => [ + [ + "reference" => "urn:uuid:" . $this->uuid_service_request, + ] + ], + "receivedTime" => $this->waktu_pengambilan, + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } + + public function toJsonBundle() + { + $data = [ + "fullUrl" => "urn:uuid:" . $this->uuid_specimen, + "resource" => json_decode($this->toJson(), true), + "request" => [ + "method" => "POST", + "url" => "Specimen" + ] + ]; + return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + } +} diff --git a/plugins/satu_sehat/src/Temperature.php b/plugins/satu_sehat/src/Temperature.php new file mode 100644 index 000000000..c23b65aa3 --- /dev/null +++ b/plugins/satu_sehat/src/Temperature.php @@ -0,0 +1,98 @@ +uuid_encounter = $uuid_encounter; + $this->uuid_suhu = $uuid_suhu; + $this->ihs_patient = $ihs_patient; + $this->no_ktp_dokter = $no_ktp_dokter; + $this->suhu = $suhu; + $this->display_encounter_temp = $display_encounter_temp; + $this->code_interpretation = $code_interpretation; + $this->display_interpretation = $display_interpretation; + $this->text_interpretation = $text_interpretation; + $this->zonawaktu = $zonawaktu; + } + + public function toJson() + { + return '{ + "fullUrl": "urn:uuid:' . $this->uuid_suhu . '", + "resource": { + "resourceType": "Observation", + "status": "final", + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "vital-signs", + "display": "Vital Signs" + } + ] + } + ], + "code": { + "coding": [ + { + "system": "http://loinc.org", + "code": "8310-5", + "display": "Body temperature" + } + ] + }, + "subject": { + "reference": "Patient/' . $this->ihs_patient . '" + }, + "performer": [ + { + "reference": "Practitioner/' . $this->no_ktp_dokter . '" + } + ], + "encounter": { + "reference": "urn:uuid:' . $this->uuid_encounter . '", + "display": "'.$this->display_encounter_temp.'" + }, + "effectiveDateTime": "' . $this->zonawaktu . '", + "issued": "' . $this->zonawaktu . '", + "valueQuantity": { + "value": '.$this->suhu.', + "unit": "C", + "system": "http://unitsofmeasure.org", + "code": "Cel" + }, + "interpretation": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation", + "code": "'.$this->code_interpretation.'", + "display": "'.$this->display_interpretation.'" + } + ], + "text": "Di '.$this->text_interpretation.' nilai referensi" + } + ] + }, + "request": { + "method": "POST", + "url": "Observation" + } + },'; + } +} \ No newline at end of file diff --git a/plugins/satu_sehat/view/admin/allergy.html b/plugins/satu_sehat/view/admin/allergy.html new file mode 100755 index 000000000..beb4bcf57 --- /dev/null +++ b/plugins/satu_sehat/view/admin/allergy.html @@ -0,0 +1,19 @@ + + + + + diff --git a/plugins/satu_sehat/view/admin/careplan.html b/plugins/satu_sehat/view/admin/careplan.html new file mode 100755 index 000000000..587320ab1 --- /dev/null +++ b/plugins/satu_sehat/view/admin/careplan.html @@ -0,0 +1,19 @@ + + + + + diff --git a/plugins/satu_sehat/view/admin/clinical.impression.html b/plugins/satu_sehat/view/admin/clinical.impression.html new file mode 100755 index 000000000..621708579 --- /dev/null +++ b/plugins/satu_sehat/view/admin/clinical.impression.html @@ -0,0 +1,19 @@ + + + + + diff --git a/plugins/satu_sehat/view/admin/condition.html b/plugins/satu_sehat/view/admin/condition.html index 3b4a64b24..33b282d22 100755 --- a/plugins/satu_sehat/view/admin/condition.html +++ b/plugins/satu_sehat/view/admin/condition.html @@ -3,8 +3,8 @@
                                              @@ -46,13 +46,13 @@

                                              Mapping Departemen Satu Sehat

                                              {loop: $satu_sehat_departemen} - {$value.dep_id} - {$value.nama} - {$value.id_organisasi_satusehat} + {?=isset_or($value.dep_id)?} + {?=isset_or($value.nama)?} + {?=isset_or($value.id_organisasi_satusehat)?} {/loop} diff --git a/plugins/satu_sehat/view/admin/dietgizi.html b/plugins/satu_sehat/view/admin/dietgizi.html new file mode 100755 index 000000000..2665b07a4 --- /dev/null +++ b/plugins/satu_sehat/view/admin/dietgizi.html @@ -0,0 +1,19 @@ + + + + + diff --git a/plugins/satu_sehat/view/admin/encounter.html b/plugins/satu_sehat/view/admin/encounter.html index ec9c9d73f..f0c99c7a0 100755 --- a/plugins/satu_sehat/view/admin/encounter.html +++ b/plugins/satu_sehat/view/admin/encounter.html @@ -3,8 +3,8 @@ @@ -28,7 +28,7 @@

                                              Mapping Lokasi Satu Sehat

                                              @@ -64,19 +64,19 @@

                                              Mapping Lokasi Satu Sehat

                                              {loop: $satu_sehat_lokasi} - {$value.kode} - {$value.lokasi} - {$value.id_organisasi_satusehat} - {$value.id_lokasi_satusehat} - {$value.longitude} - {$value.latitude} - {$value.altitude} + {?=isset_or($value.kode)?} + {?=isset_or($value.lokasi)?} + {?=isset_or($value.id_organisasi_satusehat)?} + {?=isset_or($value.id_lokasi_satusehat)?} + {?=isset_or($value.longitude)?} + {?=isset_or($value.latitude)?} + {?=isset_or($value.altitude)?} {/loop} diff --git a/plugins/satu_sehat/view/admin/manage.html b/plugins/satu_sehat/view/admin/manage.html index c51320c69..bdf53d77c 100755 --- a/plugins/satu_sehat/view/admin/manage.html +++ b/plugins/satu_sehat/view/admin/manage.html @@ -1,21 +1,21 @@ - + diff --git a/plugins/satu_sehat/view/admin/mapping.lab.html b/plugins/satu_sehat/view/admin/mapping.lab.html new file mode 100755 index 000000000..edeea3694 --- /dev/null +++ b/plugins/satu_sehat/view/admin/mapping.lab.html @@ -0,0 +1,206 @@ + +

                                              Mapping Laboratorium Satu Sehat

                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +

                                              + + +

                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + + + + + + + + + + + + + + + {loop: $mapping_lab_satu_sehat} + + + + + + + + + + + {/loop} + +
                                              ID TemplateKode PerawatanNama PerawatanCodeDisplaySample CodeSample SystemSample Display
                                              {?=isset_or($value.id_template)?}{?=isset_or($value.kd_jenis_prw)?}{?=isset_or($value.Pemeriksaan)?}{?=isset_or($value.code)?}{?=isset_or($value.display)?}{?=isset_or($value.sampel_code, '-')?}{?=isset_or($value.sampel_system, '-')?}{?=isset_or($value.sampel_display, '-')?}
                                              +
                                              +
                                              +
                                              + + diff --git a/plugins/satu_sehat/view/admin/mapping.obat.html b/plugins/satu_sehat/view/admin/mapping.obat.html new file mode 100644 index 000000000..87b16ff7a --- /dev/null +++ b/plugins/satu_sehat/view/admin/mapping.obat.html @@ -0,0 +1,194 @@ + +

                                              Mapping Obat Satu Sehat

                                              +
                                              + +
                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              + + +
                                              +
                                              + + +
                                              +
                                              +
                                              + + + +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + + + + + + + + + + + + + + + + + + + + + + + {loop: $mapping_obat_satu_sehat} + + + + + + + + + + + + + + + + + + + {/loop} + +
                                              Kode Obat LokalKode Obat KFANama Obat KFAKode BahanNama BahanNumeratorSatuan NumeratorDenominatorSatuan DenominatorNama Satuan DenominatorKode SediaanNama SediaanKode RouteNama RouteTipeID Medication
                                              {?=isset_or($value.kode_brng)?}{?=isset_or($value.kode_kfa)?}{?=isset_or($value.nama_kfa)?}{?=isset_or($value.kode_bahan)?}{?=isset_or($value.nama_bahan)?}{?=isset_or($value.numerator)?}{?=isset_or($value.satuan_num)?}{?=isset_or($value.denominator)?}{?=isset_or($value.satuan_den)?}{?=isset_or($value.nama_satuan_den)?}{?=isset_or($value.kode_sediaan)?}{?=isset_or($value.nama_sediaan)?}{?=isset_or($value.kode_route)?}{?=isset_or($value.nama_route)?}{?=isset_or($value.type)?}{?=isset_or($value.id_medication, '')?}
                                              +
                                              +
                                              +
                                              + + diff --git a/plugins/satu_sehat/view/admin/mapping.praktisi.html b/plugins/satu_sehat/view/admin/mapping.praktisi.html index 50d3fba98..1a33eecf6 100755 --- a/plugins/satu_sehat/view/admin/mapping.praktisi.html +++ b/plugins/satu_sehat/view/admin/mapping.praktisi.html @@ -11,10 +11,21 @@

                                              Mapping Praktisi Satu Sehat

                                              - {loop: $dokter} - + + {/loop} + +
                                              +
                                              +
                                              +
                                              + +
                                              @@ -30,22 +41,22 @@

                                              Mapping Praktisi Satu Sehat

                                              - +
                                              - - + + {loop: $mapping_praktisi} - - - + + + {/loop} @@ -53,6 +64,21 @@

                                              Mapping Praktisi Satu Sehat

                                              + + diff --git a/plugins/satu_sehat/view/admin/medication.html b/plugins/satu_sehat/view/admin/medication.html new file mode 100755 index 000000000..cb2f59bd5 --- /dev/null +++ b/plugins/satu_sehat/view/admin/medication.html @@ -0,0 +1,19 @@ + + + + + diff --git a/plugins/satu_sehat/view/admin/observation.html b/plugins/satu_sehat/view/admin/observation.html index 9633b0c32..5c80d5d85 100755 --- a/plugins/satu_sehat/view/admin/observation.html +++ b/plugins/satu_sehat/view/admin/observation.html @@ -3,8 +3,8 @@
                                              ID DokterNama DokterID Dokter & Tenaga MedisNama Dokter & Tenaga Medis ID Praktisi Satu Sehat
                                              {$value.kd_dokter}{$value.nm_dokter}{$value.practitioner_id}{?=isset_or($value.kd_dokter)?}{?=isset_or($value.nm_dokter)?}{?=isset_or($value.practitioner_id)?}
                                              @@ -29,7 +66,7 @@

                                              Data Response Satu Sehat

                                              - + @@ -42,6 +79,7 @@

                                              Data Response Satu Sehat

                                              + @@ -54,44 +92,32 @@

                                              Data Response Satu Sehat

                                              - - - - {loop: $data_response} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - {/loop} - +
                                              No. RM Nama Pasien No. KTP PasienKd. DokterKd. Dokter (ID Praktisi) Nama Dokter No. KTP Dokter Kd. Poli/Unit ID Lokasi ID Encounter ID ConditionID Clinical Impression ID Observation Tensi ID Observation Nadi ID Observation RR ID Observation Kesadaran ID Procedure ID Composition
                                              {$value.tgl_registrasi}{$value.no_rawat}{$value.no_rkm_medis}   {$value.nm_pasien}{$value.no_ktp_pasien}{$value.kd_dokter}{$value.nm_dokter}{$value.no_ktp_dokter}{$value.kd_poli}{$value.nm_poli}{$value.stts}{$value.status_lanjut}{$value.status_bayar}{$value.tgl_pulang}{$value.id_organisasi}{$value.id_lokasi}{if: empty($value.id_encounter)}{if: $value.tgl_pulang}{/if}{else}{$value.id_encounter}{/if}{if: empty($value.id_condition)}{if: $value.diagnosa_pasien} {/if}{else}{$value.id_condition}{/if}{if: empty($value.id_observation_ttvtensi)}{if: isset($value.pemeriksaan.tensi)} {/if}{else}{$value.id_observation_ttvtensi}{/if}{if: empty($value.id_observation_ttvnadi)}{if: isset($value.pemeriksaan.nadi)} {/if}{else}{$value.id_observation_ttvnadi}{/if}{if: empty($value.id_observation_ttvrespirasi)}{if: isset($value.pemeriksaan.respirasi)} {/if}{else}{$value.id_observation_ttvrespirasi}{/if}{if: empty($value.id_observation_ttvsuhu)}{if: isset($value.pemeriksaan.suhu_tubuh)} {/if}{else}{$value.id_observation_ttvsuhu}{/if}{if: empty($value.id_observation_ttvspo2)}{if: isset($value.pemeriksaan.spo2)} {/if}{else}{$value.id_observation_ttvspo2}{/if}{if: empty($value.id_observation_ttvgcs)}{if: isset($value.pemeriksaan.gcs)} {/if}{else}{$value.id_observation_ttvgcs}{/if}{if: empty($value.id_observation_ttvtinggi)}{if: isset($value.pemeriksaan.tinggi)} {/if}{else}{$value.id_observation_ttvtinggi}{/if}{if: empty($value.id_observation_ttvberat)}{if: isset($value.pemeriksaan.berat)} {/if}{else}{$value.id_observation_ttvberat}{/if}{if: empty($value.id_observation_ttvperut)}{if: isset($value.pemeriksaan.lingkar_perut)} {/if}{else}{$value.id_observation_ttvperut}{/if}{if: empty($value.id_observation_ttvkesadaran)}{if: isset($value.pemeriksaan.kesadaran)} {/if}{else}{$value.id_observation_ttvkesadaran}{/if}{$value.id_procedure}{$value.id_composition}ID Vaksin/ImunisasiID Medication RequestID Medication DispenseID Medication StatementID Service Request RadiologiID Specimen RadiologiID Observation RadiologiID Diagnostic Report RadiologiImage StudyID Service Request Lab PKID Specimen Lab PKID Observation Lab PKID Diagnostic Report Lab PKID Care PlanID AllergyID Questionnaire
                                              @@ -99,32 +125,518 @@

                                              Data Response Satu Sehat

                                              + \ No newline at end of file + diff --git a/plugins/satu_sehat/view/admin/vaksin.html b/plugins/satu_sehat/view/admin/vaksin.html new file mode 100755 index 000000000..5b7b65885 --- /dev/null +++ b/plugins/satu_sehat/view/admin/vaksin.html @@ -0,0 +1,19 @@ + + + + + diff --git a/plugins/sertisign/Admin.php b/plugins/sertisign/Admin.php new file mode 100644 index 000000000..a45a185d9 --- /dev/null +++ b/plugins/sertisign/Admin.php @@ -0,0 +1,562 @@ + 'manage', + 'TTE QR Visual' => 'signingqr', + 'TTE Invisible' => 'signinginvisible', + 'Webhook Data' => 'datawebhook', + 'Tampil Webhook' => 'tampilwebhook', + 'Pengaturan' => 'settings', + ]; + } + + public function getManage() + { + $sub_modules = [ + ['name' => 'TTE QR Visual', 'url' => url([ADMIN, 'sertisign', 'signingqr']), 'icon' => 'heart', 'desc' => 'TTE QR Visual'], + ['name' => 'TTE Invisible', 'url' => url([ADMIN, 'sertisign', 'signinginvisible']), 'icon' => 'database', 'desc' => 'TTE Invisible'], + ['name' => 'Settings', 'url' => url([ADMIN, 'sertisign', 'settings']), 'icon' => 'clipboard', 'desc' => 'Settings'], + ]; + return $this->draw('manage.html', ['sub_modules' => htmlspecialchars_array($sub_modules)]); + } + + public function getSigningInvisible() + { + return $this->draw('signing.invisible.html'); + } + + public function postSigningInvisible() + { + if (isset($_FILES['document']) && $_FILES['document']['error'] == 0) { + $document_path = $_FILES['document']['tmp_name']; + $signers = json_decode($_POST['signer'], true); + $page = $_POST['page']; + $flagging = isset($_POST['flagging']) ? json_decode($_POST['flagging'], true) : null; + $pageNumber = $_POST['pageNumber']; + $pageRange = $_POST['pageRange']; + + $result = $this->signingInvisible($document_path, $signers, $page, $flagging, $pageNumber, $pageRange); + + if (isset($result['status']) && $result['status'] == 'error') { + $this->notify('failure', 'TTE Invisible Gagal: ' . $result['message']); + } else { + $this->notify('success', 'TTE Invisible Berhasil'); + } + } else { + $this->notify('failure', 'Dokumen tidak valid'); + } + redirect(url([ADMIN, 'sertisign', 'signinginvisible'])); + } + + public function getSigningQr() + { + return $this->draw('signing.qr.html'); + } + + public function postSigningQr() + { + if (!isset($_FILES['document']) || $_FILES['document']['error'] !== UPLOAD_ERR_OK) { + $this->notify('failure', 'Dokumen tidak valid'); + redirect(url([ADMIN, 'sertisign', 'signingqr'])); + return; + } + + $documentPath = $_FILES['document']['tmp_name']; + + $signer = $_POST['signer'] ?? null; // STRING JSON + $flagging = $_POST['flagging'] ?? null; // STRING JSON + + if (!$signer) { + $this->notify('failure', 'Signer tidak boleh kosong'); + redirect(url([ADMIN, 'sertisign', 'signingqr'])); + return; + } + + $postFields = [ + 'document' => new \CURLFile($documentPath), + 'signer' => $signer, // 🔥 STRING JSON + 'w' => $_POST['w'] ?? '40', + 'h' => $_POST['h'] ?? '40', + ]; + + if ($flagging) { + $postFields['flagging'] = $flagging; // 🔥 STRING JSON + } + + $response = $this->_request( + 'v2/poa/multiple-signing-qr-multiple', + $postFields + ); + + if (($response['success'] ?? false) === true) { + $this->notify( + 'success', + 'TTE berhasil. Transaction ID: ' . + ($response['data']['transaction_id'] ?? '-') + ); + } else { + $this->notify( + 'failure', + 'TTE gagal: ' . ($response['message'] ?? 'Server error') + ); + } + + redirect(url([ADMIN, 'sertisign', 'signingqr'])); + } + +public function postSigningQrERM() +{ + $no_rkm_medis = $_POST['no_rkm_medis'] ?? null; + $no_rawat_enc = $_POST['no_rawat'] ?? null; + $no_rawat = $no_rawat_enc; + + $signer = $_POST['signer'] ?? null; // JSON STRING + $flagging = $_POST['flagging'] ?? null; // JSON STRING + $w = $_POST['w'] ?? '40'; + $h = $_POST['h'] ?? '40'; + + if (!$no_rkm_medis || !$no_rawat) { + $this->notify('failure', 'Parameter pasien tidak lengkap'); + redirect($_SERVER['HTTP_REFERER']); + return; + } + + if (!$signer) { + $this->notify('failure', 'Signer tidak boleh kosong'); + redirect($_SERVER['HTTP_REFERER']); + return; + } + + // 🔐 Sanitasi nama file + $safeRawat = preg_replace('/[^A-Za-z0-9]/', '', $no_rawat); + + $pdfPath = BASE_DIR . '/uploads/sertisign/' + . 'Riwayat_Perawatan_' + . $no_rkm_medis . '_' + . $safeRawat . '.pdf'; + + if (!file_exists($pdfPath)) { + $this->notify('failure', 'File PDF tidak ditemukan' . $pdfPath); + redirect($_SERVER['HTTP_REFERER']); + return; + } + + // 📦 Payload sesuai Postman + $postFields = [ + 'document' => new \CURLFile($pdfPath), + 'signer' => $signer, // 🔥 STRING JSON + 'w' => $w, + 'h' => $h, + ]; + + if ($flagging) { + $postFields['flagging'] = $flagging; // 🔥 STRING JSON + } + + $response = $this->_request( + 'v2/poa/multiple-signing-qr-multiple', + $postFields + ); + + // 🧠 VALIDASI RESPON (INI KUNCI UTAMA) + if ( + isset($response['success']) && + $response['success'] === true && + !empty($response['data']['transaction_id']) + ) { + // OPTIONAL: simpan log transaksi + /* + $this->db->insert('sertisign_log', [ + 'no_rkm_medis' => $no_rkm_medis, + 'no_rawat' => $no_rawat, + 'transaction_id' => $response['data']['transaction_id'], + 'response' => json_encode($response), + 'created_at' => date('Y-m-d H:i:s') + ]); + */ + + // 🧹 Hapus file setelah sukses + // unlink($pdfPath); + + $this->notify( + 'success', + 'TTE berhasil diproses. Transaction ID: ' . + $response['data']['transaction_id'] + ); + } else { + $this->notify( + 'failure', + 'TTE gagal: ' . json_encode($response) . ' | Signer: ' . $signer + ); + } + + redirect($_SERVER['HTTP_REFERER']); +} + + + private function _request(string $endpoint, array $postFields) + { + $apiHost = rtrim($this->settings('sertisign', 'api_host'), '/'); + $apiKey = $this->settings('sertisign', 'api_key'); + + $curl = curl_init(); + + curl_setopt_array($curl, [ + CURLOPT_URL => $apiHost . '/' . ltrim($endpoint, '/'), + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => $postFields, + CURLOPT_HTTPHEADER => [ + 'Accept: application/json', + 'apikey: ' . $apiKey, + ], + ]); + + $response = curl_exec($curl); + + if ($response === false) { + $error = curl_error($curl); + curl_close($curl); + + return [ + 'success' => false, + 'message' => 'cURL Error: ' . $error + ]; + } + + curl_close($curl); + + return json_decode($response, true); + } + + public function getSettings() + { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'sertisign', 'signingqr'])); + } + $settings = []; + $settings['api_host'] = $this->settings('sertisign', 'api_host'); + $settings['api_key'] = $this->settings('sertisign', 'api_key'); + + return $this->draw('settings.html', ['settings' => $settings]); + } + + public function postSaveSettings() + { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'sertisign', 'signingqr'])); + } + foreach ($_POST as $field => $value) { + $this->settings('sertisign', $field, $value); + } + $this->notify('success', 'Pengaturan berhasil disimpan'); + redirect(url([ADMIN, 'sertisign', 'settings'])); + } + + + // --- API Wrapper Methods --- + + /** + * PoA Register Base Signing + */ + public function registerBase($nik, $name, $dob, $email, $mobile, $selfie_path) + { + $postFields = [ + 'nik' => $nik, + 'name' => $name, + 'dob' => $dob, + 'email' => $email, + 'mobile' => $mobile, + 'selfie' => new \CURLFile( + $selfie_path, + 'image/jpeg', + basename($selfie_path) + ), + ]; + + return $this->_request( + 'v2/poa/register/base', + $postFields + ); + } + + /** + * PoA Register Subscribe + */ + public function registerSubscribe($email, $poa_id) + { + $postFields = [ + 'email' => $email, + 'poa_id' => $poa_id, + ]; + + return $this->_request( + 'v2/poa/register/subscribe', + $postFields + ); + } + + + public function signingQr( + string $document_path, + $signers, + int $w, + int $h, + $page = 'first', + $flagging = null, + $pageNumber = null, + $pageRange = null + ) { + $postFields = [ + 'document' => new \CURLFile( + $document_path, + 'application/pdf', + basename($document_path) + ), + // signer HARUS JSON STRING (sesuai Sertisign) + 'signer' => is_array($signers) ? json_encode($signers) : $signers, + 'w' => (string) $w, + 'h' => (string) $h, + 'page' => $page, + ]; + + if ($flagging) { + // flagging HARUS JSON STRING + $postFields['flagging'] = is_array($flagging) + ? json_encode($flagging) + : $flagging; + } + + if ($pageNumber !== null) { + $postFields['pageNumber'] = $pageNumber; + } + + if ($pageRange !== null) { + $postFields['pageRange'] = $pageRange; + } + + return $this->_request( + 'v2/poa/multiple-signing-qr-multiple', + $postFields + ); + } + + /** + * PoA Multiple Signing Invisible + */ + + public function signingInvisible( + string $document_path, + $signers, + $page = 'first', + $flagging = null, + $pageNumber = null, + $pageRange = null + ) { + $postFields = [ + 'document' => new \CURLFile( + $document_path, + 'application/pdf', + basename($document_path) + ), + // signer HARUS JSON STRING (sesuai Sertisign) + 'signer' => is_array($signers) ? json_encode($signers) : $signers, + 'page' => $page, + ]; + + if ($flagging) { + // flagging HARUS JSON STRING + $postFields['flagging'] = is_array($flagging) + ? json_encode($flagging) + : $flagging; + } + + if ($pageNumber !== null) { + $postFields['pageNumber'] = $pageNumber; + } + + if ($pageRange !== null) { + $postFields['pageRange'] = $pageRange; + } + + return $this->_request( + 'v2/poa/multiple-signing-invisible', + $postFields + ); + } + + /** + * Activate PIN + */ + public function activatePin(string $email) + { + return $this->_request( + 'activate-pin', + ['email' => $email] + ); + } + + /** + * Update PIN Status + */ + public function updatePinStatus(string $email) + { + return $this->_request( + 'update-pin-status', + ['email' => $email] + ); + } + + /** + * Reset PIN + */ + public function resetPin(string $email) + { + return $this->_request( + 'reset-pin', + ['email' => $email] + ); + } + + /** + * Check Token + */ + public function getToken(string $email) + { + return $this->_request( + 'get-token', + ['email' => $email] + ); + } + + /** + * Check Member + */ + public function getMember(string $email) + { + return $this->_request( + 'get-member', + ['email' => $email] + ); + } + + /** + * Upgrade Member + */ + public function upgradeMember(string $email, string $poa_id) + { + return $this->_request( + 'upgrade-poa-member', + [ + 'email' => $email, + 'poa_id' => $poa_id + ] + ); + } + + /** + * Downgrade Member + */ + public function downgradeMember(string $email, string $poa_id) + { + return $this->_request( + 'downgrade-poa-member', + [ + 'email' => $email, + 'poa_id' => $poa_id + ] + ); + } + + /** + * Update Member Status + */ + public function updateMemberStatus(string $email, string $poa_id) + { + return $this->_request( + 'update-member-status', + [ + 'email' => $email, + 'poa_id' => $poa_id + ] + ); + } + +public function getDataWebhook($return = false) +{ + $transactionId = $_GET['transaction_id'] ?? null; + $limit = isset($_GET['limit']) ? (int) $_GET['limit'] : 20; + $offset = isset($_GET['offset']) ? (int) $_GET['offset'] : 0; + + $draw = intval(htmlspecialchars($_GET['draw'] ?? 1, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')); + $start = intval(htmlspecialchars($_GET['start'] ?? 0, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')); + $length = intval(htmlspecialchars($_GET['length'] ?? 10, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8')); + + $db = $this->db('mlite_sertisign_webhook'); + + if (!empty($transactionId)) { + $data = $db->where('transaction_id', $transactionId)->oneArray(); + + if (!$data) { + $result = ['success' => false, 'message' => 'Data tidak ditemukan']; + return $return ? $result : print json_encode($result); + } + + $data['payload'] = json_decode($data['payload'], true); + $result = ['success' => true, 'data' => [$data]]; + return $return ? $result : print json_encode($result); + } + + $rows = $db + ->limit($limit) + ->offset($offset) + ->desc('received_at') + ->toArray(); + + foreach ($rows as &$row) { + $row['payload'] = json_decode($row['payload'], true); + } + + $result = [ + 'success' => true, + 'draw' => $draw, + 'total' => count($rows), + 'limit' => $limit, + 'offset' => $offset, + 'recordsTotal' => count($rows), + 'recordsFiltered' => count($rows), + 'data' => $rows + ]; + + if ($return) { + return $result; + } + + header('Content-Type: application/json'); + echo json_encode(htmlspecialchars_array($result)); + exit; +} + +public function getTampilWebhook() +{ + $this->core->addCSS(url('assets/css/datatables.min.css')); + $this->core->addJS(url('assets/jscripts/datatables.min.js')); + + $result = $this->getDataWebhook(true); // 🔥 ambil array, bukan JSON + return $this->draw('tampil.webhook.html', ['data' => htmlspecialchars_array($result)]); +} + + + + // Base64 variants could be added here if needed, but file upload is usually preferred for server-side operations. +} diff --git a/plugins/sertisign/Info.php b/plugins/sertisign/Info.php new file mode 100644 index 000000000..2be1ffd19 --- /dev/null +++ b/plugins/sertisign/Info.php @@ -0,0 +1,18 @@ + 'Sertisign', + 'description' => 'Modul integrasi TTE Sertisign', + 'author' => 'Basoro', + 'version' => '1.0', + 'category' => 'bridging', + 'compatibility' => '6.*.*', + 'icon' => 'sticky-note', + 'install' => function () use ($core) { + $core->db('mlite_settings')->save(['module' => 'sertisign', 'field' => 'api_host', 'value' => 'https://api-stag.sertisign.id/']); + $core->db('mlite_settings')->save(['module' => 'sertisign', 'field' => 'api_key', 'value' => '']); + }, + 'uninstall' => function () use ($core) { + $core->db('mlite_settings')->where('module', 'sertisign')->delete(); + } +]; diff --git a/plugins/sertisign/README.md b/plugins/sertisign/README.md new file mode 100644 index 000000000..e8d719af6 --- /dev/null +++ b/plugins/sertisign/README.md @@ -0,0 +1,73 @@ +# Plugin Sertisign + +Modul integrasi **Tanda Tangan Elektronik (TTE)** menggunakan layanan Sertisign di mLITE, mendukung TTE dengan QR visual maupun tanda tangan tak terlihat (invisible) pada dokumen PDF. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Sertisign**. +- Pilih submenu sesuai kebutuhan: + - Manage + - TTE QR Visual + - TTE Invisible + - Webhook Data + - Tampil Webhook + - Pengaturan + +## Panduan Pengguna (Petugas) + +1. **TTE QR Visual** + - Buka **Sertisign → TTE QR Visual**. + - Upload file PDF yang akan ditandatangani. + - Isi data **Signer** dalam format JSON (email, nama, NIK penandatangan). + - Atur posisi QR: halaman (`first`/`last`/`specific`), lebar (`w`), dan tinggi (`h`) dalam piksel. + - Optionally isi **Flagging** (JSON) untuk metadata tambahan. + - Klik **Proses TTE** — sistem mengirim dokumen ke API Sertisign endpoint `v2/poa/multiple-signing-qr-multiple`. + - Jika berhasil, Transaction ID akan ditampilkan pada notifikasi. + +2. **TTE Invisible** + - Buka **Sertisign → TTE Invisible**. + - Upload file PDF yang akan ditandatangani. + - Isi data **Signer** dalam format JSON. + - Pilih halaman tanda tangan dan optionally isi Flagging. + - Klik **Proses TTE** — sistem mengirim ke endpoint `v2/poa/multiple-signing-invisible`. + - TTE invisible tidak menempatkan gambar QR pada dokumen; tanda tangan tertanam dalam metadata PDF. + +3. **TTE dari ERM (Electronic Medical Record)** + - TTE dapat dipicu langsung dari halaman rekam medis pasien (fitur `postSigningQrERM`). + - File PDF yang ditandatangani harus sudah ada di `uploads/sertisign/` dengan nama format `Riwayat_Perawatan_{no_rkm_medis}_{no_rawat}.pdf`. + - Sertakan parameter `no_rkm_medis` dan `no_rawat` beserta data Signer. + +4. **Tampil Webhook** + - Buka **Sertisign → Tampil Webhook** untuk melihat data callback dari Sertisign. + - Menampilkan daftar webhook yang diterima beserta transaction ID, payload, dan waktu terima. + - Gunakan filter `transaction_id` (via parameter GET) untuk mencari webhook tertentu. + +## Panduan Admin + +1. **Pengaturan (Wajib dikonfigurasi pertama kali)** + - Buka **Sertisign → Pengaturan** dan isi: + - **API Host**: URL base API Sertisign (default: `https://api-stag.sertisign.id/` untuk staging). + - **API Key**: API Key yang diperoleh dari dashboard Sertisign. + - Klik **Simpan** — konfigurasi disimpan ke tabel `mlite_settings` dengan modul `sertisign`. + - Ganti URL ke endpoint produksi saat siap go-live. + +2. **Manajemen Penandatangan (Signer)** + - Sebelum dapat menandatangani, penandatangan harus didaftarkan ke Sertisign: + - **Register Base**: daftarkan penandatangan dengan NIK, nama, tanggal lahir, email, nomor HP, dan foto selfie. + - **Register Subscribe**: hubungkan email penandatangan dengan ID PoA. + - **Activate PIN**: aktifkan PIN penandatangan via email. + - **Reset PIN**: reset PIN jika diperlukan. + - Fungsi-fungsi ini tersedia secara programatik melalui metode API di Admin.php. + +3. **Webhook** + - Daftarkan URL webhook Sertisign ke `{domain}/admin/sertisign/datawebhook`. + - Data webhook yang masuk disimpan otomatis ke tabel `mlite_sertisign_webhook`. + - Monitor data webhook melalui **Tampil Webhook** untuk memastikan callback diterima dengan benar. + +## Catatan + +- Format **Signer** harus berupa JSON string sesuai spesifikasi API Sertisign (bukan array PHP). +- Ukuran QR default adalah 40×40 piksel; sesuaikan `w` dan `h` sesuai kebutuhan dokumen. +- File PDF untuk TTE dari ERM harus sudah digenerate terlebih dahulu dan ditempatkan di `uploads/sertisign/`. +- Ganti `api_host` dari staging (`api-stag.sertisign.id`) ke produksi sebelum digunakan di lingkungan nyata. diff --git a/plugins/sertisign/Site.php b/plugins/sertisign/Site.php new file mode 100644 index 000000000..f4db60f49 --- /dev/null +++ b/plugins/sertisign/Site.php @@ -0,0 +1,108 @@ +route('sertisign/webhook', 'postWebhook'); + } + + public function postWebhook() + { + if ($_SERVER['REQUEST_METHOD'] !== 'POST') { + http_response_code(404); + exit; + } + + header('Content-Type: application/json'); + + /* =============================== + * Ambil payload JSON / POST + * =============================== */ + $raw = file_get_contents('php://input'); + $payload = []; + + if (!empty($raw)) { + $json = json_decode($raw, true); + if (json_last_error() === JSON_ERROR_NONE) { + $payload = $json; + } + } + + if (empty($payload)) { + echo json_encode(['error' => 'Payload kosong / tidak valid']); + return; + } + + /* =============================== + * Normalisasi data + * Sertisign biasanya kirim array + * =============================== */ + $data = isset($payload[0]) ? $payload[0] : $payload; + + if (empty($data['transaction_id'])) { + echo json_encode(['error' => 'transaction_id tidak ditemukan']); + return; + } + + $transactionId = $data['transaction_id']; + $documentUrl = $data['document_url'] ?? null; + $status = $data['status'] ?? 'unknown'; + + /* =============================== + * Simpan ke Database + * =============================== */ + $this->db('mlite_sertisign_webhook')->save([ + 'transaction_id' => $transactionId, + 'status' => $status, + 'document_url' => $documentUrl, + 'payload' => json_encode($payload), + 'received_at' => date('Y-m-d H:i:s') + ]); + + /* =============================== + * Simpan file log + * =============================== */ + $basePath = UPLOADS . '/sertisign-log'; + if (!is_dir($basePath)) { + mkdir($basePath, 0777, true); + } + + file_put_contents( + $basePath . '/' . $transactionId . '.json', + json_encode($payload, JSON_PRETTY_PRINT) + ); + + /* =============================== + * Download PDF jika ada + * =============================== */ + $pdfPath = null; + + if (!empty($documentUrl)) { + $pdfPath = $basePath . '/' . $transactionId . '.pdf'; + + try { + $remote = fopen($documentUrl, 'r'); + $local = fopen($pdfPath, 'w'); + stream_copy_to_stream($remote, $local); + fclose($remote); + fclose($local); + } catch (\Throwable $e) { + $pdfPath = null; + } + } + + /* =============================== + * Response ke Sertisign + * =============================== */ + echo json_encode([ + 'success' => true, + 'transaction_id'=> $transactionId, + 'stored' => true, + 'pdf_saved' => $pdfPath ? true : false + ]); + } +} diff --git a/plugins/sertisign/view/admin/manage.html b/plugins/sertisign/view/admin/manage.html new file mode 100644 index 000000000..bdf53d77c --- /dev/null +++ b/plugins/sertisign/view/admin/manage.html @@ -0,0 +1,21 @@ +
                                              +
                                              + +
                                              +
                                              diff --git a/plugins/sertisign/view/admin/pdf.view.html b/plugins/sertisign/view/admin/pdf.view.html new file mode 100644 index 000000000..7268ad295 --- /dev/null +++ b/plugins/sertisign/view/admin/pdf.view.html @@ -0,0 +1,19 @@ +
                                              +
                                              +
                                              +
                                              +

                                              Dokumen TTE Berhasil

                                              +
                                              +
                                              +
                                              + Dokumen berhasil ditandatangani! +
                                              + + +
                                              +
                                              +
                                              +
                                              diff --git a/plugins/sertisign/view/admin/settings.html b/plugins/sertisign/view/admin/settings.html new file mode 100644 index 000000000..d6db1f2ec --- /dev/null +++ b/plugins/sertisign/view/admin/settings.html @@ -0,0 +1,22 @@ +
                                              +
                                              +
                                              +
                                              +

                                              Pengaturan Sertisign

                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              + + +
                                              + +
                                              +
                                              +
                                              +
                                              +
                                              diff --git a/plugins/sertisign/view/admin/signing.invisible.html b/plugins/sertisign/view/admin/signing.invisible.html new file mode 100644 index 000000000..312b989bf --- /dev/null +++ b/plugins/sertisign/view/admin/signing.invisible.html @@ -0,0 +1,54 @@ +
                                              +
                                              +
                                              +
                                              +

                                              TTE Invisible

                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              + + +

                                              Format JSON: [{"identifier": "email", "pin": "..."}]

                                              +
                                              +
                                              + + +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              +
                                              diff --git a/plugins/sertisign/view/admin/signing.qr.html b/plugins/sertisign/view/admin/signing.qr.html new file mode 100644 index 000000000..27962e29d --- /dev/null +++ b/plugins/sertisign/view/admin/signing.qr.html @@ -0,0 +1,70 @@ +
                                              +
                                              +
                                              +
                                              +

                                              TTE QR Multi Visual

                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              + + +

                                              Format JSON: [{"identifier": "email", "keyword": "...", "qrValue": "...", "pin": "..."}]

                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              + + +
                                              +
                                              +
                                              +
                                              +
                                              diff --git a/plugins/sertisign/view/admin/tampil.webhook.html b/plugins/sertisign/view/admin/tampil.webhook.html new file mode 100644 index 000000000..dedf6d1dd --- /dev/null +++ b/plugins/sertisign/view/admin/tampil.webhook.html @@ -0,0 +1,85 @@ + + + + + + + + + + +
                                              IDTransaction IDStatusReceived AtAksi
                                              + + + + + \ No newline at end of file diff --git a/plugins/settings/Admin.php b/plugins/settings/Admin.php index 3265eee43..28f9bf64e 100644 --- a/plugins/settings/Admin.php +++ b/plugins/settings/Admin.php @@ -11,18 +11,13 @@ use RecursiveDirectoryIterator; use FilesystemIterator; use Plugins\Settings\Inc\RecursiveDotFilterIterator; +use Plugins\Settings\Inc\Backup_Database; +use Plugins\Settings\Inc\Restore_Database; class Admin extends AdminModule { private $assign = []; - public function init() - { - if (file_exists(BASE_DIR.'/inc/engine')) { - deleteDir(BASE_DIR.'/inc/engine'); - } - } - public function navigation() { return [ @@ -30,6 +25,7 @@ public function navigation() 'Umum' => 'general', 'Tema' => 'theme', 'Pembaruan' => 'updates', + 'Backup & Restore' => 'backuprestore', ]; } @@ -39,12 +35,18 @@ public function getManage() ['name' => 'Pengaturan Umum', 'url' => url([ADMIN, 'settings', 'general']), 'icon' => 'wrench', 'desc' => 'Pengaturan umum mLITE'], ['name' => 'Tema Publik', 'url' => url([ADMIN, 'settings', 'theme']), 'icon' => 'cubes', 'desc' => 'Pengaturan tema tampilan publik'], ['name' => 'Pembaruan Sistem', 'url' => url([ADMIN, 'settings', 'updates']), 'icon' => 'cubes', 'desc' => 'Pembaruan sistem'], + ['name' => 'Backup & Restore', 'url' => url([ADMIN, 'settings', 'backuprestore']), 'icon' => 'database', 'desc' => 'Backup dan restore database'], ]; - return $this->draw('manage.html', ['sub_modules' => $sub_modules]); + return $this->draw('manage.html', ['sub_modules' => htmlspecialchars_array($sub_modules)]); } public function getGeneral() { + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'settings', 'manage'])); + } + $this->_addHeaderFiles(); $settings = $this->settings('settings'); $settings['module_pasien'] = $this->db('mlite_modules')->where('dir', 'pasien')->oneArray(); @@ -64,9 +66,17 @@ public function getGeneral() $settings['presensi'] = $this->db('mlite_modules')->where('dir', 'presensi')->oneArray(); $settings['themes'] = $this->_getThemes(); $settings['timezones'] = $this->_getTimezones(); + + $mysql_version = ''; + if (DBDRIVER == 'sqlite') { + $mysql_version = $this->db()->pdo()->query('SELECT sqlite_version()')->fetch()[0]; + } else { + $mysql_version = $this->db()->pdo()->query('SELECT VERSION() as version')->fetch()[0]; + } + $settings['system'] = [ 'php' => PHP_VERSION, - 'mysql' => $this->db()->pdo()->query('SELECT VERSION() as version')->fetch()[0] + 'mysql' => $mysql_version ]; $settings['license'] = []; @@ -92,13 +102,54 @@ public function getGeneral() $this->tpl->set('settings', $this->tpl->noParse_array(htmlspecialchars_array($settings))); $this->tpl->set('url', url([ADMIN, 'settings', 's'])); + $this->tpl->set('set_no_rkm_medis', $this->db('set_no_rkm_medis')->oneArray()); + $this->tpl->set('set_nomor_surat', $this->settings->get('settings.set_nomor_surat')); return $this->draw('general.html'); } + private function isSafeUrl($url) { + $parsed = parse_url($url); + if (!$parsed || !isset($parsed['scheme']) || strtolower($parsed['scheme']) !== 'https') { + return false; + } + $host = $parsed['host'] ?? ''; + $ips = gethostbynamel($host); + if (!$ips) { + return false; + } + foreach ($ips as $ip) { + if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + return false; + } + } + return true; + } + public function postSaveGeneral() { unset($_POST['save']); + + if (!empty($_POST['_b64'])) { + unset($_POST['_b64']); + $encodedFields = []; + if (!empty($_POST['_b64_fields'])) { + $decodedFields = json_decode($_POST['_b64_fields'], true); + if (is_array($decodedFields)) { + $encodedFields = $decodedFields; + } + } + unset($_POST['_b64_fields']); + foreach ($encodedFields as $field) { + if (isset($_POST[$field]) && is_string($_POST[$field])) { + $decoded = base64_decode($_POST[$field], true); + if ($decoded !== false) { + $_POST[$field] = $decoded; + } + } + } + } + if (($_logo = isset_or($_FILES['logo']['tmp_name'], false))) { $img = new \Systems\Lib\Image; @@ -144,19 +195,37 @@ public function postSaveGeneral() } } + if($_POST['set_no_rkm_medis']) { + $this->db('set_no_rkm_medis')->delete(); + $this->db('set_no_rkm_medis')->save(['no_rkm_medis' => $_POST['set_no_rkm_medis']]); + } + if (!$errors) { $url = "https://mlite.id/datars/save"; - $curlHandle = curl_init(); - curl_setopt($curlHandle, CURLOPT_URL, $url); - curl_setopt($curlHandle, CURLOPT_POSTFIELDS,"nama_instansi=".$_POST['nama_instansi']."&alamat_instansi=".$_POST['alamat']."&kabupaten=".$_POST['kota']."&propinsi=".$_POST['propinsi']."&kontak=".$_POST['nomor_telepon']."&email=".$_POST['email']); - curl_setopt($curlHandle, CURLOPT_HEADER, 0); - curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($curlHandle, CURLOPT_TIMEOUT,30); - curl_setopt($curlHandle, CURLOPT_POST, 1); - curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false); - curl_exec($curlHandle); - curl_close($curlHandle); + // SSRF protection: validate that the URL is strictly the intended public endpoint + if ($url === "https://mlite.id/datars/save" && $this->isSafeUrl($url)) { + $curlHandle = curl_init(); + curl_setopt($curlHandle, CURLOPT_URL, $url); + curl_setopt($curlHandle, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS); + curl_setopt($curlHandle, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTPS); + curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, false); + curl_setopt($curlHandle, CURLOPT_POSTFIELDS, http_build_query([ + 'nama_instansi' => $_POST['nama_instansi'], + 'alamat_instansi' => $_POST['alamat'], + 'kabupaten' => $_POST['kota'], + 'propinsi' => $_POST['propinsi'], + 'kontak' => $_POST['nomor_telepon'], + 'email' => $_POST['email'], + ])); + curl_setopt($curlHandle, CURLOPT_HEADER, 0); + curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curlHandle, CURLOPT_TIMEOUT,30); + curl_setopt($curlHandle, CURLOPT_POST, 1); + curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, true); + curl_exec($curlHandle); + curl_close($curlHandle); + } $this->notify('success', 'Pengaturan berhasil disimpan.'); @@ -238,38 +307,215 @@ public function anyTheme($theme = null, $file = null) public function anyUpdates() { + + if ($this->core->getUserInfo('role') != 'admin') { + $this->notify('failure', 'Anda tidak memiliki hak akses untuk halaman ini.'); + redirect(url([ADMIN, 'settings', 'manage'])); + } + $this->tpl->set('allow_curl', intval(function_exists('curl_init'))); $settings = $this->settings('settings'); if (isset($_POST['check'])) { - $url = "https://api.github.com/repos/basoro/mlite/releases/latest"; - $opts = [ - 'http' => [ - 'method' => 'GET', - 'header' => [ - 'User-Agent: PHP' - ] - ] - ]; - $json = file_get_contents($url, false, stream_context_create($opts)); + $url = "https://api.github.com/repos/basoro/mlite/releases/latest"; + + $ch = curl_init($url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_USERAGENT, 'mlite'); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'Accept: application/vnd.github+json' + ]); + + $json = curl_exec($ch); + $err = curl_error($ch); + curl_close($ch); + $obj = json_decode($json, true); - + $this->settings('settings', 'update_check', time()); - if (!is_array($obj)) { - $this->tpl->set('error', $obj); + if ($err || !is_array($obj)) { + $this->tpl->set('error', $json); } else { $this->settings('settings', 'update_version', $obj['tag_name']); $this->settings('settings', 'update_changelog', $obj['body']); $this->tpl->set('update_version', $obj['tag_name']); } + } elseif (isset($_POST['upgrade_local'])) { + $upgradeFile = BASE_DIR . '/systems/upgrade.php'; + if (!is_file($upgradeFile)) { + $this->tpl->set('error', "File upgrade tidak ditemukan: systems/upgrade.php"); + return $this->draw('update.html'); + } + + $version = $this->settings->get('settings.version'); + $new_version = include($upgradeFile); + + if ($new_version === true || $new_version === 1) { + // upgrade script didn't return a version number + $new_version = $version; + } + + $this->settings('settings', 'version', $new_version); + $this->settings('settings', 'update_check', time()); + + $this->notify('success', 'Upgrade lokal berhasil dijalankan.'); + redirect(url([ADMIN, 'settings', 'updates'])); + + } elseif (isset($_POST['update_nightly'])) { + if (!class_exists("ZipArchive")) { + $this->tpl->set('error', "ZipArchive is required to update mLITE."); + } + + $zipFile = BASE_DIR . '/tmp/latest.zip'; + $url = "https://github.com/basoro/mlite/archive/refs/heads/master.zip"; + + // Pastikan folder tmp ada + if (!is_dir(BASE_DIR . '/tmp')) { + mkdir(BASE_DIR . '/tmp', 0755, true); + } + + $ch = curl_init($url); + $fp = fopen($zipFile, 'w+'); + + if ($fp === false) { + $this->tpl->set('error', "Gagal membuat file zip: $zipFile. Pastikan permissions folder benar."); + return $this->draw('update.html'); + } + + curl_setopt_array($ch, [ + CURLOPT_FILE => $fp, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_FAILONERROR => true, + CURLOPT_USERAGENT => 'mlite-updater', + CURLOPT_TIMEOUT => 300, + ]); + + $ok = curl_exec($ch); + $err = curl_error($ch); + $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + + curl_close($ch); + fclose($fp); + + if (!$ok || $err || $http_code != 200) { + $this->tpl->set('error', "Download gagal: $err (HTTP $http_code)"); + @unlink($zipFile); + return $this->draw('update.html'); + } + + define("UPGRADABLE", true); + + // Making backup + $backup_date = date('YmdHis'); + $this->rcopy(BASE_DIR.'/systems', BASE_DIR.'/backup/'.$backup_date.'/systems'); + $this->rcopy(BASE_DIR.'/plugins', BASE_DIR.'/backup/'.$backup_date.'/plugins'); + $this->rcopy(BASE_DIR.'/assets', BASE_DIR.'/backup/'.$backup_date.'/assets'); + $this->rcopy(BASE_DIR.'/themes', BASE_DIR.'/backup/'.$backup_date.'/themes'); + $this->rcopy(BASE_DIR.'/config.php', BASE_DIR.'/backup/'.$backup_date.'/config.php'); + $this->rcopy(BASE_DIR.'/manifest.json', BASE_DIR.'/backup/'.$backup_date.'/manifest.json'); + + // Unzip latest update + $zip = new \ZipArchive; + if ($zip->open(BASE_DIR.'/tmp/latest.zip') === TRUE) { + // Extract to base tmp/update + $zip->extractTo(BASE_DIR.'/tmp/update'); + $zip->close(); + } else { + $this->tpl->set('error', "Gagal membuka file zip."); + @unlink(BASE_DIR.'/tmp/latest.zip'); + return $this->draw('update.html'); + } + + // Detect extracted update root folder + $updateBase = BASE_DIR.'/tmp/update'; + $extractedRoot = null; + + // For nightly build from github, it usually extracts to mlite-master + if (is_dir($updateBase.'/mlite-master')) { + $extractedRoot = $updateBase.'/mlite-master'; + } else { + $dirs = glob($updateBase.'/mlite-*', GLOB_ONLYDIR); + if (!empty($dirs)) { + $extractedRoot = $dirs[0]; + } + } + + if (!$extractedRoot && is_dir($updateBase.'/systems')) { + $extractedRoot = $updateBase; + } + + if (!$extractedRoot) { + $this->tpl->set('error', "Update extraction failed: 'mlite-*' folder not found."); + @unlink(BASE_DIR.'/tmp/latest.zip'); + $this->rrmdir(BASE_DIR.'/tmp/update'); + return $this->draw('update.html'); + } + + // Copy files using detected root + $this->rcopy($extractedRoot.'/systems', BASE_DIR.'/systems'); + $this->rcopy($extractedRoot.'/plugins', BASE_DIR.'/plugins'); + $this->rcopy($extractedRoot.'/assets', BASE_DIR.'/assets'); + $this->rcopy($extractedRoot.'/themes', BASE_DIR.'/themes'); + + // Restore defines + $this->rcopy(BASE_DIR.'/backup/'.$backup_date.'/config.php', BASE_DIR.'/config.php'); + $this->rcopy(BASE_DIR.'/backup/'.$backup_date.'/manifest.json', BASE_DIR.'/manifest.json'); + + // Run upgrade script + $version = $settings['version']; + $upgradeFile = $extractedRoot.'/systems/upgrade.php'; + $new_version = $version; + if (is_file($upgradeFile)) { + $new_version = include($upgradeFile); + } + + // Delete all unnecessary files + unlink(BASE_DIR.'/tmp/latest.zip'); + $this->rrmdir(BASE_DIR.'/tmp/update'); + + $this->settings('settings', 'version', $new_version); + $this->settings('settings', 'update_check', time()); + + sleep(2); + $this->notify('success', 'Update Nightly Build berhasil.'); + redirect(url([ADMIN, 'settings', 'updates'])); + } elseif (isset($_POST['update'])) { if (!class_exists("ZipArchive")) { $this->tpl->set('error', "ZipArchive is required to update mLITE."); } + $version = $this->settings->get('settings.update_version'); + $zipFile = BASE_DIR . '/tmp/latest.zip'; + if (!isset($_GET['manual'])) { - $this->download('https://github.com/basoro/mlite/archive/refs/tags/'.$this->settings->get('settings.update_version').'.zip', BASE_DIR.'/tmp/latest.zip'); + + $url = "https://github.com/basoro/mlite/archive/refs/tags/{$version}.zip"; + + $ch = curl_init($url); + $fp = fopen($zipFile, 'w+'); + + curl_setopt_array($ch, [ + CURLOPT_FILE => $fp, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_FAILONERROR => true, + CURLOPT_USERAGENT => 'mlite-updater', + CURLOPT_TIMEOUT => 60, + ]); + + $ok = curl_exec($ch); + $err = curl_error($ch); + + curl_close($ch); + fclose($fp); + + if (!$ok || $err) { + $this->tpl->set('error', "Download gagal: $err"); + @unlink($zipFile); + return $this->draw('update.html'); + } + } else { $package = glob(BASE_DIR.'/mlite-*.zip'); if (!empty($package)) { @@ -293,13 +539,37 @@ public function anyUpdates() // Unzip latest update $zip = new \ZipArchive; $zip->open(BASE_DIR.'/tmp/latest.zip'); + // Extract to base tmp/update $zip->extractTo(BASE_DIR.'/tmp/update'); - // Copy files - $this->rcopy(BASE_DIR.'/tmp/update/mlite-'.$this->settings->get('settings.update_version').'/systems', BASE_DIR.'/systems'); - $this->rcopy(BASE_DIR.'/tmp/update/mlite-'.$this->settings->get('settings.update_version').'/plugins', BASE_DIR.'/plugins'); - $this->rcopy(BASE_DIR.'/tmp/update/mlite-'.$this->settings->get('settings.update_version').'/assets', BASE_DIR.'/assets'); - $this->rcopy(BASE_DIR.'/tmp/update/mlite-'.$this->settings->get('settings.update_version').'/themes', BASE_DIR.'/themes'); + // Detect extracted update root folder + $updateBase = BASE_DIR.'/tmp/update'; + $extractedRoot = null; + $tag = $this->settings->get('settings.update_version'); + if (!empty($tag) && is_dir($updateBase.'/mlite-'.$tag)) { + $extractedRoot = $updateBase.'/mlite-'.$tag; + } else { + $dirs = glob($updateBase.'/mlite-*', GLOB_ONLYDIR); + if (!empty($dirs)) { + $extractedRoot = $dirs[0]; + } + } + // Fallback: direct extraction without wrapper + if (!$extractedRoot && is_dir($updateBase.'/systems')) { + $extractedRoot = $updateBase; + } + if (!$extractedRoot) { + $this->tpl->set('error', "Update extraction failed: 'mlite-*' folder not found."); + $zip->close(); + @unlink(BASE_DIR.'/tmp/latest.zip'); + return $this->draw('update.html'); + } + + // Copy files using detected root + $this->rcopy($extractedRoot.'/systems', BASE_DIR.'/systems'); + $this->rcopy($extractedRoot.'/plugins', BASE_DIR.'/plugins'); + $this->rcopy($extractedRoot.'/assets', BASE_DIR.'/assets'); + $this->rcopy($extractedRoot.'/themes', BASE_DIR.'/themes'); // Restore defines $this->rcopy(BASE_DIR.'/backup/'.$backup_date.'/config.php', BASE_DIR.'/config.php'); @@ -307,12 +577,16 @@ public function anyUpdates() // Run upgrade script $version = $settings['version']; - $new_version = include(BASE_DIR.'/tmp/update/mlite-'.$this->settings->get('settings.update_version').'/systems/upgrade.php'); + $upgradeFile = $extractedRoot.'/systems/upgrade.php'; + $new_version = $version; + if (is_file($upgradeFile)) { + $new_version = include($upgradeFile); + } // Close archive and delete all unnecessary files $zip->close(); unlink(BASE_DIR.'/tmp/latest.zip'); - rrmdir(BASE_DIR.'/tmp/update'); + $this->rrmdir(BASE_DIR.'/tmp/update'); $this->settings('settings', 'version', $new_version); $this->settings('settings', 'update_version', 0); @@ -439,7 +713,15 @@ private function rcopy($source, $dest, $permissions = 0755, $expect = []) mkdir($dest, $permissions, true); } + // Guard: source must be an existing directory before iterating + if (!is_dir($source)) { + return false; + } + $dir = dir($source); + if ($dir === false) { + return false; + } while (false !== $entry = $dir->read()) { if ($entry == '.' || $entry == '..') { continue; @@ -452,6 +734,32 @@ private function rcopy($source, $dest, $permissions = 0755, $expect = []) return true; } + private function rrmdir($dir) + { + if (!file_exists($dir)) { + return; + } + if (is_file($dir) || is_link($dir)) { + @unlink($dir); + return; + } + $items = scandir($dir); + if ($items === false) { + @rmdir($dir); + return; + } + foreach ($items as $item) { + if ($item === '.' || $item === '..') continue; + $path = $dir . DIRECTORY_SEPARATOR . $item; + if (is_dir($path) && !is_link($path)) { + $this->rrmdir($path); + } else { + @unlink($path); + } + } + @rmdir($dir); + } + private function _verifyLicense() { @@ -555,28 +863,179 @@ private function roundSize($bytes) public function anyCekDaftar() { - if(isset($_POST['request_code'])) { - $url = "https://mlite.id/datars/aktif"; - $curlHandle = curl_init(); - curl_setopt($curlHandle, CURLOPT_URL, $url); - curl_setopt($curlHandle, CURLOPT_POSTFIELDS,"email=".$_POST['email']); - curl_setopt($curlHandle, CURLOPT_HEADER, 0); - curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($curlHandle, CURLOPT_TIMEOUT,30); - curl_setopt($curlHandle, CURLOPT_POST, 1); - curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false); - $response = curl_exec($curlHandle); - curl_close($curlHandle); - $response = json_decode($response, true); - if($response['status'] == 'error') { - $this->notify('failure', 'Request kode validasi pendaftaran aplikasi tidak bisa dilakukan. Silahkan simpan dulu pengaturan aplikasi anda. Atau pastikan email request sama dengan email di pengaturan aplikasi.'); - } else { - $this->notify('success', 'Request kode validasi pendaftaran aplikasi sukses. Silahkan cek inbox email / spam folder yang anda daftarkan.'); + if (isset($_POST['request_code'])) { + $url = "https://mlite.id/datars/aktif"; + // SSRF protection: validate that the URL is strictly the intended public endpoint + if ($url === "https://mlite.id/datars/aktif" && $this->isSafeUrl($url)) { + $curlHandle = curl_init(); + curl_setopt($curlHandle, CURLOPT_URL, $url); + curl_setopt($curlHandle, CURLOPT_PROTOCOLS, CURLPROTO_HTTPS); + curl_setopt($curlHandle, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTPS); + curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, false); + curl_setopt($curlHandle, CURLOPT_POSTFIELDS, "email=" . $_POST['email']); + curl_setopt($curlHandle, CURLOPT_HEADER, 0); + curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curlHandle, CURLOPT_TIMEOUT, 30); + curl_setopt($curlHandle, CURLOPT_POST, 1); + curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, true); + $response = curl_exec($curlHandle); + curl_close($curlHandle); + $response = json_decode($response, true); + if ($response['status'] == 'error') { + $this->notify('failure', 'Request kode validasi pendaftaran aplikasi tidak bisa dilakukan. Silahkan simpan dulu pengaturan aplikasi anda. Atau pastikan email request sama dengan email di pengaturan aplikasi.'); + } else { + $this->notify('success', 'Request kode validasi pendaftaran aplikasi sukses. Silahkan cek inbox email / spam folder yang anda daftarkan.'); + } + } } - } return $this->draw('cek.daftar.html'); } + public function getBackupRestore() + { + $database = DBNAME; + if (DBDRIVER == 'sqlite') { + $get_table = $this->db()->pdo()->prepare("SELECT name AS TABLE_NAME FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'"); + } else { + $get_table = $this->db()->pdo()->prepare("SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='$database'"); + } + $get_table->execute(); + $result = $get_table->fetchAll(); + + $backup_files = glob('../backups/*.sql.gz'); + // $backup_files = pathinfo($backup_files); + return $this->draw('backup.restore.html', ['databases' => htmlspecialchars_array($result), 'files' => $backup_files]); + } + + public function getBackupDatabase() + { + // Report all errors + error_reporting(E_ALL); + // Set script max execution time + set_time_limit(9000); // 15 minutes + + if (php_sapi_name() != "cli") { + echo '
                                              '; + } + + $backupDatabase = new Backup_Database(DBHOST, DBUSER, DBPASS, DBNAME, CHARSET); + + // Option-1: Backup tables already defined above + $result = $backupDatabase->backupTables(TABLES) ? 'OK' : 'KO'; + + // Option-2: Backup changed tables only - uncomment block below + /* + $since = '1 day'; + $changed = $backupDatabase->getChangedTables($since); + if(!$changed){ + $backupDatabase->obfPrint('No tables modified since last ' . $since . '! Quitting..', 1); + die(); + } + $result = $backupDatabase->backupTables($changed) ? 'OK' : 'KO'; + */ + + $backupDatabase->obfPrint('Backup result: ' . $result, 1); + + // Use $output variable for further processing, for example to send it by email + $output = $backupDatabase->getOutput(); + + if (php_sapi_name() != "cli") { + echo '
                                              '; + } + exit(); + } + + public function getRestoreDatabase() + { + $file_name = $_GET['filename']; + + // Security: Prevent path traversal + if (strpos($file_name, '..') !== false || strpos($file_name, '/') !== false) { + $this->notify('failure', 'Invalid filename.'); + exit(); + } + + define("BACKUP_FILE", $file_name); // Script will autodetect if backup file is gzipped based on .gz extension + // Report all errors + error_reporting(E_ALL); + // Set script max execution time + set_time_limit(900); // 15 minutes + + if (php_sapi_name() != "cli") { + echo '
                                              '; + } + + $restoreDatabase = new Restore_Database(DBHOST, DBUSER, DBPASS, DBNAME); + $result = $restoreDatabase->restoreDb(BACKUP_DIR, BACKUP_FILE) ? 'OK' : 'KO'; + $restoreDatabase->obfPrint("Restoration result: ".$result, 1); + + if (php_sapi_name() != "cli") { + echo '
                                              '; + } + exit(); + } + + public function getDeleteDatabase() + { + $file_name = $_GET['filename']; + + // Security: Prevent path traversal + if (strpos($file_name, '..') !== false || strpos($file_name, '/') !== false) { + $this->notify('failure', 'Invalid filename.'); + exit(); + } + + if (file_exists('../backups/' . $file_name)) { + unlink('../backups/' . $file_name); + } + exit(); + } + + public function apiSettings() + { + + $username = $this->core->checkAuth('GET'); + if (!$this->core->checkPermission($username, 'can_read', 'settings')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + try { + $settings = $this->settings('settings'); + $settings['themes'] = $this->_getThemes(); + $settings['timezones'] = $this->_getTimezones(); + + return ['status' => 'success', 'data' => $settings]; + } catch (\Exception $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + + public function apiSaveSettings() + { + $username = $this->core->checkAuth('POST'); + if (!$this->core->checkPermission($username, 'can_write', 'settings')) { + return ['status' => 'error', 'message' => 'Invalid User Permission Credentials']; + } + + $input = json_decode(file_get_contents('php://input'), true); + if (!is_array($input)) $input = $_POST; + + try { + foreach ($input as $field => $value) { + if ($field == 'save') continue; + + $this->db('mlite_settings') + ->where('module', 'settings') + ->where('field', $field) + ->save(['value' => $value]); + } + + return ['status' => 'success', 'message' => 'Pengaturan berhasil disimpan.']; + } catch (\Exception $e) { + return ['status' => 'error', 'message' => $e->getMessage()]; + } + } + private function _addHeaderFiles() { $this->core->addCSS(url('assets/css/bootstrap-colorpicker.css')); diff --git a/plugins/settings/Help.md b/plugins/settings/Help.md deleted file mode 100644 index 616003ede..000000000 --- a/plugins/settings/Help.md +++ /dev/null @@ -1,9 +0,0 @@ -You can display settings data by using construction below: - -``` -{$settings.field-name} -``` - -
                                              - -
                                              diff --git a/plugins/settings/Info.php b/plugins/settings/Info.php index b81563767..167c467d4 100644 --- a/plugins/settings/Info.php +++ b/plugins/settings/Info.php @@ -4,8 +4,9 @@ 'name' => 'Pengaturan', 'description' => 'Pengelolaan pengaturan', 'author' => 'Basoro.ID', + 'category' => 'main', 'version' => '1.0', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'wrench', 'install' => function () use ($core) { }, diff --git a/plugins/settings/README.md b/plugins/settings/README.md new file mode 100644 index 000000000..82eac21c4 --- /dev/null +++ b/plugins/settings/README.md @@ -0,0 +1,60 @@ +# Plugin Pengaturan + +Modul konfigurasi sistem mLITE, mencakup pengaturan umum instansi, manajemen tema tampilan, pembaruan sistem, serta backup dan restore database. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **Pengaturan**. +- Pilih submenu sesuai kebutuhan: + - Pengaturan + - Umum + - Tema + - Pembaruan + - Backup & Restore + +## Panduan Pengguna (Petugas) + +Plugin ini hanya diakses oleh Administrator sistem. Tidak ada operasional harian untuk petugas biasa. + +## Panduan Admin + +1. **Umum** + - Isi identitas instansi: nama, alamat, kota, propinsi, nomor telepon, email, website. + - Upload **logo** instansi (otomatis dipotong persegi, maks 512×512 px) dan **wallpaper** halaman login. + - Atur zona waktu sistem. + - Konfigurasikan poliklinik dan dokter default (IGD, dokter umum, dll.) jika modul Master aktif. + - Atur format **No Rekam Medis** (`set_no_rkm_medis`) dan format **Nomor Surat**. + - Pilih integrasi aktif: Pasien, IGD, Laboratorium, Radiologi, WhatsApp Gateway, Bridging SEP, Rawat Jalan, Presensi. + - Lihat informasi sistem: versi PHP, versi database, dan status lisensi. + - Aktifkan **Lisensi** dengan memasukkan kode validasi penggunaan. + - Klik **Simpan** — data instansi juga dikirim ke server mLITE untuk registrasi. + +2. **Tema** + - Lihat daftar tema yang tersedia di direktori `themes/`. + - Klik **Aktifkan** untuk mengganti tema tampilan publik yang aktif. + - Klik nama file tema untuk membuka **editor kode** (MarkItUp) dan mengedit template HTML/CSS secara langsung. + - Simpan perubahan file tema — berlaku langsung tanpa restart. + +3. **Pembaruan** + - Klik **Cek Pembaruan** untuk memeriksa versi terbaru dari GitHub (`basoro/mlite`). + - Jika tersedia versi baru, klik **Update** untuk mengunduh dan menginstal otomatis: + - Sistem membuat backup otomatis ke folder `backup/{timestamp}/` sebelum update. + - File `systems/`, `plugins/`, `assets/`, dan `themes/` diperbarui. + - File `config.php` dan `manifest.json` dipertahankan dari backup. + - Script `upgrade.php` dijalankan untuk migrasi database jika diperlukan. + - **Update Nightly**: unduh dan instal versi terbaru dari branch `master` GitHub. + - **Update Manual**: letakkan file `mlite-{versi}.zip` di root direktori, lalu klik Update Manual. + +4. **Backup & Restore** + - **Backup Database**: buat salinan database saat ini dalam format file backup. + - **Restore Database**: pulihkan database dari file backup yang diunggah. + - Lakukan backup rutin sebelum melakukan update sistem atau perubahan konfigurasi besar. + +## Catatan + +- Hanya administrator sistem yang boleh mengakses menu Pengaturan. +- Saat update sistem, backup dilakukan otomatis — namun sangat disarankan untuk melakukan backup manual database terlebih dahulu melalui **Backup & Restore**. +- Jika `FILE_LOCK` aktif di konfigurasi server, pengeditan file tema melalui editor akan dinonaktifkan. +- Update sistem memerlukan ekstensi PHP **ZipArchive** dan akses **curl** aktif di server. +- Setelah update, bersihkan cache browser untuk memastikan perubahan tampilan termuat dengan benar. diff --git a/plugins/settings/inc/Backup_Database.php b/plugins/settings/inc/Backup_Database.php new file mode 100644 index 000000000..ad35af1ed --- /dev/null +++ b/plugins/settings/inc/Backup_Database.php @@ -0,0 +1,493 @@ +host = $host; + $this->username = $username; + $this->passwd = $passwd; + $this->dbName = $dbName; + $this->charset = $charset; + $this->conn = $this->initializeDatabase(); + $this->backupDir = BACKUP_DIR ? BACKUP_DIR : '.'; + + // Handle SQLite DB path which might contain slashes + $cleanDbName = basename($this->dbName); + $this->backupFile = 'backup-'.$cleanDbName.'-'.date("Ymd_His", time()).'.sql'; + + $this->gzipBackupFile = defined('GZIP_BACKUP_FILE') ? GZIP_BACKUP_FILE : true; + $this->disableForeignKeyChecks = defined('DISABLE_FOREIGN_KEY_CHECKS') ? DISABLE_FOREIGN_KEY_CHECKS : true; + $this->batchSize = defined('BATCH_SIZE') ? BATCH_SIZE : 1000; // default 1000 rows + $this->output = ''; + } + + protected function initializeDatabase() { + if (DBDRIVER == 'sqlite') { + return new \PDO("sqlite:" . $this->dbName); + } + + try { + $conn = mysqli_connect($this->host, $this->username, $this->passwd, $this->dbName); + if (mysqli_connect_errno()) { + throw new \Exception('ERROR connecting database: ' . mysqli_connect_error()); + die(); + } + if (!mysqli_set_charset($conn, $this->charset)) { + mysqli_query($conn, 'SET NAMES '.$this->charset); + } + } catch (\Exception $e) { + print_r($e->getMessage()); + die(); + } + + return $conn; + } + + /** + * Backup the whole database or just some tables + * Use '*' for whole database or 'table1 table2 table3...' + * @param string $tables + */ + public function backupTables($tables = '*') { + try { + if (DBDRIVER == 'sqlite') { + $this->backupTablesSqlite($tables); + return true; + } + + /** + * Tables to export + */ + if($tables == '*') { + $tables = array(); + $result = mysqli_query($this->conn, 'SHOW TABLES'); + while($row = mysqli_fetch_row($result)) { + $tables[] = $row[0]; + } + } else { + $tables = is_array($tables) ? $tables : explode(',', str_replace(' ', '', $tables)); + } + + $sql = 'CREATE DATABASE IF NOT EXISTS `'.$this->dbName.'`'.";\n\n"; + $sql .= 'USE `'.$this->dbName."`;\n\n"; + $sql .= "SET sql_mode = '';\n\n"; + + /** + * Disable foreign key checks + */ + if ($this->disableForeignKeyChecks === true) { + $sql .= "SET foreign_key_checks = 0;\n\n"; + } + + /** + * Iterate tables + */ + foreach($tables as $table) { + if( in_array($table, IGNORE_TABLES) ) + continue; + $this->obfPrint("Backing up `".$table."` table...".str_repeat('.', 50-strlen($table)), 0, 0); + + /** + * CREATE TABLE + */ + $sql .= 'DROP TABLE IF EXISTS `'.$table.'`;'; + $row = mysqli_fetch_row(mysqli_query($this->conn, 'SHOW CREATE TABLE `'.$table.'`')); + $sql .= "\n\n".$row[1].";\n\n"; + + /** + * INSERT INTO + */ + + $row = mysqli_fetch_row(mysqli_query($this->conn, 'SELECT COUNT(*) FROM `'.$table.'`')); + $numRows = $row[0]; + + // Split table in batches in order to not exhaust system memory + $numBatches = intval($numRows / $this->batchSize) + 1; // Number of while-loop calls to perform + + for ($b = 1; $b <= $numBatches; $b++) { + + $query = 'SELECT * FROM `' . $table . '` LIMIT ' . ($b * $this->batchSize - $this->batchSize) . ',' . $this->batchSize; + $result = mysqli_query($this->conn, $query); + $realBatchSize = mysqli_num_rows ($result); // Last batch size can be different from $this->batchSize + $numFields = mysqli_num_fields($result); + + if ($realBatchSize !== 0) { + $sql .= 'INSERT INTO `'.$table.'` VALUES '; + + for ($i = 0; $i < $numFields; $i++) { + $rowCount = 1; + while($row = mysqli_fetch_row($result)) { + $sql.='('; + for($j=0; $j<$numFields; $j++) { + if (isset($row[$j])) { + $row[$j] = addslashes($row[$j]); + $row[$j] = str_replace("\n","\\n",$row[$j]); + $row[$j] = str_replace("\r","\\r",$row[$j]); + $row[$j] = str_replace("\f","\\f",$row[$j]); + $row[$j] = str_replace("\t","\\t",$row[$j]); + $row[$j] = str_replace("\v","\\v",$row[$j]); + $row[$j] = str_replace("\a","\\a",$row[$j]); + $row[$j] = str_replace("\b","\\b",$row[$j]); + // if ($row[$j] == 'true' or $row[$j] == 'false' or preg_match('/^-?[1-9][0-9]*$/', $row[$j]) or $row[$j] == 'NULL' or $row[$j] == 'null') { + if ($row[$j] == 'true' or $row[$j] == 'false' or $row[$j] == 'NULL' or $row[$j] == 'null') { + $sql .= $row[$j]; + } else { + $sql .= '"'.$row[$j].'"' ; + } + } else { + $sql.= 'NULL'; + } + if ($j < ($numFields-1)) { + $sql .= ','; + } + } + + if ($rowCount == $realBatchSize) { + $rowCount = 0; + $sql.= ");\n"; //close the insert statement + } else { + $sql.= "),\n"; //close the row + } + + $rowCount++; + } + } + + $this->saveFile($sql); + $sql = ''; + } + } + + $sql.="\n\n"; + + $this->obfPrint('OK'); + } + + /** + * Re-enable foreign key checks + */ + if ($this->disableForeignKeyChecks === true) { + $sql .= "SET foreign_key_checks = 1;\n"; + } + + $this->saveFile($sql); + + if ($this->gzipBackupFile) { + $this->gzipBackupFile(); + } else { + $this->obfPrint('Backup file succesfully saved to ' . $this->backupDir.'/'.$this->backupFile, 1, 1); + } + } catch (\Exception $e) { + print_r($e->getMessage()); + return false; + } + + return true; + } + + protected function backupTablesSqlite($tables = '*') { + $pdo = $this->conn; + + if($tables == '*') { + $tables = array(); + $query = $pdo->query("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'"); + while($row = $query->fetch(\PDO::FETCH_NUM)) { + $tables[] = $row[0]; + } + } else { + $tables = is_array($tables) ? $tables : explode(',', str_replace(' ', '', $tables)); + } + + $sql = "PRAGMA foreign_keys=OFF;\nBEGIN TRANSACTION;\n\n"; + + foreach($tables as $table) { + if( in_array($table, IGNORE_TABLES) ) + continue; + + $this->obfPrint("Backing up `".$table."` table...".str_repeat('.', 50-strlen($table)), 0, 0); + + // Get CREATE TABLE + $stmt = $pdo->query("SELECT sql FROM sqlite_master WHERE type='table' AND name='$table'"); + $createSql = $stmt->fetchColumn(); + $sql .= $createSql . ";\n\n"; + + // Get Data + $stmt = $pdo->query("SELECT * FROM `$table`"); + $rows = $stmt->fetchAll(\PDO::FETCH_ASSOC); + + if (count($rows) > 0) { + foreach ($rows as $row) { + $cols = array_keys($row); + $vals = array_values($row); + + $valStrs = []; + foreach ($vals as $val) { + if ($val === null) { + $valStrs[] = "NULL"; + } else { + $valStrs[] = "'" . str_replace("'", "''", $val) . "'"; + } + } + + $sql .= "INSERT INTO `$table` (`" . implode("`, `", $cols) . "`) VALUES (" . implode(", ", $valStrs) . ");\n"; + } + $sql .= "\n"; + } + $this->obfPrint('OK'); + } + + $sql .= "COMMIT;\n"; + + $this->saveFile($sql); + + if ($this->gzipBackupFile) { + $this->gzipBackupFile(); + } else { + $this->obfPrint('Backup file succesfully saved to ' . $this->backupDir.'/'.$this->backupFile, 1, 1); + } + } + + /** + * Save SQL to file + * @param string $sql + */ + protected function saveFile(&$sql) { + if (!$sql) return false; + + try { + + if (!file_exists($this->backupDir)) { + mkdir($this->backupDir, 0777, true); + } + + file_put_contents($this->backupDir.'/'.$this->backupFile, $sql, FILE_APPEND | LOCK_EX); + + } catch (\Exception $e) { + print_r($e->getMessage()); + return false; + } + + return true; + } + + /* + * Gzip backup file + * + * @param integer $level GZIP compression level (default: 9) + * @return string New filename (with .gz appended) if success, or false if operation fails + */ + protected function gzipBackupFile($level = 9) { + if (!$this->gzipBackupFile) { + return true; + } + + $source = $this->backupDir . '/' . $this->backupFile; + $dest = $source . '.gz'; + + $this->obfPrint('Gzipping backup file to ' . $dest . '... ', 1, 0); + + $mode = 'wb' . $level; + if ($fpOut = gzopen($dest, $mode)) { + if ($fpIn = fopen($source,'rb')) { + while (!feof($fpIn)) { + gzwrite($fpOut, fread($fpIn, 1024 * 256)); + } + fclose($fpIn); + } else { + return false; + } + gzclose($fpOut); + if(!unlink($source)) { + return false; + } + } else { + return false; + } + + $this->obfPrint('OK'); + return $dest; + } + + /** + * Prints message forcing output buffer flush + * + */ + public function obfPrint ($msg = '', $lineBreaksBefore = 0, $lineBreaksAfter = 1) { + if (!$msg) { + return false; + } + + if ($msg != 'OK' and $msg != 'KO') { + $msg = date("Y-m-d H:i:s") . ' - ' . $msg; + } + $output = ''; + + if (php_sapi_name() != "cli") { + $lineBreak = "
                                              "; + } else { + $lineBreak = "\n"; + } + + if ($lineBreaksBefore > 0) { + for ($i = 1; $i <= $lineBreaksBefore; $i++) { + $output .= $lineBreak; + } + } + + $output .= $msg; + + if ($lineBreaksAfter > 0) { + for ($i = 1; $i <= $lineBreaksAfter; $i++) { + $output .= $lineBreak; + } + } + + + // Save output for later use + $this->output .= str_replace('
                                              ', '\n', $output); + + echo $output; + + + if (php_sapi_name() != "cli") { + if( ob_get_level() > 0 ) { + ob_flush(); + } + } + + $this->output .= " "; + + flush(); + } + + /** + * Returns full execution output + * + */ + public function getOutput() { + return $this->output; + } + /** + * Returns name of backup file + * + */ + public function getBackupFile() { + if ($this->gzipBackupFile) { + return $this->backupDir.'/'.$this->backupFile.'.gz'; + } else + return $this->backupDir.'/'.$this->backupFile; + } + + /** + * Returns backup directory path + * + */ + public function getBackupDir() { + return $this->backupDir; + } + + /** + * Returns array of changed tables since duration + * + */ + public function getChangedTables($since = '1 day') { + $query = "SELECT TABLE_NAME,update_time FROM information_schema.tables WHERE table_schema='" . $this->dbName . "'"; + + $result = mysqli_query($this->conn, $query); + while($row=mysqli_fetch_assoc($result)) { + $resultset[] = $row; + } + if(empty($resultset)) + return false; + $tables = []; + for ($i=0; $i < count($resultset); $i++) { + if( in_array($resultset[$i]['TABLE_NAME'], IGNORE_TABLES) ) // ignore this table + continue; + if(strtotime('-' . $since) < strtotime($resultset[$i]['update_time'])) + $tables[] = $resultset[$i]['TABLE_NAME']; + } + return ($tables) ? $tables : false; + } +} diff --git a/plugins/settings/inc/Restore_Database.php b/plugins/settings/inc/Restore_Database.php new file mode 100644 index 000000000..85d531059 --- /dev/null +++ b/plugins/settings/inc/Restore_Database.php @@ -0,0 +1,391 @@ +host = $host; + $this->username = $username; + $this->passwd = $passwd; + $this->dbName = $dbName; + $this->charset = $charset; + $this->disableForeignKeyChecks = defined('DISABLE_FOREIGN_KEY_CHECKS') ? DISABLE_FOREIGN_KEY_CHECKS : true; + $this->conn = $this->initializeDatabase(); + $this->backupDir = defined('BACKUP_DIR') ? BACKUP_DIR : '.'; + $this->backupFile = defined('BACKUP_FILE') ? BACKUP_FILE : null; + } + + /** + * Destructor re-enables foreign key checks + */ + function __destructor() { + /** + * Re-enable foreign key checks + */ + if ($this->disableForeignKeyChecks === true) { + mysqli_query($this->conn, 'SET foreign_key_checks = 1'); + } + } + + protected function initializeDatabase() { + if (DBDRIVER == 'sqlite') { + return new \PDO("sqlite:" . $this->dbName); + } + + try { + $conn = mysqli_connect($this->host, $this->username, $this->passwd, $this->dbName); + if (mysqli_connect_errno()) { + throw new \Exception('ERROR connecting database: ' . mysqli_connect_error()); + die(); + } + if (!mysqli_set_charset($conn, $this->charset)) { + mysqli_query($conn, 'SET NAMES '.$this->charset); + } + + /** + * Disable foreign key checks + */ + if ($this->disableForeignKeyChecks === true) { + mysqli_query($conn, 'SET foreign_key_checks = 0'); + } + + } catch (\Exception $e) { + print_r($e->getMessage()); + die(); + } + + return $conn; + } + + /** + * Backup the whole database or just some tables + * Use '*' for whole database or 'table1 table2 table3...' + * @param string $tables + */ + public function restoreDb() { + if (DBDRIVER == 'sqlite') { + return $this->restoreDbSqlite(); + } + + try { + $sql = ''; + $multiLineComment = false; + + $backupDir = $this->backupDir; + $backupFile = $this->backupFile; + + /** + * Gunzip file if gzipped + */ + $backupFileIsGzipped = substr($backupFile, -3, 3) == '.gz' ? true : false; + if ($backupFileIsGzipped) { + if (!$backupFile = $this->gunzipBackupFile()) { + throw new \Exception("ERROR: couldn't gunzip backup file " . $backupDir . '/' . $backupFile); + } + } + + /** + * Read backup file line by line + */ + $handle = fopen($backupDir . '/' . $backupFile, "r"); + if ($handle) { + $result = mysqli_query($this->conn, 'DROP DATABASE '.$this->dbName); + while (($line = fgets($handle)) !== false) { + $line = ltrim(rtrim($line)); + if (strlen($line) > 1) { // avoid blank lines + $lineIsComment = false; + if (preg_match('/^\/\*/', $line)) { + $multiLineComment = true; + $lineIsComment = true; + } + if ($multiLineComment or preg_match('/^\/\//', $line)) { + $lineIsComment = true; + } + if (!$lineIsComment) { + $sql .= $line; + if (preg_match('/;$/', $line)) { + // execute query + if(mysqli_query($this->conn, $sql)) { + if (preg_match('/^CREATE TABLE `([^`]+)`/i', $sql, $tableName)) { + $this->obfPrint("Table succesfully created: `" . $tableName[1] . "`"); + } + $sql = ''; + } else { + throw new \Exception("ERROR: SQL execution error: " . mysqli_error($this->conn)); + } + } + } else if (preg_match('/\*\/$/', $line)) { + $multiLineComment = false; + } + } + } + fclose($handle); + } else { + throw new \Exception("ERROR: couldn't open backup file " . $backupDir . '/' . $backupFile); + } + } catch (\Exception $e) { + print_r($e->getMessage()); + return false; + } + + if ($backupFileIsGzipped) { + unlink($backupDir . '/' . $backupFile); + } + + return true; + } + + protected function restoreDbSqlite() { + try { + // Force close existing connection to release locks + $this->conn = null; + + // Re-open fresh connection + $pdo = new \PDO("sqlite:" . $this->dbName); + $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); + + // Optimization settings + $pdo->exec("PRAGMA synchronous = OFF"); + $pdo->exec("PRAGMA journal_mode = MEMORY"); + $pdo->exec("PRAGMA foreign_keys = OFF"); + + $backupDir = $this->backupDir; + $backupFile = $this->backupFile; + + // ... (gunzip logic remains same) + $backupFileIsGzipped = substr($backupFile, -3, 3) == '.gz' ? true : false; + if ($backupFileIsGzipped) { + if (!$backupFile = $this->gunzipBackupFile()) { + throw new \Exception("ERROR: couldn't gunzip backup file " . $backupDir . '/' . $backupFile); + } + } + + // Close connection before replacement to avoid "database is locked" + $pdo = null; + + // Replace the database file + $sourceSql = $backupDir . '/' . $backupFile; + + // If it is a full binary copy or we treat it as import? + // Wait, the file is SQL dump, not binary DB file. + // So we MUST execute SQL. + + // Re-open connection + $pdo = new \PDO("sqlite:" . $this->dbName); + $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); + + // Drop all tables first for clean restore + $tablesQuery = $pdo->query("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'"); + $tables = $tablesQuery->fetchAll(\PDO::FETCH_COLUMN); + + $pdo->exec("PRAGMA foreign_keys = OFF"); + $pdo->beginTransaction(); + foreach ($tables as $table) { + $pdo->exec("DROP TABLE IF EXISTS `$table`"); + } + $pdo->commit(); + + // Now execute the dump + $handle = fopen($backupDir . '/' . $backupFile, "r"); + if ($handle) { + $sql = ''; + $multiLineComment = false; + + // $pdo->beginTransaction(); // Dump usually has transaction + + while (($line = fgets($handle)) !== false) { + // ... (existing parsing logic) + $line = trim($line); + if (strlen($line) > 1) { + $lineIsComment = false; + if (preg_match('/^\/\*/', $line)) { + $multiLineComment = true; + $lineIsComment = true; + } + if ($multiLineComment or preg_match('/^\/\//', $line) or preg_match('/^--/', $line)) { + $lineIsComment = true; + } + if (!$lineIsComment) { + $sql .= $line . "\n"; + if (preg_match('/;$/', trim($line))) { + try { + $pdo->exec($sql); + if (preg_match('/^CREATE TABLE `?([^`\s]+)`?/i', $sql, $tableName)) { + $this->obfPrint("Table successfully restored: `" . $tableName[1] . "`"); + } + } catch (\PDOException $e) { + $this->obfPrint("WARNING: " . $e->getMessage()); + } + $sql = ''; + } + } else if (preg_match('/\*\/$/', $line)) { + $multiLineComment = false; + } + } + } + + // $pdo->commit(); + fclose($handle); + } + + } catch (\Exception $e) { + // ... + print_r($e->getMessage()); + return false; + } + + // Cleanup + if ($backupFileIsGzipped) { + unlink($backupDir . '/' . $backupFile); + } + + return true; + } + + /* + * Gunzip backup file + * + * @return string New filename (without .gz appended and without backup directory) if success, or false if operation fails + */ + protected function gunzipBackupFile() { + // Raising this value may increase performance + $bufferSize = 4096; // read 4kb at a time + $error = false; + + $source = $this->backupDir . '/' . $this->backupFile; + $dest = $this->backupDir . '/' . date("Ymd_His", time()) . '_' . substr($this->backupFile, 0, -3); + + $this->obfPrint('Gunzipping backup file ' . $source . '... ', 1, 1); + + // Remove $dest file if exists + if (file_exists($dest)) { + if (!unlink($dest)) { + return false; + } + } + + // Open gzipped and destination files in binary mode + if (!$srcFile = gzopen($this->backupDir . '/' . $this->backupFile, 'rb')) { + return false; + } + if (!$dstFile = fopen($dest, 'wb')) { + return false; + } + + while (!gzeof($srcFile)) { + // Read buffer-size bytes + // Both fwrite and gzread are binary-safe + if(!fwrite($dstFile, gzread($srcFile, $bufferSize))) { + return false; + } + } + + fclose($dstFile); + gzclose($srcFile); + + // Return backup filename excluding backup directory + return str_replace($this->backupDir . '/', '', $dest); + } + + /** + * Prints message forcing output buffer flush + * + */ + public function obfPrint ($msg = '', $lineBreaksBefore = 0, $lineBreaksAfter = 1) { + if (!$msg) { + return false; + } + + $msg = date("Y-m-d H:i:s") . ' - ' . $msg; + $output = ''; + + if (php_sapi_name() != "cli") { + $lineBreak = "
                                              "; + } else { + $lineBreak = "\n"; + } + + if ($lineBreaksBefore > 0) { + for ($i = 1; $i <= $lineBreaksBefore; $i++) { + $output .= $lineBreak; + } + } + + $output .= $msg; + + if ($lineBreaksAfter > 0) { + for ($i = 1; $i <= $lineBreaksAfter; $i++) { + $output .= $lineBreak; + } + } + + if (php_sapi_name() == "cli") { + $output .= "\n"; + } + + echo $output; + + if (php_sapi_name() != "cli") { + ob_flush(); + } + + flush(); + } +} diff --git a/plugins/settings/view/admin/backup.restore.html b/plugins/settings/view/admin/backup.restore.html new file mode 100644 index 000000000..d3fc2431b --- /dev/null +++ b/plugins/settings/view/admin/backup.restore.html @@ -0,0 +1,93 @@ +
                                              +
                                              +
                                              +
                                              +

                                              Backup Database

                                              +
                                              +
                                              +
                                              +{loop: $databases}
                                              +    {?=isset_or($value.TABLE_NAME)?}
                                              +{/loop} + =============================== + Total : {?=count($databases)?} tabel +
                                              +
                                              + +
                                              +
                                              +
                                              +
                                              +
                                              +

                                              Restore Database

                                              +
                                              +
                                              +

                                              + Silahkan pilih file database yang mau dihapus. Tindakan ini bersifat permanen. +

                                              + + {loop: $files} + {?=pathinfo($value)['basename']?}
                                              + {/loop} +
                                              + +
                                              +
                                              +
                                              + + + \ No newline at end of file diff --git a/plugins/settings/view/admin/general.html b/plugins/settings/view/admin/general.html index 47560969a..38057c4e5 100644 --- a/plugins/settings/view/admin/general.html +++ b/plugins/settings/view/admin/general.html @@ -1,5 +1,7 @@ -
                                              +
                                              + +
                                              @@ -9,57 +11,57 @@

                                              Umum

                                              - +
                                              - +
                                              - +
                                              - +
                                              - +
                                              - +
                                              - +
                                              - +
                                              - +
                                              - +
                                              @@ -68,6 +70,7 @@

                                              Umum



                                              - +
                                              @@ -111,7 +115,7 @@

                                              Lain-lain

                                              @@ -121,7 +125,7 @@

                                              Lain-lain

                                              @@ -129,7 +133,7 @@

                                              Lain-lain

                                              @@ -139,7 +143,7 @@

                                              Lain-lain

                                              @@ -147,7 +151,7 @@

                                              Lain-lain

                                              @@ -161,7 +165,7 @@

                                              Lain-lain

                                              Per Dokter @@ -172,7 +176,7 @@

                                              Lain-lain

                                              Aktif @@ -182,7 +186,7 @@

                                              Lain-lain

                                              @@ -267,27 +320,47 @@

                                              Lain-lain

                                              Ya - - +
                                              - - + +
                                              + + +
                                              - +
                                              + +
                                              + + +
                                              +
                                              +
                                              + + +
                                              @@ -312,7 +385,7 @@

                                              Status Aplikasi

                                              {/if}

                                              - {$settings.license.name} + {?=isset_or($settings.license.name)?}

                                              {?=domain()?} {if: $settings.license.type == \Systems\Lib\License::UNREGISTERED} @@ -332,26 +405,26 @@

                                              Informasi Sistem

                                              Versi
                                              -
                                              {$settings.version}
                                              +
                                              {?=isset_or($settings.version)?}
                                              Status
                                              - {$settings.license.name} + {?=isset_or($settings.license.name)?} (Sunting)

                                              Versi PHP
                                              -
                                              {$settings.system.php}
                                              +
                                              {?=isset_or($settings.system.php)?}
                                              Versi MySQL
                                              -
                                              {$settings.system.mysql}
                                              +
                                              {?=isset_or($settings.system.mysql)?}

                                              - + - + diff --git a/plugins/users/view/admin/index.html b/plugins/users/view/admin/index.html index c51320c69..bdf53d77c 100644 --- a/plugins/users/view/admin/index.html +++ b/plugins/users/view/admin/index.html @@ -1,21 +1,21 @@ - + diff --git a/plugins/users/view/admin/manage.html b/plugins/users/view/admin/manage.html index 4c052e16a..7fe80e58c 100644 --- a/plugins/users/view/admin/manage.html +++ b/plugins/users/view/admin/manage.html @@ -1,4 +1,4 @@ -
                                              +
                                              @@ -21,17 +21,20 @@

                                              Kelola Pengguna

                                              {loop: $users} - {$value.username} - {$value.fullname} - {$value.email} - {$value.role} - {$value.cap} - {$value.access} + {?=isset_or($value.username)?} + {?=isset_or($value.fullname)?} + {?=isset_or($value.email)?} + {?=isset_or($value.role)?} + {?=isset_or($value.cap)?} + {?=isset_or($value.access)?} - + - + + + + @@ -43,7 +46,7 @@

                                              Kelola Pengguna

                                              -
                                              + + @@ -45,6 +45,19 @@
                                              + {if: isset($_SESSION['mlite_otp_pending'])} +

                                              Verifikasi WhatsApp OTP

                                              +
                                              +
                                              +
                                              + +
                                              +
                                              +
                                              + + Batal (Login Ulang) +
                                              + {else}
                                              @@ -64,17 +77,18 @@
                                              + {/if}
                                              {if: $mlite.notify} -
                                              {$mlite.notify.text}
                                              +
                                              {?=isset_or($mlite.notify.text)?}
                                              {/if}
                                              Made with by drg. F. Basoro. - {$mlite.powered}. + {?=isset_or($mlite.powered)?}.
                                              @@ -82,7 +96,7 @@ if ("serviceWorker" in navigator) { window.addEventListener("load", () => { navigator.serviceWorker - .register("{$mlite.path}/service-worker.js") + .register("{?=isset_or($mlite.path)?}/service-worker.js") .then((swReg) => { console.log("Service Worker is registered", swReg); }) diff --git a/plugins/utd/Admin.php b/plugins/utd/Admin.php index 619137a66..bc644a39d 100644 --- a/plugins/utd/Admin.php +++ b/plugins/utd/Admin.php @@ -3,7 +3,6 @@ namespace Plugins\Utd; use Systems\AdminModule; -use Plugins\Utd\DB_Wilayah; class Admin extends AdminModule { @@ -27,17 +26,17 @@ public function getManage() ['name' => 'Stok Darah', 'url' => url([ADMIN, 'utd', 'stokdarah']), 'icon' => 'database', 'desc' => 'Data Donor'], ['name' => 'Komponen Darah', 'url' => url([ADMIN, 'utd', 'komponendarah']), 'icon' => 'clipboard', 'desc' => 'Komponen Donor'], ]; - return $this->draw('manage.html', ['sub_modules' => $sub_modules]); + return $this->draw('manage.html', ['sub_modules' => htmlspecialchars_array($sub_modules)]); } public function getPendonor() { $this->_addHeaderFiles(); $pendonor = $this->db('utd_pendonor') - ->join('propinsi', 'propinsi.kd_prop=utd_pendonor.kd_prop') - ->join('kabupaten', 'kabupaten.kd_kab=utd_pendonor.kd_kab') - ->join('kecamatan', 'kecamatan.kd_kec=utd_pendonor.kd_kec') - ->join('kelurahan', 'kelurahan.kd_kel=utd_pendonor.kd_kel') + ->leftJoin('propinsi', 'propinsi.kd_prop=utd_pendonor.kd_prop') + ->leftJoin('kabupaten', 'kabupaten.kd_kab=utd_pendonor.kd_kab') + ->leftJoin('kecamatan', 'kecamatan.kd_kec=utd_pendonor.kd_kec') + ->leftJoin('kelurahan', 'kelurahan.kd_kel=utd_pendonor.kd_kel') ->toArray(); return $this->draw('data.pendonor.html', [ 'pendonor' => $pendonor, @@ -113,7 +112,7 @@ public function postCetak() { $this->db()->pdo()->exec("DELETE FROM `mlite_temporary`"); $cari = $_POST['cari']; - $this->db()->pdo()->exec("INSERT INTO `mlite_temporary` ( + $stmt = $this->db()->pdo()->prepare("INSERT INTO `mlite_temporary` ( `temp1`, `temp2`, `temp3`, @@ -131,33 +130,43 @@ public function postCetak() ) SELECT * FROM `utd_pendonor` - WHERE (`no_pendonor` LIKE '%$cari%' OR `nama` LIKE '%$cari%' OR `alamat` LIKE '%$cari%') + WHERE (`no_pendonor` LIKE :cari OR `nama` LIKE :cari OR `alamat` LIKE :cari) "); - - $cetak = $this->db('mlite_temporary')->toArray(); - return $this->draw('cetak.utd.html', ['cetak' => $cetak]); + $stmt->execute([':cari' => "%$cari%"]); exit(); } public function getCetakPendonor() { - $mpdf = new \Mpdf\Mpdf([ - 'mode' => 'utf-8', - 'orientation' => 'L' - ]); + $mpdf = new \Mpdf\Mpdf([ + 'mode' => 'utf-8', + 'orientation' => 'L' + ]); + + $mpdf->SetHTMLHeader($this->core->setPrintHeader()); + $mpdf->SetHTMLFooter($this->core->setPrintFooter()); - $mpdf->SetHTMLHeader($this->core->setPrintHeader()); - $mpdf->SetHTMLFooter($this->core->setPrintFooter()); - - $url = url('admin/tmp/cetak.utd.html'); - $html = file_get_contents($url); - $mpdf->WriteHTML($this->core->setPrintCss(),\Mpdf\HTMLParserMode::HEADER_CSS); - $mpdf->WriteHTML($html,\Mpdf\HTMLParserMode::HTML_BODY); + // ambil data yang sama + $cetak = $this->db('mlite_temporary')->toArray(); - // Output a PDF file directly to the browser - $mpdf->Output(); - exit(); + // inject ke template + $this->tpl->set('cetak', $cetak); + // render HTML TANPA HTTP + $html = $this->draw('cetak.utd.html', ['cetak' => $cetak]); + + $mpdf->WriteHTML( + $this->core->setPrintCss(), + \Mpdf\HTMLParserMode::HEADER_CSS + ); + + $mpdf->WriteHTML( + $html, + \Mpdf\HTMLParserMode::HTML_BODY + ); + + $mpdf->Output(); + exit; } public function getDonor() @@ -281,7 +290,7 @@ public function anyWilayah() if(isset($_POST["query"])){ $output = ''; $key = "%".$_POST["query"]."%"; - $rows = $this->data_wilayah('propinsi')->like('nm_prop', $key)->asc('kd_prop')->limit(10)->toArray(); + $rows = $this->db('propinsi')->like('nm_prop', $key)->asc('kd_prop')->limit(10)->toArray(); $output = ''; if(count($rows)){ foreach ($rows as $row) { @@ -295,7 +304,7 @@ public function anyWilayah() if(isset($_POST["query"])){ $output = ''; $key = "%".$_POST["query"]."%"; - $rows = $this->data_wilayah('kabupaten')->like('nm_kab', $key)->asc('kd_kab')->limit(10)->toArray(); + $rows = $this->db('kabupaten')->like('nm_kab', $key)->asc('kd_kab')->limit(10)->toArray(); $output = ''; if(count($rows)){ foreach ($rows as $row) { @@ -309,7 +318,7 @@ public function anyWilayah() if(isset($_POST["query"])){ $output = ''; $key = "%".$_POST["query"]."%"; - $rows = $this->data_wilayah('kecamatan')->like('nm_kec', $key)->asc('kd_kec')->limit(10)->toArray(); + $rows = $this->db('kecamatan')->like('nm_kec', $key)->asc('kd_kec')->limit(10)->toArray(); $output = ''; if(count($rows)){ foreach ($rows as $row) { @@ -339,26 +348,49 @@ public function anyWilayah() public function getKartuDonor($no_pendonor) { - $pdf=new PDF_Code128('L', 'mm', array(59,98)); - $pdf->AddPage(); - $pdf->SetFont('Arial','',10); - $pdf->Code128(9,35,$no_pendonor,80,20); - $pdf->SetFont('Arial','B',16); - $pdf->SetXY(8,0); - $pdf->Cell(0,35,$no_pendonor); - $pdf->Output('kartudonor_'.$no_pendonor.'.pdf','I'); + $mpdf = new \Mpdf\Mpdf([ + 'mode' => 'utf-8', + 'format' => [98, 59], // width x height (mm) + 'margin_left' => 5, + 'margin_right' => 5, + 'margin_top' => 5, + 'margin_bottom' => 5, + ]); + + $html = ' +
                                              +
                                              + KARTU DONOR +
                                              + + + +
                                              + '.$no_pendonor.' +
                                              +
                                              + '; + + $mpdf->WriteHTML($html); + $mpdf->Output('kartudonor_'.$no_pendonor.'.pdf', 'I'); + exit; } + public function setNoPendonor() { $date = date('Y-m-d'); - $last_no = $this->db()->pdo()->prepare("SELECT ifnull(MAX(CONVERT(RIGHT(no_pendonor,6),signed)),0) FROM utd_pendonor"); - $last_no->execute(); - $last_no = $last_no->fetch(); - if(empty($last_no[0])) { - $last_no[0] = '000000'; + $urut = $this->db('utd_pendonor') + ->nextRightNumber('no_pendonor', 6); + if(empty($urut)) { + $urut = '000000'; } - $next_no = sprintf('%06s', ($last_no[0] + 1)); + $next_no = sprintf('%06s', $urut); $next_no = 'UTD'.$next_no; return $next_no; @@ -391,9 +423,4 @@ private function _addHeaderFiles() $this->core->addJS(url([ADMIN, 'utd', 'javascript']), 'footer'); } - protected function data_wilayah($table) - { - return new DB_Wilayah($table); - } - } diff --git a/plugins/utd/DB_Wilayah.php b/plugins/utd/DB_Wilayah.php deleted file mode 100644 index 2c0b2996e..000000000 --- a/plugins/utd/DB_Wilayah.php +++ /dev/null @@ -1,13 +0,0 @@ - 'UTD', 'description' => 'Modul unit transfusi darah untuk mLITE', 'author' => 'Basoro', + 'category' => 'layanan', 'version' => '1.0', - 'compatibility' => '4.*.*', + 'compatibility' => '6.*.*', 'icon' => 'heart', 'install' => function () use ($core) { }, diff --git a/plugins/utd/README.md b/plugins/utd/README.md new file mode 100644 index 000000000..8b71a094e --- /dev/null +++ b/plugins/utd/README.md @@ -0,0 +1,55 @@ +# Plugin UTD + +Dokumentasi singkat penggunaan modul **UTD** (Unit Transfusi Darah) di mLITE untuk pengelolaan pendonor, data donor, stok darah, dan komponen darah. + +## Akses Modul + +- Masuk ke panel admin mLITE. +- Buka menu **UTD**. +- Pilih submenu sesuai kebutuhan: + - Kelola + - Data Pendonor + - Data Donor + - Stok Darah + - Komponen Darah + +## Panduan Pengguna (Petugas) + +1. **Data Pendonor** + - Buka submenu **Data Pendonor**. + - Klik **Tambah** untuk mendaftarkan pendonor baru; nomor pendonor dibuat otomatis dengan format `UTD000001`. + - Isi data lengkap: nama, alamat (dengan pencarian wilayah propinsi/kabupaten/kecamatan/kelurahan), golongan darah, tanggal lahir, dan data kontak. + - Klik **Simpan** untuk menyimpan, atau **Update** untuk mengubah data pendonor yang ada. + - Gunakan tombol **Kartu Donor** untuk mencetak kartu barcode pendonor (format PDF kartu nama 98×59 mm). + - Gunakan fitur **Cetak** untuk mencetak daftar pendonor ke PDF (orientasi landscape). + - Jika WA Gateway aktif, nomor pendonor dapat dikirim via WhatsApp. + +2. **Data Donor** + - Buka submenu **Data Donor**. + - Catat setiap kegiatan donor darah: pilih pendonor dari daftar, isi tanggal donor, golongan darah, volume, dan petugas yang bertugas. + - Klik **Simpan** untuk data baru atau **Update** untuk memperbarui. + - Hapus data donor dengan tombol **Hapus**. + +3. **Stok Darah** + - Buka submenu **Stok Darah**. + - Tambahkan kantong darah dengan mengisi nomor kantong, pilih komponen darah, golongan darah, tanggal ambil, dan tanggal kedaluwarsa. + - Gunakan **Update** untuk memperbarui status kantong yang sudah dipakai atau **Hapus** untuk menghapus. + +## Panduan Admin + +1. **Komponen Darah** + - Buka submenu **Komponen Darah**. + - Tambah komponen darah baru dengan mengisi kode dan nama komponen (misal: WB, PRC, FFP, TC). + - Klik **Simpan** untuk data baru atau **Update** untuk mengubah kode/nama komponen. + - Komponen darah ini digunakan sebagai referensi pada input Stok Darah. + +2. **Pencarian Wilayah** + - Pada form Data Pendonor, tersedia pencarian live (AJAX) untuk propinsi, kabupaten, kecamatan, dan kelurahan. + - Jika wilayah belum ada di database, sistem akan menambahkannya secara otomatis saat menyimpan data pendonor. + +## Catatan + +- Nomor pendonor dibuat otomatis oleh sistem dengan format `UTD` + 6 digit urut; tidak perlu diisi manual. +- Cetak daftar pendonor menggunakan tombol **Cetak** di halaman Data Pendonor; data yang dicetak difilter berdasarkan kata kunci pencarian. +- Stok darah perlu dipantau secara rutin untuk memastikan tidak ada kantong darah yang melewati tanggal kedaluwarsa. +- Integrasi dengan plugin **WA Gateway** memungkinkan pengiriman notifikasi WhatsApp kepada pendonor. diff --git a/plugins/utd/view/admin/cetak.utd.html b/plugins/utd/view/admin/cetak.utd.html index 10bb1d0c2..bba0b51ea 100644 --- a/plugins/utd/view/admin/cetak.utd.html +++ b/plugins/utd/view/admin/cetak.utd.html @@ -16,14 +16,14 @@

                                              Data Pendonor

                                              {loop: $cetak} - {$value.temp1} - {$value.temp2} - {$value.temp3} - {$value.temp4} - {$value.temp6} - {$value.temp7} - {$value.temp12} / {$value.temp13} - {$value.temp14} + {?=isset_or($value.temp1)?} + {?=isset_or($value.temp2)?} + {?=isset_or($value.temp3)?} + {?=isset_or($value.temp4)?} + {?=isset_or($value.temp6)?} + {?=isset_or($value.temp7)?} + {?=isset_or($value.temp12)?} / {?=isset_or($value.temp13)?} + {?=isset_or($value.temp14)?} {/loop} diff --git a/plugins/utd/view/admin/data.donor.html b/plugins/utd/view/admin/data.donor.html index fa3af6add..25028ae9b 100644 --- a/plugins/utd/view/admin/data.donor.html +++ b/plugins/utd/view/admin/data.donor.html @@ -32,7 +32,7 @@

                                              @@ -101,7 +101,7 @@

                                              @@ -172,7 +172,7 @@

                                              @@ -229,43 +229,43 @@

                                              {if: $donor} {loop: $donor} - {$value.no_donor} - {$value.nama} - {$value.no_pendonor} - {$value.no_telp} - {$value.tanggal} - {$value.dinas} - {$value.tensi} - {$value.no_bag} - {$value.jenis_bag} - {$value.jenis_donor} - {$value.tempat_aftap} - {$value.petugas_aftap} - {$value.hbsag} - {$value.hcv} - {$value.hiv} - {$value.spilis} - {$value.malaria} - {$value.petugas_u_saring} - {$value.status} + {?=isset_or($value.no_donor)?} + {?=isset_or($value.nama)?} + {?=isset_or($value.no_pendonor)?} + {?=isset_or($value.no_telp)?} + {?=isset_or($value.tanggal)?} + {?=isset_or($value.dinas)?} + {?=isset_or($value.tensi)?} + {?=isset_or($value.no_bag)?} + {?=isset_or($value.jenis_bag)?} + {?=isset_or($value.jenis_donor)?} + {?=isset_or($value.tempat_aftap)?} + {?=isset_or($value.petugas_aftap)?} + {?=isset_or($value.hbsag)?} + {?=isset_or($value.hcv)?} + {?=isset_or($value.hiv)?} + {?=isset_or($value.spilis)?} + {?=isset_or($value.malaria)?} + {?=isset_or($value.petugas_u_saring)?} + {?=isset_or($value.status)?} {/loop} {/if} diff --git a/plugins/utd/view/admin/data.pendonor.html b/plugins/utd/view/admin/data.pendonor.html index 5777b01e7..abbcaad15 100644 --- a/plugins/utd/view/admin/data.pendonor.html +++ b/plugins/utd/view/admin/data.pendonor.html @@ -372,7 +372,6 @@

                                              + diff --git a/plugins/vclaim/view/admin/form.sep.html b/plugins/vclaim/view/admin/form.sep.html index 9b9e7a38a..df393175b 100644 --- a/plugins/vclaim/view/admin/form.sep.html +++ b/plugins/vclaim/view/admin/form.sep.html @@ -16,6 +16,7 @@
                                              NIK:
                                              No. MR:
                                              Tgl. Lahir:
                                              Peserta:
                                              +
                                              Prov Umum:
                                              Status:
                                              @@ -129,6 +130,25 @@

                                              +
                                              +
                                              +

                                              + SEP Internal +

                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              + +
                                              +
                                              +
                                              +
                                              @@ -161,7 +181,7 @@

                                              - +
                                              @@ -442,7 +462,7 @@

                                              - +
                                              @@ -502,8 +522,16 @@

                                              +