Version Description
- February 15, 2021 =
New: Certificate link added to the course completion email notification New: Settings added to enable/disable course enrollment expiration feature Update: Zoom meeting input date format updated to dd/mm/yyyy to avoid internal errors Update: If enrollment expiration is set to 0, you will see 'lifetime' on the frontend course page Update: Security features enhanced in wpdb query & Quiz. Thanks Wordfence! Update: Option added to enter decimal value in withdrawal request Update: Code optimization in the frontend Earnings report Fix: 404 console error due to min.map asset files Fix: An active PHP session was detected issue Fix: Division by 0 warning in Gradebook Fix: Zoom meeting list pagination issue
Download this release
Release Info
Developer | themeum |
Plugin | Tutor LMS – eLearning and online course solution |
Version | 1.8.2 |
Comparing to | |
See all releases |
Code changes from version 1.8.1 to 1.8.2
- assets/css/tutor-admin.css +0 -2
- assets/css/tutor-admin.min.css +0 -2
- assets/css/tutor-front.css +0 -2
- assets/css/tutor-front.min.css +0 -2
- assets/packages/plyr/plyr.polyfilled.min.js +0 -1
- classes/Admin.php +14 -14
- classes/Course.php +35 -27
- classes/Delete_Enrollment_With_Order.php +0 -26
- classes/Quiz.php +44 -15
- classes/Students_List.php +18 -34
- classes/Tutor.php +0 -1
- classes/Utils.php +2777 -1904
- languages/tutor.pot +153 -149
- readme.txt +15 -1
- templates/dashboard/create-course.php +1 -3
- templates/dashboard/earning.php +5 -44
- templates/dashboard/earning/report-date_range.php +3 -45
- templates/dashboard/earning/report-last_month.php +3 -44
- templates/dashboard/earning/report-last_week.php +2 -45
- templates/dashboard/earning/report-last_year.php +2 -35
- templates/dashboard/earning/report-this_month.php +3 -44
- templates/dashboard/earning/report-this_week.php +2 -44
- templates/dashboard/earning/report-this_year.php +2 -39
- templates/dashboard/my-quiz-attempts/attempts-details.php +13 -7
- templates/dashboard/quiz-attempts/quiz-reviews.php +13 -7
- templates/dashboard/withdraw.php +9 -1
- templates/single/lesson/required-enroll.php +1 -1
- tutor.php +2 -2
assets/css/tutor-admin.css
CHANGED
@@ -4898,5 +4898,3 @@ body.rtl .tutor-toast-parent {
|
|
4898 |
right: auto;
|
4899 |
left: 50px;
|
4900 |
}
|
4901 |
-
|
4902 |
-
/*# sourceMappingURL=tutor-admin.css.map */
|
4898 |
right: auto;
|
4899 |
left: 50px;
|
4900 |
}
|
|
|
|
assets/css/tutor-admin.min.css
CHANGED
@@ -8,5 +8,3 @@
|
|
8 |
*
|
9 |
* http://docs.jquery.com/UI/Datepicker#theming
|
10 |
*/.ui-datepicker{background-color:#fff;border:1px solid #eeeeee;display:none;margin-top:4px;padding:5px;width:180px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2a6496;-webkit-transition:color 0.1s ease-in-out;transition:color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{cursor:default;font-family:"tutor";-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;height:20px;line-height:1;margin-top:2px;width:30px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:right}.ui-datepicker .ui-datepicker-prev:before{content:"\e921"}.ui-datepicker .ui-datepicker-next:before{content:"\e903"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar th,.ui-datepicker .ui-datepicker-calendar td{text-align:center;padding:0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out;transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.ui-datepicker-calendar .ui-state-default{border:none;background:none}.ui-datepicker-calendar .ui-state-default.ui-state-highlight{background:#eeeeee;padding:3px;display:block}h2.tutor-page-heading{background-color:#ffffff;padding:30px !important;margin:0 !important;border-bottom:1px solid #ecedef}.tutor-report-left-menus{background-color:#fcfcfc;margin-bottom:50px}.tutor-report-left-menus ul{margin:0}.report-main-wrap h3{font-weight:300;font-size:20px}.tutor-report-left-menus ul li{display:inline-block;margin:0}.tutor-report-left-menus ul li a{text-decoration:none;line-height:60px;display:block;padding:0 15px;color:#393c40}.tutor-report-left-menus ul li a:focus{outline:none !important;border:0;-webkit-box-shadow:none;box-shadow:none}.tutor-report-left-menus ul li.active a{color:#1e55dd;border-bottom:3px solid #3057d5}.tutor-report-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.report-top-sub-menu{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.report-top-sub-menu a{text-decoration:none;padding:10px 15px;border:1px solid #d7dadf;color:#aaaeb3;border-radius:3px;display:inline-block}.report-top-sub-menu a.active{background-color:#3057d5;color:#ffffff;border:1px solid #3057d5}.top-course-enrolled{margin-top:20px;margin-bottom:20px}.top-course-enrolled h1,.top-course-enrolled h2,.top-course-enrolled h3{margin:30px 0}.report-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.report-stat-box{padding:0;margin-bottom:30px;width:25%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%}.report-stat-box-body{background-color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;margin-right:30px}.report-stat-box:nth-child(4n) .report-stat-box-body{margin-right:0}.report-stat-box .box-icon{font-size:50px;line-height:46px;padding:13px;color:#3057d5}.report-stat-box h4,.report-stat-box p{margin:5px 0}.report-stat-box .box-stats-text h3,.report-stat-box .box-stats-text p{margin:5px 0}.report-stat-box .box-stats-text{padding:12px 0}.report-stat-box .box-stats-text h3{font-size:20px;font-weight:300}.report-stat-box .box-stats-text p{color:#888b90}.box-padding{padding:30px}.box-padding h3{margin-top:0}.box-bg-green{background-color:#00d611;color:#ffffff}.box-bg-primary{background-color:#3057d5;color:#ffffff}.box-bg-light{background-color:#eeeeee;color:#555555}.box-bg-warning{background-color:#eea504;color:#ffffff}.box-bg-dark{background-color:#333333;color:#ffffff}.box-bg-danger{background-color:#ff000c;color:#ffffff}.box-bg-pink{background-color:#ff00da;color:#ffffff}.box-bg-violate{background-color:#9c25ea;color:#ffffff}.tutor-report-overview-section{display:-webkit-box;display:-ms-flexbox;display:flex;margin:20px 0}.overview-section-col6{width:50%}.overview-section-col6{margin-right:1%;margin-left:1%}.overview-section-col6:first-child{margin-left:0}.overview-section-col6:last-child{margin-right:0}.last-revews-wrap{width:100%}table.tutor-report-table{border:none;-webkit-box-shadow:none;box-shadow:none}.tutor-report-table th{background-color:#fcfcfc;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea;padding:20px;color:#878a8f}.tutor-report-table td{border-bottom:1px solid #eaeaea;padding:20px}.tutor-report-table td img.avatar{float:left;margin-right:5px}.tutor-icon-star-full,.tutor-icon-star-line{color:#ffd700}.tutor-delete-link{color:#ff282a !important}.tutor-pagination{margin:50px 0}.tutor-pagination .page-numbers{display:inline-block;padding:5px 10px;margin:0 2px 0 0;border:1px solid #eee;line-height:1;text-decoration:none;font-weight:600}.tutor-pagination .page-numbers.current,.tutor-pagination a.page-numbers:hover{background:#f9f9f9}.report-date-range-form{display:-webkit-box;display:-ms-flexbox;display:flex}.date-range-input{position:relative;margin-right:10px}.date-range-input:last-child{margin-right:0}.date-range-input input{border:1px solid #d7dadf;-webkit-box-shadow:none;box-shadow:none;line-height:32px;margin:0;padding-right:30px}.date-range-input i.tutor-icon-calendar{position:absolute;right:10px;top:13px}.date-range-input button{background-color:#3057d5;color:#ffffff;border:none;line-height:39px;padding:0 15px}.tutor-date-range-filter-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin:30px 0}.report-download-csv-icon{float:right}.report-download-csv-icon a{text-decoration:none}.tutor-alert{border:1px solid #f8a201;background:#fffff2;position:relative;border-radius:3px;padding:20px 25px 20px 95px;color:#a86d00;margin-bottom:10px}.tutor-alert.tutor-alert-danger{border:1px solid #fe1a1a;background:#fff2f2;color:#a50000}.tutor-alert.tutor-alert-success{border:1px solid #69bc0d;background:#f6fff2;color:#3d7400}.tutor-alert.tutor-alert-info{border:1px solid #13aaf6;background:#eaf8ff;color:#0586c7}.tutor-alert::before{content:"\e95f";position:absolute;font-size:30px;font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:70px;top:0;left:0;text-align:center;background:#f8a201;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#ffffff}.tutor-alert.tutor-alert-danger::before{content:"\e913";background:#fe1a1a}.tutor-alert.tutor-alert-success::before{content:"\e90f";background:#69bc0d}.tutor-alert.tutor-alert-info::before{content:"\e96c";background:#13aaf6}.tutor-alert-content p{margin:0}table.tutor-table{border-spacing:0;width:100%;border-collapse:collapse;border:1px solid #dcdfe5}table.tutor-table td,table.tutor-table th{padding:1em 1.41575em;text-align:left;vertical-align:top;border-bottom:1px solid #dcdfe5}table.tutor-table td p:last-child,table.tutor-table th p:last-child{margin-bottom:0}table.tutor-table th{font-weight:600}table.tutor-table thead th{padding:1.41575em;vertical-align:middle}table.tutor-table tbody h2{font-size:1em;letter-spacing:normal;font-weight:normal}table.tutor-table tbody h2 a{font-weight:normal}table.tutor-table th{background-color:#fafbfc}table.tutor-table tbody td{background-color:#ffffff}table.tutor-table tbody tr:nth-child(2n) td{background-color:#fafbfc}table.tutor-table a{text-decoration:none}table.tutor-table p{margin:0}.tutor-nav-tab-wrapper{margin-bottom:10px}.nav-tab-item{float:left;border:1px solid #ccc;border-bottom:none;margin-left:0.5em;padding:10px 14px;font-size:14px;line-height:1.33;font-weight:600;background:#e5e5e5;color:#555;text-decoration:none;white-space:nowrap}.nav-tab-item:first-child{margin-left:0}.nav-tab-item:focus,.nav-tab-item:hover{background-color:#fff;color:#444}.nav-tab-item-active,.nav-tab-item:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-item-active{margin-bottom:-1px;color:#444}.nav-tab-item-active,.nav-tab-item-active:focus,.nav-tab-item-active:focus:active,.nav-tab-item-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.tutor-quiz-feedback-mode{position:relative}.tutor-quiz-feedback-mode:not(:last-child){margin-right:16px}.tutor-quiz-feedback-mode-option{border-radius:3px;border:solid 1px #dedede;padding:15px 15px 15px 40px;-webkit-transition:0.2s ease;transition:0.2s ease;max-width:210px}.tutor-quiz-feedback-option-option-title{margin-bottom:10px !important}.tutor-quiz-feedback-option-subtitle{margin:0 !important;font-size:12px;line-height:1.67;color:#505469}.tutor-quiz-feedback-option-subtitle a{font-weight:500;color:inherit;text-decoration:underline !important}.tutor-quiz-feedback-mode input[type="radio"]{display:none}.tutor-quiz-feedback-mode .radio-icon{position:absolute;top:16px;left:16px;z-index:1;margin:0;width:16px;height:16px;border-radius:50%;-webkit-box-shadow:inset 0 0 0 2px #dcdce1;box-shadow:inset 0 0 0 2px #dcdce1;-webkit-transition:0.2s ease;transition:0.2s ease}.tutor-quiz-feedback-mode input[type="radio"]:checked+.radio-icon{-webkit-box-shadow:inset 0 0 0 5px #3e64de;box-shadow:inset 0 0 0 5px #3e64de;background:#fff}.tutor-quiz-feedback-mode input[type="radio"]:checked ~ .tutor-quiz-feedback-mode-option{background:#fff}#tutor-course-topics h2,#tutor-instructors h2{display:block}#tutor-course-topics .tutor-course-builder-header.has-postbox-header{top:-56px;right:96px}#settings-tab-general .tutor-option-field-row input[type="number"]{width:185px}.instructor-layout-templates-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.instructor-layout-template{max-width:150px;padding:5px;margin:3px}.instructor-layout-template img{max-width:100%;height:auto;display:block;border:6px solid transparent;-webkit-transition:border-color 400ms;transition:border-color 400ms}.instructor-layout-template.selected-template img,.instructor-layout-template:hover img{border:6px solid #3057d6}.tutor-announcement-content-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-buttons :nth-child(1){margin-right:20px}.tutor-announcements-header{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-date,.tutor-announcement-content>span{font-weight:bold !important}.tutor-announcement-date{width:100px !important}.tutor-announcements-modal-wrap .tutor-modal-content{max-width:660px !important}.tutor-announcements-modal-wrap button{padding:10px 20px !important}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{padding:10px 18px 10px 18px}.tutor-announcements-update-form .tutor-option-field-row input[type=text],.tutor-announcements-update-form textarea,.tutor-announcements-form .tutor-option-field-row input[type=text],.tutor-announcements-form textarea{width:100%;margin-top:8px}.tutor-announcements-form select,.tutor-announcements-update-form select{width:100%;max-width:100% !important;padding:7px 12px;margin-top:8px}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{border:none !important}.tutor-announcements-form .modal-footer button,.tutor-announcements-update-form .modal-footer button{cursor:pointer !important}.tutor-announcements-form .modal-footer,.tutor-announcements-update-form .modal-footer{background-color:#fff !important}.tutor-announcement-close-btn{text-decoration:none;color:#525252}.tutor-announcement-table td{vertical-align:middle !important}.tutor-announcement-content{line-height:10px}.tutor-accouncement-update-modal .modal-header,.tutor-announcement-create-modal .modal-header{padding-right:15px !important}.tutor-accouncement-update-modal .tutor-modal-content,.tutor-announcement-create-modal .tutor-modal-content{border-radius:20px !important}.tutor-admin-search-box-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:45px}.tutor-admin-search-box-container>div:nth-child(1){margin-right:40px;position:relative}.tutor-admin-search-box-container>div:nth-child(1){-webkit-box-flex:2;-ms-flex:2;flex:2}.tutor-admin-search-box-container>div:nth-child(2),.tutor-admin-search-box-container>div:nth-child(3),.tutor-admin-search-box-container>div:nth-child(4){-webkit-box-flex:1.5;-ms-flex:1.5;flex:1.5}.tutor-admin-search-box-container>div:not(:last-child){margin-right:40px}.tutor-admin-search-box-container .tutor-report-search-btn{position:absolute;width:40px;height:40px;bottom:0;right:0;border:0;background:transparent;color:#3e64de;font-size:20px;cursor:pointer;outline:none}.tutor-admin-search-box-container>div:nth-child(1) input{padding-right:45px}.tutor-admin-search-box-container input[type="text"],.tutor-admin-search-box-container select{width:100%;height:40px;border-radius:3px;border:solid 1px #dcdce1;background-color:#ffffff;padding:0 14px;-webkit-transition:0.2s;transition:0.2s}.tutor-admin-search-box-container .date-range-input i.tutor-icon-calendar{position:absolute;width:42px;height:40px;right:0;top:0;color:#3e64de;font-size:18px;text-align:center;line-height:40px}.tutor-admin-search-box-container .menu-label{font-size:14px;font-weight:400;color:#737787;margin-bottom:7px}.tutor-admin-search-box-container>div:nth-child(4) input::-webkit-input-placeholder{color:#3f435b;font-size:15px}.tutor-admin-search-box-container>div:nth-child(1) input::-webkit-input-placeholder{font-size:16px;font-weight:400;color:#737787}.tutor-admin-search-box-container input[type="text"]:hover,.tutor-admin-search-box-container input[type="text"]:focus,.tutor-admin-search-box-container select:hover,.tutor-admin-search-box-container select:focus,.tutor-date-range-wrap .date-range-input input:hover,.tutor-date-range-wrap .date-range-input input:focus{border-color:var(--tutor-primary-color) !important;-webkit-box-shadow:none !important;box-shadow:none !important;outline:none !important}@media (max-width: 767px){.tutor-admin-search-box-container{display:grid;grid-template-columns:repeat(auto-fit, minmax(250px, 1fr));grid-gap:15px}.tutor-admin-search-box-container>div{margin-right:0 !important}}.tutor-list-wrap{border-radius:3px;background-color:#ffffff;margin-top:40px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-footer{padding:30px}.tutor-list-wrap .heading{font-size:20px;line-height:1.5;color:#3f435b}.tutor-list-wrap .tutor-list-table{width:100%;text-align:left;border-collapse:collapse}.tutor-list-wrap .tutor-list-table .table-toggle{display:none}.tutor-list-wrap .tutor-list-table .table-toggle.open{display:table-row}[class^="tutor-report-"] .tutor-list-table tbody td.detail{vertical-align:top}.tutor-list-wrap .tutor-list-table thead,.tutor-list-wrap .tutor-list-table tr:first-child th{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea}.tutor-list-wrap .tutor-list-table th{font-size:12px;font-weight:400;line-height:1.75;letter-spacing:0.7px;color:#737787;text-transform:uppercase}.tutor-list-wrap .tutor-list-table td,.tutor-list-wrap .tutor-list-table td p{font-size:14px;font-weight:300;line-height:1.75;color:#3f435b}.report-course-list-wrap .tutor-list-table th i{margin-left:3px}.tutor-list-wrap .tutor-list-table tr th,.tutor-list-wrap .tutor-list-table tr td{padding:15px 20px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-table th:last-child,.tutor-list-wrap .tutor-list-table td:last-child,.tutor-report-course-list .tutor-list-footer{padding-right:36px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-table th:first-child,.tutor-list-wrap .tutor-list-table td:first-child{padding-left:30px}.tutor-list-wrap .tutor-list-table tbody td{padding:25px 20px;vertical-align:top}.tutor-list-wrap .tutor-list-table tbody tr:not(:last-child){border-bottom:1px solid #dcdce1}.tutor-list-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid #dcdce1}.tutor-list-footer .tutor-report-count{font-size:14px;line-height:1.71;color:#737787}.tutor-list-footer .tutor-report-count strong{color:#3f435b}.tutor-list-footer .page-numbers.current{border-color:#3e64de;background:transparent}.tutor-list-footer .page-numbers{border-radius:4px;border:solid 1px #dcdce1;padding:11px 14px;font-size:14px;font-weight:400;color:#737787;background:#fff;outline:none;-webkit-transition:0.2s;transition:0.2s}.tutor-list-footer .page-numbers:hover,.tutor-list-footer .page-numbers:focus{border-color:#3e64de;background:#3e64de !important;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tutor-list-footer .page-numbers.current:hover,.tutor-list-footer .page-numbers.current:focus{background:transparent !important;color:inherit}.tutor-list-footer .tutor-pagination{margin:0}.tutor-list-table td .details-button a,.tutor-list-table .link-icon{font-size:16px;color:#b9bac3;-webkit-transition:0.2s;transition:0.2s}.tutor-list-table td .details-button a:first-child{font-size:12px;font-weight:500;line-height:1.75;text-align:center;color:#737787;border-radius:3px;border:solid 1px #dcdce1;padding:5px 11px;margin-right:15px;text-decoration:none}.tutor-list-table td .details-button{text-align:right;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-list-table .course-link a{color:inherit;text-decoration:none}.tutor-list-table .tutor-icon-detail-link,.profile-table .tutor-icon-detail-link{font-size:14px}@media (max-width: 991px){.tutor-list-wrap{overflow-x:scroll}}.report-course-list-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.report-course-list-wrap .tutor-list-table td{font-size:16px}.report-course-list-wrap .tutor-list-table td:nth-child(2){font-size:14px;font-weight:400}.report-course-list-wrap .tutor-list-table td:last-child{text-align:right}.report-course-list-wrap .tutor-list-table th:nth-child(2),.report-course-list-wrap .tutor-list-table td:nth-child(2){width:40%}.report-course-list-wrap .tutor-list-table .total{color:#9698a5}.report-course-list-wrap .tutor-list-table [class$="-link"]{color:#b9bac3}.report-course-list-wrap .tutor-list-table a:hover{color:#3057d5}.report-course-list-wrap .tutor-list-table .course-link{font-size:12px;margin-left:5px}.tutor-list-table .course-percentage{width:90px;height:4px;border-radius:2px;background-color:#dcdce1;position:relative}.tutor-list-table .course-percentage::before{content:"";position:absolute;width:var(--percent);height:4px;border-radius:2px;background-color:#3e64de}.report-course-list-wrap>.tutor-list-table tbody td:not(.detail):nth-last-child(3){vertical-align:middle}.report-course-list-wrap .tutor-list-table .details-link{font-size:21px}.tutor-report-content a{-webkit-transition:0.2s ease;transition:0.2s ease}.tutor-report-content a:hover,.tutor-report-content a:focus,.report-student-profile .profile-table a:hover{color:#3057d5}@media (max-width: 991px){.report-course-list-wrap .tutor-list-table th:nth-child(n+7),.report-course-list-wrap .tutor-list-table td:nth-child(n+7){display:none}}.report-course-list-header .status span,.report-course-list-wrap .detail .status span{font-size:14px;font-weight:300;line-height:1;color:#737787;margin-left:25px;padding-left:14px;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.report-course-list-header .status span::before,.report-course-list-wrap .detail .status span::before{content:"";position:absolute;width:8px;height:8px;background:#b9bac3;border-radius:50%;left:0}.report-course-list-wrap .detail .status span{margin-left:0;padding-left:16px}.report-course-list-wrap .detail .status span::before{width:6px;height:6px}.report-course-list-header .status .running::before,.report-course-list-wrap .detail .status .running::before{background-color:#3e64de}.report-course-list-header .status .complete::before,.report-course-list-wrap .detail .status .complete::before{background-color:#7bbc30}.report-course-list-wrap .detail .heading{font-size:16px;line-height:1.75;color:#3f435b;margin-bottom:10px}.report-course-list-wrap .detail{padding:unset !important;text-align:left !important;font-size:14px !important;font-weight:400 !important}.report-course-list-wrap .tutor-list-table td>table{width:100%}.report-course-list .course-list-details{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;grid-gap:20px;grid-template-columns:repeat(3, 1fr)}.tutor-list-wrap .tutor-list-table a:hover,.tutor-list-wrap .tutor-list-table a:focus{color:#3e64de}.tutor-list-wrap .no-data-found{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 0 30px 0}.tutor-toast-parent{position:fixed;right:25px;bottom:50px;right:50px;left:auto;max-height:400px;width:350px;overflow-x:hidden;overflow-y:auto;background:transparent;z-index:99999999}.tutor-toast-parent:empty{display:none}.tutor-toast-parent>div{background:white;padding:10px;margin:15px;border-radius:15px;-webkit-box-shadow:3px 3px 10px rgba(0,0,0,0.363);box-shadow:3px 3px 10px rgba(0,0,0,0.363);border:1px solid #E8E8E8;background:white;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-ms-flex-line-pack:center;align-content:center;-o-align-content:center;-ms-align-content:center;-moz-align-content:center;-webkit-align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-toast-parent>div>div{padding:8px}.tutor-toast-parent>div>div:nth-child(1),.tutor-toast-parent>div>div:nth-child(3){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-toast-parent>div>div:nth-child(2){-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-toast-parent>div img{width:100%;height:auto}.tutor-toast-parent>div b{font-weight:600;display:block}.tutor-toast-parent>div span{color:#333}.tutor-toast-parent>div i{cursor:pointer;font-size:14px}body.rtl .tutor-toast-parent{right:auto;left:50px}
|
11 |
-
|
12 |
-
/*# sourceMappingURL=tutor-admin.min.css.map */
|
8 |
*
|
9 |
* http://docs.jquery.com/UI/Datepicker#theming
|
10 |
*/.ui-datepicker{background-color:#fff;border:1px solid #eeeeee;display:none;margin-top:4px;padding:5px;width:180px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2a6496;-webkit-transition:color 0.1s ease-in-out;transition:color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{cursor:default;font-family:"tutor";-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;height:20px;line-height:1;margin-top:2px;width:30px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:right}.ui-datepicker .ui-datepicker-prev:before{content:"\e921"}.ui-datepicker .ui-datepicker-next:before{content:"\e903"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar th,.ui-datepicker .ui-datepicker-calendar td{text-align:center;padding:0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out;transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.ui-datepicker-calendar .ui-state-default{border:none;background:none}.ui-datepicker-calendar .ui-state-default.ui-state-highlight{background:#eeeeee;padding:3px;display:block}h2.tutor-page-heading{background-color:#ffffff;padding:30px !important;margin:0 !important;border-bottom:1px solid #ecedef}.tutor-report-left-menus{background-color:#fcfcfc;margin-bottom:50px}.tutor-report-left-menus ul{margin:0}.report-main-wrap h3{font-weight:300;font-size:20px}.tutor-report-left-menus ul li{display:inline-block;margin:0}.tutor-report-left-menus ul li a{text-decoration:none;line-height:60px;display:block;padding:0 15px;color:#393c40}.tutor-report-left-menus ul li a:focus{outline:none !important;border:0;-webkit-box-shadow:none;box-shadow:none}.tutor-report-left-menus ul li.active a{color:#1e55dd;border-bottom:3px solid #3057d5}.tutor-report-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.report-top-sub-menu{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.report-top-sub-menu a{text-decoration:none;padding:10px 15px;border:1px solid #d7dadf;color:#aaaeb3;border-radius:3px;display:inline-block}.report-top-sub-menu a.active{background-color:#3057d5;color:#ffffff;border:1px solid #3057d5}.top-course-enrolled{margin-top:20px;margin-bottom:20px}.top-course-enrolled h1,.top-course-enrolled h2,.top-course-enrolled h3{margin:30px 0}.report-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.report-stat-box{padding:0;margin-bottom:30px;width:25%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%}.report-stat-box-body{background-color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;margin-right:30px}.report-stat-box:nth-child(4n) .report-stat-box-body{margin-right:0}.report-stat-box .box-icon{font-size:50px;line-height:46px;padding:13px;color:#3057d5}.report-stat-box h4,.report-stat-box p{margin:5px 0}.report-stat-box .box-stats-text h3,.report-stat-box .box-stats-text p{margin:5px 0}.report-stat-box .box-stats-text{padding:12px 0}.report-stat-box .box-stats-text h3{font-size:20px;font-weight:300}.report-stat-box .box-stats-text p{color:#888b90}.box-padding{padding:30px}.box-padding h3{margin-top:0}.box-bg-green{background-color:#00d611;color:#ffffff}.box-bg-primary{background-color:#3057d5;color:#ffffff}.box-bg-light{background-color:#eeeeee;color:#555555}.box-bg-warning{background-color:#eea504;color:#ffffff}.box-bg-dark{background-color:#333333;color:#ffffff}.box-bg-danger{background-color:#ff000c;color:#ffffff}.box-bg-pink{background-color:#ff00da;color:#ffffff}.box-bg-violate{background-color:#9c25ea;color:#ffffff}.tutor-report-overview-section{display:-webkit-box;display:-ms-flexbox;display:flex;margin:20px 0}.overview-section-col6{width:50%}.overview-section-col6{margin-right:1%;margin-left:1%}.overview-section-col6:first-child{margin-left:0}.overview-section-col6:last-child{margin-right:0}.last-revews-wrap{width:100%}table.tutor-report-table{border:none;-webkit-box-shadow:none;box-shadow:none}.tutor-report-table th{background-color:#fcfcfc;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea;padding:20px;color:#878a8f}.tutor-report-table td{border-bottom:1px solid #eaeaea;padding:20px}.tutor-report-table td img.avatar{float:left;margin-right:5px}.tutor-icon-star-full,.tutor-icon-star-line{color:#ffd700}.tutor-delete-link{color:#ff282a !important}.tutor-pagination{margin:50px 0}.tutor-pagination .page-numbers{display:inline-block;padding:5px 10px;margin:0 2px 0 0;border:1px solid #eee;line-height:1;text-decoration:none;font-weight:600}.tutor-pagination .page-numbers.current,.tutor-pagination a.page-numbers:hover{background:#f9f9f9}.report-date-range-form{display:-webkit-box;display:-ms-flexbox;display:flex}.date-range-input{position:relative;margin-right:10px}.date-range-input:last-child{margin-right:0}.date-range-input input{border:1px solid #d7dadf;-webkit-box-shadow:none;box-shadow:none;line-height:32px;margin:0;padding-right:30px}.date-range-input i.tutor-icon-calendar{position:absolute;right:10px;top:13px}.date-range-input button{background-color:#3057d5;color:#ffffff;border:none;line-height:39px;padding:0 15px}.tutor-date-range-filter-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin:30px 0}.report-download-csv-icon{float:right}.report-download-csv-icon a{text-decoration:none}.tutor-alert{border:1px solid #f8a201;background:#fffff2;position:relative;border-radius:3px;padding:20px 25px 20px 95px;color:#a86d00;margin-bottom:10px}.tutor-alert.tutor-alert-danger{border:1px solid #fe1a1a;background:#fff2f2;color:#a50000}.tutor-alert.tutor-alert-success{border:1px solid #69bc0d;background:#f6fff2;color:#3d7400}.tutor-alert.tutor-alert-info{border:1px solid #13aaf6;background:#eaf8ff;color:#0586c7}.tutor-alert::before{content:"\e95f";position:absolute;font-size:30px;font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:70px;top:0;left:0;text-align:center;background:#f8a201;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#ffffff}.tutor-alert.tutor-alert-danger::before{content:"\e913";background:#fe1a1a}.tutor-alert.tutor-alert-success::before{content:"\e90f";background:#69bc0d}.tutor-alert.tutor-alert-info::before{content:"\e96c";background:#13aaf6}.tutor-alert-content p{margin:0}table.tutor-table{border-spacing:0;width:100%;border-collapse:collapse;border:1px solid #dcdfe5}table.tutor-table td,table.tutor-table th{padding:1em 1.41575em;text-align:left;vertical-align:top;border-bottom:1px solid #dcdfe5}table.tutor-table td p:last-child,table.tutor-table th p:last-child{margin-bottom:0}table.tutor-table th{font-weight:600}table.tutor-table thead th{padding:1.41575em;vertical-align:middle}table.tutor-table tbody h2{font-size:1em;letter-spacing:normal;font-weight:normal}table.tutor-table tbody h2 a{font-weight:normal}table.tutor-table th{background-color:#fafbfc}table.tutor-table tbody td{background-color:#ffffff}table.tutor-table tbody tr:nth-child(2n) td{background-color:#fafbfc}table.tutor-table a{text-decoration:none}table.tutor-table p{margin:0}.tutor-nav-tab-wrapper{margin-bottom:10px}.nav-tab-item{float:left;border:1px solid #ccc;border-bottom:none;margin-left:0.5em;padding:10px 14px;font-size:14px;line-height:1.33;font-weight:600;background:#e5e5e5;color:#555;text-decoration:none;white-space:nowrap}.nav-tab-item:first-child{margin-left:0}.nav-tab-item:focus,.nav-tab-item:hover{background-color:#fff;color:#444}.nav-tab-item-active,.nav-tab-item:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-item-active{margin-bottom:-1px;color:#444}.nav-tab-item-active,.nav-tab-item-active:focus,.nav-tab-item-active:focus:active,.nav-tab-item-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.tutor-quiz-feedback-mode{position:relative}.tutor-quiz-feedback-mode:not(:last-child){margin-right:16px}.tutor-quiz-feedback-mode-option{border-radius:3px;border:solid 1px #dedede;padding:15px 15px 15px 40px;-webkit-transition:0.2s ease;transition:0.2s ease;max-width:210px}.tutor-quiz-feedback-option-option-title{margin-bottom:10px !important}.tutor-quiz-feedback-option-subtitle{margin:0 !important;font-size:12px;line-height:1.67;color:#505469}.tutor-quiz-feedback-option-subtitle a{font-weight:500;color:inherit;text-decoration:underline !important}.tutor-quiz-feedback-mode input[type="radio"]{display:none}.tutor-quiz-feedback-mode .radio-icon{position:absolute;top:16px;left:16px;z-index:1;margin:0;width:16px;height:16px;border-radius:50%;-webkit-box-shadow:inset 0 0 0 2px #dcdce1;box-shadow:inset 0 0 0 2px #dcdce1;-webkit-transition:0.2s ease;transition:0.2s ease}.tutor-quiz-feedback-mode input[type="radio"]:checked+.radio-icon{-webkit-box-shadow:inset 0 0 0 5px #3e64de;box-shadow:inset 0 0 0 5px #3e64de;background:#fff}.tutor-quiz-feedback-mode input[type="radio"]:checked ~ .tutor-quiz-feedback-mode-option{background:#fff}#tutor-course-topics h2,#tutor-instructors h2{display:block}#tutor-course-topics .tutor-course-builder-header.has-postbox-header{top:-56px;right:96px}#settings-tab-general .tutor-option-field-row input[type="number"]{width:185px}.instructor-layout-templates-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.instructor-layout-template{max-width:150px;padding:5px;margin:3px}.instructor-layout-template img{max-width:100%;height:auto;display:block;border:6px solid transparent;-webkit-transition:border-color 400ms;transition:border-color 400ms}.instructor-layout-template.selected-template img,.instructor-layout-template:hover img{border:6px solid #3057d6}.tutor-announcement-content-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-buttons :nth-child(1){margin-right:20px}.tutor-announcements-header{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-date,.tutor-announcement-content>span{font-weight:bold !important}.tutor-announcement-date{width:100px !important}.tutor-announcements-modal-wrap .tutor-modal-content{max-width:660px !important}.tutor-announcements-modal-wrap button{padding:10px 20px !important}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{padding:10px 18px 10px 18px}.tutor-announcements-update-form .tutor-option-field-row input[type=text],.tutor-announcements-update-form textarea,.tutor-announcements-form .tutor-option-field-row input[type=text],.tutor-announcements-form textarea{width:100%;margin-top:8px}.tutor-announcements-form select,.tutor-announcements-update-form select{width:100%;max-width:100% !important;padding:7px 12px;margin-top:8px}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{border:none !important}.tutor-announcements-form .modal-footer button,.tutor-announcements-update-form .modal-footer button{cursor:pointer !important}.tutor-announcements-form .modal-footer,.tutor-announcements-update-form .modal-footer{background-color:#fff !important}.tutor-announcement-close-btn{text-decoration:none;color:#525252}.tutor-announcement-table td{vertical-align:middle !important}.tutor-announcement-content{line-height:10px}.tutor-accouncement-update-modal .modal-header,.tutor-announcement-create-modal .modal-header{padding-right:15px !important}.tutor-accouncement-update-modal .tutor-modal-content,.tutor-announcement-create-modal .tutor-modal-content{border-radius:20px !important}.tutor-admin-search-box-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:45px}.tutor-admin-search-box-container>div:nth-child(1){margin-right:40px;position:relative}.tutor-admin-search-box-container>div:nth-child(1){-webkit-box-flex:2;-ms-flex:2;flex:2}.tutor-admin-search-box-container>div:nth-child(2),.tutor-admin-search-box-container>div:nth-child(3),.tutor-admin-search-box-container>div:nth-child(4){-webkit-box-flex:1.5;-ms-flex:1.5;flex:1.5}.tutor-admin-search-box-container>div:not(:last-child){margin-right:40px}.tutor-admin-search-box-container .tutor-report-search-btn{position:absolute;width:40px;height:40px;bottom:0;right:0;border:0;background:transparent;color:#3e64de;font-size:20px;cursor:pointer;outline:none}.tutor-admin-search-box-container>div:nth-child(1) input{padding-right:45px}.tutor-admin-search-box-container input[type="text"],.tutor-admin-search-box-container select{width:100%;height:40px;border-radius:3px;border:solid 1px #dcdce1;background-color:#ffffff;padding:0 14px;-webkit-transition:0.2s;transition:0.2s}.tutor-admin-search-box-container .date-range-input i.tutor-icon-calendar{position:absolute;width:42px;height:40px;right:0;top:0;color:#3e64de;font-size:18px;text-align:center;line-height:40px}.tutor-admin-search-box-container .menu-label{font-size:14px;font-weight:400;color:#737787;margin-bottom:7px}.tutor-admin-search-box-container>div:nth-child(4) input::-webkit-input-placeholder{color:#3f435b;font-size:15px}.tutor-admin-search-box-container>div:nth-child(1) input::-webkit-input-placeholder{font-size:16px;font-weight:400;color:#737787}.tutor-admin-search-box-container input[type="text"]:hover,.tutor-admin-search-box-container input[type="text"]:focus,.tutor-admin-search-box-container select:hover,.tutor-admin-search-box-container select:focus,.tutor-date-range-wrap .date-range-input input:hover,.tutor-date-range-wrap .date-range-input input:focus{border-color:var(--tutor-primary-color) !important;-webkit-box-shadow:none !important;box-shadow:none !important;outline:none !important}@media (max-width: 767px){.tutor-admin-search-box-container{display:grid;grid-template-columns:repeat(auto-fit, minmax(250px, 1fr));grid-gap:15px}.tutor-admin-search-box-container>div{margin-right:0 !important}}.tutor-list-wrap{border-radius:3px;background-color:#ffffff;margin-top:40px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-footer{padding:30px}.tutor-list-wrap .heading{font-size:20px;line-height:1.5;color:#3f435b}.tutor-list-wrap .tutor-list-table{width:100%;text-align:left;border-collapse:collapse}.tutor-list-wrap .tutor-list-table .table-toggle{display:none}.tutor-list-wrap .tutor-list-table .table-toggle.open{display:table-row}[class^="tutor-report-"] .tutor-list-table tbody td.detail{vertical-align:top}.tutor-list-wrap .tutor-list-table thead,.tutor-list-wrap .tutor-list-table tr:first-child th{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea}.tutor-list-wrap .tutor-list-table th{font-size:12px;font-weight:400;line-height:1.75;letter-spacing:0.7px;color:#737787;text-transform:uppercase}.tutor-list-wrap .tutor-list-table td,.tutor-list-wrap .tutor-list-table td p{font-size:14px;font-weight:300;line-height:1.75;color:#3f435b}.report-course-list-wrap .tutor-list-table th i{margin-left:3px}.tutor-list-wrap .tutor-list-table tr th,.tutor-list-wrap .tutor-list-table tr td{padding:15px 20px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-table th:last-child,.tutor-list-wrap .tutor-list-table td:last-child,.tutor-report-course-list .tutor-list-footer{padding-right:36px}.tutor-list-wrap .tutor-list-header,.tutor-list-wrap .tutor-list-table th:first-child,.tutor-list-wrap .tutor-list-table td:first-child{padding-left:30px}.tutor-list-wrap .tutor-list-table tbody td{padding:25px 20px;vertical-align:top}.tutor-list-wrap .tutor-list-table tbody tr:not(:last-child){border-bottom:1px solid #dcdce1}.tutor-list-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-top:1px solid #dcdce1}.tutor-list-footer .tutor-report-count{font-size:14px;line-height:1.71;color:#737787}.tutor-list-footer .tutor-report-count strong{color:#3f435b}.tutor-list-footer .page-numbers.current{border-color:#3e64de;background:transparent}.tutor-list-footer .page-numbers{border-radius:4px;border:solid 1px #dcdce1;padding:11px 14px;font-size:14px;font-weight:400;color:#737787;background:#fff;outline:none;-webkit-transition:0.2s;transition:0.2s}.tutor-list-footer .page-numbers:hover,.tutor-list-footer .page-numbers:focus{border-color:#3e64de;background:#3e64de !important;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tutor-list-footer .page-numbers.current:hover,.tutor-list-footer .page-numbers.current:focus{background:transparent !important;color:inherit}.tutor-list-footer .tutor-pagination{margin:0}.tutor-list-table td .details-button a,.tutor-list-table .link-icon{font-size:16px;color:#b9bac3;-webkit-transition:0.2s;transition:0.2s}.tutor-list-table td .details-button a:first-child{font-size:12px;font-weight:500;line-height:1.75;text-align:center;color:#737787;border-radius:3px;border:solid 1px #dcdce1;padding:5px 11px;margin-right:15px;text-decoration:none}.tutor-list-table td .details-button{text-align:right;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-list-table .course-link a{color:inherit;text-decoration:none}.tutor-list-table .tutor-icon-detail-link,.profile-table .tutor-icon-detail-link{font-size:14px}@media (max-width: 991px){.tutor-list-wrap{overflow-x:scroll}}.report-course-list-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.report-course-list-wrap .tutor-list-table td{font-size:16px}.report-course-list-wrap .tutor-list-table td:nth-child(2){font-size:14px;font-weight:400}.report-course-list-wrap .tutor-list-table td:last-child{text-align:right}.report-course-list-wrap .tutor-list-table th:nth-child(2),.report-course-list-wrap .tutor-list-table td:nth-child(2){width:40%}.report-course-list-wrap .tutor-list-table .total{color:#9698a5}.report-course-list-wrap .tutor-list-table [class$="-link"]{color:#b9bac3}.report-course-list-wrap .tutor-list-table a:hover{color:#3057d5}.report-course-list-wrap .tutor-list-table .course-link{font-size:12px;margin-left:5px}.tutor-list-table .course-percentage{width:90px;height:4px;border-radius:2px;background-color:#dcdce1;position:relative}.tutor-list-table .course-percentage::before{content:"";position:absolute;width:var(--percent);height:4px;border-radius:2px;background-color:#3e64de}.report-course-list-wrap>.tutor-list-table tbody td:not(.detail):nth-last-child(3){vertical-align:middle}.report-course-list-wrap .tutor-list-table .details-link{font-size:21px}.tutor-report-content a{-webkit-transition:0.2s ease;transition:0.2s ease}.tutor-report-content a:hover,.tutor-report-content a:focus,.report-student-profile .profile-table a:hover{color:#3057d5}@media (max-width: 991px){.report-course-list-wrap .tutor-list-table th:nth-child(n+7),.report-course-list-wrap .tutor-list-table td:nth-child(n+7){display:none}}.report-course-list-header .status span,.report-course-list-wrap .detail .status span{font-size:14px;font-weight:300;line-height:1;color:#737787;margin-left:25px;padding-left:14px;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.report-course-list-header .status span::before,.report-course-list-wrap .detail .status span::before{content:"";position:absolute;width:8px;height:8px;background:#b9bac3;border-radius:50%;left:0}.report-course-list-wrap .detail .status span{margin-left:0;padding-left:16px}.report-course-list-wrap .detail .status span::before{width:6px;height:6px}.report-course-list-header .status .running::before,.report-course-list-wrap .detail .status .running::before{background-color:#3e64de}.report-course-list-header .status .complete::before,.report-course-list-wrap .detail .status .complete::before{background-color:#7bbc30}.report-course-list-wrap .detail .heading{font-size:16px;line-height:1.75;color:#3f435b;margin-bottom:10px}.report-course-list-wrap .detail{padding:unset !important;text-align:left !important;font-size:14px !important;font-weight:400 !important}.report-course-list-wrap .tutor-list-table td>table{width:100%}.report-course-list .course-list-details{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;grid-gap:20px;grid-template-columns:repeat(3, 1fr)}.tutor-list-wrap .tutor-list-table a:hover,.tutor-list-wrap .tutor-list-table a:focus{color:#3e64de}.tutor-list-wrap .no-data-found{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 0 30px 0}.tutor-toast-parent{position:fixed;right:25px;bottom:50px;right:50px;left:auto;max-height:400px;width:350px;overflow-x:hidden;overflow-y:auto;background:transparent;z-index:99999999}.tutor-toast-parent:empty{display:none}.tutor-toast-parent>div{background:white;padding:10px;margin:15px;border-radius:15px;-webkit-box-shadow:3px 3px 10px rgba(0,0,0,0.363);box-shadow:3px 3px 10px rgba(0,0,0,0.363);border:1px solid #E8E8E8;background:white;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-ms-flex-line-pack:center;align-content:center;-o-align-content:center;-ms-align-content:center;-moz-align-content:center;-webkit-align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-toast-parent>div>div{padding:8px}.tutor-toast-parent>div>div:nth-child(1),.tutor-toast-parent>div>div:nth-child(3){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-toast-parent>div>div:nth-child(2){-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-toast-parent>div img{width:100%;height:auto}.tutor-toast-parent>div b{font-weight:600;display:block}.tutor-toast-parent>div span{color:#333}.tutor-toast-parent>div i{cursor:pointer;font-size:14px}body.rtl .tutor-toast-parent{right:auto;left:50px}
|
|
|
|
assets/css/tutor-front.css
CHANGED
@@ -11455,5 +11455,3 @@ body.rtl .tutor-toast-parent {
|
|
11455 |
right: auto;
|
11456 |
left: 50px;
|
11457 |
}
|
11458 |
-
|
11459 |
-
/*# sourceMappingURL=tutor-front.css.map */
|
11455 |
right: auto;
|
11456 |
left: 50px;
|
11457 |
}
|
|
|
|
assets/css/tutor-front.min.css
CHANGED
@@ -1,3 +1 @@
|
|
1 |
:root{--tutor-primary-color: #1B52D8;--tutor-primary-hover-color: #1b52a9;--tutor-text-color: #4B5981;--tutor-light-color: #B1B8C9;--tutor-primary-button-color: #3E64DE;--tutor-danger-button-color: #F44337;--tutor-success-button-color: #4BD863;--tutor-warning-button-color: #ED9700;--tutor-text-size: 16px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tutor-wrap{color:var(--tutor-text-color)}.tutor-wrap img{max-width:100%;height:auto}.tutor-custom-list-style{list-style:none;margin:0;padding:0}.tutor-custom-list-style li{position:relative;margin-bottom:5px;line-height:30px;padding-left:25px}.tutor-custom-list-style li:before{content:'\e90f';position:absolute;left:0;font-family:'tutor';color:var(--tutor-primary-color)}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:15px;height:15px;top:-6.5px;cursor:pointer}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.tutor-styled-radio>span{position:relative;padding-left:30px;cursor:pointer}.tutor-styled-radio>span::before{content:'';height:18px;width:18px;background:#F1F3F7;border:1px solid #DCDFE5;border-radius:50%;position:absolute;top:50%;margin-top:-9px;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:200ms;transition:200ms}.tutor-styled-radio>input{display:none !important}.tutor-styled-radio>input:checked+span::before{border:5px solid var(--tutor-primary-color)}.tutor-container{padding-left:15px;padding-right:15px;max-width:1140px;margin-right:auto;margin-left:auto;width:100%}.tutor-container.tutor-fluid{max-width:100%}.tutor-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-5,.tutor-col-6,.tutor-col-7,.tutor-col-8,.tutor-col-9,.tutor-col-12{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.tutor-col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.tutor-col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.tutor-col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.tutor-col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.tutor-col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.tutor-col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.tutor-col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.tutor-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-align-items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 991px){.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-6,.tutor-col-8,.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-col-md-100{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media (max-width: 767px){.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-6,.tutor-col-8,.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.tutor-segment-title,.tutor-single-course-segment .tutor-segment-title{font-size:18px;line-height:23px;font-weight:500;margin-bottom:13px;color:#000}.tutor-single-course-segment{margin-bottom:45px}.tutor-full-width-course-top h4,.tutor-full-width-course-top h5,.tutor-full-width-course-top h6{color:#000;font-weight:500}.tutor-full-width-course-top h6{font-size:14px}.tutor-leadinfo-top-meta{font-size:14px;margin-bottom:10px}.tutor-leadinfo-top-meta span{display:inline-block;margin-right:10px}.tutor-leadinfo-top-meta span i::before{margin-left:0}.tutor-leadinfo-top-meta i{margin-right:4px}.tutor-single-course-rating{color:#F8C51C;font-size:16px}.tutor-single-course-rating .tutor-single-rating-count{color:var(--tutor-text-color);font-weight:500}.tutor-single-course-rating .tutor-single-rating-count i{color:var(--tutor-light-color);font-style:normal;display:inline-block;margin-left:4px}.tutor-course-header-h1{font-size:36px;line-height:46px;color:var(--tutor-text-color);font-weight:500;margin:0 0 29px;padding:0}@media (max-width: 767px){.tutor-course-header-h1{font-size:26px;line-height:36px}}.tutor-course-summery{margin-bottom:40px}.tutor-single-course-meta{color:var(--tutor-text-color)}.tutor-single-course-meta ul{list-style:none;margin:0;padding:10px 0;overflow:hidden;line-height:21px}.tutor-single-course-meta.tutor-meta-top ul{padding-top:0;padding-bottom:15px}.tutor-single-course-meta ul li{float:left;vertical-align:top;margin-right:40px;margin-top:5px;margin-bottom:5px;min-width:95px}@media (max-width: 575px){.tutor-single-course-meta ul li{margin-right:10px}}.tutor-single-course-meta ul li:last-child{margin-right:0}.tutor-single-course-meta .tutor-single-course-avatar img{height:21px;width:21px;display:block;border-radius:50%;margin-right:3px}.tutor-single-course-meta ul li .tutor-single-course-avatar span{height:21px;width:21px;font-size:9px;text-align:center;line-height:21px;border-radius:50%;display:block;color:#ffffff}.tutor-single-course-meta ul li>div{display:inline-block;vertical-align:top}.tutor-single-course-meta ul li strong{margin:0;display:inline-block;line-height:21px;font-weight:400;color:var(--tutor-light-color);font-size:var(--tutor-text-size)}.tutor-single-course-meta ul li a{color:var(--tutor-text-color);font-weight:500;-webkit-transition:300ms;transition:300ms}.tutor-single-course-meta ul li a:hover{color:var(--tutor-primary-color)}.tutor-single-course-meta.tutor-meta-top ul li,.tutor-single-course-meta.tutor-meta-top ul li a{font-weight:700}.tutor-single-course-meta ul li{font-weight:500;color:var(--tutor-text-color)}.tutor-single-course-meta ul li span{color:var(--tutor-light-color);font-weight:400}.tutor-single-course-meta.tutor-lead-meta{margin-bottom:33px;border-top:1px solid #DCDFE5;border-bottom:1px solid #DCDFE5}@media (max-width: 991px){.tutor-single-course-meta.tutor-lead-meta{border-bottom:none}.tutor-single-course-meta.tutor-lead-meta ul{padding-bottom:0}.tutor-single-course-meta.tutor-lead-meta ul li{margin:5px;padding:5px 15px;border:1px solid #ddd;border-radius:4px}}.tutor-single-course-meta.tutor-lead-meta ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 991px){.tutor-single-course-meta.tutor-lead-meta ul{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}}.tutor-single-course-meta.tutor-lead-meta ul li span{display:block;margin-bottom:5px;color:var(--tutor-light-color)}.tutor-single-course-meta.tutor-lead-meta ul li a{color:var(--tutor-text-color);-webkit-transition:300ms;transition:300ms}.tutor-single-course-meta.tutor-lead-meta ul li a:hover{color:var(--tutor-primary-color)}.tutor-single-course-meta.tutor-lead-meta ul li a:not(:last-child):after{content:',';margin-right:4px}@media (max-width: 575px){.tutor-single-course-meta.tutor-lead-meta ul{display:block}.tutor-single-course-meta.tutor-lead-meta ul li{display:block;border:none;margin:0;width:100%;padding:0 0 10px}.tutor-single-course-meta.tutor-lead-meta ul li span{display:inline-block;color:var(--tutor-text-color);font-weight:700}.tutor-single-course-meta.tutor-lead-meta ul li span::after{content:':';color:var(--tutor-text-color)}}.tutor-course-benefits-content ul{list-style:none;display:block;overflow:hidden;-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:30px;-moz-column-gap:30px;column-gap:30px;margin:0}.tutor-course-topics-header{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.tutor-course-topics-header .tutor-course-topics-header-right span:not(:first-child){margin-left:45px}.tutor-course-topics-contents h4{font-size:var(--tutor-text-size);font-weight:500;margin-bottom:0;color:var(--tutor-text-color)}.tutor-course-topics-contents .tutor-course-title{cursor:pointer}.tutor-course-topics-contents .tutor-course-title h4{color:var(--tutor-primary-color);font-size:16px;line-height:25px;overflow:hidden;margin-top:0}.tutor-course-topic.tutor-active .tutor-course-title h4>i:before{content:"\e910"}.tutor-course-topics-contents .tutor-course-title h4 i{font-size:15px;line-height:25px;float:left;margin-right:10px}.tutor-course-topics-contents .tutor-course-topic{border:1px solid #DCE4E6;margin-bottom:20px;border-radius:5px;overflow:hidden}.tutor-course-title,.tutor-course-lesson{padding:14px 20px}.tutor-course-lesson{border-top:1px solid #DCE4E6}.tutor-course-lesson h5{line-height:22px;font-size:var(--tutor-text-size);margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;color:inherit;margin-top:0}.tutor-course-lesson h5 a{color:var(--tutor-primary-color);-webkit-transition:300ms;transition:300ms}.tutor-course-lesson h5 a:hover{color:var(--tutor-primary-hover-color)}.tutor-course-lesson h5 i{line-height:22px;vertical-align:text-top;margin-right:10px;color:var(--tutor-light-color);display:block}.tutor-course-lesson h5 .lesson-preview-icon i{margin-right:0;margin-left:10px}.tutor-course-lesson h5 .tutor-lesson-duration{margin-left:auto;padding-left:5px;-ms-flex-item-align:start;align-self:flex-start}.tutor-course-lesson .lesson-preview-title{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}table.course-single-gradebooks .datetime{margin:0;font-size:80%}.tutor-course-lessons .tutor-course-lesson h5 i.tutor-lesson-thumbnail-icon{height:50px;width:70px;border-radius:3px;text-align:center;line-height:50px;color:#fff;margin-right:10px;position:relative;z-index:1;overflow:hidden;font-size:20px;background-position:center center !important;background-size:cover !important}.tutor-course-lessons .tutor-course-lesson h5 i.tutor-lesson-thumbnail-icon:after{position:absolute;content:'';left:0;top:0;height:100%;width:100%;background:rgba(0,0,0,0.5);z-index:-1}.tutor-single-lesson-button-group,.tutor-topics-lesson-list .tutor-topics-in-single-lesson{border-radius:4px;margin-bottom:30px;border:1px solid #e8eff1}.tutor-single-lesson-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.tutor-lesson-sidebar{-webkit-box-flex:0;-ms-flex:0 0 400px;flex:0 0 400px}@media (max-width: 991px){.tutor-lesson-sidebar{position:absolute;left:0;top:70px;width:400px;max-width:95%;height:calc(100% - 70px);z-index:9;background:#fff;overflow-y:auto;display:none}}.tutor-spotlight-mode .tutor-lesson-sidebar{position:fixed;left:0;width:400px;height:100vh;overflow-y:scroll;background:#f4f8fa}.tutor-spotlight-mode #tutor-single-entry-content{padding-left:400px;min-height:calc(100vh - 46px)}.tutor-spotlight-mode #tutor-single-entry-content.sidebar-hidden{padding-left:0}@media (max-width: 991px){.tutor-spotlight-mode .tutor-lesson-sidebar{position:absolute;width:350px;height:auto}.tutor-spotlight-mode #tutor-single-entry-content{padding-left:0}}.admin-bar .tutor-spotlight-mode .tutor-lesson-sidebar{height:calc(100vh - 32px)}.tutor-single-entry-content{-webkit-box-flex:999;-ms-flex-positive:999;flex-grow:999}.tutor-single-lesson-button-group .tutor-single-lesson-button a,.tutor-topics-in-single-lesson .tutor-single-lesson-items a{padding:14px 100px 14px 17px;display:-webkit-box;display:-ms-flexbox;display:flex;color:var(--tutor-text-color);position:relative;border-top:1px solid #e8eff1}.tutor-single-lesson-button-group .tutor-single-lesson-button:first-child a{border-top:none}.tutor-lessons-under-topic .tutor-single-lesson-items.active a{background:rgba(233,235,238,0.35)}.tutor-topics-in-single-lesson{margin-bottom:5px;background-color:#ffffff;padding:0}.tutor-topics-in-single-lesson .tutor-single-lesson-items a span{margin:0;display:inline;color:var(--tutor-text-color)}.tutor-topics-in-single-lesson .tutor-topics-title{position:relative}.tutor-topics-in-single-lesson .tutor-topics-title button{position:absolute;right:15px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);padding:0 5px;font-size:16px;background:transparent;border:none;color:var(--tutor-text-color)}.tutor-topics-in-single-lesson.tutor-topic-active .tutor-topics-title button i::before{content:"\e910"}.tutor-topics-in-single-lesson .tutor-topics-title h3{margin:0;padding:10px 37px 10px 17px;font-size:16px;color:var(--tutor-primary-color);font-weight:500}.tutor-topics-in-single-lesson .tutor-topics-title h3{cursor:pointer;line-height:30px}span.toogle-informaiton-icon{background:#ccc;color:#fff;height:15px;width:15px;text-align:center;display:inline-block;line-height:15px;font-size:15px;border-radius:50%;margin-left:10px}.tutor-topics-in-single-lesson .tutor-topics-title h3 i{font-size:10px;margin-left:6px}.tutor-topics-in-single-lesson .tutor-topics-tutor-loop-rating-wraptitle h3 i{font-size:10px;vertical-align:middle;display:inline-block;padding:5px;color:#c7c7c7;-webkit-transition:300ms;transition:300ms;cursor:pointer}.tutor-topics-in-single-lesson .tutor-topics-title h3 i:hover{color:var(--tutor-primary-color)}.tutor-single-lesson-button-group .tutor-single-lesson-button a>i:first-child,.tutor-topics-in-single-lesson .tutor-single-lesson-items a>i:first-child{color:#c7c7c7;line-height:22px;display:inline-block;vertical-align:middle;margin-right:10px}.tutor-topics-in-single-lesson .tutor-single-lesson-items a>i.tutor-icon-doubt{color:var(--tutor-primary-color)}.tutor-topics-in-single-lesson .tutor-topics-summery{padding:14px;border-top:1px solid #dce4e6;display:none}.tutor-lessons-under-topic .tutor-lesson-right-icons{position:absolute;right:15px;top:14px}.tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete{height:16px;width:16px;border:1px solid #e8eff1;border-radius:50%;font-size:9px;display:inline-block;line-height:16px;text-align:center;margin:0;vertical-align:middle;margin-left:8px}.tutor-lessons-under-topic .tutor-single-lesson-items.active .tutor-lesson-right-icons .tutor-lesson-complete{border-color:#b7d6b7}.tutor-lessons-under-topic .tutor-single-lesson-items.active .tutor-lesson-right-icons .tutor-lesson-complete.tutor-done,.tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete.tutor-done{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);color:#fff}.tutor-lessons-under-topic .tutor-lesson-right-icons i{font-style:normal}.tutor-single-page-top-bar{background-color:var(--tutor-primary-color);height:70px;margin-bottom:50px;color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding-right:15px}.tutor-single-page-top-bar .tutor-single-lesson-segment form,.tutor-single-page-top-bar .tutor-single-lesson-segment{margin-bottom:0}.tutor-single-page-top-bar a{color:#ffffff;vertical-align:middle;display:inline-block;overflow:hidden}.tutor-single-page-top-bar a i{float:left}@media (max-width: 546px){.tutor-single-page-top-bar a{font-size:14px}}.tutor-topbar-home-btn i{margin-right:7px}.tutor-topbar-home-btn{margin-left:20px}@media screen and (max-width: 546px){.tutor-topbar-home-btn{margin-left:10px}}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{background:transparent;color:#fff;padding-bottom:13px;cursor:pointer;border:1px solid #fff}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button i{font-size:14px}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button i::before{display:block;padding-top:2px}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button:hover{color:#fff;background:var(--tutor-primary-hover-color);border-color:var(--tutor-primary-hover-color)}.tutor-single-page-top-bar a:hover{color:#ffffff}.tutor-single-page-top-bar .tutor-topbar-content-title-wrap{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:999999;-ms-flex-positive:999999;flex-grow:999999}.tutor-single-page-top-bar .tutor-hide-sidebar-bar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-single-page-top-bar .tutor-topbar-mark-to-done{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}@media (max-width: 767px){.tutor-single-page-top-bar .tutor-topbar-content-title-wrap{display:none}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{padding:9px 14px}}@media (max-width: 767px){.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{padding:7px 12px;font-size:14px}}.tutor-single-page-top-bar .tutor-topbar-content-title-wrap i{vertical-align:middle;line-height:1;margin-right:3px}.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 100px 80px}@media (max-width: 1366px){.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 60px 80px}}@media (max-width: 991px){.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 40px}}.tutor-lesson-sidebar-hide-bar{background-color:var(--tutor-primary-hover-color);color:#ffffff;padding:0 12px;display:inline-block;line-height:70px}@media only screen and (max-width: 546px){.tutor-lesson-sidebar-hide-bar{padding:0 10px}}.tutor-single-page-top-bar a.tutor-lesson-sidebar-hide-bar i{font-size:20px;display:block;padding:25px 0}@media only screen and (max-width: 546px){.tutor-single-page-top-bar a.tutor-lesson-sidebar-hide-bar i{font-size:19px}}.sidebar-hidden a.tutor-lesson-sidebar-hide-bar .tutor-icon-angle-left:before{content:"\e903"}.tutor-sidebar-tabs-wrap{border-top:1px solid #e0e9ec}.tutor-tabs-btn-group{height:70px;display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-tabs-btn-group a{background-color:#f1f6f8;color:var(--tutor-text-color);display:block;line-height:70px;width:100%;text-align:center;border:1px solid #e0e9ec;border-top:none}.tutor-tabs-btn-group a span,.tutor-tabs-btn-group a i{font-size:24px;display:inline-block;vertical-align:top;line-height:70px}.tutor-tabs-btn-group a i{color:var(--tutor-primary-color)}.tutor-tabs-btn-group a span{font-size:15px;padding-left:3px}.tutor-tabs-btn-group a.active{background-color:#ffffff;border:none}.tutor-tabs-btn-group a:focus{outline:none}.tutor-single-lesson-segment{margin-bottom:35px}.tutor-single-lesson-wrap{background:#f4f8fa}.tutor-lesson-video-wrap .plyr--video{border-radius:4px}#tutor-lesson-sidebar-qa-tab-content{background-color:#ffffff;padding:20px}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap{border-top:1px solid #e8eff1;padding-top:25px}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap h3{color:var(--tutor-primary-color)}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap button.tutor_ask_question_btn{display:block;width:100%;background-color:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}#tutor-lesson-sidebar-qa-tab-content .tutor_question_answer_wrap .tutor_original_question{margin-bottom:20px;margin-top:20px}.tutor-lesson-sidebar-emptyqa-wrap{text-align:center;padding:50px 20px;color:var(--tutor-text-color)}.tutor-lesson-sidebar-emptyqa-wrap h3{margin:0;padding:0 0 25px}.tutor-lesson-sidebar-emptyqa-wrap i{font-size:150px;color:#e8eff1;line-height:0.8}.tutor-attachments-wrap{margin:-3px -3px 15px -3px}.tutor-attachments-wrap .tutor-lesson-attachment{display:inline-block;border:1px solid #e8eff1;border-radius:4px;padding:10px 16px 10px 12px;overflow:hidden;background:#f4f7f8;margin:3px;-webkit-transition:300ms;transition:300ms}.tutor-attachments-wrap .tutor-lesson-attachment:hover{-webkit-box-shadow:0 2px 4px rgba(0,0,0,0.15);box-shadow:0 2px 4px rgba(0,0,0,0.15)}.tutor-attachments-wrap .tutor-attachment-icon{font-size:30px;float:left;color:var(--tutor-text-color)}.tutor-attachments-wrap .tutor-attachment-icon i{display:block}.tutor-attachment-info{padding-left:10px;float:left}.tutor-attachment-info span{display:block;font-size:14px;line-height:16px;color:var(--tutor-text-color)}.tutor-attachment-info span+span{font-size:11px;color:var(--tutor-light-color)}.tutor-progress-bar-wrap{width:100%;margin:0 0 30px;display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-progress-bar{height:8px;color:#000000;line-height:25px;position:relative;background:#f1f1f1;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;border-radius:30px;margin-top:7.5px}.tutor-progress-bar .tutor-progress-filled{background-color:var(--tutor-primary-color);height:8px;border-radius:30px;width:var(--tutor-progress-left)}.tutor-dashboard-content-inner .tutor-progress-bar{margin-top:9.5px;height:5px}.tutor-dashboard-content-inner .tutor-progress-bar .tutor-progress-filled{height:5px}.tutor-progress-bar .tutor-progress-filled:after{content:"";position:absolute;height:15px;width:15px;border:7.5px solid var(--tutor-primary-color);border-radius:50%;background:#fff;left:var(--tutor-progress-left);-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);top:50%;-webkit-box-sizing:border-box;box-sizing:border-box}.tutor-progress-percent{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none;padding-left:20px}.tutor-course-purchase-box{margin-bottom:0}.tutor-price-preview-box .tutor-course-purchase-box button{display:block;width:100%;background:var(--tutor-primary-color);border-radius:3px;text-transform:uppercase;font-weight:500;cursor:pointer}.tutor-price-preview-box .tutor-course-purchase-box button i{margin-right:8px}.tutor-price-preview-box .tutor-course-enrolled-wrap,.tutor-price-preview-box .tutor-course-login-wrap,.tutor-price-preview-box .tutor-course-login-wrap form,.tutor-course-purchase-box form{margin-bottom:0}.tutor-price-preview-box .tutor-course-material-includes-wrap{margin-bottom:25px}.tutor-alert-warning.tutor-instructor-alert{padding:25px 25px 15px}.tutor-lead-info-btn-group{display:block;overflow:hidden;margin:0 -20px 25px;border-bottom:1px solid rgba(220,223,229,0.4);padding:0 20px 30px}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{display:block;margin-top:15px}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap form{margin:0}.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button{display:block;padding:18px 20px;border:none;text-align:center;border-radius:4px;text-transform:uppercase;line-height:1;-webkit-transition:300ms;transition:300ms;font-weight:700}.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{width:100%;text-align:center;display:block}@media (max-width: 991px){.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{width:auto}}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button{display:block;width:100%;background:#e8eff1;color:var(--tutor-light-color)}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button:hover{background:var(--tutor-primary-color);color:#ffffff}.tutor-single-add-to-cart-box .tutor-enroll-form{margin:0}.tutor-single-add-to-cart-box .tutor-enroll-form .tutor-course-enroll-wrap{padding:0}.tutor-single-add-to-cart-box .tutor-enroll-form .tutor-course-enroll-wrap button{display:block;width:100%;text-align:center}.tutor-single-add-to-cart-box.cart-required-login{position:relative}.tutor-single-add-to-cart-box.cart-required-login:before{position:absolute;content:"";top:0;bottom:0;left:0;right:0;z-index:99;cursor:pointer}.tutor-course-enrolled-review-wrap .write-course-review-link-btn{color:#fff;background-color:var(--tutor-primary-color);border-color:var(--tutor-primary-color);display:inline-block;padding:15px 30px;border-radius:4px;text-transform:capitalize;line-height:1;-webkit-transition:300ms;transition:300ms}.tutor-course-enrolled-review-wrap .write-course-review-link-btn:hover{background-color:var(--tutor-primary-hover-color);border-color:var(--tutor-primary-hover-color)}.tutor-course-enrolled-review-wrap .tutor-form-group{margin-bottom:10px}.tutor-course-enrolled-review-wrap .tutor-form-group textarea{height:120px;background:#f7f7f7;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;border-radius:4px;line-height:1.5;text-indent:0;padding:15px}.tutor-write-review-form{margin-top:30px}.tutor-form-row{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-15px;margin-right:-15px}.tutor-form-col-4,.tutor-form-col-6,.tutor-form-col-12{padding-left:15px;padding-right:15px}.tutor-form-col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-form-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-form-col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%;max-width:33.3333%}@media (max-width: 768px){.tutor-form-row{-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-form-col-4,.tutor-form-col-6,.tutor-form-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}ul.tutor-required-fields{list-style:none;padding:10px;margin:0}.tutor-star-rating-group{color:#f4c150;display:inline-block;text-align:left}.tutor-star-rating-group i{margin-right:4px}@media (max-width: 546px){.tutor-write-review-box .tutor-star-rating-group{font-size:26px;display:block;text-align:center}}.tutor-write-review-box .tutor-star-rating-group i{margin-right:4px;cursor:pointer}.tutor-queston-and-answer-wrap{margin:20px 0}.tutor-question-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:20px;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.tutor-ask-question-btn{text-align:right}.tutor-question-search-form{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%}.tutor-question-search-form form{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-question-search-form input[type="text"]{max-width:60%}.tutor-add-question-wrap{margin:20px 0}.tutor-add-question-wrap .tutor-form-group{margin-bottom:10px}.tutor_question_cancel{margin-right:5px}.updating-icon:before{font-family:"tutor";margin-right:5px;content:"\e91d";-webkit-animation:spin 1s steps(8) infinite;animation:spin 1s steps(8) infinite;display:inline-block}.loading-lesson .tutor-lesson-video-wrap:before{font-family:"tutor";content:"\e91d";-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;z-index:9;position:absolute;left:50%;top:50%;font-size:50px;margin-left:-25px;margin-top:-12px}.loading-lesson .tutor-lesson-video-wrap:after{position:absolute;content:"";top:0;left:0;background:rgba(255,255,255,0.8);width:100%;height:100%}.tutor-lesson-video-wrap{position:relative}.tutor_question_area{padding:25px 20px;background:#f4f7f8;border-radius:4px}.tutor_question_area p:last-child{margin-bottom:0}.tutor_add_answer_row{text-align:right;margin-top:20px}.tutor_add_answer_row .tutor-form-group:last-child{margin-top:20px}.tutor_admin_answers_list_wrap+.tutor_add_answer_row,.tutor_admin_answers_list_wrap{margin-left:100px}@media (max-width: 991px){.tutor_admin_answers_list_wrap+.tutor_add_answer_row,.tutor_admin_answers_list_wrap{margin-left:30px}}.tutor_original_question{margin-bottom:30px}.tutor_admin_answers_list_wrap .tutor_individual_answer{margin-bottom:40px}.tutor_admin_answers_list_wrap .tutor_question_area{background:#edf9f1}.question-top-meta .tutor-question-avater a{display:inline-block}.question-top-meta .tutor-question-avater a span{height:50px;width:50px;border-radius:50%;display:block;line-height:50px;text-align:center;font-size:17px}.question-top-meta .tutor-question-avater a img{width:50px;height:50px;border-radius:50%}.question-top-meta{overflow:hidden;margin-bottom:20px}.question-top-meta .tutor-question-avater{float:left}.question-top-meta .review-meta{float:left;margin-bottom:0;margin-left:10px}.question-top-meta .review-meta a{display:block;font-size:18px;color:var(--tutor-text-color);line-height:20px}.question-top-meta .review-meta span{color:var(--tutor-light-color);vertical-align:text-top;display:block}.tutor_wp_editor_wrap .tutor-form-group a.tutor-button{margin-right:6px}.tutor-no-announcements{text-align:center}.tutor-announcement-meta{margin-bottom:10px;font-size:13px}.tutor-announcement{border:1px solid #eee;padding:20px;margin-top:30px;border-radius:4px}.announcement-delete-btn{float:right}.announcement-delete-btn a{color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms}.announcement-delete-btn a:hover{color:red}.tutor-announcement-title-wrap h3{color:var(--tutor-text-color);font-weight:500;margin-bottom:10px}.tutor-quiz-header span{background:#f88f1c;color:#ffffff;display:inline-block;padding:4px 10px;border-radius:4px;line-height:1;text-transform:uppercase;font-size:10px}.tutor-quiz-header h2{color:var(--tutor-text-color);font-size:36px;line-height:46px;font-weight:500;margin-bottom:15px}.tutor-quiz-header h5{color:var(--tutor-light-color)}.tutor-quiz-header h5 a{color:var(--tutor-text-color);font-weight:500}.tutor-quiz-header .tutor-quiz-meta{list-style:none;margin:20px 0 40px;padding:15px 0;border-top:1px solid #dcdfe5;border-bottom:1px solid #dcdfe5;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-header .tutor-quiz-meta li{display:inline-block;color:var(--tutor-text-color)}.tutor-quiz-header .tutor-quiz-meta li strong{display:block;color:var(--tutor-light-color);font-weight:400}@media (max-width: 767px){.tutor-quiz-header .tutor-quiz-meta{display:block;border:none;padding:0}.tutor-quiz-header .tutor-quiz-meta li{display:block;color:var(--tutor-text-color);margin:5px;border:none;padding:0;border-radius:0}.tutor-quiz-header .tutor-quiz-meta li strong{display:inline-block;margin-right:5px}}@media (max-width: 1199.98px){.tutor-quiz-attempt-history{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}}.tutor-quiz-attempt-history-title{font-size:18px;color:var(--tutor-light-color);line-height:23px;font-weight:500;margin-bottom:15px;margin-top:70px}.tutor-quiz-attempt-history table{border-collapse:collapse;border-radius:4px;margin-bottom:0}.tutor-quiz-attempt-history th{font-weight:400}.tutor-quiz-attempt-history table,.tutor-quiz-attempt-history th,.tutor-quiz-attempt-history td{border:1px solid #e8eff1;padding:10px !important}.tutor-quiz-attempt-history table span.result-fail,.tutor-quiz-attempt-history table span.result-pass{display:inline-block;color:#fff;border-radius:2px;width:47px;height:26px;line-height:26px;text-align:center}.tutor-quiz-attempt-history table span.result-fail{background:#df3247}.tutor-quiz-attempt-history table span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-history table span.result-review-required{background:#f5b30d;padding:3px 5px;color:#fff;border-radius:2px;text-align:center;font-size:90%}.quiz-head-meta-info{color:var(--tutor-light-color);margin-bottom:40px}.quiz-head-meta-info span{color:var(--tutor-text-color)}#tutor-quiz-attempt-questions-wrap{margin-bottom:50px}.tutor-quiz-single-wrap .question-text{color:var(--tutor-text-color);font-size:20px;font-weight:600}.tutor-quiz-single-wrap .question-description{color:var(--tutor-text-color)}.quiz-attempt-single-question{margin-bottom:80px}.fill-in-the-blank-field .fill-in-the-blank-text-input{display:inline;border-top:none;border-left:none;border-right:none;border-bottom:1px dashed;background-color:transparent;padding:0px;border-radius:0;-webkit-box-shadow:none;box-shadow:none;margin:0 10px}.fill-in-the-blank-field .fill-in-the-blank-text-input:focus{background:none;outline:none}.tutor-quiz-answers-wrap{margin-bottom:50px}.tutor-quiz-answers-wrap textarea{background:transparent;border:1px solid #d4dadb;height:175px;border-radius:5px;-webkit-box-shadow:none;box-shadow:none;min-width:100%;margin-bottom:5px}.tutor-quiz-answers-wrap textarea:focus{background:transparent;outline:none !important}.tutor-quiz-answers-wrap p{margin:0;line-height:26px}.quiz-answer-input-body .quiz-answer-image-wrap{margin-top:10px;margin-bottom:10px;max-width:200px}.quiz-answer-image-wrap img{max-width:100%;height:auto}.tutor-quiz-answers-wrap label{display:block;margin-bottom:15px;cursor:pointer}.tutor-quiz-answers-wrap label.answer-view-image,.tutor-quiz-answers-wrap label.answer-view-text_image{text-align:center;margin:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;max-width:25%}.quiz-answer-input-bottom{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:20px}.quiz-answer-input-bottom.wrong-answer{color:#e27c89}.quiz-answer-input-bottom.wrong-answer .quiz-answer-input-field{border:1px solid #e27c89;padding:5px 10px}.quiz-answer-input-bottom.right-answer{color:#86b324}.quiz-answer-input-bottom.right-answer .quiz-answer-input-field{border:1px solid #bbd58c;padding:5px 10px}.wrong-right-text{padding:5px 10px}.tutor-quiz-answers-wrap label input{display:none}.tutor-quiz-answers-wrap label input+span{width:20px;height:20px;border:1px solid #dedede;display:inline-block;border-radius:2px;position:relative;margin-right:5px}.tutor-quiz-answers-wrap label input:checked+span{background:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}.tutor-quiz-answers-wrap label input:checked+span:after{content:"\e90f";position:absolute;font-family:"tutor";color:#fff;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);font-size:11px;line-height:1}.tutor-quiz-answers-wrap label input[type="radio"]+span{content:"";border-radius:50%;margin-right:4px;vertical-align:top;font-size:1em}.tutor-quiz-answers-wrap label input[type="radio"]+span:after{content:"";height:8px;width:8px;background:#fff;border-radius:50%;left:50%}.question-type-ordering-item{border:1px solid #d4dadb;padding:10px;margin-bottom:10px;width:250px;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.question-type-ordering-item.ui-sortable-placeholder{background-color:transparent}.question-type-ordering-item .answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.question-type-ordering-item .answer-sorting-bar{cursor:pointer}.quiz-answer-item-matching{padding:10px;display:-webkit-box;display:-ms-flexbox;display:flex;width:25%}.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{display:inline-block;max-width:none;width:25%;padding:0 10px;vertical-align:top}@media (max-width: 767px){.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{width:50%}}@media (max-width: 575px){.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{width:100%}}.answer-type-matching .quiz-answer-matching-items-wrap{margin:0 -10px}.quiz-answer-matching-droppable{height:48px;min-width:200px;border:1px dashed #d4dadb}.quiz-draggable-answer-item{padding:10px 20px;border:1px solid #d4dadb;margin-right:10px;margin-bottom:10px;background-color:#fff;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.quiz-draggable-answer-item .draggable-answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.quiz-draggable-rand-answers{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:80px}.drop-hover{display:none}.quiz-answer-matching-droppable .drop-hover{background-color:#eeeeee;height:100%;width:100%;display:inline-block;float:left}.quiz-answer-matching-droppable .quiz-draggable-answer-item{width:100%;max-width:100%}.quiz-draggable-answer-item .draggable-answer-icon{margin-left:15px}.answer-type-image_matching .quiz-answer-item-matching{display:block}.answer-type-image_matching .quiz-answer-matching-items-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-10px;margin-right:-10px}.answer-type-image_matching .quiz-answer-matching-droppable{width:100%;min-width:100%}.answer-type-image_matching img{width:100%;height:auto}.tutor-quiz-questions-pagination ul{margin:0;padding:0;list-style:none}.tutor-quiz-questions-pagination ul li{display:inline-block}.tutor-quiz-questions-pagination ul li a{background-color:var(--tutor-primary-color);padding:7px 13px;display:block;border-radius:50%;margin-right:10px;color:#ffffff}.tutor-quiz-questions-pagination ul li a:hover,.tutor-quiz-questions-pagination ul li a.active{background-color:var(--tutor-primary-color)}.quiz-image-answering-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-left:-10px;margin-right:-10px}.quiz-image-answering-wrap img{max-width:100%;height:auto}.quiz-image-answering-answer{margin-right:10px;margin-left:10px;width:15%}.quiz-image-answering-image-wrap{margin-bottom:20px}.tutor-quiz-answers-wrap .quiz-image-answering-input-field-wrap input{width:100%;display:block;border:1px solid #d4dadb;-webkit-box-shadow:none;box-shadow:none;background:transparent;border-radius:2px;height:42px}.tutor-quiz-answers-wrap .quiz-image-answering-input-field-wrap input:focus{background:transparent;outline-offset:0 !important}.tutor-next-previous-pagination-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-next-previous-pagination-wrap a{color:var(--tutor-primary-color)}.tutor-course-filter-wrapper{overflow:auto;max-width:1140px !important;margin:0 auto !important}.tutor-course-filter-wrapper>div{padding:12px}.tutor-course-filter-wrapper>div:first-child{width:250px;float:left}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field{border:1px solid #BABABA;border-radius:6px;overflow:hidden;padding:0 6px;height:auto}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input,.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input:focus,.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input:active{border:none;outline:0;padding:0;display:inline-block;width:calc(100% - 24px);font-weight:normal;font-size:16px;color:#7A7A7A;height:35px}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field i{font-size:17px;cursor:pointer;color:#3E64DE}.tutor-course-filter-wrapper>div:first-child h4{font-weight:normal;font-size:20px;color:#161616;margin:16px 0px 12px}.tutor-course-filter-wrapper>div:first-child label{display:block;cursor:pointer;font-weight:normal;font-size:16px;color:#353535}.tutor-course-filter-wrapper>div:last-child{width:calc(100% - 250px);float:right}.tutor-course-filter-wrapper>div:last-child select[name=tutor_course_filter]{border:1px solid #7A7A7A;color:#7A7A7A;padding:3px 4px;font-size:16px;border-radius:6px;cursor:pointer}.tutor-course-filter-wrapper>div .tutor-course-filter-loop-container{display:none}.tutor-course-filter-wrapper .tutor-clear-all-filter{margin-top:28px;display:none}.tutor-course-filter-wrapper .tutor-clear-all-filter>a{height:21px;background:#E8E8E8;border-radius:22px;line-height:21px;text-align:center;font-size:13px;font-weight:500;margin-top:20px;color:#7a7a7a;padding:5px 10px}.tutor-course-filter-wrapper .tutor-clear-all-filter a>i{font-size:10px}@media (max-width: 767px){.tutor-course-filter-wrapper>div{width:100% !important;float:none !important}.tutor-course-filter-wrapper .tutor-course-filter-container>div{overflow:auto}.tutor-course-filter-wrapper .tutor-course-filter-container>div>div{width:50%;float:left}.tutor-course-filter-wrapper .tutor-course-filter-container>div>div:first-child{width:100%}}div[class*="tutor-course-col"]{padding-left:15px;padding-right:15px;margin-bottom:30px}.tutor-course-loop{background:#fff;color:#29303b;overflow:hidden;position:relative;vertical-align:top;border-radius:4px;-webkit-transition:300ms;transition:300ms;border:1px solid rgba(0,0,0,0.05);height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-course-loop a,.tutor-widget-course a{text-decoration:none !important}.tutor-course-header{position:relative}.tutor-course-loop-header-meta{position:absolute;left:0;top:13px;width:100%;padding-left:13px;padding-right:13px;overflow:hidden}.tutor-course-loop-header-meta .tutor-course-wishlist{float:right;background:#fff;font-size:19px;padding:5px 5px;border-radius:3px;-webkit-transition:300ms;transition:300ms}.tutor-course-loop-header-meta .tutor-course-wishlist a{display:block;color:var(--tutor-primary-color);-webkit-transition:300ms;transition:300ms}.tutor-course-loop-header-meta .tutor-course-wishlist:hover{background:var(--tutor-primary-color)}.tutor-course-loop-header-meta .tutor-course-wishlist:hover a{color:#fff}.tutor-course-loop-header-meta .tutor-course-wishlist a:focus{outline:none}.tutor-course-loop-header-meta .tutor-course-wishlist a.has-wish-listed:before{content:"\e908"}.tutor-course-loop-header-meta .tutor-course-wishlist a.updating-icon:before{content:"\e91d";margin-right:0}.tutor-course-loop-level{display:inline-block;background:#9013fe;padding:0 7px;color:#fff;font-size:12px;line-height:20px;border-radius:2px;-webkit-box-shadow:0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 1px rgba(0,0,0,0.1)}.tutor-course-loop:hover{-webkit-box-shadow:0 4px 23px rgba(0,0,0,0.1);box-shadow:0 4px 23px rgba(0,0,0,0.1)}.tutor-course-loop p{margin:0}.tutor-course-loop .tutor-course-header a,.tutor-course-loop .tutor-course-header a img{display:block;border-top-left-radius:4px;border-top-right-radius:4px}.tutor-loop-course-container{padding:25px 19px}.tutor-loop-rating-wrap{color:#f8c51c;margin-bottom:2px;font-size:16px}.tutor-rating-count{color:var(--tutor-text-color)}.tutor-rating-count i{font-style:normal;display:inline-block;margin-left:5px}.tutor-loop-rating-wrap i:before{margin-right:4px;margin-left:0}.tutor-course-loop-title h2{font-size:20px;line-height:28px;font-weight:600;margin-bottom:17px}.tutor-course-loop-title h2 a{color:var(--tutor-text-color)}.tutor-course-loop-title h2 a:hover{color:var(--tutor-primary-color)}.tutor-course-loop-meta{margin-bottom:15px;color:var(--tutor-text-color);font-size:var(--tutor-text-size)}.tutor-course-loop-meta>div{display:inline-block}.tutor-course-loop-meta>div i{font-size:16px;margin-right:4px}.tutor-course-loop-meta>div i,.tutor-course-loop-meta>div span{vertical-align:middle}.tutor-course-loop-meta>div+div{margin-left:10px}.tutor-loop-course-footer{padding:15px;border-top:1px solid rgba(0,0,0,0.05);color:#838791;font-size:12px;line-height:25px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;font-weight:400}.tutor-loop-course-footer:after{content:"";display:table;clear:both}.tutor-loop-course-footer span.woocommerce-Price-currencySymbol{vertical-align:top}.tutor-course-loop-price{color:var(--tutor-text-color);font-size:16px}.tutor-course-loop-price .price del{font-weight:400}.tutor-course-loop-price .price del span{text-decoration:line-through;color:var(--tutor-light-color)}.tutor-course-loop-price .price del>span{margin-right:6px}.tutor-course-loop-price .price del+ins{background:transparent;margin-left:0;text-decoration:none}.tutor-course-loop-price>.price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;font-weight:600;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-loop-price>.price .subscription-details{font-size:15px;margin-left:4px;font-weight:400}.tutor-course-loop-price>.price .subscription-details+.tutor-loop-cart-btn-wrap{margin-left:0;margin-top:4px}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a{color:var(--tutor-text-color);position:relative;line-height:20px;vertical-align:top;display:block;font-weight:400;background:transparent;padding:0}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a:hover{color:var(--tutor-primary-color)}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap{margin-left:auto}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a.added{display:none}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a::before{content:"\e915";font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:5px;vertical-align:top;color:var(--tutor-primary-color)}@-webkit-keyframes mymove{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mymove{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.tutor-course-loop:hover .tutor-loop-course-footer .tutor-loop-cart-btn-wrap{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-course-col-4{width:25%}.tutor-course-col-3{width:33.33%}.tutor-course-col-2{width:50%}.tutor-course-col-1{width:100%}.tutor-course-col-1 .tutor-course-loop{width:100%}.tutor-course-col-5{width:20%}.tutor-course-col-6{width:16.66%}@media (max-width: 991px){.tutor-course-col-6,.tutor-course-col-5,.tutor-course-col-4,.tutor-course-col-3,.tutor-course-col-2{width:50%}}@media (max-width: 575px){.tutor-course-col-6,.tutor-course-col-5,.tutor-course-col-4,.tutor-course-col-3,.tutor-course-col-2{width:100%}}.tutor-course-filter-wrap{margin-bottom:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-filter-form{display:inline-block;margin:0}.tutor-courses{clear:both;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-right:-15px;padding:0}.tutor-loop-course-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:100%}.clearfix:before,.clearfix:after{display:block;clear:both;content:""}.tutor-loop-author,.tutor-meta{color:#bac0cf}.tutor-text-mute{color:#bac0cf;font-weight:400}.tutor-loop-author{overflow:hidden;font-size:var(--tutor-text-size)}.tutor-loop-author .tutor-single-course-avatar img{width:25px;height:25px;display:block;border-radius:50%;margin-right:6px}.tutor-loop-author .tutor-single-course-avatar .tutor-text-avatar{height:25px;width:25px;display:inline-block;border-radius:50%;text-align:center;line-height:25px;font-size:11px;margin-right:6px}.tutor-loop-author>div{display:inline-block;float:left}.tutor-loop-author>div a{color:var(--tutor-text-color);font-weight:500;-webkit-transition:300ms;transition:300ms}.tutor-loop-author>div a:hover{color:var(--tutor-primary-color)}.tutor-loop-author>div span{display:inline-block;margin:0 2px 0 2px;color:var(--tutor-light-color);line-height:25px;font-weight:400}.tutor-course-lising-category a:not(:last-child):after{content:", ";margin-right:5px}.tutor-course-enrolled-wrap{margin:0 -20px -20px !important;padding:12px 20px;overflow:hidden;border-top:1px solid #dcdfe5;font-size:14px}.tutor-course-enrolled-wrap p{font-weight:600;margin:0}.tutor-course-enrolled-wrap p i{padding-right:9px;float:left;font-size:20px;line-height:20px}.tutor-course-enrolled-wrap p i,.tutor-course-enrolled-wrap p span{color:var(--tutor-success-button-color)}.tutor-notice-warning{background-color:#fcf8e3;border-color:#faebcc;padding:20px;margin-bottom:10px}.tutor-info-msg,.tutor-success-msg,.tutor-warning-msg,.tutor-error-msg{margin:10px 0;padding:10px;border-radius:3px 3px 3px 3px}.tutor-info-msg{color:var(--tutor-primary-color);background-color:#bef}.tutor-success-msg{color:var(--tutor-success-button-color);background-color:#dff2bf}.tutor-warning-msg{color:#9f6000;background-color:#feefb3}.tutor-error-msg{color:#d8000c;background-color:#fbdcdc;border:1px solid #d8000c}.cart-required-login,.cart-required-login a,.cart-required-login form{cursor:pointer}.single_add_to_cart_button,a.tutor-button,.tutor-button,a.tutor-btn,.tutor-btn{color:#fff;border:1px solid var(--tutor-primary-button-color);background-color:var(--tutor-primary-button-color);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 20px;border-radius:4px;text-transform:capitalize;line-height:20px;font-size:14px;font-weight:600;cursor:pointer;-webkit-transition:300ms;transition:300ms;overflow:hidden;vertical-align:top}.single_add_to_cart_button i,a.tutor-button i,.tutor-button i,a.tutor-btn i,.tutor-btn i{line-height:19px;margin-right:7px;font-size:16px}.single_add_to_cart_button.btn-sm,a.tutor-button.btn-sm,.tutor-button.btn-sm,a.tutor-btn.btn-sm,.tutor-btn.btn-sm{padding:9px 14px;line-height:19px}a.tutor-button.bordered-button,.tutor-button.bordered-button,a.tutor-btn.bordered-btn,.tutor-btn.bordered-btn{color:var(--tutor-primary-button-color);border:1px solid var(--tutor-primary-button-color);background-color:transparent !important}a.tutor-button.default-btn,.tutor-button.default-btn,a.tutor-btn.default-btn,.tutor-btn.default-btn{color:#393c40;border:1px solid #b8babe;background:var(--tutor-primary-button-color)}a.tutor-button.default-btn i,.tutor-button.default-btn i,a.tutor-btn.default-btn i,.tutor-btn.default-btn i{color:#fff}a.tutor-button.default-btn:hover,.tutor-button.default-btn:hover,a.tutor-btn.default-btn:hover,.tutor-btn.default-btn:hover{background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-color);color:#fff}a.tutor-button.default-btn:hover i,.tutor-button.default-btn:hover i,a.tutor-btn.default-btn:hover i,.tutor-btn.default-btn:hover i{color:#fff}a.tutor-button:hover,.tutor-button:hover,a.tutor-btn:hover,.tutor-btn:hover{background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-button-color);color:#fff;-webkit-filter:brightness(0.9);filter:brightness(0.9)}a.tutor-button.bordered-button:hover,.tutor-button.bordered-button:hover,a.tutor-btn.bordered-btn:hover,.tutor-btn.bordered-btn:hover{border:1px solid var(--tutor-primary-button-color);background-color:var(--tutor-primary-button-color) !important;color:#fff !important}a.tutor-button.button-light,.tutor-button.button-light{color:#b1b8c9;background-color:#dae4e6;border:1px solid #dae4e6}a.tutor-button.button-light:hover,.tutor-button.button-light:hover{color:#939bae;background-color:#e8eff1;border:1px solid #e8eff1}.tutor-button.tutor-danger{background-color:var(--tutor-danger-button-color);border-color:#e53935}.tutor-button.tutor-danger:hover{background-color:var(--tutor-danger-button-color);border-color:var(--tutor-danger-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-button.tutor-success{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color)}.tutor-button.tutor-success:hover{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-button.tutor-warning{background:var(--tutor-warning-button-color);border-color:var(--tutor-warning-button-color)}.tutor-button.tutor-warning:hover{background:var(--tutor-warning-button-color);border-color:var(--tutor-warning-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.course-enrolled-nav-wrap{border-bottom:1px solid #dedfe0;margin-bottom:45px}.tutor-button:disabled,.tutor-button[disabled],.tutor-button:disabled:hover,.tutor-button[disabled]:hover{display:block;border:0px;background-color:#DCDCE1;color:#737787;cursor:default}.tutor-button span{font-size:12px;display:block}.tutor-button-block{width:100%;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tutor-wrap{width:100%}.tutor-wrap nav.course-enrolled-nav ul{list-style:none;margin:0 0 -1px;padding:0}.tutor-wrap nav.course-enrolled-nav ul li{display:inline-block}.tutor-wrap nav.course-enrolled-nav ul li a{display:block;font-size:16px;padding:5px 0 20px;margin-right:20px;color:var(--tutor-light-color);border-bottom:2px solid transparent}.tutor-wrap nav.course-enrolled-nav ul li:not(:first-child) a{margin-left:20px}.tutor-wrap nav.course-enrolled-nav ul li.active a{border-bottom:2px solid var(--tutor-primary-color);color:var(--tutor-text-color)}@media (max-width: 575px){.tutor-wrap nav.course-enrolled-nav ul li{display:inline-block}.tutor-wrap nav.course-enrolled-nav ul li:not(:first-child) a,.tutor-wrap nav.course-enrolled-nav ul li a{padding:8px;margin:0}.tutor-wrap nav.course-enrolled-nav ul li.active a{border:none;color:var(--tutor-primary-color)}}.tutor-updating-message i{display:none}.tutor-profile-photo-upload-wrap{width:200px;height:auto;margin-bottom:70px;position:relative}.tutor-profile-photo-upload-wrap img{width:100%;height:auto;display:block}a.tutor-profile-photo-upload-btn,button.tutor-profile-photo-upload-btn{position:absolute;top:100%;background-color:var(--tutor-primary-color);color:#fff;display:block;width:100%;text-align:CENTER;padding:9px 0}a.tutor-profile-photo-upload-btn:hover,button.tutor-profile-photo-upload-btn:hover{background-color:var(--tutor-primary-hover-color);color:#fff}.tutor-profile-photo-delete-btn{position:absolute;color:#ff000c;right:10px;top:10px}.single-instructor-wrap{border:1px solid #e8eff1;margin-bottom:30px;border-radius:4px}.single-instructor-wrap .single-instructor-top{padding:20px;border-bottom:1px solid #e8eff1;display:-webkit-box;display:-ms-flexbox;display:flex}@media (max-width: 767px){.single-instructor-wrap .single-instructor-top{-ms-flex-wrap:wrap;flex-wrap:wrap}}.single-instructor-wrap .single-instructor-top h3,.single-instructor-wrap .single-instructor-top h4{margin:0;padding:0}.single-instructor-wrap .tutor-instructor-left{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:30px}@media (max-width: 767px){.single-instructor-wrap .tutor-instructor-left{width:100%;margin-bottom:15px}}.single-instructor-wrap .instructor-avatar{float:left}.single-instructor-wrap .instructor-avatar img{max-width:50px;height:auto;border-radius:50%}.single-instructor-wrap .instructor-name{float:left;padding-left:20px;max-width:180px}.single-instructor-wrap .instructor-name h3{font-size:16px;color:var(--tutor-text-color);font-weight:600}.single-instructor-wrap .instructor-name h3 a{font-weight:500;color:var(--tutor-text-color)}.single-instructor-wrap .instructor-name h4{font-weight:500;color:var(--tutor-light-color)}.single-instructor-wrap .single-instructor-bottom{padding:15px 20px;text-align:right;overflow:hidden}@media (max-width: 767px){.single-instructor-wrap .single-instructor-bottom{text-align:left}}.single-instructor-wrap .single-instructor-bottom p{margin:0}.single-instructor-wrap .single-instructor-bottom .ratings{float:left}.single-instructor-wrap .single-instructor-bottom .ratings i{margin-right:4px}.single-instructor-wrap .single-instructor-bottom .courses,.single-instructor-wrap .single-instructor-bottom .students{display:inline-block;margin-left:20px}.single-instructor-wrap .single-instructor-bottom .courses i,.single-instructor-wrap .single-instructor-bottom .students i{font-size:18px;display:inline-block;margin-right:2px;vertical-align:middle}.single-instructor-wrap .single-instructor-bottom .ratings .rating-total-meta{color:#bac0cf}.single-instructor-wrap .single-instructor-bottom .ratings .rating-generated{color:#f8c51c}.tutor-dashboard-pagination-results-stats{margin:10px 0 30px}.statement-address{margin:10px 0;color:#555}.statement-order-completed{background:var(--tutor-success-button-color);color:#fff;padding:2px 5px;border:none}.tutor-login-wrap{max-width:520px;margin:0 auto;padding:40px 55px;-webkit-box-shadow:0 0 15px rgba(0,0,0,0.1);box-shadow:0 0 15px rgba(0,0,0,0.1);border-radius:5px}.tutor-login-wrap form{margin:0}.tutor-login-wrap .tutor-login-title{margin-bottom:25px;padding:0 40px;text-align:center}.tutor-login-form-wrap{max-width:450px;margin:auto}.tutor-login-form-wrap p{margin-bottom:0}.tutor-login-form-wrap label{display:block !important;margin-bottom:4px}.tutor-login-form-wrap .tutor-alert{margin-bottom:20px}.tutor-login-form-wrap input[type="password"],.tutor-login-form-wrap input[type="text"]{width:100%;display:block;border:1px solid #e8eff1;-webkit-box-shadow:none;box-shadow:none;margin-bottom:20px;border-radius:4px;background:#eceef4;line-height:48px;padding:0;text-indent:15px}.tutor-login-form-wrap input[type="password"]:focus,.tutor-login-form-wrap input[type="text"]:focus{background:#ffffff;border-color:var(--tutor-primary-color)}.tutor-login-form-wrap input::-webkit-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input::-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input:-ms-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input:-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-rememeber-wrap{overflow:hidden;text-align:right;margin-bottom:30px}.tutor-login-rememeber-wrap p{display:inline-block;float:left}.tutor-login-rememeber-wrap p,.tutor-login-rememeber-wrap label{margin:0}.tutor-form-register-wrap a,.tutor-login-rememeber-wrap a,.tutor-login-rememeber-wrap label{color:#606c8f;vertical-align:middle;opacity:0.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";-webkit-transition:300ms;transition:300ms}.tutor-form-register-wrap a:hover,.tutor-login-rememeber-wrap a:hover,.tutor-login-rememeber-wrap label:hover{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input[type="submit"]{color:#fff;background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-button-color);padding:15px 30px;border-radius:4px;text-transform:uppercase;line-height:1;display:block;width:100%;-webkit-transition:300ms;transition:300ms}.tutor-login-form-wrap input[type="checkbox"]{margin-right:4px}.tutor-form-register-wrap{text-align:center;margin-top:15px}.tutor-course-login-wrap h4{font-size:42px;line-height:1.2;margin-bottom:20px;color:var(--tutor-text-color)}.tutor-cart-box-login-form{display:-webkit-box;display:-ms-flexbox;display:flex;position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.6);z-index:99;top:0;left:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.login-overlay-close{position:absolute;background:transparent;width:100%;height:100%;z-index:-1}.course-login-title{margin-bottom:50px}.tutor-cart-box-login-form .tutor-cart-box-login-form-inner{background:#fff;padding:50px 40px;position:relative;width:400px;font-size:16px;font-weight:400;max-height:90%;overflow:auto}.tutor-cart-box-login-form-inner button.tutor-popup-form-close{position:absolute;padding:0;margin:0;border:none;background-color:transparent;top:14px;right:20px;opacity:0.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";cursor:pointer;-webkit-transition:300ms;transition:300ms;color:var(--tutor-text-color)}.tutor-cart-box-login-form-inner button.tutor-popup-form-close:hover{color:red}.tutor-option-field-row label,.tutor-form-group label{display:block;margin-bottom:10px}.tutor-option-field textarea,.tutor-option-field select,.tutor-option-field input[type="text"],.tutor-option-field input[type="number"],.tutor-option-field input[type="pas.tutor-dashboard-content-innersword"],.tutor-form-group textarea,.tutor-form-group select,.tutor-form-group input[type="text"],.tutor-form-group input[type="number"],.tutor-form-group input[type="password"]{width:100%;display:block;border:1px solid #dcdfe5;-webkit-box-shadow:none;box-shadow:none;margin-bottom:20px;border-radius:4px;background:#ffffff;line-height:48px;padding:0;text-indent:15px;-webkit-transition:300ms;transition:300ms;font-size:16px}.tutor-form-group{position:relative}.tutor-form-group span.tutor-input-prepand{position:absolute;height:calc(100% - 2px);font-size:21px;line-height:50px;padding:0 12px;background:transparent;border-right:1px solid #dcdfe5;top:1px}.tutor-form-group span.tutor-input-prepand+input{padding-left:35px}.tutor-course-builder-form-elem{margin-bottom:20px}.tutor-option-field .select2-container,.tutor-form-group .select2-container{margin-bottom:20px;width:100% !important}.tutor-option-field .select2-container ul.select2-selection__rendered,.tutor-form-group .select2-container ul.select2-selection__rendered{padding:4px 9px;display:block}.tutor-option-field .select2-container li.select2-selection__choice,.tutor-form-group .select2-container li.select2-selection__choice{background:#ebeef0;color:#606c8f;line-height:29px;border-radius:3px;padding:0 9px;margin:5px;border:none;font-weight:600}.tutor-option-field .select2-container .select2-search__field,.tutor-form-group .select2-container .select2-search__field{padding:8px 3px 8px 6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.tutor-option-field .select2-container .select2-search__field::-webkit-input-placeholder,.tutor-form-group .select2-container .select2-search__field::-webkit-input-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field::-moz-placeholder,.tutor-form-group .select2-container .select2-search__field::-moz-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field:-ms-input-placeholder,.tutor-form-group .select2-container .select2-search__field:-ms-input-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field:-moz-placeholder,.tutor-form-group .select2-container .select2-search__field:-moz-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-selection--single,.tutor-option-field .select2-container .select2-selection--multiple,.tutor-form-group .select2-container .select2-selection--single,.tutor-form-group .select2-container .select2-selection--multiple{border-color:#dcdfe5}.tutor-option-field .select2-container.select2-container--focus .select2-selection--single,.tutor-option-field .select2-container.select2-container--focus .select2-selection--multiple,.tutor-form-group .select2-container.select2-container--focus .select2-selection--single,.tutor-form-group .select2-container.select2-container--focus .select2-selection--multiple{border-color:var(--tutor-primary-color)}.tutor-option-field textarea,.tutor-form-group textarea{line-height:26px;text-indent:0;padding:15px;height:180px}.tutor-option-field textarea:focus,.tutor-form-group textarea:focus,.tutor-option-field input:focus,.tutor-form-group input:focus{outline:none}.tutor-dashboard-course-builder-wrap .tutor-option-field textarea,.tutor-dashboard-course-builder-wrap .tutor-form-group textarea{height:100px}.tutor-option-field textarea:focus,.tutor-option-field input:not([type="submit"]):focus,.tutor-form-group textarea:focus,.tutor-form-group input:not([type="submit"]):focus{background:#ffffff;border-color:var(--tutor-primary-color)}.tutor-option-field textarea::-webkit-input-placeholder,.tutor-option-field input::-webkit-input-placeholder,.tutor-form-group textarea::-webkit-input-placeholder,.tutor-form-group input::-webkit-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea::-moz-placeholder,.tutor-option-field input::-moz-placeholder,.tutor-form-group textarea::-moz-placeholder,.tutor-form-group input::-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea:-ms-input-placeholder,.tutor-option-field input:-ms-input-placeholder,.tutor-form-group textarea:-ms-input-placeholder,.tutor-form-group input:-ms-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea:-moz-placeholder,.tutor-option-field input:-moz-placeholder,.tutor-form-group textarea:-moz-placeholder,.tutor-form-group input:-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field select,.tutor-form-group select{padding:2px 5px;height:50px}.tutor-form-group.tutor-reg-form-btn-wrap{text-align:right}.tutor-option-field p.desc{margin:-10px 0 20px;font-size:13px;font-style:italic;opacity:0.7}.tutor-option-field:last-child .tutor-option-field p.desc{margin-bottom:0}.tutor-option-gorup-fields-wrap .tutor-lesson-video-runtime{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-option-gorup-fields-wrap .tutor-lesson-video-runtime .tutor-option-group-field{padding-right:30px}.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:46px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:46px}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:13px;font-size:16px}.select2-container .select2-selection--single{height:48px}.select2-container .select2-selection--multiple{min-height:50px}.tutor-price-preview-box{border:1px solid #dcdfe5;padding:20px;margin-bottom:30px;border-radius:4px;overflow:hidden}.tutor-price-box-thumbnail{margin:-20px -20px 20px}.tutor-price-box-thumbnail .tutor-single-lesson-segment{margin-bottom:0}.tutor-price-box-description h6{font-size:23px;margin:15px 0 5px}.tutor-price-box-description ul{list-style:none}.tutor-course-purchase-box a{display:block;text-align:center;margin-top:6px}.tutor-price-preview-box .price{font-size:35px;font-weight:500;margin:0 0 20px;overflow:hidden;line-height:1}.tutor-price-preview-box .price .subscription-details{font-size:var(--tutor-text-size);display:block;margin-top:12px;line-height:1.2em}.tutor-price-preview-box .price>.price{margin-bottom:0}.tutor-price-preview-box .price del+ins{margin-left:0;float:left}.tutor-course-reviews-wrap{border:1px solid #e8eff1;border-radius:4px}.tutor-course-avg-rating-total{color:var(--tutor-light-color)}.tutor-course-avg-rating-total span{color:var(--tutor-text-color)}.tutor-review-individual-item{border-top:1px solid #e8eff1;padding:30px;overflow:hidden}.tutor-review-individual-item p{margin:0;padding:0}.course-avg-rating-wrap{padding:20px 20px 20px 40px}.tutor-review-individual-item .review-left{width:200px;float:left;overflow:hidden}.tutor-review-individual-item .review-content{padding-left:200px}@media (max-width: 991px){.tutor-review-individual-item .review-left{width:100%;float:none;margin-bottom:25px}.tutor-review-individual-item .review-content{padding-left:0}}@media (max-width: 991px){.tutor-single-course-sidebar{margin-top:30px}}.tutor-review-individual-item .review-avatar{width:50px;float:left}.tutor-review-individual-item .review-avatar img{border-radius:50%;margin:0;border:none;max-width:100%;height:auto}.tutor-review-individual-item .tutor-review-user-info{float:left;padding-left:20px}.tutor-review-individual-item .tutor-review-user-info p{margin-bottom:0}.tutor-review-individual-item .tutor-review-user-info a{color:var(--tutor-text-color)}.review-avatar .tutor-text-avatar,.tutor-dashboard-avater .tutor-text-avatar,.instructor-avatar .tutor-text-avatar{border-radius:50%;width:50px;height:50px;text-align:center;display:block;line-height:50px;color:#ffffff;text-shadow:0 1px 2px rgba(0,0,0,0.4)}.course-avg-rating-wrap .course-avg-rating{font-size:76px;line-height:1;font-weight:400}.course-avg-rating-wrap p{margin:0}.tutor-review-individual-item .tutor-review-name{font-size:16px;font-weight:600}.tutor-review-individual-item .review-meta{color:var(--tutor-light-color)}.individual-review-rating-wrap{color:#f8c51c}.individual-review-rating-wrap i,.course-avg-rating-html i{margin-right:4px;color:#f8c51c}.course-rating-meter{display:-webkit-box;display:-ms-flexbox;display:flex}.course-rating-meter i.tutor-icon-star-full{color:#f8c51c}.rating-meter-bar-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.rating-meter-col{margin:0 3px}.course-rating-meter{margin-bottom:8px}.rating-meter-bar{height:5px;width:100%;background:#e8eff1;margin-top:11px;border-radius:15px;overflow:hidden}.rating-meter-fill-bar{background:#f8c51c;height:5px}.rating-meter-col.rating-text-col{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-pagination,.tutor-pagination-wrap{text-align:center;margin:20px 0}.tutor-pagination a,.tutor-pagination span,.tutor-pagination-wrap a,.tutor-pagination-wrap span{padding:3px;display:inline-block}.tutor-pagination-wrap a:hover,.tutor-pagination a:hover{color:var(--tutor-primary-color)}.tutor-course-tags{margin:-5px}.tutor-course-tags a{padding:6px 15px;background:#e8eff1;display:inline-block;margin:5px;color:var(--tutor-text-color);border-radius:2px;-webkit-transition:300ms;transition:300ms}.tutor-course-tags a:hover{color:#000}.certificate-download-btn{margin-top:20px;display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;text-align:center;text-transform:uppercase !important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#tutor-single-entry-content .tutor-course-prerequisites{padding:60px}.prerequisites-course-lists{padding:0;list-style:none;margin:0}.prerequisites-course-lists li a{padding:13px 15px;border:1px solid #dcdfe5;margin-bottom:20px;border-radius:4px;font-weight:500;color:var(--tutor-primary-color);font-size:16px}.prerequisites-course-lists li:first-child{padding:13px 40px 13px 60px;border:1px solid #f7e5b9;margin-bottom:20px;border-radius:4px;font-weight:500;background:#fffff5;color:#b39f70;position:relative}.prerequisites-course-lists li:first-child>span{position:absolute;left:20px;top:13px}.prerequisites-course-lists li .prerequisites-course-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.prerequisites-course-feature-image img{width:70px;border-radius:2px;height:auto;margin:0 !important;-webkit-box-shadow:0 0 1px rgba(0,0,0,0.08);box-shadow:0 0 1px rgba(0,0,0,0.08)}.prerequisites-course-lists li .prerequisites-course-title{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:15px;-webkit-transition:300ms;transition:300ms}.prerequisites-course-lists li a:hover .prerequisites-course-title{color:var(--tutor-primary-color)}.prerequisites-course-checkmark{line-height:24px;height:24px;text-transform:uppercase;font-size:12px;font-weight:700;min-width:107px}.prerequisites-course-checkmark i{height:24px;width:24px;background:#dbdddd;color:#dbdddd;display:inline-block;text-align:center;border-radius:2px;margin-right:3px}.prerequisites-course-checkmark.is-complete i{background:var(--tutor-success-button-color);color:#fff}.tutor-single-course-meta ul li.tutor-social-share{float:right;margin-right:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 575px){.tutor-single-course-meta ul li.tutor-social-share{display:none}}.tutor-single-course-meta ul li.tutor-social-share button{margin:0;border:none;background:transparent;color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms;padding:0 4px;cursor:pointer}.tutor-single-course-meta ul li.tutor-social-share button:hover{color:var(--tutor-primary-color)}.rtl .tutor-single-course-meta ul li.tutor-social-share{float:left}.rtl .tutor-single-course-meta ul li,.rtl .tutor-loop-author>div{float:right}.rtl .tutor-single-course-meta ul li{margin-right:0;margin-left:40px}.rtl .tutor-wrap nav.course-enrolled-nav ul li a{margin-right:0;margin-left:20px}.rtl .tutor-progress-bar .tutor-progress-filled:after{left:auto;right:var(--tutor-progress-left);-webkit-transform:translateY(-50%) translateX(50%);transform:translateY(-50%) translateX(50%)}.rtl .tutor-progress-percent{padding-left:0;padding-right:20px}.rtl .tutor-course-lesson h5 i{margin-right:0;margin-left:10px}.rtl .tutor-course-lesson h5 .lesson-preview-icon i{margin-right:10px;margin-left:0}.rtl .tutor-course-lesson h5 .tutor-lesson-duration{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.rtl .tutor-custom-list-style li{padding-right:25px;padding-left:0px}.rtl .tutor-custom-list-style li:before{left:auto;right:0}.rtl .single-instructor-wrap .instructor-name,.rtl .single-instructor-wrap .instructor-avatar{float:right}.rtl .single-instructor-wrap .instructor-name{padding-left:0;padding-right:20px}.rtl .single-instructor-wrap .instructor-bio{padding-left:0;padding-right:260px}.rtl .tutor-single-page-top-bar .tutor-topbar-back-to-curse-wrap{margin-left:30px;margin-right:0}.rtl .tutor-single-lesson-button-group .tutor-single-lesson-button a,.rtl .tutor-topics-in-single-lesson .tutor-single-lesson-items a{padding:14px 17px 14px 100px}.rtl .tutor-lessons-under-topic .tutor-lesson-right-icons{right:auto;left:15px}.rtl .tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete{margin-left:0;margin-right:8px}.rtl .tutor-single-lesson-button-group .tutor-single-lesson-button a>i:first-child,.rtl .tutor-topics-in-single-lesson .tutor-single-lesson-items a>i:first-child{margin-right:0;margin-left:10px}.rtl .tutor-topbar-home-btn{margin-left:0;margin-right:20px}@media screen and (max-width: 546px){.rtl .tutor-topbar-home-btn{margin-right:10px}}.rtl .tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{margin-left:15px;margin-right:0}.tutor-frontend-modal{position:fixed;width:100%;height:100%;left:0;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:999999}.tutor-frontend-modal .tutor-frontend-modal-overlay{background:rgba(0,0,0,0.7);height:100%;width:100%;position:fixed;left:0;top:0;z-index:-1;cursor:url("data:image/svg+xml,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.852 12.004L.23 22.7a.764.764 0 0 0 0 1.076.75.75 0 0 0 1.068 0L12 13l10.703 10.778a.75.75 0 0 0 1.069 0 .764.764 0 0 0 0-1.076L13.148 12.004l10.63-10.706a.764.764 0 0 0 0-1.075.752.752 0 0 0-1.067 0L12 11.008 1.289.223a.752.752 0 0 0-1.068 0 .764.764 0 0 0 0 1.076l10.631 10.705z' fill='%23F0576A' fill-rule='evenodd'/%3E%3C/svg%3E"),auto}.tutor-frontend-modal .tutor-frontend-modal-content{position:relative;background:#fff;padding:60px;width:90%;max-width:750px;max-height:90%;overflow-y:auto}@media (max-width: 768px){.tutor-frontend-modal .tutor-frontend-modal-content{padding:40px}}@media (max-width: 540px){.tutor-frontend-modal .tutor-frontend-modal-content{padding:20px}}button.tm-close.tutor-icon-line-cross{position:absolute;right:23px;top:23px;background:transparent;padding:0;font-size:24px;border:none;color:var(--tutor-light-color)}button.tm-close.tutor-icon-line-cross:hover{color:red}.label-order-status{padding:3px 5px;border-radius:3px}.label-status-completed{background-color:#4bd863;color:#ffffff}.label-status-cancelled{background-color:#fd6a03;color:#ffffff}.label-status-on-hold{background-color:#db5382;color:#ffffff}.tutor-lesson-content-area h2{margin-bottom:25px;margin-top:20px;font-weight:500}.assignment-result-wrap{text-align:center;padding:10px 0}.submitted-assignment-grade-pass{color:var(--tutor-success-button-color)}.submitted-assignment-grade-failed{color:red}.received-marks{color:var(--tutor-primary-color)}.tutor-dashboard-course-builder-wrap .tutor-form-row{margin-top:20px;margin-bottom:20px}.video_source_wrap_html5{width:100px;text-align:center}.video-poster-img img{max-width:200px;height:auto}.tutor-assignment-information{font-size:16px}.tutor-assignment-information ul{padding:0;margin:0 0 22px;list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-assignment-information ul li strong{font-weight:700}.tutor-assignment-attachment-upload-wrap .tutor-form-group{display:inline-block}.tutor-assignment-attachment-upload-wrap .tutor-form-group label+input{display:none}.tutor-assignment-attachment-upload-wrap .tutor-form-group label{padding:15px 17px;border:1px solid #dcdfe5;overflow:hidden;margin-right:15px;border-radius:4px;cursor:pointer}.tutor-assignment-attachment-upload-wrap .tutor-form-group label i{font-size:30px;line-height:30px;float:left;margin-right:12px}.tutor-assignment-attachment-upload-wrap .tutor-form-group label span{line-height:30px}.tutor-assignment-attachment-upload-wrap{margin-bottom:40px}#tutor-course-topics a{text-decoration:none}#tutor-course-topics .tutor-topics-wrap{border-bottom:1px solid #f6f8fa;padding-bottom:0;margin:0}.tutor-untopics-lessons .course-content-item,.course-contents .course-content-item{padding:10px 12px 10px 25px;border-bottom:1px solid #d9d9d9;background-color:#ebeef0}.tutor-untopics-lessons .course-content-item .tutor-lesson-top,.course-contents .course-content-item .tutor-lesson-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a:last-child,.course-contents .course-content-item .tutor-lesson-top a:last-child{margin-left:auto}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a.open-tutor-lesson-modal,.course-contents .course-content-item .tutor-lesson-top a.open-tutor-lesson-modal{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a,.course-contents .course-content-item .tutor-lesson-top a{color:#393c40;font-weight:400;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-untopics-lessons .course-content-item .tutor-lesson-top i,.course-contents .course-content-item .tutor-lesson-top i{padding-right:7px;color:#393c40}.tutor-untopics-lessons .course-content-item .tutor-lesson-top .tutor-updating-message i,.course-contents .course-content-item .tutor-lesson-top .tutor-updating-message i{display:none}.tutor-untopics-lessons .course-content-item .tutor-lesson-top i.tutor-icon-garbage:hover,.course-contents .course-content-item .tutor-lesson-top i.tutor-icon-garbage:hover{color:red}.tutor-lessons.ui-sortable{min-height:20px}#tutor-course-topics .drop-lessons p{margin:0}#tutor-course-topics .course-content-item:hover{background-color:#ebeef0}#tutor-course-topics .tutor-lessons{padding-left:0}#tutor-course-topics .tutor-lesson-top,#tutor-course-topics .tutor-lesson-top i{font-size:15px}#tutor-course-topics .tutor-lesson-top .open-tutor-quiz-modal i{display:inline-block;vertical-align:middle;margin-right:5px}#tutor-course-topics .tutor-lesson-top{display:-webkit-box;display:-ms-flexbox;display:flex}#tutor-course-topics .tutor-lesson-top .open-tutor-lesson-modal,.tutor-quiz .open-tutor-quiz-modal,.course-content-item .open-tutor-assignment-modal{-webkit-box-flex:1;-ms-flex:1;flex:1}#tutor-course-topics .tutor-lesson-top i.tutor-icon-move{margin-right:10px;cursor:ns-resize}.rtl #tutor-course-topics .tutor-lesson-top i.tutor-icon-move{margin-right:0;margin-left:10px}#tutor-course-topics .tutor-lesson-top i.tutor-icon-pencil{margin:0 10px}#tutor-course-topics .tutor-lesson-top a{color:#393c40}#tutor-course-topics .tutor-lesson-top a.tutor-updating-message i{display:none}.course-move-handle{cursor:row-resize}.new-topic-btn-wrap{padding:20px}p.course-empty-content{padding-left:20px;padding-right:20px}.tutor_btn_lg{line-height:45px;background-color:var(--tutor-primary-color);color:#ffffff;padding:0 20px;display:inline-block;border-radius:2px;font-weight:300;border:none;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.tutor_btn_lg:focus{-webkit-box-shadow:none;box-shadow:none;border:none;outline:none}.tutor_btn_lg:focus,.tutor_btn_lg:hover{background-color:var(--tutor-primary-color);color:#ffffff}.ui-sortable-placeholder{visibility:visible;background-color:#dddd}.tutor-untopics-lessons{border:1px solid #eee;padding:20px;margin:0 -1px -1px;background-color:#fbfbfb}.tutor-untopics-lessons h3{font-weight:300}.tutor-untopics-lessons .tutor-lessons{padding-left:0 !important}.create-new-lesson-wrap{text-align:center}.tutor-metabox-add-topics .tutor-option-field-row:last-child,.tutor-topics-edit-form .tutor-option-field-row:last-child{border-bottom:none}.tutor-metabox-add-topics .tutor-option-field-row textarea{height:120px}.topic-edit-icon{cursor:pointer}.tutor-topic-title{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:16px;font-weight:300;margin:0;line-height:45px;padding-left:15px}.rtl .tutor-topic-title{padding-left:0;padding-right:15px}.tutor-topic-title a{color:#393c40}.tutor-topic-title .topic-inner-title{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;cursor:pointer;max-width:calc(100% - 137px);font-weight:400;font-size:16px}.tutor-topic-title span{padding:0 5px}.tutor-topic-title span.expand-collapse-wrap{border-left:1px solid #e7e7e7}.tutor-topic-title span.expand-collapse-wrap a{display:block;padding:0 13px}.topic-delete-btn{float:right}.text-muted{color:#cccccc}.topic-delete-btn a{padding:0 10px}.topic-delete-btn a:hover{color:#ff0000}.topic-delete-btn .dashicons{width:12px;height:12px;font-size:12px}#tutor-course-topics{position:relative}#tutor-course-topics .inside{padding:0;margin:0}#tutor-course-topics a:focus{-webkit-box-shadow:none;box-shadow:none}#tutor-course-topics .toggle-indicator:before{margin-top:20px}.tutor-topics-wrap:nth-child(2n){background:#f6f8fa}#tutor-course-content-wrap{border:1px solid #ddd;margin-top:20px}#tutor-course-content-wrap .tutor-topics-edit-form,#tutor-course-content-wrap .tutor-metabox-add-topics{border-left:none;border-right:none;margin-top:0}#tutor-course-content-wrap .tutor-topics-wrap .tutor-topics-body{background:#ebeef0;padding:0px}.tutor-course-builder-button{line-height:35px;color:#393c40;display:inline-block;padding:0 20px;border-radius:4px;margin-right:10px;border:1px solid #d3d4d5;background-color:#f2f2f2;cursor:pointer;vertical-align:top;-webkit-transition:300ms;transition:300ms;font-weight:400}.tutor-course-builder-button i{line-height:35px;display:inline-block;vertical-align:top;margin-right:6px}.tutor-course-builder-button.tutor-updating-message i{display:none}.tutor-course-builder-button.tutor-btn-lg{line-height:40px}.tutor-add-quiz-button-wrap{padding:15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-add-quiz-button-wrap>*+*{margin-left:15px}.tutor-course-builder-button.active{color:#fff;background:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}.tutor-course-builder-button:hover{-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-btn-lg i{color:var(--tutor-primary-color);vertical-align:top;margin-right:5px;font-size:16px;display:inline-block;line-height:40px}.tutor-course-builder-button.active i,.tutor-course-builder-button:hover i{color:#fff}.tutor-course-builder-button.tutor-success{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);color:#fff}.tutor-updating-message:before{display:inline-block;font-family:"tutor";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;content:"\e91d";-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;margin-right:6px}.rtl .tutor-updating-message:before{margin-right:0;margin-left:6px}.lesson-modal-close-wrap a{background:#ffffff;width:50px;height:59px;display:inline-block;text-align:center;line-height:57px;color:#3a3d42;font-size:15px;position:absolute;right:0;top:0}.lesson-modal-close-wrap a:hover{color:red}.lesson-modal-form-wrap .lesson-modal-field-row{padding:10px 0}.lesson-modal-field.tutor-lesson-modal-title-wrap{width:95%}.lesson-modal-field-row input[type="text"]{background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;min-width:400px;min-height:35px}.tutor-lesson-modal-title-wrap input{width:100%}.lesson-modal-form-wrap .tutor-option-field-row{padding:10px 0}.lesson-modal-form-wrap .tutor-option-field-row:last-child{border-bottom:none}.tutor-lesson-modal-wrap .modal-footer{padding:10px 20px;background-color:#fff;width:100%;position:sticky;bottom:0;position:-webkit-sticky}.tutor-option-field .tutor-lesson-edit-feature-img{width:100px;position:relative}.tutor-option-field .tutor-lesson-edit-feature-img img{width:100%;height:auto}a.tutor-lesson-thumbnail-delete-btn{position:absolute;top:0;right:0;color:red;background:#fff;padding:3px 5px;border-radius:5px}.tutor-get-pro-text{color:#e02424}.updating-icon:before{font-family:"tutor";content:"\e91d";-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;display:inline-block}.tutor-notice-warning{background-color:#fcf8e3;border-color:#faebcc;padding:20px;margin-bottom:10px}.tutor-modal-wrap{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:-1;background-color:rgba(0,0,0,0.5)}.tutor-modal-wrap.show{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";z-index:99999;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tutor-modal-wrap.loading .tutor-modal-content:before{position:absolute;top:0;left:0;right:0;bottom:0;display:block;content:"";z-index:9;background:url("../images/spinner.gif") no-repeat center center}.tutor-modal-wrap .tutor-modal-content{max-height:90%;overflow-y:auto;overflow-x:hidden;background-color:#fff;max-width:730px;margin:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);position:relative;-webkit-transition:all 200ms ease-out;transition:all 200ms ease-out;width:90%}.admin-bar .tutor-modal-wrap .tutor-modal-content{max-height:calc(90% - 32px);margin-top:32px}.tutor-modal-wrap .modal-footer{padding:20px 0;border-top:1px solid #eee}.tutor-modal-wrap .modal-footer.has-padding{padding:20px 15px}.tutor-modal-wrap .modal-container{padding:20px 20px 0}.tutor-modal-wrap.tutor-instructors-modal-wrap .modal-container p{margin-top:0}.tutor-modal-wrap .modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 20px;border-bottom:1px solid #eeeff1}.tutor-modal-wrap .modal-title{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-modal-wrap .modal-header h1{padding:0;margin:0;font-size:23px;line-height:30px}.modal-container .modal-classic-btn-wrap{position:absolute;right:45px;top:14px}.modal-container .modal-classic-btn-wrap a{color:var(--tutor-primary-color)}.tutor-modal-wrap .modal-header h1::before,.tutor-modal-wrap .modal-header h1::after{display:none}.tutor-modal-wrap .search-bar{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-top:20px;padding-left:20px;padding-right:20px}.tutor-modal-wrap .search-bar input[type="text"]{width:100%;border:1px solid #eee;-webkit-box-shadow:none;box-shadow:none;padding:10px}.tutor-modal-wrap .modal-close-wrap a.modal-close-btn{width:50px;height:50px;background:#000;display:inline-block;text-align:center;line-height:47px;color:#fff;font-size:25px;position:absolute;right:0}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-title{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-close-wrap a.modal-close-btn{background:#ffffff;width:20px;height:20px;display:inline-block;text-align:center;line-height:28px;color:#3a3d42;font-size:22px;position:relative}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-header{padding:15px 20px;border-bottom:1px solid #eeeff1}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-header h1{padding:0}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-container{background-color:#f1f1f1;padding:0}#tutor-quiz-modal-tab-items-wrap{background-color:#fff;font-size:0;overflow:hidden}#tutor-quiz-builder-modal-tabs-container{padding:20px}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item{padding:15px 25px;display:inline-block;color:#393c40;border-left:1px solid #f1f1f1;overflow:hidden;line-height:17px;vertical-align:middle;font-size:14px !important}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item.active{background-color:#f1f1f1}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item i{float:left;font-size:17px;line-height:1;margin-right:5px}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item.active i{color:var(--tutor-primary-color)}.quiz-modal-tab-navigation-btn{padding:10px 20px;border-radius:3px}.quiz-modal-btn-next,.quiz-modal-btn-next:focus,.quiz-modal-btn-first-step,.quiz-modal-btn-first-step:focus,.quiz-modal-question-save-btn,.quiz-modal-question-save-btn:focus,.quiz-modal-settings-save-btn,.quiz-modal-settings-save-btn:focus{background-color:var(--tutor-primary-color);color:#ffffff}.quiz-modal-btn-next:hover,.quiz-modal-btn-first-step:hover,.quiz-modal-question-save-btn:hover,.quiz-modal-settings-save-btn:hover{color:#ffffff}.quiz-modal-btn-cancel,.quiz-modal-btn-back{color:#4b5981;border:1px solid #d4dadb}.tutor-quiz-builder-form-row .quiz-form-warning{color:#e88e06}.tutor-assignment-builder-modal-wrap .modal-container{padding:10px}.assignment-modal-form-wrap .tutor-option-field.tutor-assignment-modal-title-wrap{margin:0}.tutor-quiz-question-answers-form{background-color:#fff;padding:20px;-webkit-transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);border:1px solid #dedede;border-radius:3px;margin-bottom:20px}.advanced-options-tab-item{float:right}.tutor-course-builder-wrap{border:1px dashed #dcdfe5}.tutor-quiz-builder-modal-tabs-notice{background:#d8d8d8;line-height:20px;padding:10px 30px;color:#a4a4a4}.tutor-quiz-builder-modal-tabs-notice a{color:#a4a4a4;text-decoration:underline}.tutor-quiz-builder-group{margin-bottom:25px}.tutor-quiz-builder-group>p.warning{color:red;font-size:12px}.tutor-quiz-builder-group>p.help{color:#a4a4a4;font-size:12px;margin-top:7px}.tutor-quiz-builder-group>h4{color:#393c40;font-weight:600;margin:0 0 15px}.tutor-quiz-builder-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:-10px;margin-right:-10px}.tutor-quiz-builder-col{padding-left:10px;padding-right:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-quiz-builder-col.auto-width{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-quiz-builder-group textarea,.tutor-quiz-builder-group input[type="text"],.tutor-quiz-builder-group input[type="email"],.tutor-quiz-builder-group input[type="number"],.tutor-quiz-builder-group input[type="password"]{line-height:40px;padding:5px 0;text-indent:15px;background:#fff;display:inline-block;border:1px solid #dedede;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;height:40px;margin:0;width:100%;color:#393c40}.tutor-quiz-builder-group textarea:focus,.tutor-quiz-builder-group input[type="text"]:focus,.tutor-quiz-builder-group input[type="email"]:focus,.tutor-quiz-builder-group input[type="number"]:focus,.tutor-quiz-builder-group input[type="password"]:focus{border-color:var(--tutor-primary-color)}.tutor-quiz-builder-group textarea{height:80px;resize:none;text-indent:0;padding:11px 15px;line-height:22px}.tutor-quiz-builder-group textarea[name="quiz_description"]{height:150px}.tutor-quiz-builder-group select{border:1px solid #ccc;-webkit-box-shadow:none;box-shadow:none;height:42px !important;padding:0 12px !important;margin:0}.tutor-quiz-builder-modal-control-btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px}.question_form_inner{padding:0 20px 20px;margin-top:0}.tutor-quiz-builder-modal-control-btn-group .quiz-builder-btn-group-left{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-quiz-builder-modal-control-btn-group .quiz-modal-tab-navigation-btn{display:inline-block}.tutor-quiz-builder-modal-control-btn-group .quiz-modal-tab-navigation-btn:not(:last-child){margin-right:6px}.modal-container .tutor-quiz-add-question-btn{border:1px solid #c6c9cf;padding:10px 15px;color:#393c40;display:inline-block;border-radius:3px}.modal-container .tutor-quiz-add-question-btn i{color:var(--tutor-primary-color);line-height:16px;margin-right:3px}.quiz-form-field-col{margin-right:20px}.quiz-form-field-col.result-fail{width:100%}.quiz-modal-switch-field{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:30px}.quiz-modal-switch-field label.btn-switch{margin-right:20px;position:relative;vertical-align:top}label.btn-switch input:checked+.btn-slider{background-color:var(--tutor-success-button-color)}.btn-switch+span{line-height:24px;display:inline-block;margin-left:8px;font-weight:700;vertical-align:top}.tutor-select{position:relative}.tutor-select .select-header{border:1px solid #dedede;margin:0;padding:10px;width:100%;-webkit-box-shadow:none;box-shadow:none;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.tutor-select .select-header .lead-option{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-select .select-header .select-dropdown{line-height:22px}.tutor-select .select-header .lead-option .question-type-pro{display:none}.tutor-select .tutor-select-options{border:1px solid #dedede;background-color:#fff;padding:22px 10px 8px;width:calc(100% - 22px);position:absolute;font-size:0;z-index:9;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-shadow:0px 2px 10px rgba(0,0,0,0.08);box-shadow:0px 2px 10px rgba(0,0,0,0.08);top:55px;border-radius:3px}.tutor-select .tutor-select-options .tutor-select-option{width:calc(33.3333% - 22px);display:inline-block;padding:9px;cursor:pointer;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 11px 15px;border:1px solid #e2e2e2;border-radius:3px;font-size:13px}.tutor-select .tutor-select-options .tutor-select-option:hover{border-color:var(--tutor-primary-color)}.question-type-pro{color:#fff;font-size:9px;right:11px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}i.tutor-icon-block{padding:0;color:#fff;border-radius:3px;margin-right:2px;display:inline-block;width:22px;height:22px;text-align:center;line-height:22px}i.tutor-icon-block.tutor-icon-short-ans{background-color:#f37512}i.tutor-icon-block.tutor-icon-image-ans{background-color:#a322f9}i.tutor-icon-block.tutor-icon-yes-no{background-color:var(--tutor-primary-color)}i.tutor-icon-block.tutor-icon-multiple-choice{background-color:#9034a9}i.tutor-icon-block.tutor-icon-mark{background-color:#00b890}i.tutor-icon-block.tutor-icon-open-ended{background-color:#fe3129}i.tutor-icon-block.tutor-icon-fill-gaps{background-color:#ffbf00}i.tutor-icon-block.tutor-icon-answer-shorting{background-color:#f80089}i.tutor-icon-block.tutor-icon-assesment{background-color:#274055}i.tutor-icon-block.tutor-icon-matching{background-color:#8a4a1b}i.tutor-icon-block.tutor-icon-image-matching{background-color:#f37512}i.tutor-icon-block.tutor-icon-ordering{background-color:var(--tutor-primary-color)}i.tutor-icon-block.tutor-icon-plus-square-button,i.tutor-icon-block.tutor-icon-plus{background-color:var(--tutor-success-button-color)}.create-lesson-in-topic-btn i.tutor-icon-block.tutor-icon-plus{background-color:var(--tutor-primary-color)}a.back-to-quiz-questions-btn{font-size:16px;font-weight:300;color:#393c40;margin-bottom:10px;display:block}a.back-to-quiz-questions-btn.tutor-updating-message i{display:none}.modal-container .quiz-questions-form{padding:20px}#quiz-builder-tab-advanced-options .tutor-quiz-builder-form-cols-row .quiz-form-field-col:first-child{-webkit-box-flex:0;-ms-flex:0 0 150px;flex:0 0 150px}.question-form-header{margin-bottom:20px}.quiz-question-form-body{margin-bottom:25px}.quiz-builder-question-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:15px}.quiz-builder-question{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;background:#fff;padding:10px;border:1px solid #e2e2e2;border-radius:3px;max-width:calc(100% - 52px)}.quiz-builder-question .question-sorting{margin-right:10px;line-height:22px}.quiz-builder-question .question-sorting i{display:block;line-height:24px}.quiz-builder-question .question-edit-icon{line-height:22px}.quiz-builder-question .question-edit-icon .tutor-quiz-open-question-form.tutor-updating-message i{display:none}.quiz-builder-question .question-title{-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:22px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-right:10px}.quiz-builder-question .question-icon{-webkit-box-flex:0;-ms-flex:0 0 155px;flex:0 0 155px}.quiz-builder-qustion-trash a{display:block;padding:0 0 0 10px;font-size:20px;color:rgba(57,60,64,0.4);line-height:44px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider{border:1px solid #dedede;padding:20px 70px 20px 10px;background-color:#ffffff;position:relative;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-content{background:var(--tutor-primary-color);border:none;height:4px;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-header{background:#dedede;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-content .ui-state-default{background:var(--tutor-primary-color);border:1px solid var(--tutor-primary-color);border-radius:50%;margin-top:-2px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .tutor-field-type-slider-value{font-size:16px;font-weight:600;background:var(--tutor-primary-color);position:absolute;right:5px;top:50%;margin:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);line-height:34px;width:43px;text-align:center;border-radius:4px;color:#fff}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .tutor-field-type-slider-value:before{content:"";position:absolute;border:7px solid transparent;top:50%;border-right-color:var(--tutor-primary-color);right:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tutor-quiz-answer-wrap{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-quiz-answer{background-color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px 15px;border:1px solid #dedede;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:22px;border-radius:3px;margin-bottom:15px}.tutor-quiz-answer .tutor-quiz-answer-edit a{display:block;padding:0px 9px}.tutor-quiz-answer-trash-wrap a.answer-trash-btn{padding:0 10px;display:inline-block;line-height:44px}span.tutor-quiz-answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-quiz-answer-media .option-media-preview{margin-bottom:20px}.tutor-quiz-answer-media .option-media-preview img{max-width:80px;height:auto}.tutor-question-answer-image{margin-right:10px}.tutor-question-answer-image img{max-height:25px;width:auto}button#quiz-answer-save-btn,button#quiz-answer-edit-btn{background-color:var(--tutor-success-button-color);color:#fff;padding:10px 15px;border:none;cursor:pointer}button#quiz-answer-save-btn:hover,button#quiz-answer-edit-btn:hover{background-color:var(--tutor-success-button-color)}.tutor-media-upload-wrap{border:1px solid #dedede;display:-webkit-box;display:-ms-flexbox;display:flex;width:130px}.tutor-media-upload-wrap img{max-width:100%}.tutor-media-preview{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-media-upload-btn{display:block;padding:10px;font-size:50px;line-height:50px;text-align:center;color:#dedede}.tutor-media-upload-trash-wrap{border-left:1px solid #dedede}.tutor-media-upload-trash{color:#dedede;display:block;line-height:50px;padding:12px}.tutor-quiz-answers-form-footer.tutor-quiz-builder-form-row{margin-top:40px;margin-bottom:10px}.tutor-metabox-add-topics,.tutor-topics-edit-form{background-color:#f7f7f7;border:1px solid #dcdfe5;margin-top:25px;padding:20px}.tutor-course-builder-section{margin-bottom:60px}.tutor-course-builder-section-title h3{font-size:20px;font-weight:700;color:#1d1f37;position:relative;overflow:hidden;z-index:1;margin:0 0 25px;cursor:pointer}.tutor-course-builder-section-title h3::after{content:"";position:absolute;top:50%;left:0;width:100%;height:1px;background:var(--tutor-primary-color);z-index:-1}.tutor-course-builder-section-title h3 span,.tutor-course-builder-section-title h3 i{float:left;background-color:#fff;font-size:20px;line-height:20px}.tutor-course-builder-section-title h3 i{color:var(--tutor-primary-color);font-size:14px}.tutor-course-builder-section-title h3 span{padding:0 15px 0 9px}.tutor-frontend-builder-item-scope{margin-bottom:30px}.tutor-frontend-builder-item-scope:last-child{margin-bottom:0}.tutor-builder-item-heading{font-weight:500;line-height:21px;margin-bottom:10px;display:block}.builder-course-thumbnail-upload-wrap>div{font-size:var(--tutor-text-size);line-height:25px;margin-bottom:20px;font-weight:400}.builder-course-thumbnail-img-src{position:relative}.builder-course-thumbnail-img-src .tutor-course-thumbnail-delete-btn{font-size:10px;position:absolute;top:-4px;left:-4px;color:#e53935;-webkit-transition:300ms;transition:300ms;border-radius:50%;width:20px;height:20px;line-height:20px;background:#fff;text-align:center}.builder-course-thumbnail-img-src .tutor-course-thumbnail-delete-btn i{line-height:20px}.tutor-course-builder-header{text-align:right;font-size:12px}.tutor-course-builder-section .course-empty-content{margin:15px 0}.tutor-course-builder-section .tutor-course-builder-header a{color:#393c40}.tutor-course-builder-section .tutor-course-builder-header a:first-child{padding-right:7px}.tutor-course-builder-section .tutor-course-builder-header a:last-child{padding-left:7px}.tutor-course-builder-section .tutor-course-builder-header{margin-top:-15px}.tutor-course-builder-section .new-topic-btn-wrap{padding:0;margin-top:20px}.tutor-course-available-instructors{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-available-instructors .added-instructor-item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 15px);flex:0 0 calc(50% - 15px);max-width:calc(50% - 15px);border:1px solid #dcdfe5;padding:13px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;position:relative;margin-bottom:30px}.tutor-course-available-instructors .added-instructor-item .instructor-control{position:absolute;right:14px;top:50%;font-size:12px;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:0;-webkit-transition:300ms;transition:300ms}.tutor-course-available-instructors .added-instructor-item .instructor-control a{color:red}.tutor-course-available-instructors .added-instructor-item:hover .instructor-control{opacity:1}.tutor-course-available-instructors .added-instructor-item .instructor-icon{height:45px;width:45px;overflow:hidden;border-radius:50px;margin-right:15px}.tutor-course-available-instructors .added-instructor-item .instructor-icon img{width:100%}.tutor-course-available-instructors .added-instructor-item .instructor-name{position:relative}.tutor-course-available-instructors .added-instructor-item .instructor-name img{display:inline-block;margin-left:10px;width:18px}.tutor-course-available-instructors .added-instructor-item .instructor-name img:hover+i.instructor-name-tooltip{opacity:1}.tutor-course-available-instructors .added-instructor-item i.instructor-name-tooltip{-webkit-transition:300ms;transition:300ms;opacity:0;position:absolute;bottom:34px;right:9px;background:#2a344f;-webkit-transform:translateX(50%);transform:translateX(50%);color:#fff;font-size:12px;font-style:normal;padding:0 8px;border-radius:15px;line-height:20px;z-index:1}.tutor-course-available-instructors .added-instructor-item i.instructor-name-tooltip::before{content:"";position:absolute;border:5px solid #2a344f;bottom:-3px;left:50%;margin-left:-5px;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:-1}.tutor-course-available-instructors .added-instructor-item:nth-child(2n){margin-left:30px}.tutor-addons-list .plugin-icon{height:120px}.btn-switch{display:inline-block;height:22px;position:relative;width:40px}.btn-switch input{display:none}.btn-slider{background-color:#ccc;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;-webkit-transition:0.4s;transition:0.4s}.btn-slider:before{background-color:#fff;bottom:3px;content:"";height:16px;left:4px;position:absolute;-webkit-transition:0.4s;transition:0.4s;width:16px}input:checked+.btn-slider{background-color:var(--tutor-primary-color)}input:checked+.btn-slider:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.btn-slider.btn-round{border-radius:34px}.btn-slider.btn-round:before{border-radius:50%}.tutor-video-embeded-wrap{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%}.tutor-video-embeded-wrap iframe,.tutor-video-embeded-wrap object,.tutor-video-embeded-wrap embed{position:absolute;top:0;left:0;width:100%;height:100%}.select2-selection__rendered [class^="tutor-icon-"]{display:inline-block;vertical-align:top;margin-right:6px}.select2-results__options [class^="tutor-icon-"]{color:var(--tutor-primary-color);display:inline-block;vertical-align:top;margin-right:6px}.select2-results__option--highlighted [class^="tutor-icon-"]{color:#fff}.tutor-video-metabox-wrap{margin-bottom:50px}.video-metabox-source-input-wrap{padding:30px;background-color:#f4f7f8;border:1px solid #dcdfe5;border-radius:3px}.video-metabox-source-html5-upload{background-color:#fff;text-align:center;padding:40px 20px;border:1px solid #dcdfe5;border-radius:3px}.video-metabox-source-html5-upload p{margin-bottom:5px}.tutor-video-metabox-wrap p{margin:0;padding:0}.video-metabox-source-html5-upload .video-upload-icon i{font-size:50px;color:var(--tutor-primary-color)}.video_source_upload_wrap_html5{margin-top:10px}.video-metabox-source-html5-poster{padding-top:30px}.video_source_wrap_html5{width:100%}.builder-course-thumbnail-upload-wrap .button-transparent{float:right;background:transparent !important}.builder-course-thumbnail-upload-wrap .button-transparent:hover{background:var(--tutor-primary-color) !important}.html5-video-poster{height:100px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.html5-video-poster .tutor-builder-course-video-poster-text{text-align:left;padding-left:20px}.html5-video-poster .tutor-builder-course-video-poster-text h5{font-size:14px;font-weight:700;margin:0 0 6px;line-height:1}.html5-video-poster .tutor-builder-course-video-poster-text span{font-size:14px;font-weight:400}.html5-video-poster img{height:100%;width:auto}.no-memberhsip-msg-wrap p{margin:0}.content-drip-message-wrap.tutor-error-msg{margin:40px 50px}.content-drip-message-wrap{margin:120px}.content-drip-wrap-flex{display:-webkit-box;display:-ms-flexbox;display:flex}.content-drip-wrap-flex .content-drip-left{margin-right:50px}.content-drip-wrap-flex ul{margin:0;list-style-position:inside}.content-drip-wrap-flex ul li a{color:var(--tutor-primary-color)}.tutor-alert{border:1px solid #f8a201;background:#fffff2;position:relative;border-radius:3px;padding:20px 25px 20px 95px;color:#a86d00;margin-bottom:20px}.tutor-alert p{margin-bottom:10px}.tutor-alert p:last-child{margin:0}.tutor-alert.tutor-alert-info{border:1px solid #13aaf6;background:#eaf8ff;color:#0586c7}.tutor-alert.tutor-alert-info::before{content:"\e96c";background:#13aaf6}.tutor-alert.tutor-alert-danger{border:1px solid #fe1a1a;background:#fff2f2;color:#a50000}.tutor-alert.tutor-alert-success{border:1px solid #69bc0d;background:#f6fff2;color:#3d7400}.tutor-alert::before{content:"\e95f";position:absolute;font-size:30px;font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:70px;top:0;left:0;text-align:center;background:#f8a201;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#ffffff}.tutor-alert.tutor-alert-danger::before{content:"\e913";background:#fe1a1a}.tutor-alert.tutor-alert-success::before{content:"\e90f";background:#69bc0d}.tutor-alert-content p{margin:0}.gradename-bg{text-align:center;color:#ffffff;height:32px;min-width:32px;font-size:16px;line-height:32px;padding:0 8px;display:inline-block;border-radius:20px;font-weight:bold;margin-right:7px}.gradename-outline{text-align:center;height:32px;min-width:32px;font-size:16px;line-height:26px;padding:0 8px;display:inline-block;border-radius:20px;border:2px solid;margin-right:7px}.generate-course-gradebook-btn-wrap{margin:10px 0}.gradebook-result-for-label{margin:0;padding:4px 7px;background-color:#e8eff1;display:inline-block;margin-bottom:10px}table.course-single-gradebooks{border-spacing:0;width:100%;border-collapse:collapse;border:1px solid #dcdfe5}table.course-single-gradebooks th{padding:1em 1.41575em;text-align:left;vertical-align:top;border-bottom:1px solid #dcdfe5}table.course-single-gradebooks th{font-weight:600}table.course-single-gradebooks thead th{background-color:rgba(220,223,229,0.14);padding:1.41575em;vertical-align:middle}table.course-single-gradebooks tbody td{border-bottom:1px solid #dcdfe5;background-color:#ffffff !important}table.course-single-gradebooks a{color:#4b5981}.text-label{margin:0;padding:4px 7px;background-color:#e8eff1;display:inline-block;border-radius:3px}.text-label.submitted-assignment-grade-pass{background-color:#86b223;color:#ffffff}.text-label.submitted-assignment-grade-failed{background-color:#d71830;color:#ffffff}.tutor-bp-message-recipient-header{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px}.tutor-bp-recipient-info-wrap{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-bp-message-recipient-avatar-wrap img{width:70px;height:70px;border-radius:50%}.tutor-bp-message-recipient-avatar-wrap{margin-right:35px}.tutor-bp-message-recipient-header .tutor-bp-thread-recipient-name h3{margin:10px 0 8px !important;font-size:22px;font-weight:600;line-height:28px}.tutor-bp-message-recipient-header .tutor-bp-thread-recipient-name h4{margin:0 0 20px !important;font-size:16px;line-height:1;font-weight:500}.tutor-bp-enrolled-courses-wrap{margin:0}.tutor-bp-enrolled-courses-wrap .tutor-bp-enrolled-total-course-notice{font-weight:400;color:#1c294b;margin:10px 0 8px !important}.tutor-bp-enrolled-courses-wrap ul{padding:0 0 0 17px;margin:0;color:#50616f}.tutor-bp-enrolled-courses-wrap ul li a{line-height:1.7;display:block;color:#54616d;padding-left:10px}.tutor-bp-enrolled-courses-wrap ul li a:hover{color:var(--tutor-primary-color);opacity:1;-webkit-transition:300ms;transition:300ms;text-decoration:underline !important}.oxy-tutor-element{width:100%}.tutor-dashboard-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:30px;border-bottom:1px solid #dcdfe5;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-header .tutor-btn.bordered-btn{background-color:transparent;text-transform:uppercase;font-weight:400;border-radius:2px}.tutor-dashboard-header .tutor-btn.bordered-btn i{font-size:20px}.tutor-dashboard-header .tutor-star-rating-group{margin-right:3px}.tutor-dashboard-header-avatar img{display:block;width:150px;height:150px;border-radius:50%}.tutor-dashboard-header-info{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:24px;padding-top:15px;padding-bottom:15px}.tutor-dashboard-header-button{padding-top:15px}.tutor-dashboard-header-display-name h4{font-size:30px;margin-top:0px;margin-bottom:10px;line-height:34px}.tutor-dashboard-header-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:25px}.tutor-dashboard-header-stats>div:not(:first-child){margin-left:30px}.tutor-dashboard-social-icons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-social-icons h4{margin:0 10px 0 0;font-size:var(--tutor-text-size);line-height:25px}.tutor-dashboard-social-icons a{display:inline-block;font-size:12px;padding:0 5px;line-height:25px;color:#393c40;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-social-icons a:hover{color:var(--tutor-primary-color)}.tutor-profile-completion-warning{display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px 0;border-bottom:1px solid #dcdfe5}.tutor-profile-completion-warning .profile-completion-warning-icon{margin-top:10px}.tutor-profile-completion-warning .profile-completion-warning-icon span{font-size:40px;color:#ed9700;padding:0 20px}.tutor-profile-completion-warning .profile-completion-warning-content{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-positive:1;flex-grow:1;-webkit-box-flex:1}.tutor-profile-completion-warning .profile-completion-warning-content h4{font-size:20px;line-height:30px;margin:0;padding:0;width:100%}.tutor-profile-completion-warning .profile-completion-warning-content p{margin-bottom:10px;font-size:14px;font-weight:300;color:#737787}.tutor-profile-completion-warning .profile-completion-warning-content p a{font-weight:400;color:#3e64de}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details{-ms-flex-positive:1;flex-grow:1;-webkit-box-flex:1}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul{margin:0;list-style:none}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li{display:inline;position:relative;padding-left:16px;color:#737787}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li:not(:last-child){margin-right:21px}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li::before{content:"\2022";position:absolute;color:#f44337;font-weight:bold;display:inline-block;left:0}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li span{color:#3f435b}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status p span{font-weight:400}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-bar{height:6px;border-radius:8.5px;background-color:#ededf0}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-filled{height:6px;border-radius:3px;background-color:#ed9700}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-filled::after{display:none}.tutor-dashboard-info-table-wrap{margin-bottom:30px}.tutor-dashboard-info-table-wrap table{margin-bottom:0;border-collapse:collapse;border:1px solid #dcdfe5;border-radius:4px;width:100%}.tutor-dashboard-info-table-wrap>h3{font-size:20px;font-weight:500;border:1px solid #dcdfe5;border-bottom:none;margin:0;padding:30px;border-radius:4px 4px 0 0}.tutor-dashboard-info-table-wrap>h3+table{border-radius:0 0 4px 4px}.tutor-dashboard-info-table thead{background:#fafbfc}.tutor-dashboard-info-table thead tr td{padding:15px}.tutor-dashboard-info-table tbody tr td{background:transparent !important;padding:20px 15px}.tutor-dashboard-info-table thead tr,.tutor-dashboard-info-table tbody tr{border:1px solid #dcdfe5}.tutor-dashboard-info-table thead tr td:first-child,.tutor-dashboard-info-table tbody tr td:first-child{padding-left:25px}.tutor-dashboard-info-table span.pending,.tutor-dashboard-info-table span.pass,.tutor-dashboard-info-table span.fail{color:#fff;font-size:14px;line-height:18px;padding:1px 6px;border-radius:2px}.tutor-dashboard-info-table span.pending{background-color:#f5a623}.tutor-dashboard-info-table span.fail{background-color:#d71830}.tutor-dashboard-info-table span.pass{background-color:var(--tutor-success-button-color)}.tutor-dashboard-single-review{border:1px solid #dcdfe5;border-radius:4px;margin-bottom:30px}.tutor-dashboard-review-heading{padding:10px 20px;border-bottom:1px solid #dcdfe5;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.individual-dashboard-review-body{padding:10px 20px}.tutor-dashboard-review-title{font-size:18px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:300}.tutor-dashboard-review-title a{font-weight:500;color:var(--tutor-primary-color)}.tutor-dashboard-review-title a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-review-links{white-space:nowrap;font-weight:400}.tutor-dashboard-review-links a{color:#8c94a8;margin-left:10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px}.tutor-dashboard-review-links a i{line-height:inherit;font-size:14px;margin-right:5px}.individual-dashboard-review-body .review-meta{font-size:85%;margin:0;color:#8c94a8}.individual-star-rating-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-edit-review-modal-wrap .modal-close-wrap a.modal-close-btn{color:#222222;background:none;font-size:20px;top:8px}.tutor-modal-wrap form{margin-bottom:20px}.tutor-dashboard-info-cards{margin:0 -15px 15px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-info-cards .tutor-dashboard-info-card{padding:15px;min-width:33.333%}.tutor-dashboard-info-cards .tutor-dashboard-info-card p{margin:0;padding:15px 25px;background:#282c36;color:#ffffff;border-radius:4px}.tutor-dashboard-info-cards .tutor-dashboard-info-card p span.tutor-dashboard-info-val{display:block;font-weight:700;font-size:30px;line-height:1.618}.tutor-dashboard-info-cards .tutor-dashboard-info-card p span span{display:inline-block}.tutor-dashboard-info-cards .tutor-dashboard-info-card p>*{vertical-align:middle}.tutor-dashboard-content{margin-bottom:60px}.tutor-dashboard-content>h2{margin-bottom:20px}.prev-btn{font-size:16px;line-height:1.88;color:#3f435b}.prev-btn span{font-size:18px;font-weight:800;color:#3e64de;margin-right:7px}.tutor-dashboard-content .tutor-quiz-attempt-history tr th,.tutor-dashboard-content .tutor-quiz-attempt-history tr td{vertical-align:middle;border:none}.tutor-dashboard-content .tutor-quiz-attempt-history tr td:first-child{padding:15px 13px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table span.result-fail,.tutor-dashboard-content .tutor-quiz-attempt-history table span.result-pass{width:auto;height:auto;line-height:19px;padding:0 6.5px;margin-right:4px}.label-course-status{background-color:#cccccc;padding:3px 5px;color:#ffffff;font-size:12px;text-transform:capitalize}.label-course-publish{background-color:var(--tutor-success-button-color)}.tutor-dashboard-content .quiz-attempt-answers-wrap table th{font-size:14px;font-weight:400;line-height:1.5;letter-spacing:0.12px;color:#737787;padding:15px 10px}.tutor-dashboard-content .tutor-quiz-attempt-history table thead tr,.single-quiz-page.tutor-quiz-attempt-history table thead tr{background-color:#fafbfc}.tutor-dashboard-content .tutor-quiz-attempt-history table tr,.single-quiz-page.tutor-quiz-attempt-history table tr{border:0;background-color:#fff}.tutor-dashboard-content .tutor-quiz-attempt-history table tr:first-child,.single-quiz-page.tutor-quiz-attempt-history table tr:first-child{background-color:#fafbfc}.tutor-dashboard-content .tutor-quiz-attempt-history table th,.tutor-dashboard-content .tutor-quiz-attempt-history table td,.single-quiz-page.tutor-quiz-attempt-history table th,.single-quiz-page.tutor-quiz-attempt-history table td{border:1px solid #dcdfe5 !important;vertical-align:middle}.tutor-dashboard-content .tutor-quiz-attempt-history table th:first-child,.tutor-dashboard-content .tutor-quiz-attempt-history table td:first-child,.single-quiz-page.tutor-quiz-attempt-history table th:first-child,.single-quiz-page.tutor-quiz-attempt-history table td:first-child{width:62%}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(2),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(4),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(2),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(4),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(4),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(4){width:11%}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(3),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(5),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(6),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(3),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(5),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(6),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(3),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(5),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(6),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(3),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(5),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(6){width:9%}.tutor-dashboard-content .tutor-quiz-attempt-history table th,.single-quiz-page.tutor-quiz-attempt-history table th{font-size:14px;font-weight:500;line-height:1.14;color:#8792b2}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(n+3),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(n+3){text-align:center}.tutor-dashboard-content .tutor-quiz-attempt-history table td,.single-quiz-page.tutor-quiz-attempt-history table td{background-color:#fff;font-size:14px;font-weight:400;color:#4b5981}.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(n+3),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(n+3){font-weight:500;text-align:center;padding-left:3px !important;padding-right:3px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table td:last-child,.single-quiz-page.tutor-quiz-attempt-history table td:last-child{padding-left:0px !important;padding-right:0px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table td a,.single-quiz-page.tutor-quiz-attempt-history table td a{font-weight:500;color:#4b5981;text-decoration:underline;word-break:initial}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course a,.single-quiz-page.tutor-quiz-attempt-history table td .course a{font-weight:600;line-height:1.29;color:#4b5981;text-decoration:none}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course-meta,.single-quiz-page.tutor-quiz-attempt-history table td .course-meta{display:inline-block;margin-top:5px}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course-meta span:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table td .course-meta span:nth-child(2){margin:0 17px}.tutor-dashboard-content .tutor-quiz-attempt-history table td .student,.single-quiz-page.tutor-quiz-attempt-history table td .student{font-weight:600;line-height:1.29;color:#4b5981}.tutor-dashboard-content .tutor-quiz-attempt-history table td .student-meta,.single-quiz-page.tutor-quiz-attempt-history table td .student-meta{display:inline-block;margin-top:5px}.single-quiz-page.tutor-quiz-attempt-history table{margin-bottom:30px}.tutor-dashboard-content .tutor-quiz-attempt-history table a{color:var(--tutor-primary-color);font-weight:700;line-height:24px}.tutor-dashboard-content .tutor-quiz-attempt-history table a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-content .tutor-quiz-attempt-history table a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-item-group{padding:25px;border:1px solid #dcdfe5;border-radius:4px;margin-bottom:30px}.tutor-dashboard-item-group>h4{font-size:20px;color:var(--tutor-primary-color);font-weight:500}.tutor-dashboard-item-group>h4:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-assignment-submitted-table tr td{text-align:center}.tutor-dashboard-assignment-submitted-table tr td a{color:#8c94a8;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-assignment-submitted-table tr td a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-assignment-submitted-table tr td,.tutor-dashboard-assignment-submitted-table tr th{border:1px solid #dcdfe5}.tutor-assignment-review-header{margin-bottom:30px}.tutor-assignment-review-header h3{margin-bottom:10px;line-height:28px}.tutor-assignment-evaluate-wraps h3,.tutor-assignment-review-header h3 a{font-size:22px;font-weight:700;color:var(--tutor-text-color);display:block}.tutor-assignment-review-header p{margin:0;color:var(--tutor-text-color);font-weight:700}.tutor-assignment-review-header p a{font-weight:400;color:var(--tutor-text-color)}.tutor-assignment-review-header a{-webkit-transition:300ms;transition:300ms}.tutor-assignment-review-header a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-assignment-review{background:rgba(220,223,229,0.14);border:1px solid #dcdfe5;padding:25px;font-weight:400;border-radius:4px;margin-bottom:40px}.tutor-dashboard-assignment-review h5,.tutor-dashboard-assignment-review h4{font-size:16px;line-height:23px;font-weight:700;color:var(--tutor-text-color)}.tutor-dashboard-assignment-review h5{margin-bottom:15px}.tutor-dashboard-assignment-files{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:-9px}.tutor-dashboard-assignment-files .uploaded-files{background-color:#fff;border:1px solid #dcdfe5;border-radius:4px;margin:9px;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-assignment-files .uploaded-files:hover{-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.1);box-shadow:0 5px 10px rgba(0,0,0,0.1)}.tutor-dashboard-assignment-files .uploaded-files a i{margin-right:12px;color:#606c8f;float:left;font-size:28px;line-height:28px}.tutor-dashboard-assignment-files .uploaded-files a{color:var(--tutor-primary-color);display:block;overflow:hidden;line-height:28px;padding:15px 17px}.tutor-dashboard-assignment-files .uploaded-files a:hover{color:var(--tutor-primary-hover-color)}.tutor-assignment-evaluate-row{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-assignment-evaluate-row .tutor-option-field-label{-webkit-box-flex:0;-ms-flex:0 0 135px;flex:0 0 135px}.tutor-assignment-evaluate-row .tutor-option-field{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-assignment-evaluate-row .tutor-option-field-label label{display:block;padding-top:12px}.tutor-option-field-label label br{display:none}.tutor-option-field-label label p{margin:0;display:inline-block}.tutor-assignment-evaluate-row textarea,.tutor-assignment-evaluate-row .tutor-option-field input{border:1px solid #dcdfe5;height:50px;padding:0 15px;border-radius:4px;width:100px;background-color:#fff}.tutor-assignment-evaluate-row textarea{height:165px;width:100%}.tutor-assignment-evaluate-row{margin-bottom:60px}.tutor-assignment-evaluate-row p.desc{margin-bottom:0;margin-top:6px;font-style:italic}.tutor-dashboard-profile .tutor-dashboard-profile-item{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-dashboard-profile .tutor-dashboard-profile-item .heading{min-width:190px}@media (max-width: 480px){.tutor-dashboard-profile .tutor-dashboard-profile-item{-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-profile .tutor-dashboard-profile-item .heading{min-width:100%;width:100%;font-weight:700;margin-bottom:6px}}.tutor-dashboard-profile .tutor-dashboard-profile-item .content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small{font-size:inherit;font-style:italic}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small a{color:var(--tutor-primary-color)}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-avater img{width:70px;height:70px;display:block;border-radius:50%}.tutor-dashboard-student-info h4{font-size:18px;color:var(--tutor-light-color);margin-bottom:0}.tutor-dashboard-student-info h4 a{color:var(--tutor-text-color)}.tutor-dashboard-user-role{font-weight:400}.tutor-dashboard-inline-links{margin-bottom:30px}.tutor-dashboard-inline-links ul{margin:0;padding:0;border-bottom:1px solid #dfe1e5}.tutor-dashboard-inline-links ul li{display:inline-block}.tutor-dashboard-inline-links ul li a{display:block;padding:5px 10px;color:var(--tutor-primary-color);margin-bottom:-1px;line-height:40px}.tutor-dashboard-inline-links ul li a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-inline-links ul li a:hover,.tutor-dashboard-inline-links ul li.active a{color:var(--tutor-primary-color);border-bottom:1px solid var(--tutor-primary-color);padding-bottom:4px}.tutor-dashboard-student-meta ul li:first-child{margin-left:0}@media (max-width: 767px){.tutor-dashboard-student-meta ul{display:block;border:none;padding:0}.tutor-dashboard-student-meta ul li{display:inline-block;color:var(--tutor-text-color);margin:5px;border:1px solid #dddddd;padding:5px 10px;border-radius:4px}}.tutor-dashboard-student-meta ul li strong{display:block;color:var(--tutor-light-color);font-weight:400}.tutor-dashboard-permalinks{list-style:none;margin:0px 0 20px;padding:20px 0;border-right:1px solid #dcdfe5}.tutor-dashboard-permalinks li a:hover{background-color:#edf0f9}.tutor-dashboard-permalinks li.active a{background-color:var(--tutor-primary-color);color:#ffffff}.tutor-dashboard-permalinks li.active a:hover{background-color:var(--tutor-primary-hover-color)}@media (max-width: 991px){.tutor-dashboard-student .tutor-col-3,.tutor-dashboard-student .tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.profile-completion-warning-details{margin-bottom:10px}}.tutor-dashboard-permalinks a{display:block;color:var(--tutor-text-color);padding:10px 20px;line-height:28px}.tutor-dashboard-permalinks a:before{content:"\e968";font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:15px;vertical-align:middle;color:var(--tutor-primary-color);opacity:0.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";font-size:17px}.tutor-dashboard-permalinks a:hover::before{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";color:var(--tutor-primary-hover-color)}.tutor-dashboard-permalinks li.active a:before{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";color:#fff}.tutor-dashboard-menu-bio a:before,.tutor-dashboard-menu-my-profile a:before{content:"\e963"}.tutor-dashboard-menu-enrolled-courses a:before{content:"\e969"}.tutor-dashboard-menu-courses_taken a:before,.tutor-dashboard-menu-my-courses a:before{content:"\e965"}.tutor-dashboard-menu-announcements a:before{content:"\e93f"}.tutor-dashboard-menu-wishlist a:before{content:"\e908"}.tutor-dashboard-menu-reviews a:before{content:"\e917"}.tutor-dashboard-menu-my-quiz-attempts a:before{content:"\e9ab"}.tutor-dashboard-menu-quiz-attempts a:before{content:"\e91f"}.tutor-dashboard-menu-question-answer a:before{content:"\e948"}.tutor-dashboard-menu-earning a:before{content:"\e96b"}.tutor-dashboard-menu-withdraw a:before{content:"\e960"}.tutor-dashboard-menu-settings a:before{content:"\e961"}.tutor-dashboard-menu-logout a:before{content:"\e962"}.tutor-dashboard-menu-purchase_history a:before{content:"\e964"}.tutor-dashboard-menu-assignments a:before{content:"\e98b"}.tutor-dashboard-content{padding-top:30px}.quiz-attempts-title,.tutor-quiz-attempt-history-title{font-size:22px;font-weight:600;line-height:1.27;color:#4b5981;margin-bottom:31px}.tutor-date-range-filter-wrap{margin:15px 0 20px;font-size:12px}.report-top-sub-menu{margin:0 10px 5px 0;display:inline-block;font-size:0}.report-top-sub-menu a{text-decoration:none;padding:5px 8px;border:1px solid #d7dadf;color:#aaaeb3;white-space:nowrap;display:inline-block;font-size:12px}.report-top-sub-menu a:not(:first-child){margin-left:-1px}.report-top-sub-menu a:hover{background:#edf0f9;color:#333}.report-top-sub-menu a.active{background-color:var(--tutor-primary-color);color:#ffffff;border:1px solid var(--tutor-primary-hover-color)}.tutor-dashboard-menu-divider{height:1px;margin:10px 0;overflow:hidden;background-color:#dcdfe5}.tutor-dashboard-menu-divider-header{color:#acacac;padding:10px 20px;cursor:default}.tutor-date-range-wrap{display:inline-block}.report-date-range-form{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:0;max-width:370px}.date-range-input{position:relative}.date-range-input input{border-radius:0 !important;margin:0 !important;border-right:none !important;font-size:14px}.date-range-input:last-child{margin-right:0}.date-range-input:last-child button{border-radius:0}.date-range-input input,.date-range-input input[type="text"]{border:1px solid #d7dadf;-webkit-box-shadow:none;box-shadow:none;line-height:29px;margin:0;padding-right:30px;padding-top:0;padding-bottom:0;width:100%}.date-range-input i.tutor-icon-calendar{position:absolute;right:10px;top:7px}.date-range-input button{background-color:var(--tutor-primary-color);color:#ffffff;border:none;line-height:30px;padding:0 15px}.date-range-input button:hover{background-color:var(--tutor-primary-hover-color)}.report-download-csv-icon{float:right}.report-download-csv-icon a{text-decoration:none}.tutor-dashboard-statement-table-wrap{overflow-x:auto}table.tutor-dashboard-statement-table p{margin:0;padding:0}table.tutor-dashboard-statement-table p.small-text{font-size:12px;color:#666666}.tutor-mycourse-thumbnail{-webkit-box-flex:0;-ms-flex:0 0 250px;flex:0 0 250px;background-size:cover;background-position:center}.tutor-mycourse-content{padding:20px;-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width: 580px){.tutor-mycourse-thumbnail{height:200px}.tutor-mycourse-thumbnail,.tutor-mycourse-content{min-width:100%;width:100%}.profile-completion-warning-details li{display:block !important}}.tutor-mycourse-content h3{margin:0 0 9px}.tutor-mycourse-content h3 a:hover{color:var(--tutor-primary-color)}.tutor-mycourse-rating{color:#f8c51c;font-size:14px}.tutor-mycourse-rating i{margin-right:4px}.tutor-mycourse-view,.tutor-mycourse-edit,.tutor-mycourse-delete{color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms}.tutor-mycourse-view i,.tutor-mycourse-edit i,.tutor-mycourse-delete i{line-height:inherit;display:inline-block;vertical-align:top;color:var(--tutor-primary-color)}.tutor-mycourse-view:hover,.tutor-mycourse-edit:hover,.tutor-mycourse-delete:hover{color:var(--tutor-primary-color)}.tutor-dashboard-content-inner .tutor-mycourse-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:30px;border:1px solid #dcdfe5;border-radius:4px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;overflow:hidden;position:relative}@media (max-width: 580px){.tutor-dashboard-content-inner .tutor-mycourse-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-course-status h4{display:none}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating{margin-bottom:3px}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating a{font-weight:400;margin-left:5px;color:#8c94a8}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-content-inner .tutor-mycourse-wrap p:last-child{margin-bottom:0}.tutor-mycourse-content .mycourse-footer{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-mycourse-content .mycourse-footer .tutor-mycourses-stats{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-dashboard-content-inner .tutor-mycourses-stats>*{margin-right:8px}.tutor-mycourse-status{margin-right:15px}.tutor-dashboard-content-inner h3 a{color:var(--tutor-text-color);font-size:22px;line-height:28px;font-weight:500;display:block}.tutor-dashboard-content-inner .tutor-course-metadata ul{display:block;list-style:none;margin:0 0 10px;padding:0}.tutor-dashboard-content-inner .tutor-progress-bar-wrap{margin-bottom:0}.tutor-dashboard-content-inner .tutor-course-metadata li{display:inline-block;color:var(--tutor-light-color);margin-left:20px}.tutor-dashboard-content-inner .tutor-course-metadata li:first-child{margin-left:0}.tutor-dashboard-content-inner .tutor-course-metadata li span{color:var(--tutor-text-color);margin-left:5px}.ui-datepicker{background-color:#fff;border:1px solid #eeeeee;display:none;margin-top:4px;padding:5px;width:180px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2a6496;-webkit-transition:color 0.1s ease-in-out;transition:color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{cursor:default;font-family:"tutor";-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;height:20px;line-height:1;margin-top:2px;width:30px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:right}.ui-datepicker .ui-datepicker-prev:before{content:"\e921"}.ui-datepicker .ui-datepicker-next:before{content:"\e903"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar th,.ui-datepicker .ui-datepicker-calendar td{text-align:center;padding:0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out;transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.ui-datepicker-calendar .ui-state-default{border:none;background:none}.ui-datepicker-calendar .ui-state-default.ui-state-highlight{background:#eeeeee;padding:3px;display:block}.tutor-table{width:100%}.tutor-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.tutor-course-delete-popup{text-align:center;font-size:16px;line-height:25px;font-weight:400;color:#8C94A8}.tutor-course-delete-popup img{width:110px;margin:0 auto}.tutor-course-delete-popup h3{font-weight:500;font-size:30px;margin:15px 0 25px}.tutor-modal-button-group{margin-top:55px}.tutor-modal-button-group button{line-height:30px;padding:10px 25px;color:#C7CCDA;border:2px solid #DDDFE7;border-radius:2px;background:#fff;min-width:220px;text-align:center;text-transform:uppercase;-webkit-transition:300ms;transition:300ms}.tutor-modal-button-group button+button{margin-left:20px}.tutor-modal-button-group button.tutor-danger{background:#F0576A;border-color:#F0576A;color:#ffffff}.tutor-modal-button-group button:hover{background:#fff;color:#333;border-color:#333}.tutor-modal-button-group button.tutor-danger:hover{background:#cd4a5a;border-color:#cd4a5a;color:#ffffff}@media (max-width: 768px){.tutor-modal-button-group button{padding:5px 20px;min-width:auto;margin-bottom:6px}.tutor-modal-button-group{margin-top:20px}}.withdraw-method-select-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px 40px}.withdraw-method-select-wrap .withdraw-method-select{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:0 15px;margin-bottom:30px}.withdraw-method-select-wrap .withdraw-method-select label{display:block;padding:20px;margin:0;cursor:pointer;overflow:hidden;border:1px solid #DCDFE5;border-radius:4px;position:relative}.withdraw-method-select-wrap .withdraw-method-select input:checked+label{border-color:var(--tutor-success-button-color);-webkit-box-shadow:0 0 0 1px var(--tutor-success-button-color);box-shadow:0 0 0 1px var(--tutor-success-button-color)}.withdraw-method-select-wrap .withdraw-method-select label:after{content:'\e90f';position:absolute;right:-1px;top:-1px;border:1px solid #DCDFE5;height:22px;width:22px;text-align:center;line-height:22px;color:transparent}.withdraw-method-select-wrap .withdraw-method-select input:checked+label:after{color:#fff;background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);font-family:'tutor' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;font-size:13px}.withdraw-method-select-wrap .withdraw-method-select p{margin:0}.withdraw-method-select-wrap .withdraw-method-select label>p{font-size:20px;font-weight:600;color:var(--tutor-primary-color)}.withdraw-method-select-wrap .withdraw-method-select label span{color:#B0B6C8;font-weight:400}.withdraw-method-form{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px}.withdraw-method-form>div{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-width:50%;padding:0 15px 20px}@media (max-width: 480px){.withdraw-method-form>div{width:100%}}.withdraw-method-form>div.withdraw-account-save-btn-wrap{width:100%}.withdraw-form-field-amount input[type='text'],.withdraw-method-forms-wrap .withdraw-method-form input:not([type="submit"]):not([type="radio"]):not([type="checkbox"]),.withdraw-method-forms-wrap .withdraw-method-form textarea{border:1px solid #DCDFE5;display:block;width:100%;background:transparent;-webkit-box-shadow:none;box-shadow:none;border-radius:4px}label[for="tutor_withdraw_amount"]{margin-bottom:7px;display:block}.withdraw-form-field-amount input[type='text']{margin-bottom:10px;height:45px}.withdraw-method-forms-wrap .withdraw-method-form input:not([type="submit"]):not([type="radio"]):not([type="checkbox"]):focus,.withdraw-method-forms-wrap .withdraw-method-form textarea:focus{border-color:var(--tutor-primary-color);outline:none}.withdraw-method-forms-wrap .withdraw-method-form textarea{min-height:80px}.withdraw-method-forms-wrap .withdraw-method-form label{color:#989EAF;margin-bottom:8px;display:block}.withdraw-method-forms-wrap .withdraw-method-form .withdraw-field-desc{font-size:12px;margin:5px 0 0;font-style:italic}.submitted-assignment-title a,.submitted-assignment-title h3{margin-bottom:20px}.submitted-assignments-sorting-wrap{margin-bottom:30px}.submitted-assignments-sorting-wrap .tutor-form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:35% !important;flex-basis:35% !important}.submitted-assignments-sorting-wrap .tutor-form-group label,.submitted-assignments-sorting-wrap .tutor-form-group select{margin-bottom:0}.submitted-assignments-sorting-wrap .tutor-form-group label{-ms-flex-preferred-size:35%;flex-basis:35%}.submitted-assignments-sorting-wrap .tutor-form-group select{height:40px}.tutor-dashboard-assignment-table .student-column{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-assignment-table .student-column .student-avatar{width:34px;margin-right:10px}.tutor-dashboard-assignment-table .student-column .student-avatar img{border-radius:50%}.tutor-dashboard-assignment-table .student-column .student-avatar span{display:block;width:34px;height:34px;line-height:34px;border-radius:50%;font-size:12px;text-align:center}.tutor-dashboard-assignment-table .student-column .student-details h4,.tutor-dashboard-assignment-table .student-column .student-details p{line-height:1.3;margin-bottom:0}.tutor-dashboard-assignment-table span.review-required,.tutor-dashboard-assignment-table span.result-pass,.tutor-dashboard-assignment-table span.result-fail{background:#df3247;font-size:14px;font-weight:bold;color:#fff;padding:4px 11px;border-radius:2px}.tutor-dashboard-assignment-table span.result-pass{background:var(--tutor-success-button-color)}.tutor-dashboard-assignment-table span.review-required{background:#f5b30d}.tutor-assignment-review-header p span{font-weight:400;color:var(--tutor-text-color)}.tutor-assignment-submitted-page{border-bottom:none}.tutor-assignment-submitted-page .assignment-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-assignment-submitted-page .assignment-info p{margin-right:15px}.tutor-assignment-submitted-page h3{margin:5px 0}.tutor-dashboard-assignment-submitted-content{margin-top:30px;margin-bottom:50px}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row{margin-bottom:30px}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark input{margin:0}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark p{margin-top:0;margin-left:15px}.tutor-announcement-content-wrap{text-align:left !important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-content-wrap p{margin:0}.tutor-dashboard-announcement-sorting-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-column-gap:15px;-moz-column-gap:15px;column-gap:15px}.tutor-dashboard-announcement-sorting-wrap div:nth-child(1){-ms-flex-preferred-size:50%;flex-basis:50%}.tutor-dashboard-announcement-sorting-wrap div:nth-child(2){-ms-flex-preferred-size:20%;flex-basis:20%}.tutor-dashboard-announcement-sorting-wrap div:nth-child(3){-ms-flex-preferred-size:30%;flex-basis:30%}.tutor-dashboard-announcement-table{border-spacing:0;border-collapse:collapse;border:1px solid #ccd0d4}.tutor-dashboard-announcement-table thead th,.tutor-dashboard-announcement-table thead td{border-bottom:1px solid #ccd0d4}.tutor-dashboard-announcement-table tbody tr:last-child{border-bottom:1px solid #ccd0d4}.tutor-dashboard-announcement-table tbody td:first-child{padding-left:30px;line-height:24px}.tutor-dashboard-announcement-table tr{background-color:#F3F3F3}.tutor-dashboard-announcement-table tr:nth-child(odd){background-color:#fff}.tutor-dashboard-announcement-table th,.tutor-dashboard-announcement-table td{border:0;vertical-align:middle}.tutor-dashboard-announcement-table th h4,.tutor-dashboard-announcement-table td h4{font-size:16px;margin-bottom:0}.tutor-dashboard-announcement-table th p,.tutor-dashboard-announcement-table th a,.tutor-dashboard-announcement-table td p,.tutor-dashboard-announcement-table td a{font-size:13px;margin-bottom:0}.tutor-dashboard-announcement-table th:last-child,.tutor-dashboard-announcement-table td:last-child{padding-right:30px}.tutor-dashboard-announcement-table th{padding:15px 0;background-color:#f3f3f3}.tutor-dashboard-announcement-table td{padding:30px 0}.tutor-dashboard-announcement-table th:first-child{padding-left:40px}.tutor-dashboard-announcement-table th:last-child{padding-right:40px}.tutor-announcement-datepicker{position:relative}.tutor-announcement-datepicker input,.tutor-announcement-datepicker i{position:absolute}.tutor-announcement-datepicker i{top:50%;right:10px;color:#3e64de}.tutor-announcement-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-buttons li{list-style:none}.tutor-dropdown{position:relative;cursor:pointer;margin-left:20px}.tutor-dropdown .tutor-icon-action{padding:5px 10px;margin-right:-10px}.tutor-dropdown .tutor-icon-action:hover{background:#f3f3f3;border-radius:50%}.tutor-dropdown.show .tutor-dropdown-menu{display:block !important}.tutor-dropdown-menu:before{content:"";position:absolute;right:10px;background:linear-gradient(-45deg, transparent 50%, black 50%);height:10px;width:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);top:-4px}.tutor-dropdown-menu{min-width:140px;background:#353535;color:white;width:100%;position:absolute;top:40px;right:-13px;display:none;border-radius:5px;padding:0;margin:0}.tutor-dropdown-menu li{list-style:none !important;padding:5px 15px 5px 15px;cursor:pointer}.tutor-dropdown-menu li:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.tutor-dropdown-menu li:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.tutor-dropdown-menu li:hover{background-color:#6b6b6b}.tutor-dropdwown-menu li i{padding-right:4px}.tutor-announcements-update-form .tutor-option-field-row input[type="text"],.tutor-announcements-update-form textarea,.tutor-announcements-form .tutor-option-field-row input[type="text"],.tutor-announcements-form textarea{width:100%;margin-top:8px}.tutor-announcements-form select,.tutor-announcements-update-form select{width:100%;max-width:100% !important;padding:7px 12px;margin-top:8px}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{border:none !important}.tutor-announcement-modal-content{border-radius:20px}.tutor-announcement-modal-footer-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-announcement-cancel-btn{background:#e8e8e8 !important;border-radius:3px !important;color:#7a7a7a !important}.tutor-announcement-details-modal-content>a{cursor:pointer;padding:20px;float:right}.modal-container.tutor-announcement-details-container{padding:45px 70px !important}.balance-info .tutor-announcement-big-icon{margin-right:10px}.tutor-announcement-big-icon{font-size:32px;width:76px;height:76px;border-radius:100%;background:#e9edfb;text-align:center;color:#3e64de}.tutor-announcement-big-icon .tutor-icon-speaker{position:relative !important;top:30% !important}.tutor-announcement-detail-content{margin-top:35px}.tutor-announcement-detail-content h3{font-size:24px;font-weight:bold;color:#161616}.tutor-announcement-detail-content p{font-style:normal;font-weight:normal;font-size:16px;color:#7a7a7a;margin-top:15px;margin-bottom:10px}.tutor-detail-course-content-wrap{background-color:#f3f3f3}.tutor-detail-course-content{padding:30px 70px 70px}.tutor-detail-course-info-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:50px}.tutor-announce-detail-popup-button-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.announcement-detail-edit-delete-button>.tutor-announcement-delete{background:#e8e8e8 !important;color:#7a7a7a !important}.tutor-border-none{border:none !important}.announcement-detail-edit-delete-button>button{padding:10px 20px !important}.announcement-detail-edit-delete-button{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.tutor-announcement-detail-course-info p,.tutor-announcement-detail-date-info p{font-size:16px;color:#161616;font-weight:700;max-width:95%}.tutor-announcements-modal-wrap .tutor-modal-content{max-width:660px !important}.tutor-announcements-modal-wrap .modal-footer{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-attempt-history td:last-child{text-align:center}.tutor-quiz-attempt-history td:last-child a{display:block;padding:10px}.attempt-review-title{font-size:18px;color:var(--tutor-text-size);font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:60px}.attempt-review-title i{margin-right:12px;color:var(--tutor-primary-color)}.tutor-quiz-attempt-info-row .attempt-view-bottom,.tutor-quiz-attempt-info-row .attempt-view-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-attempt-info-row .attempt-view-bottom .attempt-info-col,.tutor-quiz-attempt-info-row .attempt-view-top .attempt-info-col{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:30%}.tutor-quiz-attempt-info-row .attempt-view-bottom .attempt-info-col{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.tutor-quiz-attempt-info-row .attempt-info-content span.result-review-required,.tutor-quiz-attempt-info-row .attempt-info-content span.result-pass,.tutor-quiz-attempt-info-row .attempt-info-content span.result-fail{background:#df3247;font-size:14px;font-weight:400;color:#fff;padding:1px 4px;margin-right:13px;border-radius:2px}.tutor-quiz-attempt-info-row .attempt-info-content span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-info-row .attempt-info-content span.result-review-required{background:#f5b30d}.tutor-quiz-attempt-info-row .attempt-info-content h4,.tutor-quiz-attempt-info-row .attempt-info-content h5{font-size:14px;line-height:25px;margin:0;color:#7a7f85;font-weight:400}.tutor-quiz-attempt-info-row .attempt-info-content h4 a,.tutor-quiz-attempt-info-row .attempt-info-content h4{font-weight:700;color:var(--tutor-text-color);margin-top:7px}.tutor-quiz-attempt-info-row .attempt-view-top{padding-bottom:30px;margin-bottom:30px;border-bottom:1px solid #dcdfe5}.tutor-quiz-attempt-info-row .attempt-view-bottom{margin-bottom:60px}.attempt-user-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.attempt-user-details .attempt-user-avatar{padding-right:20px}.attempt-user-details .attempt-user-avatar img{display:block;width:70px;height:70px;border-radius:50%}.attempt-user-details .attempt-info-content h4{font-size:18px}.attempt-review-notice-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:60px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.attempt-review-notice-wrap p{margin:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.attempt-review-notice-wrap p.attempt-review-notice i{font-size:16px;color:#f5c813;margin-right:9px}.attempt-review-notice-wrap p.attempt-review-at>span{color:var(--tutor-primary-color);margin-right:7px;font-size:16px}.attempt-review-notice-wrap p>strong{font-weight:400;margin-right:5px}.quiz-attempt-answers-wrap{background:#fff;margin:0 0 1.5em}.quiz-attempt-answers-wrap .attempt-answers-header{padding:30px 20px}.quiz-attempt-answers-wrap .attempt-answers-header h3{font-size:20px;line-height:1.5;color:#3f435b}.quiz-attempt-answers-wrap table{border-collapse:collapse;border:none}.quiz-attempt-answers-wrap table tr{background-color:#fff}.quiz-attempt-answers-wrap table tr:first-child{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea !important}.quiz-attempt-answers-wrap table tr:not(:first-child){border-top:1px solid #dcdce1}.quiz-attempt-answers-wrap table tr:not(:last-child){border-bottom:1px solid #dcdce1}.quiz-attempt-answers-wrap table th{font-size:12px;text-transform:inherit}.quiz-attempt-answers-wrap table th,.quiz-attempt-answers-wrap table td{padding:17px 20px;vertical-align:middle;border:none;font-size:14px;line-height:1.71;letter-spacing:normal;color:#393c40}.quiz-attempt-answers-wrap table th p,.quiz-attempt-answers-wrap table td p{margin:0}.quiz-attempt-answers-wrap table th .tutor-icon-block,.quiz-attempt-answers-wrap table td .tutor-icon-block{font-size:14px;width:30px;height:30px;line-height:30px}.quiz-attempt-answers-wrap table .quiz-manual-review-action{border:1px solid #d4dadb;color:#d4dadb;height:30px;width:30px;border-radius:2px;font-size:13px;display:inline-block;text-align:center;line-height:30px;-webkit-transition:300ms;transition:300ms}.quiz-attempt-answers-wrap table .quiz-manual-review-action:first-child:hover{border:1px solid var(--tutor-success-button-color);color:var(--tutor-success-button-color)}.quiz-attempt-answers-wrap table .quiz-manual-review-action:last-child:hover{border:1px solid #df3247;color:#df3247}.quiz-attempt-answers-wrap table .quiz-manual-review-action:not(:last-child){margin-right:17px}.tutor-quiz-attempt-review-wrap .attempt-answers-header{background:#fff;padding:20px;margin-top:20px}.tutor-quiz-attempt-review-wrap .attempt-answers-header a{color:#3f435b}.tutor-quiz-attempt-review-wrap .attempt-answers-header>p{color:#737787;margin-top:10px;margin-bottom:0}.tutor-quiz-attempt-review-wrap .attempt-answers-header h3{font-size:20px;line-height:1.5;color:#3f435b}.tutor-quiz-attempt-review-wrap .instructor-feedback-content{padding:0px 20px 10px 20px}.tutor-quiz-attempt-review-wrap .instructor-feedback-content>p{margin-bottom:1em}.tutor-quiz-attempt-review-wrap table{border-collapse:collapse;border:none}.tutor-quiz-attempt-review-wrap table tr{background-color:#fff}.tutor-quiz-attempt-review-wrap table tr:first-child{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea}.tutor-quiz-attempt-review-wrap table tr:first-child th,.tutor-quiz-attempt-review-wrap table tr:first-child td{padding-top:14px;padding-bottom:14px}.tutor-quiz-attempt-review-wrap table tr:not(:first-child){border-top:1px solid #dcdce1}.tutor-quiz-attempt-review-wrap table tr:not(:first-child) th,.tutor-quiz-attempt-review-wrap table tr:not(:first-child) td{padding-top:20px;padding-bottom:20px}.tutor-quiz-attempt-review-wrap table tr:not(:last-child){border-bottom:1px solid #dcdce1}.tutor-quiz-attempt-review-wrap table th,.tutor-quiz-attempt-review-wrap table td{border:none;vertical-align:top;font-size:14px;font-weight:400;line-height:1.71;padding:15px 6px}.tutor-quiz-attempt-review-wrap table th:first-child,.tutor-quiz-attempt-review-wrap table td:first-child{padding:12px}.tutor-quiz-attempt-review-wrap table th:last-child,.tutor-quiz-attempt-review-wrap table td:last-child{padding:12px 10px}.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table th:nth-child(3),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table th:nth-child(4),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table td:nth-child(3),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table td:nth-child(4){width:28%}.tutor-quiz-attempt-review-wrap span.result-review-required,.tutor-quiz-attempt-review-wrap span.result-pass,.tutor-quiz-attempt-review-wrap span.result-fail{background:#df3247;font-size:14px;font-weight:bold;color:#fff;padding:4px 11px;border-radius:2px}.tutor-quiz-attempt-review-wrap span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-review-wrap span.result-review-required{background:#f5b30d}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip],.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]{position:relative;z-index:2;cursor:pointer}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:after,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:before,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:after{visibility:hidden;opacity:0;pointer-events:none;-webkit-transform:translateY(15px);transform:translateY(15px);-webkit-transition:0.15s ease;transition:0.15s ease}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:before,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:before{content:attr(data-tooltip);position:absolute;bottom:40px;left:50%;margin-bottom:0px;margin-left:-60px;min-width:122px;text-align:center;padding:4px 7px;font-size:14px;line-height:1.2;font-weight:300;border-radius:12px;background-color:#3f435b;color:#fff;z-index:99999}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:after,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:after{position:absolute;content:"";bottom:34px;left:50%;margin-left:-10px;border-top:8px solid #3f435b;border-right:10px solid transparent;border-left:10px solid transparent}.tutor-quiz-attempt-review-wrap .active[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:after,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:after,.quiz-attempt-answers-wrap .active[data-tooltip]:before,.quiz-attempt-answers-wrap .active[data-tooltip]:after,.quiz-attempt-answers-wrap .active[data-tooltip]:before,.quiz-attempt-answers-wrap .active[data-tooltip]:after{visibility:visible;opacity:1;-webkit-transform:translateY(0px);transform:translateY(0px)}.tutor-status-blocked-context i,.tutor-status-approved-context i,.quiz-correct-answer-text i,.quiz-incorrect-answer-text i{font-size:14px;height:20px;width:20px;text-align:center;line-height:20px;background:#7bbc30;color:#fff;display:inline-block;border-radius:2px;margin-right:6px}.tutor-status-blocked-context i,.quiz-incorrect-answer-text i{background:#f44337;font-size:10px;font-weight:900}.answer-image-matched-wrap{display:block}.answer-image-matched-wrap .image-matching-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.answer-image-matched-wrap .image-matching-item:not(:last-child){margin-bottom:12px}.answer-image-matched-wrap .image-matching-item img{max-width:35px}.answer-image-matched-wrap .image-matching-item .dragged-caption{font-size:14px;margin-left:12px}.correct-answer-wrap .matching-type{display:-webkit-box;display:-ms-flexbox;display:flex}.correct-answer-wrap .text-image-type{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.correct-answer-wrap .text-image-type:not(:last-child){margin-bottom:12px}.correct-answer-wrap .text-image-type .image{margin-right:12px}.correct-answer-wrap .text-image-type img{max-width:35px}#tutor_profile_cover_photo_editor{height:344px;position:relative}#tutor_profile_cover_photo_editor #tutor_photo_meta_area{text-align:right;padding-left:190px;margin-top:16px}@media (max-width: 492px){#tutor_profile_cover_photo_editor #tutor_photo_meta_area{padding-left:120px}}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>img,#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span{display:inline-block;vertical-align:middle}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span{white-space:nowrap;font-style:normal;font-weight:normal;font-size:13px;line-height:18px;color:#7A7A7A}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span>span{color:black}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span.loader-area{display:none}#tutor_profile_cover_photo_editor #tutor_cover_area{height:245px;background-color:#E9EDFB;background-position:center center;background-size:cover;background-repeat:no-repeat;border-radius:6px;position:relative;overflow:hidden}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_overlay{height:70%;position:absolute;left:0;bottom:0;right:0;background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0,0,0,0.6)));background-image:linear-gradient(transparent, rgba(0,0,0,0.6))}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader{background:#3E64DE;border-radius:3px;color:white;border:none;cursor:pointer;font-style:normal;font-weight:600;font-size:12px;color:#FFFFFF;position:absolute;padding:8px 20px;right:22px;bottom:22px}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader:hover{background:#2f52c4}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader>span{margin-left:6px}@media (max-width: 432px){#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader>span{display:none}}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_deleter{position:absolute;color:white;background:rgba(0,0,0,0.247);text-align:center;width:36px;border-radius:50%;font-size:17px;line-height:40px;height:36px;right:22px;top:22px;cursor:pointer}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_deleter:hover{background:rgba(0,0,0,0.438)}#tutor_profile_cover_photo_editor #tutor_profile_area{width:142px;height:142px;left:35px;top:145px;border-radius:50%;border:5px solid white;position:absolute;overflow:hidden;background-color:#E9EDFB;background-position:center center;background-size:cover;background-repeat:no-repeat}@media (max-width: 688px){#tutor_profile_cover_photo_editor #tutor_profile_area{width:120px;height:120px;left:31px;top:168px}}#tutor_profile_cover_photo_editor #tutor_profile_area .tutor_overlay{position:absolute;right:0;left:0;bottom:0;background:rgba(0,0,0,0.253);padding:0;height:37px;cursor:pointer;color:white;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}#tutor_profile_cover_photo_editor #tutor_profile_area .tutor_overlay:hover{background:rgba(0,0,0,0.411)}#tutor_profile_cover_photo_editor #tutor_pp_option{position:absolute;background:#353535;width:157px;top:294px;left:27px;border-radius:6px;color:white;z-index:99;display:none}@media (max-width: 688px){#tutor_profile_cover_photo_editor #tutor_pp_option{top:294px;left:10px}}#tutor_profile_cover_photo_editor #tutor_pp_option span{display:block;padding:5px 10px;cursor:pointer;overflow:hidden;font-style:normal;font-weight:normal;font-size:16px;line-height:26px;color:#FFFFFF}#tutor_profile_cover_photo_editor #tutor_pp_option span:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}#tutor_profile_cover_photo_editor #tutor_pp_option span:last-of-type{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#tutor_profile_cover_photo_editor #tutor_pp_option span:hover{background:#6b6b6b}#tutor_profile_cover_photo_editor #tutor_pp_option .up-arrow{text-align:center;height:0}#tutor_profile_cover_photo_editor #tutor_pp_option .up-arrow i{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;position:relative;top:-17px;border-bottom:5px solid #353535}#tutor_profile_cover_photo_editor #tutor_pp_option>*:not(:last-child){position:relative;z-index:1}#tutor_profile_cover_photo_editor #tutor_pp_option>div:last-child{position:fixed;left:0;right:0;top:0;bottom:0;background:transparent;z-index:0;z-index:0}#tutor_profile_cover_photo_editor.pop-up-opened #tutor_pp_option{display:block}#tutor_profile_cover_photo_editor #tutor_photo_dialogue_box{display:none}.tutor-user-public-profile .photo-area{overflow:hidden;height:414px;margin-top:30px}.tutor-user-public-profile .photo-area .cover-area{position:relative;border-radius:6px;overflow:hidden}.tutor-user-public-profile .photo-area .cover-area>div:first-child{height:375px;background-position:center center;background-repeat:no-repeat;background-size:cover}.tutor-user-public-profile .photo-area .cover-area>div:last-child{position:absolute;left:0;right:0;bottom:0;height:70%;background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0,0,0,0.6)));background-image:linear-gradient(transparent, rgba(0,0,0,0.6))}.tutor-user-public-profile .photo-area .pp-area{position:relative;top:-111px;padding-left:49px;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-user-public-profile .photo-area .pp-area .profile-pic{background-position:center center;background-repeat:no-repeat;background-size:cover;display:inline-block;border:8px solid white}.tutor-user-public-profile .photo-area .pp-area .profile-name{padding-left:23px;padding-bottom:30px}.tutor-user-public-profile .photo-area .pp-area .profile-name h3{font-style:normal;font-weight:600;font-size:40px;line-height:48px;color:#FFFFFF;margin:0}.tutor-user-public-profile .photo-area .pp-area .profile-name>span{font-style:normal;font-weight:500;font-size:15px;color:#757575;margin-right:10px}.tutor-user-public-profile .photo-area .pp-area .profile-name>span>span{color:white}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media{text-align:right;padding-right:30px;padding-bottom:20px;-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container{font-size:16px}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container .rating-digits{color:white}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container .rating-total-meta{color:#757575}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container{margin-top:15px;text-align:right}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container a{display:inline-block;margin-left:20px;color:whitesmoke;cursor:pointer;text-decoration:none;font-size:16px}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container a:hover{color:white}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-pic{border-radius:50%;height:153px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area{overflow:initial}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-pic{border-radius:10px;height:200px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-rating-media{padding-bottom:75px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .tutor-user-profile-sidebar{margin-top:79px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area{height:auto}.tutor-user-public-profile.tutor-user-public-profile-no-cp .cover-area{display:none}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{top:0}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-pic{border-radius:50%;height:153px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name{padding-top:49px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name h3{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span>span{color:black !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{position:absolute;left:226px;top:15px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media .rating-digits{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-rating-container{text-align:left}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container{text-align:left !important;margin-top:5px !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container a{margin-left:0 !important;margin-right:20px;color:#757575 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container a:hover{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{width:calc(100% - 157px)}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container{position:absolute;right:36px;left:auto}@media (min-width: 768px){.tutor-user-public-profile .content-for-mobile{display:none}.tutor-user-public-profile .content-for-desktop{display:block}}@media (max-width: 767px){.tutor-user-public-profile .content-for-mobile{display:block;margin:22px 0 0 0;padding:0 !important}.tutor-user-public-profile .content-for-desktop{display:none}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .photo-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area{height:auto}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .photo-area .cover-area>div:first-child,.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area .cover-area>div:first-child,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .cover-area>div:first-child{height:220px}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .pp-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{padding-left:0 !important;top:-82px !important;flex-wrap:wrap;-o-flex-wrap:wrap;-ms-flex-wrap:wrap;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-rating-media{width:100% !important;text-align:center !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name>span>span,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span>span,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name>span>span{color:black !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name>span:nth-of-type(2)>span,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span:nth-of-type(2)>span,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name>span:nth-of-type(2)>span{color:#C4C4C4 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name h3,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name h3,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name h3{color:#161616 !important;font-size:30px !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .rating-digits,.tutor-user-public-profile.tutor-user-public-profile-no-cp .rating-digits,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .rating-digits{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{top:-98px !important}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-pic{height:160px !important;width:153px !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container,.tutor-user-public-profile.tutor-user-public-profile-no-cp .ratings{position:static !important;top:0 !important;text-align:center !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name{padding:0 !important}.tutor-user-public-profile .tutor-social-container{margin:15px 0 0 0 !important}.tutor-user-public-profile .tutor-social-container a{color:#7A7A7A !important}.tutor-user-public-profile .profile-name{padding:0 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .pp-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{margin-top:-83px !important;position:relative !important;top:0 !important}.tutor-user-public-profile .tutor-user-profile-sidebar{margin-top:0 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{-webkit-box-pack:left !important;-ms-flex-pack:left !important;justify-content:left !important;-o-justify-content:left !important;-ms-justify-content:left !important;-moz-justify-content:left !important;-webkit-justify-content:left !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area *{text-align:left !important}}.tutor-user-public-profile .tutor-user-profile-sidebar{padding:15px;width:223px;float:left}.tutor-user-public-profile .tutor-user-profile-content{width:calc(100% - 228px);float:left;margin-bottom:30px}.tutor-user-public-profile .tutor-user-profile-content>h3{font-style:normal;font-weight:normal;font-size:24px;line-height:34px;color:#161616;margin-top:20px}.tutor-user-public-profile .tutor-user-profile-content>h3:first-child{margin-top:0}@media (max-width: 800px){.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{padding-left:0 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{left:178px !important}.tutor-user-public-profile .tutor-user-profile-sidebar,.tutor-user-public-profile .tutor-user-profile-content{width:100%;float:none}}.tutor-dashboard-builder-header{padding:10px 0px;border-bottom:2px solid #DCDFE5;position:fixed;top:0px;background:#fff;width:100%;z-index:99}@media (max-width: 991px){.tutor-dashboard-builder-header{position:static}}.tutor-dashboard-builder-header .tutor-row{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-row .tutor-col-auto{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-dashboard-builder-header .tutor-row .tutor-col-auto:first-child{margin-bottom:15px}}.tutor-dashboard-builder-header .tutor-button{white-space:nowrap;margin-left:auto}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-button{padding:6px 10px}}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left .tutor-dashboard-builder-logo{padding:0 25px;position:relative}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left .tutor-dashboard-builder-logo img{max-height:32px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button{margin:0;padding:0px 25px;line-height:30px;border:none;border-left:1px solid #DCDFE5;background:transparent;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:var(--tutor-text-color);-webkit-transition:300ms;transition:300ms;font-weight:500;white-space:nowrap}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button{border-left:none}}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button i{font-size:24px;line-height:30px;margin-right:9px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button:hover{color:var(--tutor-primary-color);background:transparent}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button:hover i{color:var(--tutor-primary-color)}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a{color:var(--tutor-text-color);font-weight:500;line-height:36px;padding:0 25px;-webkit-transition:300ms;transition:300ms;white-space:nowrap}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a i{font-size:36px;line-height:36px;display:inline-block;vertical-align:top;padding-right:9px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a:hover{color:var(--tutor-primary-color)}.tutor-frontend-course-builder-section{padding:113px 0 45px;background-color:#ffffff}@media (max-width: 991px){.tutor-frontend-course-builder-section{padding-top:60px}.tutor-frontend-course-builder-section .tutor-col-8,.tutor-frontend-course-builder-section .tutor-col-4{width:100%;max-width:100%;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%}}.admin-bar .tutor-dashboard-builder-header{top:32px}@media (max-width: 783px){.admin-bar .tutor-dashboard-builder-header{top:46px}}.tutor-course-builder-upload-tips{position:fixed;max-width:370px}@media (max-width: 991px){.tutor-course-builder-upload-tips{position:static}}.tutor-course-builder-upload-tips .tutor-course-builder-tips-title{font-size:16px;color:#8C94A8;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-course-builder-upload-tips .tutor-course-builder-tips-title i{font-size:24px;color:var(--tutor-primary-color);margin-right:11px}.tutor-course-builder-upload-tips ul{margin:0;padding:0 0 0 35px;list-style:none}.tutor-course-builder-upload-tips ul li{position:relative;margin-bottom:8px;line-height:24px}.tutor-course-builder-upload-tips ul li::after{content:'';position:absolute;height:8px;width:8px;border-radius:50%;background:#DCDFE5;left:-26px;top:9px}.tutor-course-level-meta{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-course-level-meta label{margin:0 40px 0 0;font-weight:600}.tutor-frontend-builder-course-price .tutor-form-group input{margin-bottom:0}.tutor-frontend-builder-course-price .tutor-styled-radio{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-course-builder-attachements{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-30px;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-builder-attachements .tutor-added-attachment{-webkit-box-flex:0;-ms-flex:0 0 calc(25% - 30px);flex:0 0 calc(25% - 30px);max-width:calc(25% - 30px);border:1px solid #DCDFE5;padding:35px 20px 20px;position:relative;text-align:center;margin-left:30px;margin-bottom:30px;border-radius:4px;-webkit-transition:300ms;transition:300ms;min-width:120px}@media (max-width: 480px){.tutor-course-builder-attachements .tutor-added-attachment{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 30px);flex:0 0 calc(50% - 30px);max-width:calc(50% - 30px)}}.tutor-course-builder-attachements .tutor-added-attachment i{font-size:58px;line-height:58px;margin-bottom:25px;display:block}.tutor-course-builder-attachements .tutor-added-attachment .tutor-delete-attachment{position:absolute;height:22px;width:22px;border:1px solid #DCDFE5;text-align:center;line-height:22px;top:-1px;right:-1px;font-size:10px;border-top-right-radius:4px;color:transparent;-webkit-transition:300ms;transition:300ms}.tutor-course-builder-attachements .tutor-added-attachment:hover,.tutor-course-builder-attachements .tutor-added-attachment:hover .tutor-delete-attachment{border-color:#D71830;color:#D71830}.tutor-course-builder-attachements .tutor-added-attachment span{display:block}.tutor-course-builder-attachements .tutor-added-attachment span a{font-size:14px;display:block;line-height:20px;color:#606C8F}.tutor-course-builder-btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}#tutor-metabox-course-settings-tabs{background-color:#fff;border:1px solid #e5e5e5;margin:1em 0}.inside #tutor-metabox-course-settings-tabs{border:0;margin:0}.settings-tabs-heading{padding:1em;border-bottom:1px solid #e5e5e5}.settings-tabs-heading h3{font-size:14px;margin:0;line-height:1.4}.course-settings-tabs-container{display:-webkit-box;display:-ms-flexbox;display:flex}.course-settings-tabs-container .settings-tabs-navs-wrap{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;background:#F5F5F5}.settings-tabs-navs-wrap .settings-tabs-navs{margin:0;list-style:none}.settings-tabs-navs-wrap .settings-tabs-navs li{margin:0}.settings-tabs-navs-wrap .settings-tabs-navs li a{display:block;padding-top:10px;padding-bottom:10px;padding-left:15px;padding-right:15px;color:#23282d;text-decoration:none;background:#F5F5F5;text-transform:capitalize;border-bottom:1px solid #e5e5e5;border-left:3px solid transparent}.settings-tabs-navs-wrap .settings-tabs-navs li:last-child a{border-bottom:none}.settings-tabs-navs-wrap .settings-tabs-navs li a:focus{-webkit-box-shadow:none;box-shadow:none}.settings-tabs-navs-wrap .settings-tabs-navs li.active a{background-color:#ffffff;border-bottom:1px solid #e5e5e5;color:var(--tutor-primary-color);border-left:3px solid var(--tutor-primary-color)}.course-settings-tabs-container .settings-tabs-container{padding:1em;-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-field-radio p{margin-top:0}.lesson-modal-form-wrap .lesson-content-drip-wrap{padding:10px;border:1px solid #e4e4e4}.lesson-modal-form-wrap .lesson-content-drip-wrap h3{margin:0 0 10px 0}.select2-dropdown.increasezindex{z-index:9999999999999}.tutor-topic-title i.tutor-icon-move{line-height:unset}.select2-selection__rendered [class^="tutor-icon-"]{vertical-align:middle}@media (min-width: 992px){.tutor-option-tooltip.tutor-option-field{position:relative}.tutor-option-tooltip.tutor-option-field p.desc{position:absolute;left:calc(100% + 16px);background:#2A344F;width:160px;padding:10px 13px;opacity:0;visibility:hidden;-webkit-transition:300ms;transition:300ms;z-index:98;top:10px;color:#fff;border-radius:12px;font-size:12px;font-style:normal}.tutor-option-tooltip.tutor-option-field p.desc::before{content:url("data:image/svg+xml,%3Csvg width='14' height='18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 8.139C5.339 5.482 8.671 2.903 9.998.403c1.99-3.75 5.481 21.94 1.567 16.037C8.955 12.505 5.1 9.738 0 8.139z' fill='%232A344F' fill-rule='evenodd'/%3E%3C/svg%3E");position:absolute;left:-10px;top:16px}.tutor-option-tooltip.tutor-option-field:hover p.desc{opacity:1;visibility:visible}.tutor-option-tooltip.tutor-option-field input:focus+p.desc,.tutor-option-tooltip.tutor-option-field textarea:focus+p.desc{opacity:1;visibility:visible}}.tutor-instructor-pending-content{text-align:center}.tutor-instructor-pending-content a{margin-top:26px}.tutor-instructor-pending-content img{margin-bottom:69px;border-radius:10px}.tutor-instructor-thankyou-text h2{line-height:48px;font-size:40px;font-style:normal;font-weight:500;letter-spacing:0px;color:#161616;margin-bottom:26px}.tutor-instructor-extra-text{font-size:20px;font-style:normal;font-weight:400;letter-spacing:0px;color:#525252;line-height:30px}.tutor-frontend-dashboard-withdrawal h4{margin-bottom:25px}.withdraw-history-table-title h4{margin-top:45px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border:1px solid #DCDBDC;border-radius:6px;padding:25px 35px 25px 30px;margin-bottom:15px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info img{margin-right:15px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info small{font-size:16px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info p{font-size:20px;line-height:26px;margin:0}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:hover,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:focus,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:active{text-decoration:none;background:#3E64DE;border-radius:3px;display:inline-block;padding:8px 18px;font-weight:500;font-size:16px;color:white;cursor:pointer}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:hover{background:#2548bb}.tutor-frontend-dashboard-withdrawal h4{font-weight:500;font-size:24px}.tutor-frontend-dashboard-withdrawal .withdrawal-preference{font-size:15px;color:#7A7A7A}.tutor-frontend-dashboard-withdrawal .inline-image-text>img{width:23px;display:inline-block !important}.tutor-frontend-dashboard-withdrawal .inline-image-text>*{vertical-align:middle}.tutor-frontend-dashboard-withdrawal .inline-image-text.is-inline-block>*{display:inline-block}.tutor-frontend-dashboard-withdrawal .inline-image-text a{text-decoration:underline;color:#444}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap{display:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div{width:100%;height:100%;padding:15px;overflow:hidden;position:fixed;left:0;right:0;top:0;bottom:0;z-index:9999999999;background:rgba(0,0,0,0.589);display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div{display:inline-block;max-height:100%;width:100%;max-width:690px;background:white;overflow:auto;border-radius:15px;position:relative;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div{padding:50px 70px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child>.tutor-icon-line-cross{position:absolute;cursor:pointer;top:30px;right:30px;font-size:20px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child tr,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child td,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child table,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child tbody{border:none;margin:0;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child h3{margin:7px 0px;font-weight:600;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:last-child{border-top:1px solid #E8E8E8;background:#F3F3F3}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount{border:1px solid #BABABA;border-radius:6px;background:white;height:43px;overflow:hidden;margin-bottom:12px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount>span{display:block;text-align:center;width:40px;float:left;height:100%;background:#f3f3f3;border-right:1px solid #BABABA}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount>span>span{font-size:18px;font-weight:bold;display:inline-block;line-height:41px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input:focus,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input:active{border:none;outline:0;height:100%;width:calc(100% - 40px);display:inline-block;margin:0;padding:0;padding-left:7px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-button-container{margin:50px 0 0;overflow:auto}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-button-container>button:last-child{float:right}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response{position:fixed;left:50px;bottom:50px;border:1px solid #E8E8E8;background:white;border-radius:10px;margin:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response:empty{display:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response>*{background:white;border:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response img{width:34px;margin:5px 13px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response b{font-weight:600}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response span{color:#333}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap button.close-withdraw-form-btn{background:#F3F3F3;border:1px solid #DCDBDC;color:#7A7A7A}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap button.close-withdraw-form-btn:hover{background:#e6e6e6}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdrawal-pop-up-success img{display:inline-block !important}.tutor-frontend-dashboard-withdrawal table.withdrawals-history{border:1px solid #DCDBDC;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th{background:#F3F3F3}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td{padding:10px;border:none;font-weight:normal;font-size:13px;text-align:left;vertical-align:middle}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td{border-bottom:1px solid #DCDBDC;border-collapse:collapse}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:first-child,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:first-child{padding:10px 0 15px 15px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:last-child,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:last-child{text-align:right;padding-right:15px;width:50px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:nth-child(4),.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:nth-child(4){width:105px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history .withdraw-method-name{line-height:20px;font-size:15px;display:block}.tutor-frontend-dashboard-withdrawal table.withdrawals-history small{font-size:13px}.tutor-frontend-dashboard-withdrawal .tutor-status-text-container .tool-tip-container{position:relative;display:inline-block;height:24px;cursor:pointer}.tutor-frontend-dashboard-withdrawal .tutor-status-text-container .tool-tip-container img{display:inline-block !important;width:16px}.tutor-frontend-dashboard-withdrawal .tutor-status-text{display:inline-block;font-weight:bold;font-size:13px;color:#FFFFFF;background:gray;border-radius:2px;padding:3px 9px}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-approved{background:#24A148}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-pending{background:#ED9700}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-rejected{background:#F44337}.tutor-tooltip-inside .tooltip{position:absolute;z-index:2;overflow:hidden;clip:rect(0, 0, 0, 0);-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0;padding:0;cursor:default;color:#fff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-size:1.4rem;line-height:normal;text-align:center;white-space:nowrap;border-width:0;border-style:solid;border-color:#6d6e71;border-top-color:#373739;background-color:#373739;opacity:0;-webkit-transition:opacity .3s ease-in .3s;transition:opacity .3s ease-in .3s;font-size:13px;color:#FFFFFF;height:auto;text-align:center;white-space:normal;font-size:12px;background:#353535;border-radius:10px;padding:7px}.tutor-tooltip-inside .tooltip.isVisible{overflow:visible;clip:auto;width:150px;height:auto;padding:10px 15px;border-width:1px;opacity:1}.tutor-tooltip-inside .tooltip,.tutor-tooltip-inside .tooltip.tip-bottom,.tutor-tooltip-inside .tooltip.tip-top{left:50%;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0)}.tutor-tooltip-inside .tooltip,.tutor-tooltip-inside .tooltip.tip-bottom,.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-bottom-right{top:110%;top:calc(100% + 13px)}.tutor-tooltip-inside .tooltip.tip-top,.tutor-tooltip-inside .tooltip.tip-top-left,.tutor-tooltip-inside .tooltip.tip-top-right{top:auto;bottom:110%;bottom:calc(100% + 13px)}.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-bottom-right,.tutor-tooltip-inside .tooltip.tip-top-left,.tutor-tooltip-inside .tooltip.tip-top-right{-webkit-transform:none;transform:none}.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-top-left{right:50%;left:auto;margin-right:-25px}.tutor-tooltip-inside .tooltip.tip-bottom-right,.tutor-tooltip-inside .tooltip.tip-top-right{margin-left:-25px}.tutor-tooltip-inside .tooltip.tip-left,.tutor-tooltip-inside .tooltip.tip-right{top:50%;-webkit-transform:translate(0, -50%);transform:translate(0, -50%)}.tutor-tooltip-inside .tooltip.tip-left{right:110%;right:calc(100% + 13px);left:auto}.tutor-tooltip-inside .tooltip.tip-right{left:110%;left:calc(100% + 13px)}.tutor-tooltip-inside .tooltip:after{content:' ';display:block;position:absolute;width:0;height:0;border-width:10px;border-style:solid;pointer-events:none}.tutor-tooltip-inside .tooltip:after,.tutor-tooltip-inside .tooltip.tip-bottom:after,.tutor-tooltip-inside .tooltip.tip-top:after{left:50%;margin-left:-10px}.tutor-tooltip-inside .tooltip:after,.tutor-tooltip-inside .tooltip.tip-bottom:after,.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-bottom-right:after{top:-20px;border-color:transparent transparent #373739 transparent}.tutor-tooltip-inside .tooltip.tip-top:after,.tutor-tooltip-inside .tooltip.tip-top-left:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{top:auto;bottom:-20px;border-color:#373739 transparent transparent transparent}.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-bottom-right:after,.tutor-tooltip-inside .tooltip.tip-top-left:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{margin-left:0}.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-top-left:after{right:15px;left:auto}.tutor-tooltip-inside .tooltip.tip-bottom-right:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{left:15px}.tutor-tooltip-inside .tooltip.tip-left:after,.tutor-tooltip-inside .tooltip.tip-right:after{top:50%;margin-top:-10px;margin-left:auto}.tutor-tooltip-inside .tooltip.tip-left:after{right:-20px;left:auto;border-color:transparent transparent transparent #373739}.tutor-tooltip-inside .tooltip.tip-right:after{left:-20px;border-color:transparent #373739 transparent transparent}.tutor-instructor-list,.tutor-instructor-list:focus,.tutor-instructor-list:active{outline:none;cursor:pointer;text-decoration:none !important;background:#FFFFFF;border:1px solid #DCDBDC;border-radius:6px}.tutor-instructor-list .tutor-instructor-profile-photo,.tutor-instructor-list .tutor-instructor-cover-photo{background-size:cover;background-repeat:no-repeat;background-position:center center}.tutor-instructor-list .tutor-instructor-profile-photo{border-radius:50%;width:60px;height:60px}.tutor-instructor-list .tutor-instructor-name{font-style:normal;font-weight:500;font-size:24px;color:#161616;margin:0}.tutor-instructor-list .tutor-instructor-course-count{margin-bottom:10px}.tutor-instructor-list .tutor-instructor-course-count>span{font-style:normal;font-weight:500;font-size:15px;color:#161616}.tutor-instructor-list .tutor-instructor-course-count>span:last-child{color:#808080}.tutor-instructor-list .tutor-instructor-rating *{font-size:16px}.tutor-instructor-list .tutor-instructor-rating .rating-digits{color:#161616}.tutor-instructor-list .tutor-instructor-rating .rating-total-meta{color:#7A7A7A}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-cover-photo{width:100%;height:153px}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-profile-photo{border:4px solid white;margin:-31px 15px 0}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-rating{padding:0 15px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-profile-photo{border-radius:0%;width:100%;height:160px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-rating{padding:0 15px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-name{margin-top:15px}.tutor-instructor-list.tutor-instructor-list-pp-top-left{padding:15px}.tutor-instructor-list.tutor-instructor-list-pp-top-left .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-cover-photo,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-profile-photo,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-profile-photo{border-radius:0%;height:102px;width:102px;top:0px;position:absolute}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-rating,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-rating{margin-left:118px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:calc(100% - 110px);display:inline-block;position:relative;top:6px}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-rating,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-rating{top:7px;position:relative}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-profile-photo{border-radius:50%;height:82px;width:82px;margin:10px}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-name{top:11px}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-course-count{top:46px}.tutor-toast-parent{position:fixed;right:25px;bottom:50px;right:50px;left:auto;max-height:400px;width:350px;overflow-x:hidden;overflow-y:auto;background:transparent;z-index:99999999}.tutor-toast-parent:empty{display:none}.tutor-toast-parent>div{background:white;padding:10px;margin:15px;border-radius:15px;-webkit-box-shadow:3px 3px 10px rgba(0,0,0,0.363);box-shadow:3px 3px 10px rgba(0,0,0,0.363);border:1px solid #E8E8E8;background:white;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-ms-flex-line-pack:center;align-content:center;-o-align-content:center;-ms-align-content:center;-moz-align-content:center;-webkit-align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-toast-parent>div>div{padding:8px}.tutor-toast-parent>div>div:nth-child(1),.tutor-toast-parent>div>div:nth-child(3){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-toast-parent>div>div:nth-child(2){-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-toast-parent>div img{width:100%;height:auto}.tutor-toast-parent>div b{font-weight:600;display:block}.tutor-toast-parent>div span{color:#333}.tutor-toast-parent>div i{cursor:pointer;font-size:14px}body.rtl .tutor-toast-parent{right:auto;left:50px}
|
2 |
-
|
3 |
-
/*# sourceMappingURL=tutor-front.min.css.map */
|
1 |
:root{--tutor-primary-color: #1B52D8;--tutor-primary-hover-color: #1b52a9;--tutor-text-color: #4B5981;--tutor-light-color: #B1B8C9;--tutor-primary-button-color: #3E64DE;--tutor-danger-button-color: #F44337;--tutor-success-button-color: #4BD863;--tutor-warning-button-color: #ED9700;--tutor-text-size: 16px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tutor-wrap{color:var(--tutor-text-color)}.tutor-wrap img{max-width:100%;height:auto}.tutor-custom-list-style{list-style:none;margin:0;padding:0}.tutor-custom-list-style li{position:relative;margin-bottom:5px;line-height:30px;padding-left:25px}.tutor-custom-list-style li:before{content:'\e90f';position:absolute;left:0;font-family:'tutor';color:var(--tutor-primary-color)}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:15px;height:15px;top:-6.5px;cursor:pointer}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.tutor-styled-radio>span{position:relative;padding-left:30px;cursor:pointer}.tutor-styled-radio>span::before{content:'';height:18px;width:18px;background:#F1F3F7;border:1px solid #DCDFE5;border-radius:50%;position:absolute;top:50%;margin-top:-9px;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:200ms;transition:200ms}.tutor-styled-radio>input{display:none !important}.tutor-styled-radio>input:checked+span::before{border:5px solid var(--tutor-primary-color)}.tutor-container{padding-left:15px;padding-right:15px;max-width:1140px;margin-right:auto;margin-left:auto;width:100%}.tutor-container.tutor-fluid{max-width:100%}.tutor-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-5,.tutor-col-6,.tutor-col-7,.tutor-col-8,.tutor-col-9,.tutor-col-12{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.tutor-col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.tutor-col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.tutor-col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.tutor-col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.tutor-col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.tutor-col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.tutor-col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666666%;flex:0 0 66.666666%;max-width:66.666666%}.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.tutor-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-align-items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 991px){.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-6,.tutor-col-8,.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-col-md-100{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}@media (max-width: 767px){.tutor-col-auto,.tutor-col,.tutor-col-3,.tutor-col-4,.tutor-col-6,.tutor-col-8,.tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}.tutor-segment-title,.tutor-single-course-segment .tutor-segment-title{font-size:18px;line-height:23px;font-weight:500;margin-bottom:13px;color:#000}.tutor-single-course-segment{margin-bottom:45px}.tutor-full-width-course-top h4,.tutor-full-width-course-top h5,.tutor-full-width-course-top h6{color:#000;font-weight:500}.tutor-full-width-course-top h6{font-size:14px}.tutor-leadinfo-top-meta{font-size:14px;margin-bottom:10px}.tutor-leadinfo-top-meta span{display:inline-block;margin-right:10px}.tutor-leadinfo-top-meta span i::before{margin-left:0}.tutor-leadinfo-top-meta i{margin-right:4px}.tutor-single-course-rating{color:#F8C51C;font-size:16px}.tutor-single-course-rating .tutor-single-rating-count{color:var(--tutor-text-color);font-weight:500}.tutor-single-course-rating .tutor-single-rating-count i{color:var(--tutor-light-color);font-style:normal;display:inline-block;margin-left:4px}.tutor-course-header-h1{font-size:36px;line-height:46px;color:var(--tutor-text-color);font-weight:500;margin:0 0 29px;padding:0}@media (max-width: 767px){.tutor-course-header-h1{font-size:26px;line-height:36px}}.tutor-course-summery{margin-bottom:40px}.tutor-single-course-meta{color:var(--tutor-text-color)}.tutor-single-course-meta ul{list-style:none;margin:0;padding:10px 0;overflow:hidden;line-height:21px}.tutor-single-course-meta.tutor-meta-top ul{padding-top:0;padding-bottom:15px}.tutor-single-course-meta ul li{float:left;vertical-align:top;margin-right:40px;margin-top:5px;margin-bottom:5px;min-width:95px}@media (max-width: 575px){.tutor-single-course-meta ul li{margin-right:10px}}.tutor-single-course-meta ul li:last-child{margin-right:0}.tutor-single-course-meta .tutor-single-course-avatar img{height:21px;width:21px;display:block;border-radius:50%;margin-right:3px}.tutor-single-course-meta ul li .tutor-single-course-avatar span{height:21px;width:21px;font-size:9px;text-align:center;line-height:21px;border-radius:50%;display:block;color:#ffffff}.tutor-single-course-meta ul li>div{display:inline-block;vertical-align:top}.tutor-single-course-meta ul li strong{margin:0;display:inline-block;line-height:21px;font-weight:400;color:var(--tutor-light-color);font-size:var(--tutor-text-size)}.tutor-single-course-meta ul li a{color:var(--tutor-text-color);font-weight:500;-webkit-transition:300ms;transition:300ms}.tutor-single-course-meta ul li a:hover{color:var(--tutor-primary-color)}.tutor-single-course-meta.tutor-meta-top ul li,.tutor-single-course-meta.tutor-meta-top ul li a{font-weight:700}.tutor-single-course-meta ul li{font-weight:500;color:var(--tutor-text-color)}.tutor-single-course-meta ul li span{color:var(--tutor-light-color);font-weight:400}.tutor-single-course-meta.tutor-lead-meta{margin-bottom:33px;border-top:1px solid #DCDFE5;border-bottom:1px solid #DCDFE5}@media (max-width: 991px){.tutor-single-course-meta.tutor-lead-meta{border-bottom:none}.tutor-single-course-meta.tutor-lead-meta ul{padding-bottom:0}.tutor-single-course-meta.tutor-lead-meta ul li{margin:5px;padding:5px 15px;border:1px solid #ddd;border-radius:4px}}.tutor-single-course-meta.tutor-lead-meta ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 991px){.tutor-single-course-meta.tutor-lead-meta ul{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}}.tutor-single-course-meta.tutor-lead-meta ul li span{display:block;margin-bottom:5px;color:var(--tutor-light-color)}.tutor-single-course-meta.tutor-lead-meta ul li a{color:var(--tutor-text-color);-webkit-transition:300ms;transition:300ms}.tutor-single-course-meta.tutor-lead-meta ul li a:hover{color:var(--tutor-primary-color)}.tutor-single-course-meta.tutor-lead-meta ul li a:not(:last-child):after{content:',';margin-right:4px}@media (max-width: 575px){.tutor-single-course-meta.tutor-lead-meta ul{display:block}.tutor-single-course-meta.tutor-lead-meta ul li{display:block;border:none;margin:0;width:100%;padding:0 0 10px}.tutor-single-course-meta.tutor-lead-meta ul li span{display:inline-block;color:var(--tutor-text-color);font-weight:700}.tutor-single-course-meta.tutor-lead-meta ul li span::after{content:':';color:var(--tutor-text-color)}}.tutor-course-benefits-content ul{list-style:none;display:block;overflow:hidden;-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:30px;-moz-column-gap:30px;column-gap:30px;margin:0}.tutor-course-topics-header{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:8px}.tutor-course-topics-header .tutor-course-topics-header-right span:not(:first-child){margin-left:45px}.tutor-course-topics-contents h4{font-size:var(--tutor-text-size);font-weight:500;margin-bottom:0;color:var(--tutor-text-color)}.tutor-course-topics-contents .tutor-course-title{cursor:pointer}.tutor-course-topics-contents .tutor-course-title h4{color:var(--tutor-primary-color);font-size:16px;line-height:25px;overflow:hidden;margin-top:0}.tutor-course-topic.tutor-active .tutor-course-title h4>i:before{content:"\e910"}.tutor-course-topics-contents .tutor-course-title h4 i{font-size:15px;line-height:25px;float:left;margin-right:10px}.tutor-course-topics-contents .tutor-course-topic{border:1px solid #DCE4E6;margin-bottom:20px;border-radius:5px;overflow:hidden}.tutor-course-title,.tutor-course-lesson{padding:14px 20px}.tutor-course-lesson{border-top:1px solid #DCE4E6}.tutor-course-lesson h5{line-height:22px;font-size:var(--tutor-text-size);margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;color:inherit;margin-top:0}.tutor-course-lesson h5 a{color:var(--tutor-primary-color);-webkit-transition:300ms;transition:300ms}.tutor-course-lesson h5 a:hover{color:var(--tutor-primary-hover-color)}.tutor-course-lesson h5 i{line-height:22px;vertical-align:text-top;margin-right:10px;color:var(--tutor-light-color);display:block}.tutor-course-lesson h5 .lesson-preview-icon i{margin-right:0;margin-left:10px}.tutor-course-lesson h5 .tutor-lesson-duration{margin-left:auto;padding-left:5px;-ms-flex-item-align:start;align-self:flex-start}.tutor-course-lesson .lesson-preview-title{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}table.course-single-gradebooks .datetime{margin:0;font-size:80%}.tutor-course-lessons .tutor-course-lesson h5 i.tutor-lesson-thumbnail-icon{height:50px;width:70px;border-radius:3px;text-align:center;line-height:50px;color:#fff;margin-right:10px;position:relative;z-index:1;overflow:hidden;font-size:20px;background-position:center center !important;background-size:cover !important}.tutor-course-lessons .tutor-course-lesson h5 i.tutor-lesson-thumbnail-icon:after{position:absolute;content:'';left:0;top:0;height:100%;width:100%;background:rgba(0,0,0,0.5);z-index:-1}.tutor-single-lesson-button-group,.tutor-topics-lesson-list .tutor-topics-in-single-lesson{border-radius:4px;margin-bottom:30px;border:1px solid #e8eff1}.tutor-single-lesson-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.tutor-lesson-sidebar{-webkit-box-flex:0;-ms-flex:0 0 400px;flex:0 0 400px}@media (max-width: 991px){.tutor-lesson-sidebar{position:absolute;left:0;top:70px;width:400px;max-width:95%;height:calc(100% - 70px);z-index:9;background:#fff;overflow-y:auto;display:none}}.tutor-spotlight-mode .tutor-lesson-sidebar{position:fixed;left:0;width:400px;height:100vh;overflow-y:scroll;background:#f4f8fa}.tutor-spotlight-mode #tutor-single-entry-content{padding-left:400px;min-height:calc(100vh - 46px)}.tutor-spotlight-mode #tutor-single-entry-content.sidebar-hidden{padding-left:0}@media (max-width: 991px){.tutor-spotlight-mode .tutor-lesson-sidebar{position:absolute;width:350px;height:auto}.tutor-spotlight-mode #tutor-single-entry-content{padding-left:0}}.admin-bar .tutor-spotlight-mode .tutor-lesson-sidebar{height:calc(100vh - 32px)}.tutor-single-entry-content{-webkit-box-flex:999;-ms-flex-positive:999;flex-grow:999}.tutor-single-lesson-button-group .tutor-single-lesson-button a,.tutor-topics-in-single-lesson .tutor-single-lesson-items a{padding:14px 100px 14px 17px;display:-webkit-box;display:-ms-flexbox;display:flex;color:var(--tutor-text-color);position:relative;border-top:1px solid #e8eff1}.tutor-single-lesson-button-group .tutor-single-lesson-button:first-child a{border-top:none}.tutor-lessons-under-topic .tutor-single-lesson-items.active a{background:rgba(233,235,238,0.35)}.tutor-topics-in-single-lesson{margin-bottom:5px;background-color:#ffffff;padding:0}.tutor-topics-in-single-lesson .tutor-single-lesson-items a span{margin:0;display:inline;color:var(--tutor-text-color)}.tutor-topics-in-single-lesson .tutor-topics-title{position:relative}.tutor-topics-in-single-lesson .tutor-topics-title button{position:absolute;right:15px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);padding:0 5px;font-size:16px;background:transparent;border:none;color:var(--tutor-text-color)}.tutor-topics-in-single-lesson.tutor-topic-active .tutor-topics-title button i::before{content:"\e910"}.tutor-topics-in-single-lesson .tutor-topics-title h3{margin:0;padding:10px 37px 10px 17px;font-size:16px;color:var(--tutor-primary-color);font-weight:500}.tutor-topics-in-single-lesson .tutor-topics-title h3{cursor:pointer;line-height:30px}span.toogle-informaiton-icon{background:#ccc;color:#fff;height:15px;width:15px;text-align:center;display:inline-block;line-height:15px;font-size:15px;border-radius:50%;margin-left:10px}.tutor-topics-in-single-lesson .tutor-topics-title h3 i{font-size:10px;margin-left:6px}.tutor-topics-in-single-lesson .tutor-topics-tutor-loop-rating-wraptitle h3 i{font-size:10px;vertical-align:middle;display:inline-block;padding:5px;color:#c7c7c7;-webkit-transition:300ms;transition:300ms;cursor:pointer}.tutor-topics-in-single-lesson .tutor-topics-title h3 i:hover{color:var(--tutor-primary-color)}.tutor-single-lesson-button-group .tutor-single-lesson-button a>i:first-child,.tutor-topics-in-single-lesson .tutor-single-lesson-items a>i:first-child{color:#c7c7c7;line-height:22px;display:inline-block;vertical-align:middle;margin-right:10px}.tutor-topics-in-single-lesson .tutor-single-lesson-items a>i.tutor-icon-doubt{color:var(--tutor-primary-color)}.tutor-topics-in-single-lesson .tutor-topics-summery{padding:14px;border-top:1px solid #dce4e6;display:none}.tutor-lessons-under-topic .tutor-lesson-right-icons{position:absolute;right:15px;top:14px}.tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete{height:16px;width:16px;border:1px solid #e8eff1;border-radius:50%;font-size:9px;display:inline-block;line-height:16px;text-align:center;margin:0;vertical-align:middle;margin-left:8px}.tutor-lessons-under-topic .tutor-single-lesson-items.active .tutor-lesson-right-icons .tutor-lesson-complete{border-color:#b7d6b7}.tutor-lessons-under-topic .tutor-single-lesson-items.active .tutor-lesson-right-icons .tutor-lesson-complete.tutor-done,.tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete.tutor-done{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);color:#fff}.tutor-lessons-under-topic .tutor-lesson-right-icons i{font-style:normal}.tutor-single-page-top-bar{background-color:var(--tutor-primary-color);height:70px;margin-bottom:50px;color:#ffffff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding-right:15px}.tutor-single-page-top-bar .tutor-single-lesson-segment form,.tutor-single-page-top-bar .tutor-single-lesson-segment{margin-bottom:0}.tutor-single-page-top-bar a{color:#ffffff;vertical-align:middle;display:inline-block;overflow:hidden}.tutor-single-page-top-bar a i{float:left}@media (max-width: 546px){.tutor-single-page-top-bar a{font-size:14px}}.tutor-topbar-home-btn i{margin-right:7px}.tutor-topbar-home-btn{margin-left:20px}@media screen and (max-width: 546px){.tutor-topbar-home-btn{margin-left:10px}}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{background:transparent;color:#fff;padding-bottom:13px;cursor:pointer;border:1px solid #fff}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button i{font-size:14px}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button i::before{display:block;padding-top:2px}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button:hover{color:#fff;background:var(--tutor-primary-hover-color);border-color:var(--tutor-primary-hover-color)}.tutor-single-page-top-bar a:hover{color:#ffffff}.tutor-single-page-top-bar .tutor-topbar-content-title-wrap{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:999999;-ms-flex-positive:999999;flex-grow:999999}.tutor-single-page-top-bar .tutor-hide-sidebar-bar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-single-page-top-bar .tutor-topbar-mark-to-done{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}@media (max-width: 767px){.tutor-single-page-top-bar .tutor-topbar-content-title-wrap{display:none}.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{padding:9px 14px}}@media (max-width: 767px){.tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{padding:7px 12px;font-size:14px}}.tutor-single-page-top-bar .tutor-topbar-content-title-wrap i{vertical-align:middle;line-height:1;margin-right:3px}.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 100px 80px}@media (max-width: 1366px){.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 60px 80px}}@media (max-width: 991px){.tutor-lesson-content-area,.tutor-quiz-single-wrap{margin:0 40px}}.tutor-lesson-sidebar-hide-bar{background-color:var(--tutor-primary-hover-color);color:#ffffff;padding:0 12px;display:inline-block;line-height:70px}@media only screen and (max-width: 546px){.tutor-lesson-sidebar-hide-bar{padding:0 10px}}.tutor-single-page-top-bar a.tutor-lesson-sidebar-hide-bar i{font-size:20px;display:block;padding:25px 0}@media only screen and (max-width: 546px){.tutor-single-page-top-bar a.tutor-lesson-sidebar-hide-bar i{font-size:19px}}.sidebar-hidden a.tutor-lesson-sidebar-hide-bar .tutor-icon-angle-left:before{content:"\e903"}.tutor-sidebar-tabs-wrap{border-top:1px solid #e0e9ec}.tutor-tabs-btn-group{height:70px;display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-tabs-btn-group a{background-color:#f1f6f8;color:var(--tutor-text-color);display:block;line-height:70px;width:100%;text-align:center;border:1px solid #e0e9ec;border-top:none}.tutor-tabs-btn-group a span,.tutor-tabs-btn-group a i{font-size:24px;display:inline-block;vertical-align:top;line-height:70px}.tutor-tabs-btn-group a i{color:var(--tutor-primary-color)}.tutor-tabs-btn-group a span{font-size:15px;padding-left:3px}.tutor-tabs-btn-group a.active{background-color:#ffffff;border:none}.tutor-tabs-btn-group a:focus{outline:none}.tutor-single-lesson-segment{margin-bottom:35px}.tutor-single-lesson-wrap{background:#f4f8fa}.tutor-lesson-video-wrap .plyr--video{border-radius:4px}#tutor-lesson-sidebar-qa-tab-content{background-color:#ffffff;padding:20px}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap{border-top:1px solid #e8eff1;padding-top:25px}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap h3{color:var(--tutor-primary-color)}#tutor-lesson-sidebar-qa-tab-content .tutor-add-question-wrap button.tutor_ask_question_btn{display:block;width:100%;background-color:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}#tutor-lesson-sidebar-qa-tab-content .tutor_question_answer_wrap .tutor_original_question{margin-bottom:20px;margin-top:20px}.tutor-lesson-sidebar-emptyqa-wrap{text-align:center;padding:50px 20px;color:var(--tutor-text-color)}.tutor-lesson-sidebar-emptyqa-wrap h3{margin:0;padding:0 0 25px}.tutor-lesson-sidebar-emptyqa-wrap i{font-size:150px;color:#e8eff1;line-height:0.8}.tutor-attachments-wrap{margin:-3px -3px 15px -3px}.tutor-attachments-wrap .tutor-lesson-attachment{display:inline-block;border:1px solid #e8eff1;border-radius:4px;padding:10px 16px 10px 12px;overflow:hidden;background:#f4f7f8;margin:3px;-webkit-transition:300ms;transition:300ms}.tutor-attachments-wrap .tutor-lesson-attachment:hover{-webkit-box-shadow:0 2px 4px rgba(0,0,0,0.15);box-shadow:0 2px 4px rgba(0,0,0,0.15)}.tutor-attachments-wrap .tutor-attachment-icon{font-size:30px;float:left;color:var(--tutor-text-color)}.tutor-attachments-wrap .tutor-attachment-icon i{display:block}.tutor-attachment-info{padding-left:10px;float:left}.tutor-attachment-info span{display:block;font-size:14px;line-height:16px;color:var(--tutor-text-color)}.tutor-attachment-info span+span{font-size:11px;color:var(--tutor-light-color)}.tutor-progress-bar-wrap{width:100%;margin:0 0 30px;display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-progress-bar{height:8px;color:#000000;line-height:25px;position:relative;background:#f1f1f1;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;border-radius:30px;margin-top:7.5px}.tutor-progress-bar .tutor-progress-filled{background-color:var(--tutor-primary-color);height:8px;border-radius:30px;width:var(--tutor-progress-left)}.tutor-dashboard-content-inner .tutor-progress-bar{margin-top:9.5px;height:5px}.tutor-dashboard-content-inner .tutor-progress-bar .tutor-progress-filled{height:5px}.tutor-progress-bar .tutor-progress-filled:after{content:"";position:absolute;height:15px;width:15px;border:7.5px solid var(--tutor-primary-color);border-radius:50%;background:#fff;left:var(--tutor-progress-left);-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%);top:50%;-webkit-box-sizing:border-box;box-sizing:border-box}.tutor-progress-percent{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none;padding-left:20px}.tutor-course-purchase-box{margin-bottom:0}.tutor-price-preview-box .tutor-course-purchase-box button{display:block;width:100%;background:var(--tutor-primary-color);border-radius:3px;text-transform:uppercase;font-weight:500;cursor:pointer}.tutor-price-preview-box .tutor-course-purchase-box button i{margin-right:8px}.tutor-price-preview-box .tutor-course-enrolled-wrap,.tutor-price-preview-box .tutor-course-login-wrap,.tutor-price-preview-box .tutor-course-login-wrap form,.tutor-course-purchase-box form{margin-bottom:0}.tutor-price-preview-box .tutor-course-material-includes-wrap{margin-bottom:25px}.tutor-alert-warning.tutor-instructor-alert{padding:25px 25px 15px}.tutor-lead-info-btn-group{display:block;overflow:hidden;margin:0 -20px 25px;border-bottom:1px solid rgba(220,223,229,0.4);padding:0 20px 30px}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{display:block;margin-top:15px}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap form{margin:0}.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button{display:block;padding:18px 20px;border:none;text-align:center;border-radius:4px;text-transform:uppercase;line-height:1;-webkit-transition:300ms;transition:300ms;font-weight:700}.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{width:100%;text-align:center;display:block}@media (max-width: 991px){.tutor-lead-info-btn-group a.tutor-button,.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap{width:auto}}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button{display:block;width:100%;background:#e8eff1;color:var(--tutor-light-color)}.tutor-lead-info-btn-group .tutor-course-compelte-form-wrap button:hover{background:var(--tutor-primary-color);color:#ffffff}.tutor-single-add-to-cart-box .tutor-enroll-form{margin:0}.tutor-single-add-to-cart-box .tutor-enroll-form .tutor-course-enroll-wrap{padding:0}.tutor-single-add-to-cart-box .tutor-enroll-form .tutor-course-enroll-wrap button{display:block;width:100%;text-align:center}.tutor-single-add-to-cart-box.cart-required-login{position:relative}.tutor-single-add-to-cart-box.cart-required-login:before{position:absolute;content:"";top:0;bottom:0;left:0;right:0;z-index:99;cursor:pointer}.tutor-course-enrolled-review-wrap .write-course-review-link-btn{color:#fff;background-color:var(--tutor-primary-color);border-color:var(--tutor-primary-color);display:inline-block;padding:15px 30px;border-radius:4px;text-transform:capitalize;line-height:1;-webkit-transition:300ms;transition:300ms}.tutor-course-enrolled-review-wrap .write-course-review-link-btn:hover{background-color:var(--tutor-primary-hover-color);border-color:var(--tutor-primary-hover-color)}.tutor-course-enrolled-review-wrap .tutor-form-group{margin-bottom:10px}.tutor-course-enrolled-review-wrap .tutor-form-group textarea{height:120px;background:#f7f7f7;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;border-radius:4px;line-height:1.5;text-indent:0;padding:15px}.tutor-write-review-form{margin-top:30px}.tutor-form-row{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-15px;margin-right:-15px}.tutor-form-col-4,.tutor-form-col-6,.tutor-form-col-12{padding-left:15px;padding-right:15px}.tutor-form-col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.tutor-form-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-form-col-4{-webkit-box-flex:0;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%;max-width:33.3333%}@media (max-width: 768px){.tutor-form-row{-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-form-col-4,.tutor-form-col-6,.tutor-form-col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}}ul.tutor-required-fields{list-style:none;padding:10px;margin:0}.tutor-star-rating-group{color:#f4c150;display:inline-block;text-align:left}.tutor-star-rating-group i{margin-right:4px}@media (max-width: 546px){.tutor-write-review-box .tutor-star-rating-group{font-size:26px;display:block;text-align:center}}.tutor-write-review-box .tutor-star-rating-group i{margin-right:4px;cursor:pointer}.tutor-queston-and-answer-wrap{margin:20px 0}.tutor-question-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:20px;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.tutor-ask-question-btn{text-align:right}.tutor-question-search-form{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%}.tutor-question-search-form form{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-question-search-form input[type="text"]{max-width:60%}.tutor-add-question-wrap{margin:20px 0}.tutor-add-question-wrap .tutor-form-group{margin-bottom:10px}.tutor_question_cancel{margin-right:5px}.updating-icon:before{font-family:"tutor";margin-right:5px;content:"\e91d";-webkit-animation:spin 1s steps(8) infinite;animation:spin 1s steps(8) infinite;display:inline-block}.loading-lesson .tutor-lesson-video-wrap:before{font-family:"tutor";content:"\e91d";-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block;z-index:9;position:absolute;left:50%;top:50%;font-size:50px;margin-left:-25px;margin-top:-12px}.loading-lesson .tutor-lesson-video-wrap:after{position:absolute;content:"";top:0;left:0;background:rgba(255,255,255,0.8);width:100%;height:100%}.tutor-lesson-video-wrap{position:relative}.tutor_question_area{padding:25px 20px;background:#f4f7f8;border-radius:4px}.tutor_question_area p:last-child{margin-bottom:0}.tutor_add_answer_row{text-align:right;margin-top:20px}.tutor_add_answer_row .tutor-form-group:last-child{margin-top:20px}.tutor_admin_answers_list_wrap+.tutor_add_answer_row,.tutor_admin_answers_list_wrap{margin-left:100px}@media (max-width: 991px){.tutor_admin_answers_list_wrap+.tutor_add_answer_row,.tutor_admin_answers_list_wrap{margin-left:30px}}.tutor_original_question{margin-bottom:30px}.tutor_admin_answers_list_wrap .tutor_individual_answer{margin-bottom:40px}.tutor_admin_answers_list_wrap .tutor_question_area{background:#edf9f1}.question-top-meta .tutor-question-avater a{display:inline-block}.question-top-meta .tutor-question-avater a span{height:50px;width:50px;border-radius:50%;display:block;line-height:50px;text-align:center;font-size:17px}.question-top-meta .tutor-question-avater a img{width:50px;height:50px;border-radius:50%}.question-top-meta{overflow:hidden;margin-bottom:20px}.question-top-meta .tutor-question-avater{float:left}.question-top-meta .review-meta{float:left;margin-bottom:0;margin-left:10px}.question-top-meta .review-meta a{display:block;font-size:18px;color:var(--tutor-text-color);line-height:20px}.question-top-meta .review-meta span{color:var(--tutor-light-color);vertical-align:text-top;display:block}.tutor_wp_editor_wrap .tutor-form-group a.tutor-button{margin-right:6px}.tutor-no-announcements{text-align:center}.tutor-announcement-meta{margin-bottom:10px;font-size:13px}.tutor-announcement{border:1px solid #eee;padding:20px;margin-top:30px;border-radius:4px}.announcement-delete-btn{float:right}.announcement-delete-btn a{color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms}.announcement-delete-btn a:hover{color:red}.tutor-announcement-title-wrap h3{color:var(--tutor-text-color);font-weight:500;margin-bottom:10px}.tutor-quiz-header span{background:#f88f1c;color:#ffffff;display:inline-block;padding:4px 10px;border-radius:4px;line-height:1;text-transform:uppercase;font-size:10px}.tutor-quiz-header h2{color:var(--tutor-text-color);font-size:36px;line-height:46px;font-weight:500;margin-bottom:15px}.tutor-quiz-header h5{color:var(--tutor-light-color)}.tutor-quiz-header h5 a{color:var(--tutor-text-color);font-weight:500}.tutor-quiz-header .tutor-quiz-meta{list-style:none;margin:20px 0 40px;padding:15px 0;border-top:1px solid #dcdfe5;border-bottom:1px solid #dcdfe5;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-header .tutor-quiz-meta li{display:inline-block;color:var(--tutor-text-color)}.tutor-quiz-header .tutor-quiz-meta li strong{display:block;color:var(--tutor-light-color);font-weight:400}@media (max-width: 767px){.tutor-quiz-header .tutor-quiz-meta{display:block;border:none;padding:0}.tutor-quiz-header .tutor-quiz-meta li{display:block;color:var(--tutor-text-color);margin:5px;border:none;padding:0;border-radius:0}.tutor-quiz-header .tutor-quiz-meta li strong{display:inline-block;margin-right:5px}}@media (max-width: 1199.98px){.tutor-quiz-attempt-history{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}}.tutor-quiz-attempt-history-title{font-size:18px;color:var(--tutor-light-color);line-height:23px;font-weight:500;margin-bottom:15px;margin-top:70px}.tutor-quiz-attempt-history table{border-collapse:collapse;border-radius:4px;margin-bottom:0}.tutor-quiz-attempt-history th{font-weight:400}.tutor-quiz-attempt-history table,.tutor-quiz-attempt-history th,.tutor-quiz-attempt-history td{border:1px solid #e8eff1;padding:10px !important}.tutor-quiz-attempt-history table span.result-fail,.tutor-quiz-attempt-history table span.result-pass{display:inline-block;color:#fff;border-radius:2px;width:47px;height:26px;line-height:26px;text-align:center}.tutor-quiz-attempt-history table span.result-fail{background:#df3247}.tutor-quiz-attempt-history table span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-history table span.result-review-required{background:#f5b30d;padding:3px 5px;color:#fff;border-radius:2px;text-align:center;font-size:90%}.quiz-head-meta-info{color:var(--tutor-light-color);margin-bottom:40px}.quiz-head-meta-info span{color:var(--tutor-text-color)}#tutor-quiz-attempt-questions-wrap{margin-bottom:50px}.tutor-quiz-single-wrap .question-text{color:var(--tutor-text-color);font-size:20px;font-weight:600}.tutor-quiz-single-wrap .question-description{color:var(--tutor-text-color)}.quiz-attempt-single-question{margin-bottom:80px}.fill-in-the-blank-field .fill-in-the-blank-text-input{display:inline;border-top:none;border-left:none;border-right:none;border-bottom:1px dashed;background-color:transparent;padding:0px;border-radius:0;-webkit-box-shadow:none;box-shadow:none;margin:0 10px}.fill-in-the-blank-field .fill-in-the-blank-text-input:focus{background:none;outline:none}.tutor-quiz-answers-wrap{margin-bottom:50px}.tutor-quiz-answers-wrap textarea{background:transparent;border:1px solid #d4dadb;height:175px;border-radius:5px;-webkit-box-shadow:none;box-shadow:none;min-width:100%;margin-bottom:5px}.tutor-quiz-answers-wrap textarea:focus{background:transparent;outline:none !important}.tutor-quiz-answers-wrap p{margin:0;line-height:26px}.quiz-answer-input-body .quiz-answer-image-wrap{margin-top:10px;margin-bottom:10px;max-width:200px}.quiz-answer-image-wrap img{max-width:100%;height:auto}.tutor-quiz-answers-wrap label{display:block;margin-bottom:15px;cursor:pointer}.tutor-quiz-answers-wrap label.answer-view-image,.tutor-quiz-answers-wrap label.answer-view-text_image{text-align:center;margin:0 10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;max-width:25%}.quiz-answer-input-bottom{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:20px}.quiz-answer-input-bottom.wrong-answer{color:#e27c89}.quiz-answer-input-bottom.wrong-answer .quiz-answer-input-field{border:1px solid #e27c89;padding:5px 10px}.quiz-answer-input-bottom.right-answer{color:#86b324}.quiz-answer-input-bottom.right-answer .quiz-answer-input-field{border:1px solid #bbd58c;padding:5px 10px}.wrong-right-text{padding:5px 10px}.tutor-quiz-answers-wrap label input{display:none}.tutor-quiz-answers-wrap label input+span{width:20px;height:20px;border:1px solid #dedede;display:inline-block;border-radius:2px;position:relative;margin-right:5px}.tutor-quiz-answers-wrap label input:checked+span{background:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}.tutor-quiz-answers-wrap label input:checked+span:after{content:"\e90f";position:absolute;font-family:"tutor";color:#fff;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);font-size:11px;line-height:1}.tutor-quiz-answers-wrap label input[type="radio"]+span{content:"";border-radius:50%;margin-right:4px;vertical-align:top;font-size:1em}.tutor-quiz-answers-wrap label input[type="radio"]+span:after{content:"";height:8px;width:8px;background:#fff;border-radius:50%;left:50%}.question-type-ordering-item{border:1px solid #d4dadb;padding:10px;margin-bottom:10px;width:250px;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.question-type-ordering-item.ui-sortable-placeholder{background-color:transparent}.question-type-ordering-item .answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.question-type-ordering-item .answer-sorting-bar{cursor:pointer}.quiz-answer-item-matching{padding:10px;display:-webkit-box;display:-ms-flexbox;display:flex;width:25%}.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{display:inline-block;max-width:none;width:25%;padding:0 10px;vertical-align:top}@media (max-width: 767px){.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{width:50%}}@media (max-width: 575px){.answer-type-matching .quiz-answer-matching-items-wrap .quiz-answer-item-matching{width:100%}}.answer-type-matching .quiz-answer-matching-items-wrap{margin:0 -10px}.quiz-answer-matching-droppable{height:48px;min-width:200px;border:1px dashed #d4dadb}.quiz-draggable-answer-item{padding:10px 20px;border:1px solid #d4dadb;margin-right:10px;margin-bottom:10px;background-color:#fff;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.quiz-draggable-answer-item .draggable-answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.quiz-draggable-rand-answers{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:80px}.drop-hover{display:none}.quiz-answer-matching-droppable .drop-hover{background-color:#eeeeee;height:100%;width:100%;display:inline-block;float:left}.quiz-answer-matching-droppable .quiz-draggable-answer-item{width:100%;max-width:100%}.quiz-draggable-answer-item .draggable-answer-icon{margin-left:15px}.answer-type-image_matching .quiz-answer-item-matching{display:block}.answer-type-image_matching .quiz-answer-matching-items-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-10px;margin-right:-10px}.answer-type-image_matching .quiz-answer-matching-droppable{width:100%;min-width:100%}.answer-type-image_matching img{width:100%;height:auto}.tutor-quiz-questions-pagination ul{margin:0;padding:0;list-style:none}.tutor-quiz-questions-pagination ul li{display:inline-block}.tutor-quiz-questions-pagination ul li a{background-color:var(--tutor-primary-color);padding:7px 13px;display:block;border-radius:50%;margin-right:10px;color:#ffffff}.tutor-quiz-questions-pagination ul li a:hover,.tutor-quiz-questions-pagination ul li a.active{background-color:var(--tutor-primary-color)}.quiz-image-answering-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-left:-10px;margin-right:-10px}.quiz-image-answering-wrap img{max-width:100%;height:auto}.quiz-image-answering-answer{margin-right:10px;margin-left:10px;width:15%}.quiz-image-answering-image-wrap{margin-bottom:20px}.tutor-quiz-answers-wrap .quiz-image-answering-input-field-wrap input{width:100%;display:block;border:1px solid #d4dadb;-webkit-box-shadow:none;box-shadow:none;background:transparent;border-radius:2px;height:42px}.tutor-quiz-answers-wrap .quiz-image-answering-input-field-wrap input:focus{background:transparent;outline-offset:0 !important}.tutor-next-previous-pagination-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-next-previous-pagination-wrap a{color:var(--tutor-primary-color)}.tutor-course-filter-wrapper{overflow:auto;max-width:1140px !important;margin:0 auto !important}.tutor-course-filter-wrapper>div{padding:12px}.tutor-course-filter-wrapper>div:first-child{width:250px;float:left}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field{border:1px solid #BABABA;border-radius:6px;overflow:hidden;padding:0 6px;height:auto}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input,.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input:focus,.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field input:active{border:none;outline:0;padding:0;display:inline-block;width:calc(100% - 24px);font-weight:normal;font-size:16px;color:#7A7A7A;height:35px}.tutor-course-filter-wrapper>div:first-child .tutor-course-search-field i{font-size:17px;cursor:pointer;color:#3E64DE}.tutor-course-filter-wrapper>div:first-child h4{font-weight:normal;font-size:20px;color:#161616;margin:16px 0px 12px}.tutor-course-filter-wrapper>div:first-child label{display:block;cursor:pointer;font-weight:normal;font-size:16px;color:#353535}.tutor-course-filter-wrapper>div:last-child{width:calc(100% - 250px);float:right}.tutor-course-filter-wrapper>div:last-child select[name=tutor_course_filter]{border:1px solid #7A7A7A;color:#7A7A7A;padding:3px 4px;font-size:16px;border-radius:6px;cursor:pointer}.tutor-course-filter-wrapper>div .tutor-course-filter-loop-container{display:none}.tutor-course-filter-wrapper .tutor-clear-all-filter{margin-top:28px;display:none}.tutor-course-filter-wrapper .tutor-clear-all-filter>a{height:21px;background:#E8E8E8;border-radius:22px;line-height:21px;text-align:center;font-size:13px;font-weight:500;margin-top:20px;color:#7a7a7a;padding:5px 10px}.tutor-course-filter-wrapper .tutor-clear-all-filter a>i{font-size:10px}@media (max-width: 767px){.tutor-course-filter-wrapper>div{width:100% !important;float:none !important}.tutor-course-filter-wrapper .tutor-course-filter-container>div{overflow:auto}.tutor-course-filter-wrapper .tutor-course-filter-container>div>div{width:50%;float:left}.tutor-course-filter-wrapper .tutor-course-filter-container>div>div:first-child{width:100%}}div[class*="tutor-course-col"]{padding-left:15px;padding-right:15px;margin-bottom:30px}.tutor-course-loop{background:#fff;color:#29303b;overflow:hidden;position:relative;vertical-align:top;border-radius:4px;-webkit-transition:300ms;transition:300ms;border:1px solid rgba(0,0,0,0.05);height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-course-loop a,.tutor-widget-course a{text-decoration:none !important}.tutor-course-header{position:relative}.tutor-course-loop-header-meta{position:absolute;left:0;top:13px;width:100%;padding-left:13px;padding-right:13px;overflow:hidden}.tutor-course-loop-header-meta .tutor-course-wishlist{float:right;background:#fff;font-size:19px;padding:5px 5px;border-radius:3px;-webkit-transition:300ms;transition:300ms}.tutor-course-loop-header-meta .tutor-course-wishlist a{display:block;color:var(--tutor-primary-color);-webkit-transition:300ms;transition:300ms}.tutor-course-loop-header-meta .tutor-course-wishlist:hover{background:var(--tutor-primary-color)}.tutor-course-loop-header-meta .tutor-course-wishlist:hover a{color:#fff}.tutor-course-loop-header-meta .tutor-course-wishlist a:focus{outline:none}.tutor-course-loop-header-meta .tutor-course-wishlist a.has-wish-listed:before{content:"\e908"}.tutor-course-loop-header-meta .tutor-course-wishlist a.updating-icon:before{content:"\e91d";margin-right:0}.tutor-course-loop-level{display:inline-block;background:#9013fe;padding:0 7px;color:#fff;font-size:12px;line-height:20px;border-radius:2px;-webkit-box-shadow:0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 1px rgba(0,0,0,0.1)}.tutor-course-loop:hover{-webkit-box-shadow:0 4px 23px rgba(0,0,0,0.1);box-shadow:0 4px 23px rgba(0,0,0,0.1)}.tutor-course-loop p{margin:0}.tutor-course-loop .tutor-course-header a,.tutor-course-loop .tutor-course-header a img{display:block;border-top-left-radius:4px;border-top-right-radius:4px}.tutor-loop-course-container{padding:25px 19px}.tutor-loop-rating-wrap{color:#f8c51c;margin-bottom:2px;font-size:16px}.tutor-rating-count{color:var(--tutor-text-color)}.tutor-rating-count i{font-style:normal;display:inline-block;margin-left:5px}.tutor-loop-rating-wrap i:before{margin-right:4px;margin-left:0}.tutor-course-loop-title h2{font-size:20px;line-height:28px;font-weight:600;margin-bottom:17px}.tutor-course-loop-title h2 a{color:var(--tutor-text-color)}.tutor-course-loop-title h2 a:hover{color:var(--tutor-primary-color)}.tutor-course-loop-meta{margin-bottom:15px;color:var(--tutor-text-color);font-size:var(--tutor-text-size)}.tutor-course-loop-meta>div{display:inline-block}.tutor-course-loop-meta>div i{font-size:16px;margin-right:4px}.tutor-course-loop-meta>div i,.tutor-course-loop-meta>div span{vertical-align:middle}.tutor-course-loop-meta>div+div{margin-left:10px}.tutor-loop-course-footer{padding:15px;border-top:1px solid rgba(0,0,0,0.05);color:#838791;font-size:12px;line-height:25px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;font-weight:400}.tutor-loop-course-footer:after{content:"";display:table;clear:both}.tutor-loop-course-footer span.woocommerce-Price-currencySymbol{vertical-align:top}.tutor-course-loop-price{color:var(--tutor-text-color);font-size:16px}.tutor-course-loop-price .price del{font-weight:400}.tutor-course-loop-price .price del span{text-decoration:line-through;color:var(--tutor-light-color)}.tutor-course-loop-price .price del>span{margin-right:6px}.tutor-course-loop-price .price del+ins{background:transparent;margin-left:0;text-decoration:none}.tutor-course-loop-price>.price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;font-weight:600;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-loop-price>.price .subscription-details{font-size:15px;margin-left:4px;font-weight:400}.tutor-course-loop-price>.price .subscription-details+.tutor-loop-cart-btn-wrap{margin-left:0;margin-top:4px}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a{color:var(--tutor-text-color);position:relative;line-height:20px;vertical-align:top;display:block;font-weight:400;background:transparent;padding:0}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a:hover{color:var(--tutor-primary-color)}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap{margin-left:auto}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a.added{display:none}.tutor-course-loop-price>.price .tutor-loop-cart-btn-wrap a::before{content:"\e915";font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:5px;vertical-align:top;color:var(--tutor-primary-color)}@-webkit-keyframes mymove{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes mymove{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.tutor-course-loop:hover .tutor-loop-course-footer .tutor-loop-cart-btn-wrap{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-course-col-4{width:25%}.tutor-course-col-3{width:33.33%}.tutor-course-col-2{width:50%}.tutor-course-col-1{width:100%}.tutor-course-col-1 .tutor-course-loop{width:100%}.tutor-course-col-5{width:20%}.tutor-course-col-6{width:16.66%}@media (max-width: 991px){.tutor-course-col-6,.tutor-course-col-5,.tutor-course-col-4,.tutor-course-col-3,.tutor-course-col-2{width:50%}}@media (max-width: 575px){.tutor-course-col-6,.tutor-course-col-5,.tutor-course-col-4,.tutor-course-col-3,.tutor-course-col-2{width:100%}}.tutor-course-filter-wrap{margin-bottom:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-filter-form{display:inline-block;margin:0}.tutor-courses{clear:both;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-right:-15px;padding:0}.tutor-loop-course-bottom{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:100%}.clearfix:before,.clearfix:after{display:block;clear:both;content:""}.tutor-loop-author,.tutor-meta{color:#bac0cf}.tutor-text-mute{color:#bac0cf;font-weight:400}.tutor-loop-author{overflow:hidden;font-size:var(--tutor-text-size)}.tutor-loop-author .tutor-single-course-avatar img{width:25px;height:25px;display:block;border-radius:50%;margin-right:6px}.tutor-loop-author .tutor-single-course-avatar .tutor-text-avatar{height:25px;width:25px;display:inline-block;border-radius:50%;text-align:center;line-height:25px;font-size:11px;margin-right:6px}.tutor-loop-author>div{display:inline-block;float:left}.tutor-loop-author>div a{color:var(--tutor-text-color);font-weight:500;-webkit-transition:300ms;transition:300ms}.tutor-loop-author>div a:hover{color:var(--tutor-primary-color)}.tutor-loop-author>div span{display:inline-block;margin:0 2px 0 2px;color:var(--tutor-light-color);line-height:25px;font-weight:400}.tutor-course-lising-category a:not(:last-child):after{content:", ";margin-right:5px}.tutor-course-enrolled-wrap{margin:0 -20px -20px !important;padding:12px 20px;overflow:hidden;border-top:1px solid #dcdfe5;font-size:14px}.tutor-course-enrolled-wrap p{font-weight:600;margin:0}.tutor-course-enrolled-wrap p i{padding-right:9px;float:left;font-size:20px;line-height:20px}.tutor-course-enrolled-wrap p i,.tutor-course-enrolled-wrap p span{color:var(--tutor-success-button-color)}.tutor-notice-warning{background-color:#fcf8e3;border-color:#faebcc;padding:20px;margin-bottom:10px}.tutor-info-msg,.tutor-success-msg,.tutor-warning-msg,.tutor-error-msg{margin:10px 0;padding:10px;border-radius:3px 3px 3px 3px}.tutor-info-msg{color:var(--tutor-primary-color);background-color:#bef}.tutor-success-msg{color:var(--tutor-success-button-color);background-color:#dff2bf}.tutor-warning-msg{color:#9f6000;background-color:#feefb3}.tutor-error-msg{color:#d8000c;background-color:#fbdcdc;border:1px solid #d8000c}.cart-required-login,.cart-required-login a,.cart-required-login form{cursor:pointer}.single_add_to_cart_button,a.tutor-button,.tutor-button,a.tutor-btn,.tutor-btn{color:#fff;border:1px solid var(--tutor-primary-button-color);background-color:var(--tutor-primary-button-color);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:12px 20px;border-radius:4px;text-transform:capitalize;line-height:20px;font-size:14px;font-weight:600;cursor:pointer;-webkit-transition:300ms;transition:300ms;overflow:hidden;vertical-align:top}.single_add_to_cart_button i,a.tutor-button i,.tutor-button i,a.tutor-btn i,.tutor-btn i{line-height:19px;margin-right:7px;font-size:16px}.single_add_to_cart_button.btn-sm,a.tutor-button.btn-sm,.tutor-button.btn-sm,a.tutor-btn.btn-sm,.tutor-btn.btn-sm{padding:9px 14px;line-height:19px}a.tutor-button.bordered-button,.tutor-button.bordered-button,a.tutor-btn.bordered-btn,.tutor-btn.bordered-btn{color:var(--tutor-primary-button-color);border:1px solid var(--tutor-primary-button-color);background-color:transparent !important}a.tutor-button.default-btn,.tutor-button.default-btn,a.tutor-btn.default-btn,.tutor-btn.default-btn{color:#393c40;border:1px solid #b8babe;background:var(--tutor-primary-button-color)}a.tutor-button.default-btn i,.tutor-button.default-btn i,a.tutor-btn.default-btn i,.tutor-btn.default-btn i{color:#fff}a.tutor-button.default-btn:hover,.tutor-button.default-btn:hover,a.tutor-btn.default-btn:hover,.tutor-btn.default-btn:hover{background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-color);color:#fff}a.tutor-button.default-btn:hover i,.tutor-button.default-btn:hover i,a.tutor-btn.default-btn:hover i,.tutor-btn.default-btn:hover i{color:#fff}a.tutor-button:hover,.tutor-button:hover,a.tutor-btn:hover,.tutor-btn:hover{background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-button-color);color:#fff;-webkit-filter:brightness(0.9);filter:brightness(0.9)}a.tutor-button.bordered-button:hover,.tutor-button.bordered-button:hover,a.tutor-btn.bordered-btn:hover,.tutor-btn.bordered-btn:hover{border:1px solid var(--tutor-primary-button-color);background-color:var(--tutor-primary-button-color) !important;color:#fff !important}a.tutor-button.button-light,.tutor-button.button-light{color:#b1b8c9;background-color:#dae4e6;border:1px solid #dae4e6}a.tutor-button.button-light:hover,.tutor-button.button-light:hover{color:#939bae;background-color:#e8eff1;border:1px solid #e8eff1}.tutor-button.tutor-danger{background-color:var(--tutor-danger-button-color);border-color:#e53935}.tutor-button.tutor-danger:hover{background-color:var(--tutor-danger-button-color);border-color:var(--tutor-danger-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-button.tutor-success{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color)}.tutor-button.tutor-success:hover{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-button.tutor-warning{background:var(--tutor-warning-button-color);border-color:var(--tutor-warning-button-color)}.tutor-button.tutor-warning:hover{background:var(--tutor-warning-button-color);border-color:var(--tutor-warning-button-color);-webkit-filter:brightness(0.9);filter:brightness(0.9)}.course-enrolled-nav-wrap{border-bottom:1px solid #dedfe0;margin-bottom:45px}.tutor-button:disabled,.tutor-button[disabled],.tutor-button:disabled:hover,.tutor-button[disabled]:hover{display:block;border:0px;background-color:#DCDCE1;color:#737787;cursor:default}.tutor-button span{font-size:12px;display:block}.tutor-button-block{width:100%;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tutor-wrap{width:100%}.tutor-wrap nav.course-enrolled-nav ul{list-style:none;margin:0 0 -1px;padding:0}.tutor-wrap nav.course-enrolled-nav ul li{display:inline-block}.tutor-wrap nav.course-enrolled-nav ul li a{display:block;font-size:16px;padding:5px 0 20px;margin-right:20px;color:var(--tutor-light-color);border-bottom:2px solid transparent}.tutor-wrap nav.course-enrolled-nav ul li:not(:first-child) a{margin-left:20px}.tutor-wrap nav.course-enrolled-nav ul li.active a{border-bottom:2px solid var(--tutor-primary-color);color:var(--tutor-text-color)}@media (max-width: 575px){.tutor-wrap nav.course-enrolled-nav ul li{display:inline-block}.tutor-wrap nav.course-enrolled-nav ul li:not(:first-child) a,.tutor-wrap nav.course-enrolled-nav ul li a{padding:8px;margin:0}.tutor-wrap nav.course-enrolled-nav ul li.active a{border:none;color:var(--tutor-primary-color)}}.tutor-updating-message i{display:none}.tutor-profile-photo-upload-wrap{width:200px;height:auto;margin-bottom:70px;position:relative}.tutor-profile-photo-upload-wrap img{width:100%;height:auto;display:block}a.tutor-profile-photo-upload-btn,button.tutor-profile-photo-upload-btn{position:absolute;top:100%;background-color:var(--tutor-primary-color);color:#fff;display:block;width:100%;text-align:CENTER;padding:9px 0}a.tutor-profile-photo-upload-btn:hover,button.tutor-profile-photo-upload-btn:hover{background-color:var(--tutor-primary-hover-color);color:#fff}.tutor-profile-photo-delete-btn{position:absolute;color:#ff000c;right:10px;top:10px}.single-instructor-wrap{border:1px solid #e8eff1;margin-bottom:30px;border-radius:4px}.single-instructor-wrap .single-instructor-top{padding:20px;border-bottom:1px solid #e8eff1;display:-webkit-box;display:-ms-flexbox;display:flex}@media (max-width: 767px){.single-instructor-wrap .single-instructor-top{-ms-flex-wrap:wrap;flex-wrap:wrap}}.single-instructor-wrap .single-instructor-top h3,.single-instructor-wrap .single-instructor-top h4{margin:0;padding:0}.single-instructor-wrap .tutor-instructor-left{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding-right:30px}@media (max-width: 767px){.single-instructor-wrap .tutor-instructor-left{width:100%;margin-bottom:15px}}.single-instructor-wrap .instructor-avatar{float:left}.single-instructor-wrap .instructor-avatar img{max-width:50px;height:auto;border-radius:50%}.single-instructor-wrap .instructor-name{float:left;padding-left:20px;max-width:180px}.single-instructor-wrap .instructor-name h3{font-size:16px;color:var(--tutor-text-color);font-weight:600}.single-instructor-wrap .instructor-name h3 a{font-weight:500;color:var(--tutor-text-color)}.single-instructor-wrap .instructor-name h4{font-weight:500;color:var(--tutor-light-color)}.single-instructor-wrap .single-instructor-bottom{padding:15px 20px;text-align:right;overflow:hidden}@media (max-width: 767px){.single-instructor-wrap .single-instructor-bottom{text-align:left}}.single-instructor-wrap .single-instructor-bottom p{margin:0}.single-instructor-wrap .single-instructor-bottom .ratings{float:left}.single-instructor-wrap .single-instructor-bottom .ratings i{margin-right:4px}.single-instructor-wrap .single-instructor-bottom .courses,.single-instructor-wrap .single-instructor-bottom .students{display:inline-block;margin-left:20px}.single-instructor-wrap .single-instructor-bottom .courses i,.single-instructor-wrap .single-instructor-bottom .students i{font-size:18px;display:inline-block;margin-right:2px;vertical-align:middle}.single-instructor-wrap .single-instructor-bottom .ratings .rating-total-meta{color:#bac0cf}.single-instructor-wrap .single-instructor-bottom .ratings .rating-generated{color:#f8c51c}.tutor-dashboard-pagination-results-stats{margin:10px 0 30px}.statement-address{margin:10px 0;color:#555}.statement-order-completed{background:var(--tutor-success-button-color);color:#fff;padding:2px 5px;border:none}.tutor-login-wrap{max-width:520px;margin:0 auto;padding:40px 55px;-webkit-box-shadow:0 0 15px rgba(0,0,0,0.1);box-shadow:0 0 15px rgba(0,0,0,0.1);border-radius:5px}.tutor-login-wrap form{margin:0}.tutor-login-wrap .tutor-login-title{margin-bottom:25px;padding:0 40px;text-align:center}.tutor-login-form-wrap{max-width:450px;margin:auto}.tutor-login-form-wrap p{margin-bottom:0}.tutor-login-form-wrap label{display:block !important;margin-bottom:4px}.tutor-login-form-wrap .tutor-alert{margin-bottom:20px}.tutor-login-form-wrap input[type="password"],.tutor-login-form-wrap input[type="text"]{width:100%;display:block;border:1px solid #e8eff1;-webkit-box-shadow:none;box-shadow:none;margin-bottom:20px;border-radius:4px;background:#eceef4;line-height:48px;padding:0;text-indent:15px}.tutor-login-form-wrap input[type="password"]:focus,.tutor-login-form-wrap input[type="text"]:focus{background:#ffffff;border-color:var(--tutor-primary-color)}.tutor-login-form-wrap input::-webkit-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input::-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input:-ms-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input:-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-rememeber-wrap{overflow:hidden;text-align:right;margin-bottom:30px}.tutor-login-rememeber-wrap p{display:inline-block;float:left}.tutor-login-rememeber-wrap p,.tutor-login-rememeber-wrap label{margin:0}.tutor-form-register-wrap a,.tutor-login-rememeber-wrap a,.tutor-login-rememeber-wrap label{color:#606c8f;vertical-align:middle;opacity:0.5;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";-webkit-transition:300ms;transition:300ms}.tutor-form-register-wrap a:hover,.tutor-login-rememeber-wrap a:hover,.tutor-login-rememeber-wrap label:hover{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-login-form-wrap input[type="submit"]{color:#fff;background-color:var(--tutor-primary-button-color);border-color:var(--tutor-primary-button-color);padding:15px 30px;border-radius:4px;text-transform:uppercase;line-height:1;display:block;width:100%;-webkit-transition:300ms;transition:300ms}.tutor-login-form-wrap input[type="checkbox"]{margin-right:4px}.tutor-form-register-wrap{text-align:center;margin-top:15px}.tutor-course-login-wrap h4{font-size:42px;line-height:1.2;margin-bottom:20px;color:var(--tutor-text-color)}.tutor-cart-box-login-form{display:-webkit-box;display:-ms-flexbox;display:flex;position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.6);z-index:99;top:0;left:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.login-overlay-close{position:absolute;background:transparent;width:100%;height:100%;z-index:-1}.course-login-title{margin-bottom:50px}.tutor-cart-box-login-form .tutor-cart-box-login-form-inner{background:#fff;padding:50px 40px;position:relative;width:400px;font-size:16px;font-weight:400;max-height:90%;overflow:auto}.tutor-cart-box-login-form-inner button.tutor-popup-form-close{position:absolute;padding:0;margin:0;border:none;background-color:transparent;top:14px;right:20px;opacity:0.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";cursor:pointer;-webkit-transition:300ms;transition:300ms;color:var(--tutor-text-color)}.tutor-cart-box-login-form-inner button.tutor-popup-form-close:hover{color:red}.tutor-option-field-row label,.tutor-form-group label{display:block;margin-bottom:10px}.tutor-option-field textarea,.tutor-option-field select,.tutor-option-field input[type="text"],.tutor-option-field input[type="number"],.tutor-option-field input[type="pas.tutor-dashboard-content-innersword"],.tutor-form-group textarea,.tutor-form-group select,.tutor-form-group input[type="text"],.tutor-form-group input[type="number"],.tutor-form-group input[type="password"]{width:100%;display:block;border:1px solid #dcdfe5;-webkit-box-shadow:none;box-shadow:none;margin-bottom:20px;border-radius:4px;background:#ffffff;line-height:48px;padding:0;text-indent:15px;-webkit-transition:300ms;transition:300ms;font-size:16px}.tutor-form-group{position:relative}.tutor-form-group span.tutor-input-prepand{position:absolute;height:calc(100% - 2px);font-size:21px;line-height:50px;padding:0 12px;background:transparent;border-right:1px solid #dcdfe5;top:1px}.tutor-form-group span.tutor-input-prepand+input{padding-left:35px}.tutor-course-builder-form-elem{margin-bottom:20px}.tutor-option-field .select2-container,.tutor-form-group .select2-container{margin-bottom:20px;width:100% !important}.tutor-option-field .select2-container ul.select2-selection__rendered,.tutor-form-group .select2-container ul.select2-selection__rendered{padding:4px 9px;display:block}.tutor-option-field .select2-container li.select2-selection__choice,.tutor-form-group .select2-container li.select2-selection__choice{background:#ebeef0;color:#606c8f;line-height:29px;border-radius:3px;padding:0 9px;margin:5px;border:none;font-weight:600}.tutor-option-field .select2-container .select2-search__field,.tutor-form-group .select2-container .select2-search__field{padding:8px 3px 8px 6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0}.tutor-option-field .select2-container .select2-search__field::-webkit-input-placeholder,.tutor-form-group .select2-container .select2-search__field::-webkit-input-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field::-moz-placeholder,.tutor-form-group .select2-container .select2-search__field::-moz-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field:-ms-input-placeholder,.tutor-form-group .select2-container .select2-search__field:-ms-input-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-search__field:-moz-placeholder,.tutor-form-group .select2-container .select2-search__field:-moz-placeholder{color:#abafb6}.tutor-option-field .select2-container .select2-selection--single,.tutor-option-field .select2-container .select2-selection--multiple,.tutor-form-group .select2-container .select2-selection--single,.tutor-form-group .select2-container .select2-selection--multiple{border-color:#dcdfe5}.tutor-option-field .select2-container.select2-container--focus .select2-selection--single,.tutor-option-field .select2-container.select2-container--focus .select2-selection--multiple,.tutor-form-group .select2-container.select2-container--focus .select2-selection--single,.tutor-form-group .select2-container.select2-container--focus .select2-selection--multiple{border-color:var(--tutor-primary-color)}.tutor-option-field textarea,.tutor-form-group textarea{line-height:26px;text-indent:0;padding:15px;height:180px}.tutor-option-field textarea:focus,.tutor-form-group textarea:focus,.tutor-option-field input:focus,.tutor-form-group input:focus{outline:none}.tutor-dashboard-course-builder-wrap .tutor-option-field textarea,.tutor-dashboard-course-builder-wrap .tutor-form-group textarea{height:100px}.tutor-option-field textarea:focus,.tutor-option-field input:not([type="submit"]):focus,.tutor-form-group textarea:focus,.tutor-form-group input:not([type="submit"]):focus{background:#ffffff;border-color:var(--tutor-primary-color)}.tutor-option-field textarea::-webkit-input-placeholder,.tutor-option-field input::-webkit-input-placeholder,.tutor-form-group textarea::-webkit-input-placeholder,.tutor-form-group input::-webkit-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea::-moz-placeholder,.tutor-option-field input::-moz-placeholder,.tutor-form-group textarea::-moz-placeholder,.tutor-form-group input::-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea:-ms-input-placeholder,.tutor-option-field input:-ms-input-placeholder,.tutor-form-group textarea:-ms-input-placeholder,.tutor-form-group input:-ms-input-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field textarea:-moz-placeholder,.tutor-option-field input:-moz-placeholder,.tutor-form-group textarea:-moz-placeholder,.tutor-form-group input:-moz-placeholder{color:#b0b6c8;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.tutor-option-field select,.tutor-form-group select{padding:2px 5px;height:50px}.tutor-form-group.tutor-reg-form-btn-wrap{text-align:right}.tutor-option-field p.desc{margin:-10px 0 20px;font-size:13px;font-style:italic;opacity:0.7}.tutor-option-field:last-child .tutor-option-field p.desc{margin-bottom:0}.tutor-option-gorup-fields-wrap .tutor-lesson-video-runtime{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-option-gorup-fields-wrap .tutor-lesson-video-runtime .tutor-option-group-field{padding-right:30px}.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:46px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:46px}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:13px;font-size:16px}.select2-container .select2-selection--single{height:48px}.select2-container .select2-selection--multiple{min-height:50px}.tutor-price-preview-box{border:1px solid #dcdfe5;padding:20px;margin-bottom:30px;border-radius:4px;overflow:hidden}.tutor-price-box-thumbnail{margin:-20px -20px 20px}.tutor-price-box-thumbnail .tutor-single-lesson-segment{margin-bottom:0}.tutor-price-box-description h6{font-size:23px;margin:15px 0 5px}.tutor-price-box-description ul{list-style:none}.tutor-course-purchase-box a{display:block;text-align:center;margin-top:6px}.tutor-price-preview-box .price{font-size:35px;font-weight:500;margin:0 0 20px;overflow:hidden;line-height:1}.tutor-price-preview-box .price .subscription-details{font-size:var(--tutor-text-size);display:block;margin-top:12px;line-height:1.2em}.tutor-price-preview-box .price>.price{margin-bottom:0}.tutor-price-preview-box .price del+ins{margin-left:0;float:left}.tutor-course-reviews-wrap{border:1px solid #e8eff1;border-radius:4px}.tutor-course-avg-rating-total{color:var(--tutor-light-color)}.tutor-course-avg-rating-total span{color:var(--tutor-text-color)}.tutor-review-individual-item{border-top:1px solid #e8eff1;padding:30px;overflow:hidden}.tutor-review-individual-item p{margin:0;padding:0}.course-avg-rating-wrap{padding:20px 20px 20px 40px}.tutor-review-individual-item .review-left{width:200px;float:left;overflow:hidden}.tutor-review-individual-item .review-content{padding-left:200px}@media (max-width: 991px){.tutor-review-individual-item .review-left{width:100%;float:none;margin-bottom:25px}.tutor-review-individual-item .review-content{padding-left:0}}@media (max-width: 991px){.tutor-single-course-sidebar{margin-top:30px}}.tutor-review-individual-item .review-avatar{width:50px;float:left}.tutor-review-individual-item .review-avatar img{border-radius:50%;margin:0;border:none;max-width:100%;height:auto}.tutor-review-individual-item .tutor-review-user-info{float:left;padding-left:20px}.tutor-review-individual-item .tutor-review-user-info p{margin-bottom:0}.tutor-review-individual-item .tutor-review-user-info a{color:var(--tutor-text-color)}.review-avatar .tutor-text-avatar,.tutor-dashboard-avater .tutor-text-avatar,.instructor-avatar .tutor-text-avatar{border-radius:50%;width:50px;height:50px;text-align:center;display:block;line-height:50px;color:#ffffff;text-shadow:0 1px 2px rgba(0,0,0,0.4)}.course-avg-rating-wrap .course-avg-rating{font-size:76px;line-height:1;font-weight:400}.course-avg-rating-wrap p{margin:0}.tutor-review-individual-item .tutor-review-name{font-size:16px;font-weight:600}.tutor-review-individual-item .review-meta{color:var(--tutor-light-color)}.individual-review-rating-wrap{color:#f8c51c}.individual-review-rating-wrap i,.course-avg-rating-html i{margin-right:4px;color:#f8c51c}.course-rating-meter{display:-webkit-box;display:-ms-flexbox;display:flex}.course-rating-meter i.tutor-icon-star-full{color:#f8c51c}.rating-meter-bar-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}.rating-meter-col{margin:0 3px}.course-rating-meter{margin-bottom:8px}.rating-meter-bar{height:5px;width:100%;background:#e8eff1;margin-top:11px;border-radius:15px;overflow:hidden}.rating-meter-fill-bar{background:#f8c51c;height:5px}.rating-meter-col.rating-text-col{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-pagination,.tutor-pagination-wrap{text-align:center;margin:20px 0}.tutor-pagination a,.tutor-pagination span,.tutor-pagination-wrap a,.tutor-pagination-wrap span{padding:3px;display:inline-block}.tutor-pagination-wrap a:hover,.tutor-pagination a:hover{color:var(--tutor-primary-color)}.tutor-course-tags{margin:-5px}.tutor-course-tags a{padding:6px 15px;background:#e8eff1;display:inline-block;margin:5px;color:var(--tutor-text-color);border-radius:2px;-webkit-transition:300ms;transition:300ms}.tutor-course-tags a:hover{color:#000}.certificate-download-btn{margin-top:20px;display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;text-align:center;text-transform:uppercase !important;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#tutor-single-entry-content .tutor-course-prerequisites{padding:60px}.prerequisites-course-lists{padding:0;list-style:none;margin:0}.prerequisites-course-lists li a{padding:13px 15px;border:1px solid #dcdfe5;margin-bottom:20px;border-radius:4px;font-weight:500;color:var(--tutor-primary-color);font-size:16px}.prerequisites-course-lists li:first-child{padding:13px 40px 13px 60px;border:1px solid #f7e5b9;margin-bottom:20px;border-radius:4px;font-weight:500;background:#fffff5;color:#b39f70;position:relative}.prerequisites-course-lists li:first-child>span{position:absolute;left:20px;top:13px}.prerequisites-course-lists li .prerequisites-course-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.prerequisites-course-feature-image img{width:70px;border-radius:2px;height:auto;margin:0 !important;-webkit-box-shadow:0 0 1px rgba(0,0,0,0.08);box-shadow:0 0 1px rgba(0,0,0,0.08)}.prerequisites-course-lists li .prerequisites-course-title{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:15px;-webkit-transition:300ms;transition:300ms}.prerequisites-course-lists li a:hover .prerequisites-course-title{color:var(--tutor-primary-color)}.prerequisites-course-checkmark{line-height:24px;height:24px;text-transform:uppercase;font-size:12px;font-weight:700;min-width:107px}.prerequisites-course-checkmark i{height:24px;width:24px;background:#dbdddd;color:#dbdddd;display:inline-block;text-align:center;border-radius:2px;margin-right:3px}.prerequisites-course-checkmark.is-complete i{background:var(--tutor-success-button-color);color:#fff}.tutor-single-course-meta ul li.tutor-social-share{float:right;margin-right:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width: 575px){.tutor-single-course-meta ul li.tutor-social-share{display:none}}.tutor-single-course-meta ul li.tutor-social-share button{margin:0;border:none;background:transparent;color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms;padding:0 4px;cursor:pointer}.tutor-single-course-meta ul li.tutor-social-share button:hover{color:var(--tutor-primary-color)}.rtl .tutor-single-course-meta ul li.tutor-social-share{float:left}.rtl .tutor-single-course-meta ul li,.rtl .tutor-loop-author>div{float:right}.rtl .tutor-single-course-meta ul li{margin-right:0;margin-left:40px}.rtl .tutor-wrap nav.course-enrolled-nav ul li a{margin-right:0;margin-left:20px}.rtl .tutor-progress-bar .tutor-progress-filled:after{left:auto;right:var(--tutor-progress-left);-webkit-transform:translateY(-50%) translateX(50%);transform:translateY(-50%) translateX(50%)}.rtl .tutor-progress-percent{padding-left:0;padding-right:20px}.rtl .tutor-course-lesson h5 i{margin-right:0;margin-left:10px}.rtl .tutor-course-lesson h5 .lesson-preview-icon i{margin-right:10px;margin-left:0}.rtl .tutor-course-lesson h5 .tutor-lesson-duration{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:left}.rtl .tutor-custom-list-style li{padding-right:25px;padding-left:0px}.rtl .tutor-custom-list-style li:before{left:auto;right:0}.rtl .single-instructor-wrap .instructor-name,.rtl .single-instructor-wrap .instructor-avatar{float:right}.rtl .single-instructor-wrap .instructor-name{padding-left:0;padding-right:20px}.rtl .single-instructor-wrap .instructor-bio{padding-left:0;padding-right:260px}.rtl .tutor-single-page-top-bar .tutor-topbar-back-to-curse-wrap{margin-left:30px;margin-right:0}.rtl .tutor-single-lesson-button-group .tutor-single-lesson-button a,.rtl .tutor-topics-in-single-lesson .tutor-single-lesson-items a{padding:14px 17px 14px 100px}.rtl .tutor-lessons-under-topic .tutor-lesson-right-icons{right:auto;left:15px}.rtl .tutor-lessons-under-topic .tutor-lesson-right-icons .tutor-lesson-complete{margin-left:0;margin-right:8px}.rtl .tutor-single-lesson-button-group .tutor-single-lesson-button a>i:first-child,.rtl .tutor-topics-in-single-lesson .tutor-single-lesson-items a>i:first-child{margin-right:0;margin-left:10px}.rtl .tutor-topbar-home-btn{margin-left:0;margin-right:20px}@media screen and (max-width: 546px){.rtl .tutor-topbar-home-btn{margin-right:10px}}.rtl .tutor-single-page-top-bar .tutor-single-lesson-segment button.course-complete-button{margin-left:15px;margin-right:0}.tutor-frontend-modal{position:fixed;width:100%;height:100%;left:0;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:999999}.tutor-frontend-modal .tutor-frontend-modal-overlay{background:rgba(0,0,0,0.7);height:100%;width:100%;position:fixed;left:0;top:0;z-index:-1;cursor:url("data:image/svg+xml,%3Csvg width='24' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.852 12.004L.23 22.7a.764.764 0 0 0 0 1.076.75.75 0 0 0 1.068 0L12 13l10.703 10.778a.75.75 0 0 0 1.069 0 .764.764 0 0 0 0-1.076L13.148 12.004l10.63-10.706a.764.764 0 0 0 0-1.075.752.752 0 0 0-1.067 0L12 11.008 1.289.223a.752.752 0 0 0-1.068 0 .764.764 0 0 0 0 1.076l10.631 10.705z' fill='%23F0576A' fill-rule='evenodd'/%3E%3C/svg%3E"),auto}.tutor-frontend-modal .tutor-frontend-modal-content{position:relative;background:#fff;padding:60px;width:90%;max-width:750px;max-height:90%;overflow-y:auto}@media (max-width: 768px){.tutor-frontend-modal .tutor-frontend-modal-content{padding:40px}}@media (max-width: 540px){.tutor-frontend-modal .tutor-frontend-modal-content{padding:20px}}button.tm-close.tutor-icon-line-cross{position:absolute;right:23px;top:23px;background:transparent;padding:0;font-size:24px;border:none;color:var(--tutor-light-color)}button.tm-close.tutor-icon-line-cross:hover{color:red}.label-order-status{padding:3px 5px;border-radius:3px}.label-status-completed{background-color:#4bd863;color:#ffffff}.label-status-cancelled{background-color:#fd6a03;color:#ffffff}.label-status-on-hold{background-color:#db5382;color:#ffffff}.tutor-lesson-content-area h2{margin-bottom:25px;margin-top:20px;font-weight:500}.assignment-result-wrap{text-align:center;padding:10px 0}.submitted-assignment-grade-pass{color:var(--tutor-success-button-color)}.submitted-assignment-grade-failed{color:red}.received-marks{color:var(--tutor-primary-color)}.tutor-dashboard-course-builder-wrap .tutor-form-row{margin-top:20px;margin-bottom:20px}.video_source_wrap_html5{width:100px;text-align:center}.video-poster-img img{max-width:200px;height:auto}.tutor-assignment-information{font-size:16px}.tutor-assignment-information ul{padding:0;margin:0 0 22px;list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-assignment-information ul li strong{font-weight:700}.tutor-assignment-attachment-upload-wrap .tutor-form-group{display:inline-block}.tutor-assignment-attachment-upload-wrap .tutor-form-group label+input{display:none}.tutor-assignment-attachment-upload-wrap .tutor-form-group label{padding:15px 17px;border:1px solid #dcdfe5;overflow:hidden;margin-right:15px;border-radius:4px;cursor:pointer}.tutor-assignment-attachment-upload-wrap .tutor-form-group label i{font-size:30px;line-height:30px;float:left;margin-right:12px}.tutor-assignment-attachment-upload-wrap .tutor-form-group label span{line-height:30px}.tutor-assignment-attachment-upload-wrap{margin-bottom:40px}#tutor-course-topics a{text-decoration:none}#tutor-course-topics .tutor-topics-wrap{border-bottom:1px solid #f6f8fa;padding-bottom:0;margin:0}.tutor-untopics-lessons .course-content-item,.course-contents .course-content-item{padding:10px 12px 10px 25px;border-bottom:1px solid #d9d9d9;background-color:#ebeef0}.tutor-untopics-lessons .course-content-item .tutor-lesson-top,.course-contents .course-content-item .tutor-lesson-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a:last-child,.course-contents .course-content-item .tutor-lesson-top a:last-child{margin-left:auto}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a.open-tutor-lesson-modal,.course-contents .course-content-item .tutor-lesson-top a.open-tutor-lesson-modal{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-untopics-lessons .course-content-item .tutor-lesson-top a,.course-contents .course-content-item .tutor-lesson-top a{color:#393c40;font-weight:400;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-untopics-lessons .course-content-item .tutor-lesson-top i,.course-contents .course-content-item .tutor-lesson-top i{padding-right:7px;color:#393c40}.tutor-untopics-lessons .course-content-item .tutor-lesson-top .tutor-updating-message i,.course-contents .course-content-item .tutor-lesson-top .tutor-updating-message i{display:none}.tutor-untopics-lessons .course-content-item .tutor-lesson-top i.tutor-icon-garbage:hover,.course-contents .course-content-item .tutor-lesson-top i.tutor-icon-garbage:hover{color:red}.tutor-lessons.ui-sortable{min-height:20px}#tutor-course-topics .drop-lessons p{margin:0}#tutor-course-topics .course-content-item:hover{background-color:#ebeef0}#tutor-course-topics .tutor-lessons{padding-left:0}#tutor-course-topics .tutor-lesson-top,#tutor-course-topics .tutor-lesson-top i{font-size:15px}#tutor-course-topics .tutor-lesson-top .open-tutor-quiz-modal i{display:inline-block;vertical-align:middle;margin-right:5px}#tutor-course-topics .tutor-lesson-top{display:-webkit-box;display:-ms-flexbox;display:flex}#tutor-course-topics .tutor-lesson-top .open-tutor-lesson-modal,.tutor-quiz .open-tutor-quiz-modal,.course-content-item .open-tutor-assignment-modal{-webkit-box-flex:1;-ms-flex:1;flex:1}#tutor-course-topics .tutor-lesson-top i.tutor-icon-move{margin-right:10px;cursor:ns-resize}.rtl #tutor-course-topics .tutor-lesson-top i.tutor-icon-move{margin-right:0;margin-left:10px}#tutor-course-topics .tutor-lesson-top i.tutor-icon-pencil{margin:0 10px}#tutor-course-topics .tutor-lesson-top a{color:#393c40}#tutor-course-topics .tutor-lesson-top a.tutor-updating-message i{display:none}.course-move-handle{cursor:row-resize}.new-topic-btn-wrap{padding:20px}p.course-empty-content{padding-left:20px;padding-right:20px}.tutor_btn_lg{line-height:45px;background-color:var(--tutor-primary-color);color:#ffffff;padding:0 20px;display:inline-block;border-radius:2px;font-weight:300;border:none;-webkit-box-shadow:none;box-shadow:none;cursor:pointer}.tutor_btn_lg:focus{-webkit-box-shadow:none;box-shadow:none;border:none;outline:none}.tutor_btn_lg:focus,.tutor_btn_lg:hover{background-color:var(--tutor-primary-color);color:#ffffff}.ui-sortable-placeholder{visibility:visible;background-color:#dddd}.tutor-untopics-lessons{border:1px solid #eee;padding:20px;margin:0 -1px -1px;background-color:#fbfbfb}.tutor-untopics-lessons h3{font-weight:300}.tutor-untopics-lessons .tutor-lessons{padding-left:0 !important}.create-new-lesson-wrap{text-align:center}.tutor-metabox-add-topics .tutor-option-field-row:last-child,.tutor-topics-edit-form .tutor-option-field-row:last-child{border-bottom:none}.tutor-metabox-add-topics .tutor-option-field-row textarea{height:120px}.topic-edit-icon{cursor:pointer}.tutor-topic-title{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:16px;font-weight:300;margin:0;line-height:45px;padding-left:15px}.rtl .tutor-topic-title{padding-left:0;padding-right:15px}.tutor-topic-title a{color:#393c40}.tutor-topic-title .topic-inner-title{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;cursor:pointer;max-width:calc(100% - 137px);font-weight:400;font-size:16px}.tutor-topic-title span{padding:0 5px}.tutor-topic-title span.expand-collapse-wrap{border-left:1px solid #e7e7e7}.tutor-topic-title span.expand-collapse-wrap a{display:block;padding:0 13px}.topic-delete-btn{float:right}.text-muted{color:#cccccc}.topic-delete-btn a{padding:0 10px}.topic-delete-btn a:hover{color:#ff0000}.topic-delete-btn .dashicons{width:12px;height:12px;font-size:12px}#tutor-course-topics{position:relative}#tutor-course-topics .inside{padding:0;margin:0}#tutor-course-topics a:focus{-webkit-box-shadow:none;box-shadow:none}#tutor-course-topics .toggle-indicator:before{margin-top:20px}.tutor-topics-wrap:nth-child(2n){background:#f6f8fa}#tutor-course-content-wrap{border:1px solid #ddd;margin-top:20px}#tutor-course-content-wrap .tutor-topics-edit-form,#tutor-course-content-wrap .tutor-metabox-add-topics{border-left:none;border-right:none;margin-top:0}#tutor-course-content-wrap .tutor-topics-wrap .tutor-topics-body{background:#ebeef0;padding:0px}.tutor-course-builder-button{line-height:35px;color:#393c40;display:inline-block;padding:0 20px;border-radius:4px;margin-right:10px;border:1px solid #d3d4d5;background-color:#f2f2f2;cursor:pointer;vertical-align:top;-webkit-transition:300ms;transition:300ms;font-weight:400}.tutor-course-builder-button i{line-height:35px;display:inline-block;vertical-align:top;margin-right:6px}.tutor-course-builder-button.tutor-updating-message i{display:none}.tutor-course-builder-button.tutor-btn-lg{line-height:40px}.tutor-add-quiz-button-wrap{padding:15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-add-quiz-button-wrap>*+*{margin-left:15px}.tutor-course-builder-button.active{color:#fff;background:var(--tutor-primary-color);border-color:var(--tutor-primary-color)}.tutor-course-builder-button:hover{-webkit-filter:brightness(0.9);filter:brightness(0.9)}.tutor-btn-lg i{color:var(--tutor-primary-color);vertical-align:top;margin-right:5px;font-size:16px;display:inline-block;line-height:40px}.tutor-course-builder-button.active i,.tutor-course-builder-button:hover i{color:#fff}.tutor-course-builder-button.tutor-success{background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);color:#fff}.tutor-updating-message:before{display:inline-block;font-family:"tutor";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;content:"\e91d";-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;margin-right:6px}.rtl .tutor-updating-message:before{margin-right:0;margin-left:6px}.lesson-modal-close-wrap a{background:#ffffff;width:50px;height:59px;display:inline-block;text-align:center;line-height:57px;color:#3a3d42;font-size:15px;position:absolute;right:0;top:0}.lesson-modal-close-wrap a:hover{color:red}.lesson-modal-form-wrap .lesson-modal-field-row{padding:10px 0}.lesson-modal-field.tutor-lesson-modal-title-wrap{width:95%}.lesson-modal-field-row input[type="text"]{background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;color:#333;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;min-width:400px;min-height:35px}.tutor-lesson-modal-title-wrap input{width:100%}.lesson-modal-form-wrap .tutor-option-field-row{padding:10px 0}.lesson-modal-form-wrap .tutor-option-field-row:last-child{border-bottom:none}.tutor-lesson-modal-wrap .modal-footer{padding:10px 20px;background-color:#fff;width:100%;position:sticky;bottom:0;position:-webkit-sticky}.tutor-option-field .tutor-lesson-edit-feature-img{width:100px;position:relative}.tutor-option-field .tutor-lesson-edit-feature-img img{width:100%;height:auto}a.tutor-lesson-thumbnail-delete-btn{position:absolute;top:0;right:0;color:red;background:#fff;padding:3px 5px;border-radius:5px}.tutor-get-pro-text{color:#e02424}.updating-icon:before{font-family:"tutor";content:"\e91d";-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;display:inline-block}.tutor-notice-warning{background-color:#fcf8e3;border-color:#faebcc;padding:20px;margin-bottom:10px}.tutor-modal-wrap{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:-1;background-color:rgba(0,0,0,0.5)}.tutor-modal-wrap.show{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";z-index:99999;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tutor-modal-wrap.loading .tutor-modal-content:before{position:absolute;top:0;left:0;right:0;bottom:0;display:block;content:"";z-index:9;background:url("../images/spinner.gif") no-repeat center center}.tutor-modal-wrap .tutor-modal-content{max-height:90%;overflow-y:auto;overflow-x:hidden;background-color:#fff;max-width:730px;margin:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);position:relative;-webkit-transition:all 200ms ease-out;transition:all 200ms ease-out;width:90%}.admin-bar .tutor-modal-wrap .tutor-modal-content{max-height:calc(90% - 32px);margin-top:32px}.tutor-modal-wrap .modal-footer{padding:20px 0;border-top:1px solid #eee}.tutor-modal-wrap .modal-footer.has-padding{padding:20px 15px}.tutor-modal-wrap .modal-container{padding:20px 20px 0}.tutor-modal-wrap.tutor-instructors-modal-wrap .modal-container p{margin-top:0}.tutor-modal-wrap .modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;padding:15px 20px;border-bottom:1px solid #eeeff1}.tutor-modal-wrap .modal-title{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-modal-wrap .modal-header h1{padding:0;margin:0;font-size:23px;line-height:30px}.modal-container .modal-classic-btn-wrap{position:absolute;right:45px;top:14px}.modal-container .modal-classic-btn-wrap a{color:var(--tutor-primary-color)}.tutor-modal-wrap .modal-header h1::before,.tutor-modal-wrap .modal-header h1::after{display:none}.tutor-modal-wrap .search-bar{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-top:20px;padding-left:20px;padding-right:20px}.tutor-modal-wrap .search-bar input[type="text"]{width:100%;border:1px solid #eee;-webkit-box-shadow:none;box-shadow:none;padding:10px}.tutor-modal-wrap .modal-close-wrap a.modal-close-btn{width:50px;height:50px;background:#000;display:inline-block;text-align:center;line-height:47px;color:#fff;font-size:25px;position:absolute;right:0}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-title{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-close-wrap a.modal-close-btn{background:#ffffff;width:20px;height:20px;display:inline-block;text-align:center;line-height:28px;color:#3a3d42;font-size:22px;position:relative}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-header{padding:15px 20px;border-bottom:1px solid #eeeff1}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-header h1{padding:0}.tutor-modal-wrap.tutor-quiz-builder-modal-wrap .modal-container{background-color:#f1f1f1;padding:0}#tutor-quiz-modal-tab-items-wrap{background-color:#fff;font-size:0;overflow:hidden}#tutor-quiz-builder-modal-tabs-container{padding:20px}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item{padding:15px 25px;display:inline-block;color:#393c40;border-left:1px solid #f1f1f1;overflow:hidden;line-height:17px;vertical-align:middle;font-size:14px !important}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item.active{background-color:#f1f1f1}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item i{float:left;font-size:17px;line-height:1;margin-right:5px}#tutor-quiz-modal-tab-items-wrap .tutor-quiz-modal-tab-item.active i{color:var(--tutor-primary-color)}.quiz-modal-tab-navigation-btn{padding:10px 20px;border-radius:3px}.quiz-modal-btn-next,.quiz-modal-btn-next:focus,.quiz-modal-btn-first-step,.quiz-modal-btn-first-step:focus,.quiz-modal-question-save-btn,.quiz-modal-question-save-btn:focus,.quiz-modal-settings-save-btn,.quiz-modal-settings-save-btn:focus{background-color:var(--tutor-primary-color);color:#ffffff}.quiz-modal-btn-next:hover,.quiz-modal-btn-first-step:hover,.quiz-modal-question-save-btn:hover,.quiz-modal-settings-save-btn:hover{color:#ffffff}.quiz-modal-btn-cancel,.quiz-modal-btn-back{color:#4b5981;border:1px solid #d4dadb}.tutor-quiz-builder-form-row .quiz-form-warning{color:#e88e06}.tutor-assignment-builder-modal-wrap .modal-container{padding:10px}.assignment-modal-form-wrap .tutor-option-field.tutor-assignment-modal-title-wrap{margin:0}.tutor-quiz-question-answers-form{background-color:#fff;padding:20px;-webkit-transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);transition:all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);border:1px solid #dedede;border-radius:3px;margin-bottom:20px}.advanced-options-tab-item{float:right}.tutor-course-builder-wrap{border:1px dashed #dcdfe5}.tutor-quiz-builder-modal-tabs-notice{background:#d8d8d8;line-height:20px;padding:10px 30px;color:#a4a4a4}.tutor-quiz-builder-modal-tabs-notice a{color:#a4a4a4;text-decoration:underline}.tutor-quiz-builder-group{margin-bottom:25px}.tutor-quiz-builder-group>p.warning{color:red;font-size:12px}.tutor-quiz-builder-group>p.help{color:#a4a4a4;font-size:12px;margin-top:7px}.tutor-quiz-builder-group>h4{color:#393c40;font-weight:600;margin:0 0 15px}.tutor-quiz-builder-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:-10px;margin-right:-10px}.tutor-quiz-builder-col{padding-left:10px;padding-right:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-quiz-builder-col.auto-width{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.tutor-quiz-builder-group textarea,.tutor-quiz-builder-group input[type="text"],.tutor-quiz-builder-group input[type="email"],.tutor-quiz-builder-group input[type="number"],.tutor-quiz-builder-group input[type="password"]{line-height:40px;padding:5px 0;text-indent:15px;background:#fff;display:inline-block;border:1px solid #dedede;border-radius:3px;-webkit-box-shadow:none;box-shadow:none;height:40px;margin:0;width:100%;color:#393c40}.tutor-quiz-builder-group textarea:focus,.tutor-quiz-builder-group input[type="text"]:focus,.tutor-quiz-builder-group input[type="email"]:focus,.tutor-quiz-builder-group input[type="number"]:focus,.tutor-quiz-builder-group input[type="password"]:focus{border-color:var(--tutor-primary-color)}.tutor-quiz-builder-group textarea{height:80px;resize:none;text-indent:0;padding:11px 15px;line-height:22px}.tutor-quiz-builder-group textarea[name="quiz_description"]{height:150px}.tutor-quiz-builder-group select{border:1px solid #ccc;-webkit-box-shadow:none;box-shadow:none;height:42px !important;padding:0 12px !important;margin:0}.tutor-quiz-builder-modal-control-btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px}.question_form_inner{padding:0 20px 20px;margin-top:0}.tutor-quiz-builder-modal-control-btn-group .quiz-builder-btn-group-left{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-quiz-builder-modal-control-btn-group .quiz-modal-tab-navigation-btn{display:inline-block}.tutor-quiz-builder-modal-control-btn-group .quiz-modal-tab-navigation-btn:not(:last-child){margin-right:6px}.modal-container .tutor-quiz-add-question-btn{border:1px solid #c6c9cf;padding:10px 15px;color:#393c40;display:inline-block;border-radius:3px}.modal-container .tutor-quiz-add-question-btn i{color:var(--tutor-primary-color);line-height:16px;margin-right:3px}.quiz-form-field-col{margin-right:20px}.quiz-form-field-col.result-fail{width:100%}.quiz-modal-switch-field{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:30px}.quiz-modal-switch-field label.btn-switch{margin-right:20px;position:relative;vertical-align:top}label.btn-switch input:checked+.btn-slider{background-color:var(--tutor-success-button-color)}.btn-switch+span{line-height:24px;display:inline-block;margin-left:8px;font-weight:700;vertical-align:top}.tutor-select{position:relative}.tutor-select .select-header{border:1px solid #dedede;margin:0;padding:10px;width:100%;-webkit-box-shadow:none;box-shadow:none;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.tutor-select .select-header .lead-option{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-select .select-header .select-dropdown{line-height:22px}.tutor-select .select-header .lead-option .question-type-pro{display:none}.tutor-select .tutor-select-options{border:1px solid #dedede;background-color:#fff;padding:22px 10px 8px;width:calc(100% - 22px);position:absolute;font-size:0;z-index:9;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-shadow:0px 2px 10px rgba(0,0,0,0.08);box-shadow:0px 2px 10px rgba(0,0,0,0.08);top:55px;border-radius:3px}.tutor-select .tutor-select-options .tutor-select-option{width:calc(33.3333% - 22px);display:inline-block;padding:9px;cursor:pointer;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 11px 15px;border:1px solid #e2e2e2;border-radius:3px;font-size:13px}.tutor-select .tutor-select-options .tutor-select-option:hover{border-color:var(--tutor-primary-color)}.question-type-pro{color:#fff;font-size:9px;right:11px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}i.tutor-icon-block{padding:0;color:#fff;border-radius:3px;margin-right:2px;display:inline-block;width:22px;height:22px;text-align:center;line-height:22px}i.tutor-icon-block.tutor-icon-short-ans{background-color:#f37512}i.tutor-icon-block.tutor-icon-image-ans{background-color:#a322f9}i.tutor-icon-block.tutor-icon-yes-no{background-color:var(--tutor-primary-color)}i.tutor-icon-block.tutor-icon-multiple-choice{background-color:#9034a9}i.tutor-icon-block.tutor-icon-mark{background-color:#00b890}i.tutor-icon-block.tutor-icon-open-ended{background-color:#fe3129}i.tutor-icon-block.tutor-icon-fill-gaps{background-color:#ffbf00}i.tutor-icon-block.tutor-icon-answer-shorting{background-color:#f80089}i.tutor-icon-block.tutor-icon-assesment{background-color:#274055}i.tutor-icon-block.tutor-icon-matching{background-color:#8a4a1b}i.tutor-icon-block.tutor-icon-image-matching{background-color:#f37512}i.tutor-icon-block.tutor-icon-ordering{background-color:var(--tutor-primary-color)}i.tutor-icon-block.tutor-icon-plus-square-button,i.tutor-icon-block.tutor-icon-plus{background-color:var(--tutor-success-button-color)}.create-lesson-in-topic-btn i.tutor-icon-block.tutor-icon-plus{background-color:var(--tutor-primary-color)}a.back-to-quiz-questions-btn{font-size:16px;font-weight:300;color:#393c40;margin-bottom:10px;display:block}a.back-to-quiz-questions-btn.tutor-updating-message i{display:none}.modal-container .quiz-questions-form{padding:20px}#quiz-builder-tab-advanced-options .tutor-quiz-builder-form-cols-row .quiz-form-field-col:first-child{-webkit-box-flex:0;-ms-flex:0 0 150px;flex:0 0 150px}.question-form-header{margin-bottom:20px}.quiz-question-form-body{margin-bottom:25px}.quiz-builder-question-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:15px}.quiz-builder-question{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;background:#fff;padding:10px;border:1px solid #e2e2e2;border-radius:3px;max-width:calc(100% - 52px)}.quiz-builder-question .question-sorting{margin-right:10px;line-height:22px}.quiz-builder-question .question-sorting i{display:block;line-height:24px}.quiz-builder-question .question-edit-icon{line-height:22px}.quiz-builder-question .question-edit-icon .tutor-quiz-open-question-form.tutor-updating-message i{display:none}.quiz-builder-question .question-title{-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:22px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-right:10px}.quiz-builder-question .question-icon{-webkit-box-flex:0;-ms-flex:0 0 155px;flex:0 0 155px}.quiz-builder-qustion-trash a{display:block;padding:0 0 0 10px;font-size:20px;color:rgba(57,60,64,0.4);line-height:44px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider{border:1px solid #dedede;padding:20px 70px 20px 10px;background-color:#ffffff;position:relative;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-content{background:var(--tutor-primary-color);border:none;height:4px;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-header{background:#dedede;border-radius:4px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .ui-widget-content .ui-state-default{background:var(--tutor-primary-color);border:1px solid var(--tutor-primary-color);border-radius:50%;margin-top:-2px}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .tutor-field-type-slider-value{font-size:16px;font-weight:600;background:var(--tutor-primary-color);position:absolute;right:5px;top:50%;margin:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);line-height:34px;width:43px;text-align:center;border-radius:4px;color:#fff}.tutor-quiz-builder-modal-wrap .tutor-field-type-slider .tutor-field-type-slider-value:before{content:"";position:absolute;border:7px solid transparent;top:50%;border-right-color:var(--tutor-primary-color);right:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.tutor-quiz-answer-wrap{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-quiz-answer{background-color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:10px 15px;border:1px solid #dedede;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:22px;border-radius:3px;margin-bottom:15px}.tutor-quiz-answer .tutor-quiz-answer-edit a{display:block;padding:0px 9px}.tutor-quiz-answer-trash-wrap a.answer-trash-btn{padding:0 10px;display:inline-block;line-height:44px}span.tutor-quiz-answer-title{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-quiz-answer-media .option-media-preview{margin-bottom:20px}.tutor-quiz-answer-media .option-media-preview img{max-width:80px;height:auto}.tutor-question-answer-image{margin-right:10px}.tutor-question-answer-image img{max-height:25px;width:auto}button#quiz-answer-save-btn,button#quiz-answer-edit-btn{background-color:var(--tutor-success-button-color);color:#fff;padding:10px 15px;border:none;cursor:pointer}button#quiz-answer-save-btn:hover,button#quiz-answer-edit-btn:hover{background-color:var(--tutor-success-button-color)}.tutor-media-upload-wrap{border:1px solid #dedede;display:-webkit-box;display:-ms-flexbox;display:flex;width:130px}.tutor-media-upload-wrap img{max-width:100%}.tutor-media-preview{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-media-upload-btn{display:block;padding:10px;font-size:50px;line-height:50px;text-align:center;color:#dedede}.tutor-media-upload-trash-wrap{border-left:1px solid #dedede}.tutor-media-upload-trash{color:#dedede;display:block;line-height:50px;padding:12px}.tutor-quiz-answers-form-footer.tutor-quiz-builder-form-row{margin-top:40px;margin-bottom:10px}.tutor-metabox-add-topics,.tutor-topics-edit-form{background-color:#f7f7f7;border:1px solid #dcdfe5;margin-top:25px;padding:20px}.tutor-course-builder-section{margin-bottom:60px}.tutor-course-builder-section-title h3{font-size:20px;font-weight:700;color:#1d1f37;position:relative;overflow:hidden;z-index:1;margin:0 0 25px;cursor:pointer}.tutor-course-builder-section-title h3::after{content:"";position:absolute;top:50%;left:0;width:100%;height:1px;background:var(--tutor-primary-color);z-index:-1}.tutor-course-builder-section-title h3 span,.tutor-course-builder-section-title h3 i{float:left;background-color:#fff;font-size:20px;line-height:20px}.tutor-course-builder-section-title h3 i{color:var(--tutor-primary-color);font-size:14px}.tutor-course-builder-section-title h3 span{padding:0 15px 0 9px}.tutor-frontend-builder-item-scope{margin-bottom:30px}.tutor-frontend-builder-item-scope:last-child{margin-bottom:0}.tutor-builder-item-heading{font-weight:500;line-height:21px;margin-bottom:10px;display:block}.builder-course-thumbnail-upload-wrap>div{font-size:var(--tutor-text-size);line-height:25px;margin-bottom:20px;font-weight:400}.builder-course-thumbnail-img-src{position:relative}.builder-course-thumbnail-img-src .tutor-course-thumbnail-delete-btn{font-size:10px;position:absolute;top:-4px;left:-4px;color:#e53935;-webkit-transition:300ms;transition:300ms;border-radius:50%;width:20px;height:20px;line-height:20px;background:#fff;text-align:center}.builder-course-thumbnail-img-src .tutor-course-thumbnail-delete-btn i{line-height:20px}.tutor-course-builder-header{text-align:right;font-size:12px}.tutor-course-builder-section .course-empty-content{margin:15px 0}.tutor-course-builder-section .tutor-course-builder-header a{color:#393c40}.tutor-course-builder-section .tutor-course-builder-header a:first-child{padding-right:7px}.tutor-course-builder-section .tutor-course-builder-header a:last-child{padding-left:7px}.tutor-course-builder-section .tutor-course-builder-header{margin-top:-15px}.tutor-course-builder-section .new-topic-btn-wrap{padding:0;margin-top:20px}.tutor-course-available-instructors{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-available-instructors .added-instructor-item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 15px);flex:0 0 calc(50% - 15px);max-width:calc(50% - 15px);border:1px solid #dcdfe5;padding:13px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:4px;position:relative;margin-bottom:30px}.tutor-course-available-instructors .added-instructor-item .instructor-control{position:absolute;right:14px;top:50%;font-size:12px;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:0;-webkit-transition:300ms;transition:300ms}.tutor-course-available-instructors .added-instructor-item .instructor-control a{color:red}.tutor-course-available-instructors .added-instructor-item:hover .instructor-control{opacity:1}.tutor-course-available-instructors .added-instructor-item .instructor-icon{height:45px;width:45px;overflow:hidden;border-radius:50px;margin-right:15px}.tutor-course-available-instructors .added-instructor-item .instructor-icon img{width:100%}.tutor-course-available-instructors .added-instructor-item .instructor-name{position:relative}.tutor-course-available-instructors .added-instructor-item .instructor-name img{display:inline-block;margin-left:10px;width:18px}.tutor-course-available-instructors .added-instructor-item .instructor-name img:hover+i.instructor-name-tooltip{opacity:1}.tutor-course-available-instructors .added-instructor-item i.instructor-name-tooltip{-webkit-transition:300ms;transition:300ms;opacity:0;position:absolute;bottom:34px;right:9px;background:#2a344f;-webkit-transform:translateX(50%);transform:translateX(50%);color:#fff;font-size:12px;font-style:normal;padding:0 8px;border-radius:15px;line-height:20px;z-index:1}.tutor-course-available-instructors .added-instructor-item i.instructor-name-tooltip::before{content:"";position:absolute;border:5px solid #2a344f;bottom:-3px;left:50%;margin-left:-5px;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:-1}.tutor-course-available-instructors .added-instructor-item:nth-child(2n){margin-left:30px}.tutor-addons-list .plugin-icon{height:120px}.btn-switch{display:inline-block;height:22px;position:relative;width:40px}.btn-switch input{display:none}.btn-slider{background-color:#ccc;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;-webkit-transition:0.4s;transition:0.4s}.btn-slider:before{background-color:#fff;bottom:3px;content:"";height:16px;left:4px;position:absolute;-webkit-transition:0.4s;transition:0.4s;width:16px}input:checked+.btn-slider{background-color:var(--tutor-primary-color)}input:checked+.btn-slider:before{-webkit-transform:translateX(16px);transform:translateX(16px)}.btn-slider.btn-round{border-radius:34px}.btn-slider.btn-round:before{border-radius:50%}.tutor-video-embeded-wrap{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%}.tutor-video-embeded-wrap iframe,.tutor-video-embeded-wrap object,.tutor-video-embeded-wrap embed{position:absolute;top:0;left:0;width:100%;height:100%}.select2-selection__rendered [class^="tutor-icon-"]{display:inline-block;vertical-align:top;margin-right:6px}.select2-results__options [class^="tutor-icon-"]{color:var(--tutor-primary-color);display:inline-block;vertical-align:top;margin-right:6px}.select2-results__option--highlighted [class^="tutor-icon-"]{color:#fff}.tutor-video-metabox-wrap{margin-bottom:50px}.video-metabox-source-input-wrap{padding:30px;background-color:#f4f7f8;border:1px solid #dcdfe5;border-radius:3px}.video-metabox-source-html5-upload{background-color:#fff;text-align:center;padding:40px 20px;border:1px solid #dcdfe5;border-radius:3px}.video-metabox-source-html5-upload p{margin-bottom:5px}.tutor-video-metabox-wrap p{margin:0;padding:0}.video-metabox-source-html5-upload .video-upload-icon i{font-size:50px;color:var(--tutor-primary-color)}.video_source_upload_wrap_html5{margin-top:10px}.video-metabox-source-html5-poster{padding-top:30px}.video_source_wrap_html5{width:100%}.builder-course-thumbnail-upload-wrap .button-transparent{float:right;background:transparent !important}.builder-course-thumbnail-upload-wrap .button-transparent:hover{background:var(--tutor-primary-color) !important}.html5-video-poster{height:100px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.html5-video-poster .tutor-builder-course-video-poster-text{text-align:left;padding-left:20px}.html5-video-poster .tutor-builder-course-video-poster-text h5{font-size:14px;font-weight:700;margin:0 0 6px;line-height:1}.html5-video-poster .tutor-builder-course-video-poster-text span{font-size:14px;font-weight:400}.html5-video-poster img{height:100%;width:auto}.no-memberhsip-msg-wrap p{margin:0}.content-drip-message-wrap.tutor-error-msg{margin:40px 50px}.content-drip-message-wrap{margin:120px}.content-drip-wrap-flex{display:-webkit-box;display:-ms-flexbox;display:flex}.content-drip-wrap-flex .content-drip-left{margin-right:50px}.content-drip-wrap-flex ul{margin:0;list-style-position:inside}.content-drip-wrap-flex ul li a{color:var(--tutor-primary-color)}.tutor-alert{border:1px solid #f8a201;background:#fffff2;position:relative;border-radius:3px;padding:20px 25px 20px 95px;color:#a86d00;margin-bottom:20px}.tutor-alert p{margin-bottom:10px}.tutor-alert p:last-child{margin:0}.tutor-alert.tutor-alert-info{border:1px solid #13aaf6;background:#eaf8ff;color:#0586c7}.tutor-alert.tutor-alert-info::before{content:"\e96c";background:#13aaf6}.tutor-alert.tutor-alert-danger{border:1px solid #fe1a1a;background:#fff2f2;color:#a50000}.tutor-alert.tutor-alert-success{border:1px solid #69bc0d;background:#f6fff2;color:#3d7400}.tutor-alert::before{content:"\e95f";position:absolute;font-size:30px;font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:70px;top:0;left:0;text-align:center;background:#f8a201;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#ffffff}.tutor-alert.tutor-alert-danger::before{content:"\e913";background:#fe1a1a}.tutor-alert.tutor-alert-success::before{content:"\e90f";background:#69bc0d}.tutor-alert-content p{margin:0}.gradename-bg{text-align:center;color:#ffffff;height:32px;min-width:32px;font-size:16px;line-height:32px;padding:0 8px;display:inline-block;border-radius:20px;font-weight:bold;margin-right:7px}.gradename-outline{text-align:center;height:32px;min-width:32px;font-size:16px;line-height:26px;padding:0 8px;display:inline-block;border-radius:20px;border:2px solid;margin-right:7px}.generate-course-gradebook-btn-wrap{margin:10px 0}.gradebook-result-for-label{margin:0;padding:4px 7px;background-color:#e8eff1;display:inline-block;margin-bottom:10px}table.course-single-gradebooks{border-spacing:0;width:100%;border-collapse:collapse;border:1px solid #dcdfe5}table.course-single-gradebooks th{padding:1em 1.41575em;text-align:left;vertical-align:top;border-bottom:1px solid #dcdfe5}table.course-single-gradebooks th{font-weight:600}table.course-single-gradebooks thead th{background-color:rgba(220,223,229,0.14);padding:1.41575em;vertical-align:middle}table.course-single-gradebooks tbody td{border-bottom:1px solid #dcdfe5;background-color:#ffffff !important}table.course-single-gradebooks a{color:#4b5981}.text-label{margin:0;padding:4px 7px;background-color:#e8eff1;display:inline-block;border-radius:3px}.text-label.submitted-assignment-grade-pass{background-color:#86b223;color:#ffffff}.text-label.submitted-assignment-grade-failed{background-color:#d71830;color:#ffffff}.tutor-bp-message-recipient-header{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px}.tutor-bp-recipient-info-wrap{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-bp-message-recipient-avatar-wrap img{width:70px;height:70px;border-radius:50%}.tutor-bp-message-recipient-avatar-wrap{margin-right:35px}.tutor-bp-message-recipient-header .tutor-bp-thread-recipient-name h3{margin:10px 0 8px !important;font-size:22px;font-weight:600;line-height:28px}.tutor-bp-message-recipient-header .tutor-bp-thread-recipient-name h4{margin:0 0 20px !important;font-size:16px;line-height:1;font-weight:500}.tutor-bp-enrolled-courses-wrap{margin:0}.tutor-bp-enrolled-courses-wrap .tutor-bp-enrolled-total-course-notice{font-weight:400;color:#1c294b;margin:10px 0 8px !important}.tutor-bp-enrolled-courses-wrap ul{padding:0 0 0 17px;margin:0;color:#50616f}.tutor-bp-enrolled-courses-wrap ul li a{line-height:1.7;display:block;color:#54616d;padding-left:10px}.tutor-bp-enrolled-courses-wrap ul li a:hover{color:var(--tutor-primary-color);opacity:1;-webkit-transition:300ms;transition:300ms;text-decoration:underline !important}.oxy-tutor-element{width:100%}.tutor-dashboard-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:30px;border-bottom:1px solid #dcdfe5;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-header .tutor-btn.bordered-btn{background-color:transparent;text-transform:uppercase;font-weight:400;border-radius:2px}.tutor-dashboard-header .tutor-btn.bordered-btn i{font-size:20px}.tutor-dashboard-header .tutor-star-rating-group{margin-right:3px}.tutor-dashboard-header-avatar img{display:block;width:150px;height:150px;border-radius:50%}.tutor-dashboard-header-info{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:24px;padding-top:15px;padding-bottom:15px}.tutor-dashboard-header-button{padding-top:15px}.tutor-dashboard-header-display-name h4{font-size:30px;margin-top:0px;margin-bottom:10px;line-height:34px}.tutor-dashboard-header-stats{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:25px}.tutor-dashboard-header-stats>div:not(:first-child){margin-left:30px}.tutor-dashboard-social-icons{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-social-icons h4{margin:0 10px 0 0;font-size:var(--tutor-text-size);line-height:25px}.tutor-dashboard-social-icons a{display:inline-block;font-size:12px;padding:0 5px;line-height:25px;color:#393c40;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-social-icons a:hover{color:var(--tutor-primary-color)}.tutor-profile-completion-warning{display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px 0;border-bottom:1px solid #dcdfe5}.tutor-profile-completion-warning .profile-completion-warning-icon{margin-top:10px}.tutor-profile-completion-warning .profile-completion-warning-icon span{font-size:40px;color:#ed9700;padding:0 20px}.tutor-profile-completion-warning .profile-completion-warning-content{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-positive:1;flex-grow:1;-webkit-box-flex:1}.tutor-profile-completion-warning .profile-completion-warning-content h4{font-size:20px;line-height:30px;margin:0;padding:0;width:100%}.tutor-profile-completion-warning .profile-completion-warning-content p{margin-bottom:10px;font-size:14px;font-weight:300;color:#737787}.tutor-profile-completion-warning .profile-completion-warning-content p a{font-weight:400;color:#3e64de}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details{-ms-flex-positive:1;flex-grow:1;-webkit-box-flex:1}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul{margin:0;list-style:none}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li{display:inline;position:relative;padding-left:16px;color:#737787}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li:not(:last-child){margin-right:21px}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li::before{content:"\2022";position:absolute;color:#f44337;font-weight:bold;display:inline-block;left:0}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-details ul li span{color:#3f435b}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status p span{font-weight:400}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-bar{height:6px;border-radius:8.5px;background-color:#ededf0}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-filled{height:6px;border-radius:3px;background-color:#ed9700}.tutor-profile-completion-warning .profile-completion-warning-content .profile-completion-warning-status .tutor-progress-bar-wrap .tutor-progress-filled::after{display:none}.tutor-dashboard-info-table-wrap{margin-bottom:30px}.tutor-dashboard-info-table-wrap table{margin-bottom:0;border-collapse:collapse;border:1px solid #dcdfe5;border-radius:4px;width:100%}.tutor-dashboard-info-table-wrap>h3{font-size:20px;font-weight:500;border:1px solid #dcdfe5;border-bottom:none;margin:0;padding:30px;border-radius:4px 4px 0 0}.tutor-dashboard-info-table-wrap>h3+table{border-radius:0 0 4px 4px}.tutor-dashboard-info-table thead{background:#fafbfc}.tutor-dashboard-info-table thead tr td{padding:15px}.tutor-dashboard-info-table tbody tr td{background:transparent !important;padding:20px 15px}.tutor-dashboard-info-table thead tr,.tutor-dashboard-info-table tbody tr{border:1px solid #dcdfe5}.tutor-dashboard-info-table thead tr td:first-child,.tutor-dashboard-info-table tbody tr td:first-child{padding-left:25px}.tutor-dashboard-info-table span.pending,.tutor-dashboard-info-table span.pass,.tutor-dashboard-info-table span.fail{color:#fff;font-size:14px;line-height:18px;padding:1px 6px;border-radius:2px}.tutor-dashboard-info-table span.pending{background-color:#f5a623}.tutor-dashboard-info-table span.fail{background-color:#d71830}.tutor-dashboard-info-table span.pass{background-color:var(--tutor-success-button-color)}.tutor-dashboard-single-review{border:1px solid #dcdfe5;border-radius:4px;margin-bottom:30px}.tutor-dashboard-review-heading{padding:10px 20px;border-bottom:1px solid #dcdfe5;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.individual-dashboard-review-body{padding:10px 20px}.tutor-dashboard-review-title{font-size:18px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:300}.tutor-dashboard-review-title a{font-weight:500;color:var(--tutor-primary-color)}.tutor-dashboard-review-title a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-review-links{white-space:nowrap;font-weight:400}.tutor-dashboard-review-links a{color:#8c94a8;margin-left:10px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px}.tutor-dashboard-review-links a i{line-height:inherit;font-size:14px;margin-right:5px}.individual-dashboard-review-body .review-meta{font-size:85%;margin:0;color:#8c94a8}.individual-star-rating-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-edit-review-modal-wrap .modal-close-wrap a.modal-close-btn{color:#222222;background:none;font-size:20px;top:8px}.tutor-modal-wrap form{margin-bottom:20px}.tutor-dashboard-info-cards{margin:0 -15px 15px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-info-cards .tutor-dashboard-info-card{padding:15px;min-width:33.333%}.tutor-dashboard-info-cards .tutor-dashboard-info-card p{margin:0;padding:15px 25px;background:#282c36;color:#ffffff;border-radius:4px}.tutor-dashboard-info-cards .tutor-dashboard-info-card p span.tutor-dashboard-info-val{display:block;font-weight:700;font-size:30px;line-height:1.618}.tutor-dashboard-info-cards .tutor-dashboard-info-card p span span{display:inline-block}.tutor-dashboard-info-cards .tutor-dashboard-info-card p>*{vertical-align:middle}.tutor-dashboard-content{margin-bottom:60px}.tutor-dashboard-content>h2{margin-bottom:20px}.prev-btn{font-size:16px;line-height:1.88;color:#3f435b}.prev-btn span{font-size:18px;font-weight:800;color:#3e64de;margin-right:7px}.tutor-dashboard-content .tutor-quiz-attempt-history tr th,.tutor-dashboard-content .tutor-quiz-attempt-history tr td{vertical-align:middle;border:none}.tutor-dashboard-content .tutor-quiz-attempt-history tr td:first-child{padding:15px 13px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table span.result-fail,.tutor-dashboard-content .tutor-quiz-attempt-history table span.result-pass{width:auto;height:auto;line-height:19px;padding:0 6.5px;margin-right:4px}.label-course-status{background-color:#cccccc;padding:3px 5px;color:#ffffff;font-size:12px;text-transform:capitalize}.label-course-publish{background-color:var(--tutor-success-button-color)}.tutor-dashboard-content .quiz-attempt-answers-wrap table th{font-size:14px;font-weight:400;line-height:1.5;letter-spacing:0.12px;color:#737787;padding:15px 10px}.tutor-dashboard-content .tutor-quiz-attempt-history table thead tr,.single-quiz-page.tutor-quiz-attempt-history table thead tr{background-color:#fafbfc}.tutor-dashboard-content .tutor-quiz-attempt-history table tr,.single-quiz-page.tutor-quiz-attempt-history table tr{border:0;background-color:#fff}.tutor-dashboard-content .tutor-quiz-attempt-history table tr:first-child,.single-quiz-page.tutor-quiz-attempt-history table tr:first-child{background-color:#fafbfc}.tutor-dashboard-content .tutor-quiz-attempt-history table th,.tutor-dashboard-content .tutor-quiz-attempt-history table td,.single-quiz-page.tutor-quiz-attempt-history table th,.single-quiz-page.tutor-quiz-attempt-history table td{border:1px solid #dcdfe5 !important;vertical-align:middle}.tutor-dashboard-content .tutor-quiz-attempt-history table th:first-child,.tutor-dashboard-content .tutor-quiz-attempt-history table td:first-child,.single-quiz-page.tutor-quiz-attempt-history table th:first-child,.single-quiz-page.tutor-quiz-attempt-history table td:first-child{width:62%}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(2),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(4),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(2),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(4),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(4),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(4){width:11%}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(3),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(5),.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(6),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(3),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(5),.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(6),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(3),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(5),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(6),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(3),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(5),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(6){width:9%}.tutor-dashboard-content .tutor-quiz-attempt-history table th,.single-quiz-page.tutor-quiz-attempt-history table th{font-size:14px;font-weight:500;line-height:1.14;color:#8792b2}.tutor-dashboard-content .tutor-quiz-attempt-history table th:nth-child(n+3),.single-quiz-page.tutor-quiz-attempt-history table th:nth-child(n+3){text-align:center}.tutor-dashboard-content .tutor-quiz-attempt-history table td,.single-quiz-page.tutor-quiz-attempt-history table td{background-color:#fff;font-size:14px;font-weight:400;color:#4b5981}.tutor-dashboard-content .tutor-quiz-attempt-history table td:nth-child(n+3),.single-quiz-page.tutor-quiz-attempt-history table td:nth-child(n+3){font-weight:500;text-align:center;padding-left:3px !important;padding-right:3px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table td:last-child,.single-quiz-page.tutor-quiz-attempt-history table td:last-child{padding-left:0px !important;padding-right:0px !important}.tutor-dashboard-content .tutor-quiz-attempt-history table td a,.single-quiz-page.tutor-quiz-attempt-history table td a{font-weight:500;color:#4b5981;text-decoration:underline;word-break:initial}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course a,.single-quiz-page.tutor-quiz-attempt-history table td .course a{font-weight:600;line-height:1.29;color:#4b5981;text-decoration:none}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course-meta,.single-quiz-page.tutor-quiz-attempt-history table td .course-meta{display:inline-block;margin-top:5px}.tutor-dashboard-content .tutor-quiz-attempt-history table td .course-meta span:nth-child(2),.single-quiz-page.tutor-quiz-attempt-history table td .course-meta span:nth-child(2){margin:0 17px}.tutor-dashboard-content .tutor-quiz-attempt-history table td .student,.single-quiz-page.tutor-quiz-attempt-history table td .student{font-weight:600;line-height:1.29;color:#4b5981}.tutor-dashboard-content .tutor-quiz-attempt-history table td .student-meta,.single-quiz-page.tutor-quiz-attempt-history table td .student-meta{display:inline-block;margin-top:5px}.single-quiz-page.tutor-quiz-attempt-history table{margin-bottom:30px}.tutor-dashboard-content .tutor-quiz-attempt-history table a{color:var(--tutor-primary-color);font-weight:700;line-height:24px}.tutor-dashboard-content .tutor-quiz-attempt-history table a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-content .tutor-quiz-attempt-history table a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-item-group{padding:25px;border:1px solid #dcdfe5;border-radius:4px;margin-bottom:30px}.tutor-dashboard-item-group>h4{font-size:20px;color:var(--tutor-primary-color);font-weight:500}.tutor-dashboard-item-group>h4:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-assignment-submitted-table tr td{text-align:center}.tutor-dashboard-assignment-submitted-table tr td a{color:#8c94a8;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-assignment-submitted-table tr td a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-assignment-submitted-table tr td,.tutor-dashboard-assignment-submitted-table tr th{border:1px solid #dcdfe5}.tutor-assignment-review-header{margin-bottom:30px}.tutor-assignment-review-header h3{margin-bottom:10px;line-height:28px}.tutor-assignment-evaluate-wraps h3,.tutor-assignment-review-header h3 a{font-size:22px;font-weight:700;color:var(--tutor-text-color);display:block}.tutor-assignment-review-header p{margin:0;color:var(--tutor-text-color);font-weight:700}.tutor-assignment-review-header p a{font-weight:400;color:var(--tutor-text-color)}.tutor-assignment-review-header a{-webkit-transition:300ms;transition:300ms}.tutor-assignment-review-header a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-assignment-review{background:rgba(220,223,229,0.14);border:1px solid #dcdfe5;padding:25px;font-weight:400;border-radius:4px;margin-bottom:40px}.tutor-dashboard-assignment-review h5,.tutor-dashboard-assignment-review h4{font-size:16px;line-height:23px;font-weight:700;color:var(--tutor-text-color)}.tutor-dashboard-assignment-review h5{margin-bottom:15px}.tutor-dashboard-assignment-files{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:-9px}.tutor-dashboard-assignment-files .uploaded-files{background-color:#fff;border:1px solid #dcdfe5;border-radius:4px;margin:9px;-webkit-transition:300ms;transition:300ms}.tutor-dashboard-assignment-files .uploaded-files:hover{-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.1);box-shadow:0 5px 10px rgba(0,0,0,0.1)}.tutor-dashboard-assignment-files .uploaded-files a i{margin-right:12px;color:#606c8f;float:left;font-size:28px;line-height:28px}.tutor-dashboard-assignment-files .uploaded-files a{color:var(--tutor-primary-color);display:block;overflow:hidden;line-height:28px;padding:15px 17px}.tutor-dashboard-assignment-files .uploaded-files a:hover{color:var(--tutor-primary-hover-color)}.tutor-assignment-evaluate-row{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-assignment-evaluate-row .tutor-option-field-label{-webkit-box-flex:0;-ms-flex:0 0 135px;flex:0 0 135px}.tutor-assignment-evaluate-row .tutor-option-field{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-assignment-evaluate-row .tutor-option-field-label label{display:block;padding-top:12px}.tutor-option-field-label label br{display:none}.tutor-option-field-label label p{margin:0;display:inline-block}.tutor-assignment-evaluate-row textarea,.tutor-assignment-evaluate-row .tutor-option-field input{border:1px solid #dcdfe5;height:50px;padding:0 15px;border-radius:4px;width:100px;background-color:#fff}.tutor-assignment-evaluate-row textarea{height:165px;width:100%}.tutor-assignment-evaluate-row{margin-bottom:60px}.tutor-assignment-evaluate-row p.desc{margin-bottom:0;margin-top:6px;font-style:italic}.tutor-dashboard-profile .tutor-dashboard-profile-item{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-dashboard-profile .tutor-dashboard-profile-item .heading{min-width:190px}@media (max-width: 480px){.tutor-dashboard-profile .tutor-dashboard-profile-item{-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-dashboard-profile .tutor-dashboard-profile-item .heading{min-width:100%;width:100%;font-weight:700;margin-bottom:6px}}.tutor-dashboard-profile .tutor-dashboard-profile-item .content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small{font-size:inherit;font-style:italic}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small a{color:var(--tutor-primary-color)}.tutor-dashboard-profile .tutor-dashboard-profile-item .content small a:hover{color:var(--tutor-primary-hover-color)}.tutor-dashboard-avater img{width:70px;height:70px;display:block;border-radius:50%}.tutor-dashboard-student-info h4{font-size:18px;color:var(--tutor-light-color);margin-bottom:0}.tutor-dashboard-student-info h4 a{color:var(--tutor-text-color)}.tutor-dashboard-user-role{font-weight:400}.tutor-dashboard-inline-links{margin-bottom:30px}.tutor-dashboard-inline-links ul{margin:0;padding:0;border-bottom:1px solid #dfe1e5}.tutor-dashboard-inline-links ul li{display:inline-block}.tutor-dashboard-inline-links ul li a{display:block;padding:5px 10px;color:var(--tutor-primary-color);margin-bottom:-1px;line-height:40px}.tutor-dashboard-inline-links ul li a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-inline-links ul li a:hover,.tutor-dashboard-inline-links ul li.active a{color:var(--tutor-primary-color);border-bottom:1px solid var(--tutor-primary-color);padding-bottom:4px}.tutor-dashboard-student-meta ul li:first-child{margin-left:0}@media (max-width: 767px){.tutor-dashboard-student-meta ul{display:block;border:none;padding:0}.tutor-dashboard-student-meta ul li{display:inline-block;color:var(--tutor-text-color);margin:5px;border:1px solid #dddddd;padding:5px 10px;border-radius:4px}}.tutor-dashboard-student-meta ul li strong{display:block;color:var(--tutor-light-color);font-weight:400}.tutor-dashboard-permalinks{list-style:none;margin:0px 0 20px;padding:20px 0;border-right:1px solid #dcdfe5}.tutor-dashboard-permalinks li a:hover{background-color:#edf0f9}.tutor-dashboard-permalinks li.active a{background-color:var(--tutor-primary-color);color:#ffffff}.tutor-dashboard-permalinks li.active a:hover{background-color:var(--tutor-primary-hover-color)}@media (max-width: 991px){.tutor-dashboard-student .tutor-col-3,.tutor-dashboard-student .tutor-col-9{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.profile-completion-warning-details{margin-bottom:10px}}.tutor-dashboard-permalinks a{display:block;color:var(--tutor-text-color);padding:10px 20px;line-height:28px}.tutor-dashboard-permalinks a:before{content:"\e968";font-family:"tutor" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:15px;vertical-align:middle;color:var(--tutor-primary-color);opacity:0.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";font-size:17px}.tutor-dashboard-permalinks a:hover::before{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";color:var(--tutor-primary-hover-color)}.tutor-dashboard-permalinks li.active a:before{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";color:#fff}.tutor-dashboard-menu-bio a:before,.tutor-dashboard-menu-my-profile a:before{content:"\e963"}.tutor-dashboard-menu-enrolled-courses a:before{content:"\e969"}.tutor-dashboard-menu-courses_taken a:before,.tutor-dashboard-menu-my-courses a:before{content:"\e965"}.tutor-dashboard-menu-announcements a:before{content:"\e93f"}.tutor-dashboard-menu-wishlist a:before{content:"\e908"}.tutor-dashboard-menu-reviews a:before{content:"\e917"}.tutor-dashboard-menu-my-quiz-attempts a:before{content:"\e9ab"}.tutor-dashboard-menu-quiz-attempts a:before{content:"\e91f"}.tutor-dashboard-menu-question-answer a:before{content:"\e948"}.tutor-dashboard-menu-earning a:before{content:"\e96b"}.tutor-dashboard-menu-withdraw a:before{content:"\e960"}.tutor-dashboard-menu-settings a:before{content:"\e961"}.tutor-dashboard-menu-logout a:before{content:"\e962"}.tutor-dashboard-menu-purchase_history a:before{content:"\e964"}.tutor-dashboard-menu-assignments a:before{content:"\e98b"}.tutor-dashboard-content{padding-top:30px}.quiz-attempts-title,.tutor-quiz-attempt-history-title{font-size:22px;font-weight:600;line-height:1.27;color:#4b5981;margin-bottom:31px}.tutor-date-range-filter-wrap{margin:15px 0 20px;font-size:12px}.report-top-sub-menu{margin:0 10px 5px 0;display:inline-block;font-size:0}.report-top-sub-menu a{text-decoration:none;padding:5px 8px;border:1px solid #d7dadf;color:#aaaeb3;white-space:nowrap;display:inline-block;font-size:12px}.report-top-sub-menu a:not(:first-child){margin-left:-1px}.report-top-sub-menu a:hover{background:#edf0f9;color:#333}.report-top-sub-menu a.active{background-color:var(--tutor-primary-color);color:#ffffff;border:1px solid var(--tutor-primary-hover-color)}.tutor-dashboard-menu-divider{height:1px;margin:10px 0;overflow:hidden;background-color:#dcdfe5}.tutor-dashboard-menu-divider-header{color:#acacac;padding:10px 20px;cursor:default}.tutor-date-range-wrap{display:inline-block}.report-date-range-form{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:0;max-width:370px}.date-range-input{position:relative}.date-range-input input{border-radius:0 !important;margin:0 !important;border-right:none !important;font-size:14px}.date-range-input:last-child{margin-right:0}.date-range-input:last-child button{border-radius:0}.date-range-input input,.date-range-input input[type="text"]{border:1px solid #d7dadf;-webkit-box-shadow:none;box-shadow:none;line-height:29px;margin:0;padding-right:30px;padding-top:0;padding-bottom:0;width:100%}.date-range-input i.tutor-icon-calendar{position:absolute;right:10px;top:7px}.date-range-input button{background-color:var(--tutor-primary-color);color:#ffffff;border:none;line-height:30px;padding:0 15px}.date-range-input button:hover{background-color:var(--tutor-primary-hover-color)}.report-download-csv-icon{float:right}.report-download-csv-icon a{text-decoration:none}.tutor-dashboard-statement-table-wrap{overflow-x:auto}table.tutor-dashboard-statement-table p{margin:0;padding:0}table.tutor-dashboard-statement-table p.small-text{font-size:12px;color:#666666}.tutor-mycourse-thumbnail{-webkit-box-flex:0;-ms-flex:0 0 250px;flex:0 0 250px;background-size:cover;background-position:center}.tutor-mycourse-content{padding:20px;-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width: 580px){.tutor-mycourse-thumbnail{height:200px}.tutor-mycourse-thumbnail,.tutor-mycourse-content{min-width:100%;width:100%}.profile-completion-warning-details li{display:block !important}}.tutor-mycourse-content h3{margin:0 0 9px}.tutor-mycourse-content h3 a:hover{color:var(--tutor-primary-color)}.tutor-mycourse-rating{color:#f8c51c;font-size:14px}.tutor-mycourse-rating i{margin-right:4px}.tutor-mycourse-view,.tutor-mycourse-edit,.tutor-mycourse-delete{color:var(--tutor-light-color);-webkit-transition:300ms;transition:300ms}.tutor-mycourse-view i,.tutor-mycourse-edit i,.tutor-mycourse-delete i{line-height:inherit;display:inline-block;vertical-align:top;color:var(--tutor-primary-color)}.tutor-mycourse-view:hover,.tutor-mycourse-edit:hover,.tutor-mycourse-delete:hover{color:var(--tutor-primary-color)}.tutor-dashboard-content-inner .tutor-mycourse-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:30px;border:1px solid #dcdfe5;border-radius:4px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;overflow:hidden;position:relative}@media (max-width: 580px){.tutor-dashboard-content-inner .tutor-mycourse-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-course-status h4{display:none}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating{margin-bottom:3px}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating a{font-weight:400;margin-left:5px;color:#8c94a8}.tutor-dashboard-content-inner .tutor-mycourse-wrap .tutor-mycourse-rating a:hover{color:var(--tutor-primary-color)}.tutor-dashboard-content-inner .tutor-mycourse-wrap p:last-child{margin-bottom:0}.tutor-mycourse-content .mycourse-footer{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-mycourse-content .mycourse-footer .tutor-mycourses-stats{-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-dashboard-content-inner .tutor-mycourses-stats>*{margin-right:8px}.tutor-mycourse-status{margin-right:15px}.tutor-dashboard-content-inner h3 a{color:var(--tutor-text-color);font-size:22px;line-height:28px;font-weight:500;display:block}.tutor-dashboard-content-inner .tutor-course-metadata ul{display:block;list-style:none;margin:0 0 10px;padding:0}.tutor-dashboard-content-inner .tutor-progress-bar-wrap{margin-bottom:0}.tutor-dashboard-content-inner .tutor-course-metadata li{display:inline-block;color:var(--tutor-light-color);margin-left:20px}.tutor-dashboard-content-inner .tutor-course-metadata li:first-child{margin-left:0}.tutor-dashboard-content-inner .tutor-course-metadata li span{color:var(--tutor-text-color);margin-left:5px}.ui-datepicker{background-color:#fff;border:1px solid #eeeeee;display:none;margin-top:4px;padding:5px;width:180px}.ui-datepicker a,.ui-datepicker a:hover{text-decoration:none}.ui-datepicker a:hover,.ui-datepicker td:hover a{color:#2a6496;-webkit-transition:color 0.1s ease-in-out;transition:color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-header{margin-bottom:4px;text-align:center}.ui-datepicker .ui-datepicker-title{font-weight:700}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{cursor:default;font-family:"tutor";-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;height:20px;line-height:1;margin-top:2px;width:30px}.ui-datepicker .ui-datepicker-prev{float:left;text-align:left}.ui-datepicker .ui-datepicker-next{float:right;text-align:right}.ui-datepicker .ui-datepicker-prev:before{content:"\e921"}.ui-datepicker .ui-datepicker-next:before{content:"\e903"}.ui-datepicker .ui-icon{display:none}.ui-datepicker .ui-datepicker-calendar{table-layout:fixed;width:100%}.ui-datepicker .ui-datepicker-calendar th,.ui-datepicker .ui-datepicker-calendar td{text-align:center;padding:0}.ui-datepicker .ui-datepicker-calendar td{border-radius:4px;-webkit-transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out;transition:background-color 0.1s ease-in-out, color 0.1s ease-in-out}.ui-datepicker .ui-datepicker-calendar td:hover{background-color:#eee;cursor:pointer}.ui-datepicker .ui-datepicker-calendar td a{text-decoration:none}.ui-datepicker .ui-datepicker-current-day{background-color:#4289cc}.ui-datepicker .ui-datepicker-current-day a{color:#fff}.ui-datepicker .ui-datepicker-calendar .ui-datepicker-unselectable:hover{background-color:#fff;cursor:default}.ui-datepicker-calendar .ui-state-default{border:none;background:none}.ui-datepicker-calendar .ui-state-default.ui-state-highlight{background:#eeeeee;padding:3px;display:block}.tutor-table{width:100%}.tutor-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.tutor-course-delete-popup{text-align:center;font-size:16px;line-height:25px;font-weight:400;color:#8C94A8}.tutor-course-delete-popup img{width:110px;margin:0 auto}.tutor-course-delete-popup h3{font-weight:500;font-size:30px;margin:15px 0 25px}.tutor-modal-button-group{margin-top:55px}.tutor-modal-button-group button{line-height:30px;padding:10px 25px;color:#C7CCDA;border:2px solid #DDDFE7;border-radius:2px;background:#fff;min-width:220px;text-align:center;text-transform:uppercase;-webkit-transition:300ms;transition:300ms}.tutor-modal-button-group button+button{margin-left:20px}.tutor-modal-button-group button.tutor-danger{background:#F0576A;border-color:#F0576A;color:#ffffff}.tutor-modal-button-group button:hover{background:#fff;color:#333;border-color:#333}.tutor-modal-button-group button.tutor-danger:hover{background:#cd4a5a;border-color:#cd4a5a;color:#ffffff}@media (max-width: 768px){.tutor-modal-button-group button{padding:5px 20px;min-width:auto;margin-bottom:6px}.tutor-modal-button-group{margin-top:20px}}.withdraw-method-select-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px 40px}.withdraw-method-select-wrap .withdraw-method-select{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:0 15px;margin-bottom:30px}.withdraw-method-select-wrap .withdraw-method-select label{display:block;padding:20px;margin:0;cursor:pointer;overflow:hidden;border:1px solid #DCDFE5;border-radius:4px;position:relative}.withdraw-method-select-wrap .withdraw-method-select input:checked+label{border-color:var(--tutor-success-button-color);-webkit-box-shadow:0 0 0 1px var(--tutor-success-button-color);box-shadow:0 0 0 1px var(--tutor-success-button-color)}.withdraw-method-select-wrap .withdraw-method-select label:after{content:'\e90f';position:absolute;right:-1px;top:-1px;border:1px solid #DCDFE5;height:22px;width:22px;text-align:center;line-height:22px;color:transparent}.withdraw-method-select-wrap .withdraw-method-select input:checked+label:after{color:#fff;background:var(--tutor-success-button-color);border-color:var(--tutor-success-button-color);font-family:'tutor' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;font-size:13px}.withdraw-method-select-wrap .withdraw-method-select p{margin:0}.withdraw-method-select-wrap .withdraw-method-select label>p{font-size:20px;font-weight:600;color:var(--tutor-primary-color)}.withdraw-method-select-wrap .withdraw-method-select label span{color:#B0B6C8;font-weight:400}.withdraw-method-form{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -15px}.withdraw-method-form>div{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-width:50%;padding:0 15px 20px}@media (max-width: 480px){.withdraw-method-form>div{width:100%}}.withdraw-method-form>div.withdraw-account-save-btn-wrap{width:100%}.withdraw-form-field-amount input[type='text'],.withdraw-method-forms-wrap .withdraw-method-form input:not([type="submit"]):not([type="radio"]):not([type="checkbox"]),.withdraw-method-forms-wrap .withdraw-method-form textarea{border:1px solid #DCDFE5;display:block;width:100%;background:transparent;-webkit-box-shadow:none;box-shadow:none;border-radius:4px}label[for="tutor_withdraw_amount"]{margin-bottom:7px;display:block}.withdraw-form-field-amount input[type='text']{margin-bottom:10px;height:45px}.withdraw-method-forms-wrap .withdraw-method-form input:not([type="submit"]):not([type="radio"]):not([type="checkbox"]):focus,.withdraw-method-forms-wrap .withdraw-method-form textarea:focus{border-color:var(--tutor-primary-color);outline:none}.withdraw-method-forms-wrap .withdraw-method-form textarea{min-height:80px}.withdraw-method-forms-wrap .withdraw-method-form label{color:#989EAF;margin-bottom:8px;display:block}.withdraw-method-forms-wrap .withdraw-method-form .withdraw-field-desc{font-size:12px;margin:5px 0 0;font-style:italic}.submitted-assignment-title a,.submitted-assignment-title h3{margin-bottom:20px}.submitted-assignments-sorting-wrap{margin-bottom:30px}.submitted-assignments-sorting-wrap .tutor-form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:35% !important;flex-basis:35% !important}.submitted-assignments-sorting-wrap .tutor-form-group label,.submitted-assignments-sorting-wrap .tutor-form-group select{margin-bottom:0}.submitted-assignments-sorting-wrap .tutor-form-group label{-ms-flex-preferred-size:35%;flex-basis:35%}.submitted-assignments-sorting-wrap .tutor-form-group select{height:40px}.tutor-dashboard-assignment-table .student-column{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-assignment-table .student-column .student-avatar{width:34px;margin-right:10px}.tutor-dashboard-assignment-table .student-column .student-avatar img{border-radius:50%}.tutor-dashboard-assignment-table .student-column .student-avatar span{display:block;width:34px;height:34px;line-height:34px;border-radius:50%;font-size:12px;text-align:center}.tutor-dashboard-assignment-table .student-column .student-details h4,.tutor-dashboard-assignment-table .student-column .student-details p{line-height:1.3;margin-bottom:0}.tutor-dashboard-assignment-table span.review-required,.tutor-dashboard-assignment-table span.result-pass,.tutor-dashboard-assignment-table span.result-fail{background:#df3247;font-size:14px;font-weight:bold;color:#fff;padding:4px 11px;border-radius:2px}.tutor-dashboard-assignment-table span.result-pass{background:var(--tutor-success-button-color)}.tutor-dashboard-assignment-table span.review-required{background:#f5b30d}.tutor-assignment-review-header p span{font-weight:400;color:var(--tutor-text-color)}.tutor-assignment-submitted-page{border-bottom:none}.tutor-assignment-submitted-page .assignment-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-assignment-submitted-page .assignment-info p{margin-right:15px}.tutor-assignment-submitted-page h3{margin:5px 0}.tutor-dashboard-assignment-submitted-content{margin-top:30px;margin-bottom:50px}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row{margin-bottom:30px}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark input{margin:0}.tutor-dashboard-assignment-review .tutor-assignment-evaluate-row .input-mark p{margin-top:0;margin-left:15px}.tutor-announcement-content-wrap{text-align:left !important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-content-wrap p{margin:0}.tutor-dashboard-announcement-sorting-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-column-gap:15px;-moz-column-gap:15px;column-gap:15px}.tutor-dashboard-announcement-sorting-wrap div:nth-child(1){-ms-flex-preferred-size:50%;flex-basis:50%}.tutor-dashboard-announcement-sorting-wrap div:nth-child(2){-ms-flex-preferred-size:20%;flex-basis:20%}.tutor-dashboard-announcement-sorting-wrap div:nth-child(3){-ms-flex-preferred-size:30%;flex-basis:30%}.tutor-dashboard-announcement-table{border-spacing:0;border-collapse:collapse;border:1px solid #ccd0d4}.tutor-dashboard-announcement-table thead th,.tutor-dashboard-announcement-table thead td{border-bottom:1px solid #ccd0d4}.tutor-dashboard-announcement-table tbody tr:last-child{border-bottom:1px solid #ccd0d4}.tutor-dashboard-announcement-table tbody td:first-child{padding-left:30px;line-height:24px}.tutor-dashboard-announcement-table tr{background-color:#F3F3F3}.tutor-dashboard-announcement-table tr:nth-child(odd){background-color:#fff}.tutor-dashboard-announcement-table th,.tutor-dashboard-announcement-table td{border:0;vertical-align:middle}.tutor-dashboard-announcement-table th h4,.tutor-dashboard-announcement-table td h4{font-size:16px;margin-bottom:0}.tutor-dashboard-announcement-table th p,.tutor-dashboard-announcement-table th a,.tutor-dashboard-announcement-table td p,.tutor-dashboard-announcement-table td a{font-size:13px;margin-bottom:0}.tutor-dashboard-announcement-table th:last-child,.tutor-dashboard-announcement-table td:last-child{padding-right:30px}.tutor-dashboard-announcement-table th{padding:15px 0;background-color:#f3f3f3}.tutor-dashboard-announcement-table td{padding:30px 0}.tutor-dashboard-announcement-table th:first-child{padding-left:40px}.tutor-dashboard-announcement-table th:last-child{padding-right:40px}.tutor-announcement-datepicker{position:relative}.tutor-announcement-datepicker input,.tutor-announcement-datepicker i{position:absolute}.tutor-announcement-datepicker i{top:50%;right:10px;color:#3e64de}.tutor-announcement-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-announcement-buttons li{list-style:none}.tutor-dropdown{position:relative;cursor:pointer;margin-left:20px}.tutor-dropdown .tutor-icon-action{padding:5px 10px;margin-right:-10px}.tutor-dropdown .tutor-icon-action:hover{background:#f3f3f3;border-radius:50%}.tutor-dropdown.show .tutor-dropdown-menu{display:block !important}.tutor-dropdown-menu:before{content:"";position:absolute;right:10px;background:linear-gradient(-45deg, transparent 50%, black 50%);height:10px;width:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);top:-4px}.tutor-dropdown-menu{min-width:140px;background:#353535;color:white;width:100%;position:absolute;top:40px;right:-13px;display:none;border-radius:5px;padding:0;margin:0}.tutor-dropdown-menu li{list-style:none !important;padding:5px 15px 5px 15px;cursor:pointer}.tutor-dropdown-menu li:first-child{border-top-left-radius:6px;border-top-right-radius:6px}.tutor-dropdown-menu li:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.tutor-dropdown-menu li:hover{background-color:#6b6b6b}.tutor-dropdwown-menu li i{padding-right:4px}.tutor-announcements-update-form .tutor-option-field-row input[type="text"],.tutor-announcements-update-form textarea,.tutor-announcements-form .tutor-option-field-row input[type="text"],.tutor-announcements-form textarea{width:100%;margin-top:8px}.tutor-announcements-form select,.tutor-announcements-update-form select{width:100%;max-width:100% !important;padding:7px 12px;margin-top:8px}.tutor-announcements-update-form .tutor-option-field-row,.tutor-announcements-form .tutor-option-field-row{border:none !important}.tutor-announcement-modal-content{border-radius:20px}.tutor-announcement-modal-footer-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-announcement-cancel-btn{background:#e8e8e8 !important;border-radius:3px !important;color:#7a7a7a !important}.tutor-announcement-details-modal-content>a{cursor:pointer;padding:20px;float:right}.modal-container.tutor-announcement-details-container{padding:45px 70px !important}.balance-info .tutor-announcement-big-icon{margin-right:10px}.tutor-announcement-big-icon{font-size:32px;width:76px;height:76px;border-radius:100%;background:#e9edfb;text-align:center;color:#3e64de}.tutor-announcement-big-icon .tutor-icon-speaker{position:relative !important;top:30% !important}.tutor-announcement-detail-content{margin-top:35px}.tutor-announcement-detail-content h3{font-size:24px;font-weight:bold;color:#161616}.tutor-announcement-detail-content p{font-style:normal;font-weight:normal;font-size:16px;color:#7a7a7a;margin-top:15px;margin-bottom:10px}.tutor-detail-course-content-wrap{background-color:#f3f3f3}.tutor-detail-course-content{padding:30px 70px 70px}.tutor-detail-course-info-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:50px}.tutor-announce-detail-popup-button-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.announcement-detail-edit-delete-button>.tutor-announcement-delete{background:#e8e8e8 !important;color:#7a7a7a !important}.tutor-border-none{border:none !important}.announcement-detail-edit-delete-button>button{padding:10px 20px !important}.announcement-detail-edit-delete-button{display:-webkit-box;display:-ms-flexbox;display:flex;gap:10px}.tutor-announcement-detail-course-info p,.tutor-announcement-detail-date-info p{font-size:16px;color:#161616;font-weight:700;max-width:95%}.tutor-announcements-modal-wrap .tutor-modal-content{max-width:660px !important}.tutor-announcements-modal-wrap .modal-footer{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-attempt-history td:last-child{text-align:center}.tutor-quiz-attempt-history td:last-child a{display:block;padding:10px}.attempt-review-title{font-size:18px;color:var(--tutor-text-size);font-weight:600;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:60px}.attempt-review-title i{margin-right:12px;color:var(--tutor-primary-color)}.tutor-quiz-attempt-info-row .attempt-view-bottom,.tutor-quiz-attempt-info-row .attempt-view-top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-quiz-attempt-info-row .attempt-view-bottom .attempt-info-col,.tutor-quiz-attempt-info-row .attempt-view-top .attempt-info-col{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:30%}.tutor-quiz-attempt-info-row .attempt-view-bottom .attempt-info-col{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.tutor-quiz-attempt-info-row .attempt-info-content span.result-review-required,.tutor-quiz-attempt-info-row .attempt-info-content span.result-pass,.tutor-quiz-attempt-info-row .attempt-info-content span.result-fail{background:#df3247;font-size:14px;font-weight:400;color:#fff;padding:1px 4px;margin-right:13px;border-radius:2px}.tutor-quiz-attempt-info-row .attempt-info-content span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-info-row .attempt-info-content span.result-review-required{background:#f5b30d}.tutor-quiz-attempt-info-row .attempt-info-content h4,.tutor-quiz-attempt-info-row .attempt-info-content h5{font-size:14px;line-height:25px;margin:0;color:#7a7f85;font-weight:400}.tutor-quiz-attempt-info-row .attempt-info-content h4 a,.tutor-quiz-attempt-info-row .attempt-info-content h4{font-weight:700;color:var(--tutor-text-color);margin-top:7px}.tutor-quiz-attempt-info-row .attempt-view-top{padding-bottom:30px;margin-bottom:30px;border-bottom:1px solid #dcdfe5}.tutor-quiz-attempt-info-row .attempt-view-bottom{margin-bottom:60px}.attempt-user-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.attempt-user-details .attempt-user-avatar{padding-right:20px}.attempt-user-details .attempt-user-avatar img{display:block;width:70px;height:70px;border-radius:50%}.attempt-user-details .attempt-info-content h4{font-size:18px}.attempt-review-notice-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:60px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.attempt-review-notice-wrap p{margin:0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.attempt-review-notice-wrap p.attempt-review-notice i{font-size:16px;color:#f5c813;margin-right:9px}.attempt-review-notice-wrap p.attempt-review-at>span{color:var(--tutor-primary-color);margin-right:7px;font-size:16px}.attempt-review-notice-wrap p>strong{font-weight:400;margin-right:5px}.quiz-attempt-answers-wrap{background:#fff;margin:0 0 1.5em}.quiz-attempt-answers-wrap .attempt-answers-header{padding:30px 20px}.quiz-attempt-answers-wrap .attempt-answers-header h3{font-size:20px;line-height:1.5;color:#3f435b}.quiz-attempt-answers-wrap table{border-collapse:collapse;border:none}.quiz-attempt-answers-wrap table tr{background-color:#fff}.quiz-attempt-answers-wrap table tr:first-child{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea !important}.quiz-attempt-answers-wrap table tr:not(:first-child){border-top:1px solid #dcdce1}.quiz-attempt-answers-wrap table tr:not(:last-child){border-bottom:1px solid #dcdce1}.quiz-attempt-answers-wrap table th{font-size:12px;text-transform:inherit}.quiz-attempt-answers-wrap table th,.quiz-attempt-answers-wrap table td{padding:17px 20px;vertical-align:middle;border:none;font-size:14px;line-height:1.71;letter-spacing:normal;color:#393c40}.quiz-attempt-answers-wrap table th p,.quiz-attempt-answers-wrap table td p{margin:0}.quiz-attempt-answers-wrap table th .tutor-icon-block,.quiz-attempt-answers-wrap table td .tutor-icon-block{font-size:14px;width:30px;height:30px;line-height:30px}.quiz-attempt-answers-wrap table .quiz-manual-review-action{border:1px solid #d4dadb;color:#d4dadb;height:30px;width:30px;border-radius:2px;font-size:13px;display:inline-block;text-align:center;line-height:30px;-webkit-transition:300ms;transition:300ms}.quiz-attempt-answers-wrap table .quiz-manual-review-action:first-child:hover{border:1px solid var(--tutor-success-button-color);color:var(--tutor-success-button-color)}.quiz-attempt-answers-wrap table .quiz-manual-review-action:last-child:hover{border:1px solid #df3247;color:#df3247}.quiz-attempt-answers-wrap table .quiz-manual-review-action:not(:last-child){margin-right:17px}.tutor-quiz-attempt-review-wrap .attempt-answers-header{background:#fff;padding:20px;margin-top:20px}.tutor-quiz-attempt-review-wrap .attempt-answers-header a{color:#3f435b}.tutor-quiz-attempt-review-wrap .attempt-answers-header>p{color:#737787;margin-top:10px;margin-bottom:0}.tutor-quiz-attempt-review-wrap .attempt-answers-header h3{font-size:20px;line-height:1.5;color:#3f435b}.tutor-quiz-attempt-review-wrap .instructor-feedback-content{padding:0px 20px 10px 20px}.tutor-quiz-attempt-review-wrap .instructor-feedback-content>p{margin-bottom:1em}.tutor-quiz-attempt-review-wrap table{border-collapse:collapse;border:none}.tutor-quiz-attempt-review-wrap table tr{background-color:#fff}.tutor-quiz-attempt-review-wrap table tr:first-child{background-color:#f7f7f9;border-top:1px solid #eaeaea;border-bottom:1px solid #eaeaea}.tutor-quiz-attempt-review-wrap table tr:first-child th,.tutor-quiz-attempt-review-wrap table tr:first-child td{padding-top:14px;padding-bottom:14px}.tutor-quiz-attempt-review-wrap table tr:not(:first-child){border-top:1px solid #dcdce1}.tutor-quiz-attempt-review-wrap table tr:not(:first-child) th,.tutor-quiz-attempt-review-wrap table tr:not(:first-child) td{padding-top:20px;padding-bottom:20px}.tutor-quiz-attempt-review-wrap table tr:not(:last-child){border-bottom:1px solid #dcdce1}.tutor-quiz-attempt-review-wrap table th,.tutor-quiz-attempt-review-wrap table td{border:none;vertical-align:top;font-size:14px;font-weight:400;line-height:1.71;padding:15px 6px}.tutor-quiz-attempt-review-wrap table th:first-child,.tutor-quiz-attempt-review-wrap table td:first-child{padding:12px}.tutor-quiz-attempt-review-wrap table th:last-child,.tutor-quiz-attempt-review-wrap table td:last-child{padding:12px 10px}.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table th:nth-child(3),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table th:nth-child(4),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table td:nth-child(3),.tutor-quiz-attempt-review-wrap .quiz-attempt-answers-wrap table td:nth-child(4){width:28%}.tutor-quiz-attempt-review-wrap span.result-review-required,.tutor-quiz-attempt-review-wrap span.result-pass,.tutor-quiz-attempt-review-wrap span.result-fail{background:#df3247;font-size:14px;font-weight:bold;color:#fff;padding:4px 11px;border-radius:2px}.tutor-quiz-attempt-review-wrap span.result-pass{background:var(--tutor-success-button-color)}.tutor-quiz-attempt-review-wrap span.result-review-required{background:#f5b30d}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip],.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]{position:relative;z-index:2;cursor:pointer}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:after,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:before,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:after{visibility:hidden;opacity:0;pointer-events:none;-webkit-transform:translateY(15px);transform:translateY(15px);-webkit-transition:0.15s ease;transition:0.15s ease}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:before,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:before{content:attr(data-tooltip);position:absolute;bottom:40px;left:50%;margin-bottom:0px;margin-left:-60px;min-width:122px;text-align:center;padding:4px 7px;font-size:14px;line-height:1.2;font-weight:300;border-radius:12px;background-color:#3f435b;color:#fff;z-index:99999}.tutor-quiz-attempt-review-wrap .tooltip-btn[data-tooltip]:after,.quiz-attempt-answers-wrap .tooltip-btn[data-tooltip]:after{position:absolute;content:"";bottom:34px;left:50%;margin-left:-10px;border-top:8px solid #3f435b;border-right:10px solid transparent;border-left:10px solid transparent}.tutor-quiz-attempt-review-wrap .active[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:after,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:before,.tutor-quiz-attempt-review-wrap .active[data-tooltip]:after,.quiz-attempt-answers-wrap .active[data-tooltip]:before,.quiz-attempt-answers-wrap .active[data-tooltip]:after,.quiz-attempt-answers-wrap .active[data-tooltip]:before,.quiz-attempt-answers-wrap .active[data-tooltip]:after{visibility:visible;opacity:1;-webkit-transform:translateY(0px);transform:translateY(0px)}.tutor-status-blocked-context i,.tutor-status-approved-context i,.quiz-correct-answer-text i,.quiz-incorrect-answer-text i{font-size:14px;height:20px;width:20px;text-align:center;line-height:20px;background:#7bbc30;color:#fff;display:inline-block;border-radius:2px;margin-right:6px}.tutor-status-blocked-context i,.quiz-incorrect-answer-text i{background:#f44337;font-size:10px;font-weight:900}.answer-image-matched-wrap{display:block}.answer-image-matched-wrap .image-matching-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.answer-image-matched-wrap .image-matching-item:not(:last-child){margin-bottom:12px}.answer-image-matched-wrap .image-matching-item img{max-width:35px}.answer-image-matched-wrap .image-matching-item .dragged-caption{font-size:14px;margin-left:12px}.correct-answer-wrap .matching-type{display:-webkit-box;display:-ms-flexbox;display:flex}.correct-answer-wrap .text-image-type{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.correct-answer-wrap .text-image-type:not(:last-child){margin-bottom:12px}.correct-answer-wrap .text-image-type .image{margin-right:12px}.correct-answer-wrap .text-image-type img{max-width:35px}#tutor_profile_cover_photo_editor{height:344px;position:relative}#tutor_profile_cover_photo_editor #tutor_photo_meta_area{text-align:right;padding-left:190px;margin-top:16px}@media (max-width: 492px){#tutor_profile_cover_photo_editor #tutor_photo_meta_area{padding-left:120px}}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>img,#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span{display:inline-block;vertical-align:middle}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span{white-space:nowrap;font-style:normal;font-weight:normal;font-size:13px;line-height:18px;color:#7A7A7A}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span>span{color:black}#tutor_profile_cover_photo_editor #tutor_photo_meta_area>span.loader-area{display:none}#tutor_profile_cover_photo_editor #tutor_cover_area{height:245px;background-color:#E9EDFB;background-position:center center;background-size:cover;background-repeat:no-repeat;border-radius:6px;position:relative;overflow:hidden}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_overlay{height:70%;position:absolute;left:0;bottom:0;right:0;background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0,0,0,0.6)));background-image:linear-gradient(transparent, rgba(0,0,0,0.6))}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader{background:#3E64DE;border-radius:3px;color:white;border:none;cursor:pointer;font-style:normal;font-weight:600;font-size:12px;color:#FFFFFF;position:absolute;padding:8px 20px;right:22px;bottom:22px}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader:hover{background:#2f52c4}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader>span{margin-left:6px}@media (max-width: 432px){#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_uploader>span{display:none}}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_deleter{position:absolute;color:white;background:rgba(0,0,0,0.247);text-align:center;width:36px;border-radius:50%;font-size:17px;line-height:40px;height:36px;right:22px;top:22px;cursor:pointer}#tutor_profile_cover_photo_editor #tutor_cover_area .tutor_cover_deleter:hover{background:rgba(0,0,0,0.438)}#tutor_profile_cover_photo_editor #tutor_profile_area{width:142px;height:142px;left:35px;top:145px;border-radius:50%;border:5px solid white;position:absolute;overflow:hidden;background-color:#E9EDFB;background-position:center center;background-size:cover;background-repeat:no-repeat}@media (max-width: 688px){#tutor_profile_cover_photo_editor #tutor_profile_area{width:120px;height:120px;left:31px;top:168px}}#tutor_profile_cover_photo_editor #tutor_profile_area .tutor_overlay{position:absolute;right:0;left:0;bottom:0;background:rgba(0,0,0,0.253);padding:0;height:37px;cursor:pointer;color:white;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}#tutor_profile_cover_photo_editor #tutor_profile_area .tutor_overlay:hover{background:rgba(0,0,0,0.411)}#tutor_profile_cover_photo_editor #tutor_pp_option{position:absolute;background:#353535;width:157px;top:294px;left:27px;border-radius:6px;color:white;z-index:99;display:none}@media (max-width: 688px){#tutor_profile_cover_photo_editor #tutor_pp_option{top:294px;left:10px}}#tutor_profile_cover_photo_editor #tutor_pp_option span{display:block;padding:5px 10px;cursor:pointer;overflow:hidden;font-style:normal;font-weight:normal;font-size:16px;line-height:26px;color:#FFFFFF}#tutor_profile_cover_photo_editor #tutor_pp_option span:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}#tutor_profile_cover_photo_editor #tutor_pp_option span:last-of-type{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#tutor_profile_cover_photo_editor #tutor_pp_option span:hover{background:#6b6b6b}#tutor_profile_cover_photo_editor #tutor_pp_option .up-arrow{text-align:center;height:0}#tutor_profile_cover_photo_editor #tutor_pp_option .up-arrow i{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;position:relative;top:-17px;border-bottom:5px solid #353535}#tutor_profile_cover_photo_editor #tutor_pp_option>*:not(:last-child){position:relative;z-index:1}#tutor_profile_cover_photo_editor #tutor_pp_option>div:last-child{position:fixed;left:0;right:0;top:0;bottom:0;background:transparent;z-index:0;z-index:0}#tutor_profile_cover_photo_editor.pop-up-opened #tutor_pp_option{display:block}#tutor_profile_cover_photo_editor #tutor_photo_dialogue_box{display:none}.tutor-user-public-profile .photo-area{overflow:hidden;height:414px;margin-top:30px}.tutor-user-public-profile .photo-area .cover-area{position:relative;border-radius:6px;overflow:hidden}.tutor-user-public-profile .photo-area .cover-area>div:first-child{height:375px;background-position:center center;background-repeat:no-repeat;background-size:cover}.tutor-user-public-profile .photo-area .cover-area>div:last-child{position:absolute;left:0;right:0;bottom:0;height:70%;background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0,0,0,0.6)));background-image:linear-gradient(transparent, rgba(0,0,0,0.6))}.tutor-user-public-profile .photo-area .pp-area{position:relative;top:-111px;padding-left:49px;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-user-public-profile .photo-area .pp-area .profile-pic{background-position:center center;background-repeat:no-repeat;background-size:cover;display:inline-block;border:8px solid white}.tutor-user-public-profile .photo-area .pp-area .profile-name{padding-left:23px;padding-bottom:30px}.tutor-user-public-profile .photo-area .pp-area .profile-name h3{font-style:normal;font-weight:600;font-size:40px;line-height:48px;color:#FFFFFF;margin:0}.tutor-user-public-profile .photo-area .pp-area .profile-name>span{font-style:normal;font-weight:500;font-size:15px;color:#757575;margin-right:10px}.tutor-user-public-profile .photo-area .pp-area .profile-name>span>span{color:white}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media{text-align:right;padding-right:30px;padding-bottom:20px;-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container{font-size:16px}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container .rating-digits{color:white}.tutor-user-public-profile .photo-area .pp-area .profile-rating-media .tutor-rating-container .rating-total-meta{color:#757575}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container{margin-top:15px;text-align:right}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container a{display:inline-block;margin-left:20px;color:whitesmoke;cursor:pointer;text-decoration:none;font-size:16px}.tutor-user-public-profile .photo-area .pp-area .tutor-social-container a:hover{color:white}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-pic{border-radius:50%;height:153px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area{overflow:initial}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-pic{border-radius:10px;height:200px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .profile-rating-media{padding-bottom:75px}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .tutor-user-profile-sidebar{margin-top:79px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area{height:auto}.tutor-user-public-profile.tutor-user-public-profile-no-cp .cover-area{display:none}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{top:0}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-pic{border-radius:50%;height:153px;width:153px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name{padding-top:49px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name h3{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span>span{color:black !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{position:absolute;left:226px;top:15px}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media .rating-digits{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-rating-container{text-align:left}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container{text-align:left !important;margin-top:5px !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container a{margin-left:0 !important;margin-right:20px;color:#757575 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container a:hover{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{width:calc(100% - 157px)}.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container{position:absolute;right:36px;left:auto}@media (min-width: 768px){.tutor-user-public-profile .content-for-mobile{display:none}.tutor-user-public-profile .content-for-desktop{display:block}}@media (max-width: 767px){.tutor-user-public-profile .content-for-mobile{display:block;margin:22px 0 0 0;padding:0 !important}.tutor-user-public-profile .content-for-desktop{display:none}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .photo-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area{height:auto}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .photo-area .cover-area>div:first-child,.tutor-user-public-profile.tutor-user-public-profile-no-cp .photo-area .cover-area>div:first-child,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .photo-area .cover-area>div:first-child{height:220px}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .pp-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{padding-left:0 !important;top:-82px !important;flex-wrap:wrap;-o-flex-wrap:wrap;-ms-flex-wrap:wrap;-moz-flex-wrap:wrap;-webkit-flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-rating-media{width:100% !important;text-align:center !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name>span>span,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span>span,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name>span>span{color:black !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name>span:nth-of-type(2)>span,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name>span:nth-of-type(2)>span,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name>span:nth-of-type(2)>span{color:#C4C4C4 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .profile-name h3,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name h3,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-name h3{color:#161616 !important;font-size:30px !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .rating-digits,.tutor-user-public-profile.tutor-user-public-profile-no-cp .rating-digits,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .rating-digits{color:#161616 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{top:-98px !important}.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .profile-pic{height:160px !important;width:153px !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area,.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media,.tutor-user-public-profile.tutor-user-public-profile-no-cp .tutor-social-container,.tutor-user-public-profile.tutor-user-public-profile-no-cp .ratings{position:static !important;top:0 !important;text-align:center !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-name{padding:0 !important}.tutor-user-public-profile .tutor-social-container{margin:15px 0 0 0 !important}.tutor-user-public-profile .tutor-social-container a{color:#7A7A7A !important}.tutor-user-public-profile .profile-name{padding:0 !important}.tutor-user-public-profile.tutor-user-public-profile-pp-circle .pp-area,.tutor-user-public-profile.tutor-user-public-profile-pp-rectangle .pp-area{margin-top:-83px !important;position:relative !important;top:0 !important}.tutor-user-public-profile .tutor-user-profile-sidebar{margin-top:0 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{-webkit-box-pack:left !important;-ms-flex-pack:left !important;justify-content:left !important;-o-justify-content:left !important;-ms-justify-content:left !important;-moz-justify-content:left !important;-webkit-justify-content:left !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area *{text-align:left !important}}.tutor-user-public-profile .tutor-user-profile-sidebar{padding:15px;width:223px;float:left}.tutor-user-public-profile .tutor-user-profile-content{width:calc(100% - 228px);float:left;margin-bottom:30px}.tutor-user-public-profile .tutor-user-profile-content>h3{font-style:normal;font-weight:normal;font-size:24px;line-height:34px;color:#161616;margin-top:20px}.tutor-user-public-profile .tutor-user-profile-content>h3:first-child{margin-top:0}@media (max-width: 800px){.tutor-user-public-profile.tutor-user-public-profile-no-cp .pp-area{padding-left:0 !important}.tutor-user-public-profile.tutor-user-public-profile-no-cp .profile-rating-media{left:178px !important}.tutor-user-public-profile .tutor-user-profile-sidebar,.tutor-user-public-profile .tutor-user-profile-content{width:100%;float:none}}.tutor-dashboard-builder-header{padding:10px 0px;border-bottom:2px solid #DCDFE5;position:fixed;top:0px;background:#fff;width:100%;z-index:99}@media (max-width: 991px){.tutor-dashboard-builder-header{position:static}}.tutor-dashboard-builder-header .tutor-row{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-row .tutor-col-auto{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.tutor-dashboard-builder-header .tutor-row .tutor-col-auto:first-child{margin-bottom:15px}}.tutor-dashboard-builder-header .tutor-button{white-space:nowrap;margin-left:auto}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-button{padding:6px 10px}}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left .tutor-dashboard-builder-logo{padding:0 25px;position:relative}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left .tutor-dashboard-builder-logo img{max-height:32px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button{margin:0;padding:0px 25px;line-height:30px;border:none;border-left:1px solid #DCDFE5;background:transparent;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;color:var(--tutor-text-color);-webkit-transition:300ms;transition:300ms;font-weight:500;white-space:nowrap}@media (max-width: 991px){.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button{border-left:none}}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button i{font-size:24px;line-height:30px;margin-right:9px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button:hover{color:var(--tutor-primary-color);background:transparent}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-left button:hover i{color:var(--tutor-primary-color)}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a{color:var(--tutor-text-color);font-weight:500;line-height:36px;padding:0 25px;-webkit-transition:300ms;transition:300ms;white-space:nowrap}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a i{font-size:36px;line-height:36px;display:inline-block;vertical-align:top;padding-right:9px}.tutor-dashboard-builder-header .tutor-dashboard-builder-header-right a:hover{color:var(--tutor-primary-color)}.tutor-frontend-course-builder-section{padding:113px 0 45px;background-color:#ffffff}@media (max-width: 991px){.tutor-frontend-course-builder-section{padding-top:60px}.tutor-frontend-course-builder-section .tutor-col-8,.tutor-frontend-course-builder-section .tutor-col-4{width:100%;max-width:100%;-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%}}.admin-bar .tutor-dashboard-builder-header{top:32px}@media (max-width: 783px){.admin-bar .tutor-dashboard-builder-header{top:46px}}.tutor-course-builder-upload-tips{position:fixed;max-width:370px}@media (max-width: 991px){.tutor-course-builder-upload-tips{position:static}}.tutor-course-builder-upload-tips .tutor-course-builder-tips-title{font-size:16px;color:#8C94A8;font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-course-builder-upload-tips .tutor-course-builder-tips-title i{font-size:24px;color:var(--tutor-primary-color);margin-right:11px}.tutor-course-builder-upload-tips ul{margin:0;padding:0 0 0 35px;list-style:none}.tutor-course-builder-upload-tips ul li{position:relative;margin-bottom:8px;line-height:24px}.tutor-course-builder-upload-tips ul li::after{content:'';position:absolute;height:8px;width:8px;border-radius:50%;background:#DCDFE5;left:-26px;top:9px}.tutor-course-level-meta{display:-webkit-box;display:-ms-flexbox;display:flex}.tutor-course-level-meta label{margin:0 40px 0 0;font-weight:600}.tutor-frontend-builder-course-price .tutor-form-group input{margin-bottom:0}.tutor-frontend-builder-course-price .tutor-styled-radio{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-course-builder-attachements{display:-webkit-box;display:-ms-flexbox;display:flex;margin-left:-30px;-ms-flex-wrap:wrap;flex-wrap:wrap}.tutor-course-builder-attachements .tutor-added-attachment{-webkit-box-flex:0;-ms-flex:0 0 calc(25% - 30px);flex:0 0 calc(25% - 30px);max-width:calc(25% - 30px);border:1px solid #DCDFE5;padding:35px 20px 20px;position:relative;text-align:center;margin-left:30px;margin-bottom:30px;border-radius:4px;-webkit-transition:300ms;transition:300ms;min-width:120px}@media (max-width: 480px){.tutor-course-builder-attachements .tutor-added-attachment{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 30px);flex:0 0 calc(50% - 30px);max-width:calc(50% - 30px)}}.tutor-course-builder-attachements .tutor-added-attachment i{font-size:58px;line-height:58px;margin-bottom:25px;display:block}.tutor-course-builder-attachements .tutor-added-attachment .tutor-delete-attachment{position:absolute;height:22px;width:22px;border:1px solid #DCDFE5;text-align:center;line-height:22px;top:-1px;right:-1px;font-size:10px;border-top-right-radius:4px;color:transparent;-webkit-transition:300ms;transition:300ms}.tutor-course-builder-attachements .tutor-added-attachment:hover,.tutor-course-builder-attachements .tutor-added-attachment:hover .tutor-delete-attachment{border-color:#D71830;color:#D71830}.tutor-course-builder-attachements .tutor-added-attachment span{display:block}.tutor-course-builder-attachements .tutor-added-attachment span a{font-size:14px;display:block;line-height:20px;color:#606C8F}.tutor-course-builder-btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap}#tutor-metabox-course-settings-tabs{background-color:#fff;border:1px solid #e5e5e5;margin:1em 0}.inside #tutor-metabox-course-settings-tabs{border:0;margin:0}.settings-tabs-heading{padding:1em;border-bottom:1px solid #e5e5e5}.settings-tabs-heading h3{font-size:14px;margin:0;line-height:1.4}.course-settings-tabs-container{display:-webkit-box;display:-ms-flexbox;display:flex}.course-settings-tabs-container .settings-tabs-navs-wrap{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;background:#F5F5F5}.settings-tabs-navs-wrap .settings-tabs-navs{margin:0;list-style:none}.settings-tabs-navs-wrap .settings-tabs-navs li{margin:0}.settings-tabs-navs-wrap .settings-tabs-navs li a{display:block;padding-top:10px;padding-bottom:10px;padding-left:15px;padding-right:15px;color:#23282d;text-decoration:none;background:#F5F5F5;text-transform:capitalize;border-bottom:1px solid #e5e5e5;border-left:3px solid transparent}.settings-tabs-navs-wrap .settings-tabs-navs li:last-child a{border-bottom:none}.settings-tabs-navs-wrap .settings-tabs-navs li a:focus{-webkit-box-shadow:none;box-shadow:none}.settings-tabs-navs-wrap .settings-tabs-navs li.active a{background-color:#ffffff;border-bottom:1px solid #e5e5e5;color:var(--tutor-primary-color);border-left:3px solid var(--tutor-primary-color)}.course-settings-tabs-container .settings-tabs-container{padding:1em;-webkit-box-flex:1;-ms-flex:1;flex:1}.tutor-field-radio p{margin-top:0}.lesson-modal-form-wrap .lesson-content-drip-wrap{padding:10px;border:1px solid #e4e4e4}.lesson-modal-form-wrap .lesson-content-drip-wrap h3{margin:0 0 10px 0}.select2-dropdown.increasezindex{z-index:9999999999999}.tutor-topic-title i.tutor-icon-move{line-height:unset}.select2-selection__rendered [class^="tutor-icon-"]{vertical-align:middle}@media (min-width: 992px){.tutor-option-tooltip.tutor-option-field{position:relative}.tutor-option-tooltip.tutor-option-field p.desc{position:absolute;left:calc(100% + 16px);background:#2A344F;width:160px;padding:10px 13px;opacity:0;visibility:hidden;-webkit-transition:300ms;transition:300ms;z-index:98;top:10px;color:#fff;border-radius:12px;font-size:12px;font-style:normal}.tutor-option-tooltip.tutor-option-field p.desc::before{content:url("data:image/svg+xml,%3Csvg width='14' height='18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 8.139C5.339 5.482 8.671 2.903 9.998.403c1.99-3.75 5.481 21.94 1.567 16.037C8.955 12.505 5.1 9.738 0 8.139z' fill='%232A344F' fill-rule='evenodd'/%3E%3C/svg%3E");position:absolute;left:-10px;top:16px}.tutor-option-tooltip.tutor-option-field:hover p.desc{opacity:1;visibility:visible}.tutor-option-tooltip.tutor-option-field input:focus+p.desc,.tutor-option-tooltip.tutor-option-field textarea:focus+p.desc{opacity:1;visibility:visible}}.tutor-instructor-pending-content{text-align:center}.tutor-instructor-pending-content a{margin-top:26px}.tutor-instructor-pending-content img{margin-bottom:69px;border-radius:10px}.tutor-instructor-thankyou-text h2{line-height:48px;font-size:40px;font-style:normal;font-weight:500;letter-spacing:0px;color:#161616;margin-bottom:26px}.tutor-instructor-extra-text{font-size:20px;font-style:normal;font-weight:400;letter-spacing:0px;color:#525252;line-height:30px}.tutor-frontend-dashboard-withdrawal h4{margin-bottom:25px}.withdraw-history-table-title h4{margin-top:45px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border:1px solid #DCDBDC;border-radius:6px;padding:25px 35px 25px 30px;margin-bottom:15px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info img{margin-right:15px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info small{font-size:16px}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .balance-info p{font-size:20px;line-height:26px;margin:0}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:hover,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:focus,.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:active{text-decoration:none;background:#3E64DE;border-radius:3px;display:inline-block;padding:8px 18px;font-weight:500;font-size:16px;color:white;cursor:pointer}.tutor-frontend-dashboard-withdrawal .withdraw-page-current-balance .make-withdraw a:hover{background:#2548bb}.tutor-frontend-dashboard-withdrawal h4{font-weight:500;font-size:24px}.tutor-frontend-dashboard-withdrawal .withdrawal-preference{font-size:15px;color:#7A7A7A}.tutor-frontend-dashboard-withdrawal .inline-image-text>img{width:23px;display:inline-block !important}.tutor-frontend-dashboard-withdrawal .inline-image-text>*{vertical-align:middle}.tutor-frontend-dashboard-withdrawal .inline-image-text.is-inline-block>*{display:inline-block}.tutor-frontend-dashboard-withdrawal .inline-image-text a{text-decoration:underline;color:#444}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap{display:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div{width:100%;height:100%;padding:15px;overflow:hidden;position:fixed;left:0;right:0;top:0;bottom:0;z-index:9999999999;background:rgba(0,0,0,0.589);display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div{display:inline-block;max-height:100%;width:100%;max-width:690px;background:white;overflow:auto;border-radius:15px;position:relative;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div{padding:50px 70px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child>.tutor-icon-line-cross{position:absolute;cursor:pointer;top:30px;right:30px;font-size:20px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child tr,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child td,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child table,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child tbody{border:none;margin:0;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:first-child h3{margin:7px 0px;font-weight:600;padding:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap>div>div>div:last-child{border-top:1px solid #E8E8E8;background:#F3F3F3}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount{border:1px solid #BABABA;border-radius:6px;background:white;height:43px;overflow:hidden;margin-bottom:12px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount>span{display:block;text-align:center;width:40px;float:left;height:100%;background:#f3f3f3;border-right:1px solid #BABABA}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount>span>span{font-size:18px;font-weight:bold;display:inline-block;line-height:41px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input:focus,.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .withdraw-form-field-amount input:active{border:none;outline:0;height:100%;width:calc(100% - 40px);display:inline-block;margin:0;padding:0;padding-left:7px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-button-container{margin:50px 0 0;overflow:auto}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-button-container>button:last-child{float:right}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response{position:fixed;left:50px;bottom:50px;border:1px solid #E8E8E8;background:white;border-radius:10px;margin:0}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response:empty{display:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response>*{background:white;border:none}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response img{width:34px;margin:5px 13px}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response b{font-weight:600}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdraw-form-response span{color:#333}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap button.close-withdraw-form-btn{background:#F3F3F3;border:1px solid #DCDBDC;color:#7A7A7A}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap button.close-withdraw-form-btn:hover{background:#e6e6e6}.tutor-frontend-dashboard-withdrawal .tutor-earning-withdraw-form-wrap .tutor-withdrawal-pop-up-success img{display:inline-block !important}.tutor-frontend-dashboard-withdrawal table.withdrawals-history{border:1px solid #DCDBDC;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th{background:#F3F3F3}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td{padding:10px;border:none;font-weight:normal;font-size:13px;text-align:left;vertical-align:middle}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td{border-bottom:1px solid #DCDBDC;border-collapse:collapse}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:first-child,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:first-child{padding:10px 0 15px 15px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:last-child,.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:last-child{text-align:right;padding-right:15px;width:50px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history th:nth-child(4),.tutor-frontend-dashboard-withdrawal table.withdrawals-history td:nth-child(4){width:105px}.tutor-frontend-dashboard-withdrawal table.withdrawals-history .withdraw-method-name{line-height:20px;font-size:15px;display:block}.tutor-frontend-dashboard-withdrawal table.withdrawals-history small{font-size:13px}.tutor-frontend-dashboard-withdrawal .tutor-status-text-container .tool-tip-container{position:relative;display:inline-block;height:24px;cursor:pointer}.tutor-frontend-dashboard-withdrawal .tutor-status-text-container .tool-tip-container img{display:inline-block !important;width:16px}.tutor-frontend-dashboard-withdrawal .tutor-status-text{display:inline-block;font-weight:bold;font-size:13px;color:#FFFFFF;background:gray;border-radius:2px;padding:3px 9px}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-approved{background:#24A148}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-pending{background:#ED9700}.tutor-frontend-dashboard-withdrawal .tutor-status-text.status-rejected{background:#F44337}.tutor-tooltip-inside .tooltip{position:absolute;z-index:2;overflow:hidden;clip:rect(0, 0, 0, 0);-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0;padding:0;cursor:default;color:#fff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-size:1.4rem;line-height:normal;text-align:center;white-space:nowrap;border-width:0;border-style:solid;border-color:#6d6e71;border-top-color:#373739;background-color:#373739;opacity:0;-webkit-transition:opacity .3s ease-in .3s;transition:opacity .3s ease-in .3s;font-size:13px;color:#FFFFFF;height:auto;text-align:center;white-space:normal;font-size:12px;background:#353535;border-radius:10px;padding:7px}.tutor-tooltip-inside .tooltip.isVisible{overflow:visible;clip:auto;width:150px;height:auto;padding:10px 15px;border-width:1px;opacity:1}.tutor-tooltip-inside .tooltip,.tutor-tooltip-inside .tooltip.tip-bottom,.tutor-tooltip-inside .tooltip.tip-top{left:50%;-webkit-transform:translate(-50%, 0);transform:translate(-50%, 0)}.tutor-tooltip-inside .tooltip,.tutor-tooltip-inside .tooltip.tip-bottom,.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-bottom-right{top:110%;top:calc(100% + 13px)}.tutor-tooltip-inside .tooltip.tip-top,.tutor-tooltip-inside .tooltip.tip-top-left,.tutor-tooltip-inside .tooltip.tip-top-right{top:auto;bottom:110%;bottom:calc(100% + 13px)}.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-bottom-right,.tutor-tooltip-inside .tooltip.tip-top-left,.tutor-tooltip-inside .tooltip.tip-top-right{-webkit-transform:none;transform:none}.tutor-tooltip-inside .tooltip.tip-bottom-left,.tutor-tooltip-inside .tooltip.tip-top-left{right:50%;left:auto;margin-right:-25px}.tutor-tooltip-inside .tooltip.tip-bottom-right,.tutor-tooltip-inside .tooltip.tip-top-right{margin-left:-25px}.tutor-tooltip-inside .tooltip.tip-left,.tutor-tooltip-inside .tooltip.tip-right{top:50%;-webkit-transform:translate(0, -50%);transform:translate(0, -50%)}.tutor-tooltip-inside .tooltip.tip-left{right:110%;right:calc(100% + 13px);left:auto}.tutor-tooltip-inside .tooltip.tip-right{left:110%;left:calc(100% + 13px)}.tutor-tooltip-inside .tooltip:after{content:' ';display:block;position:absolute;width:0;height:0;border-width:10px;border-style:solid;pointer-events:none}.tutor-tooltip-inside .tooltip:after,.tutor-tooltip-inside .tooltip.tip-bottom:after,.tutor-tooltip-inside .tooltip.tip-top:after{left:50%;margin-left:-10px}.tutor-tooltip-inside .tooltip:after,.tutor-tooltip-inside .tooltip.tip-bottom:after,.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-bottom-right:after{top:-20px;border-color:transparent transparent #373739 transparent}.tutor-tooltip-inside .tooltip.tip-top:after,.tutor-tooltip-inside .tooltip.tip-top-left:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{top:auto;bottom:-20px;border-color:#373739 transparent transparent transparent}.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-bottom-right:after,.tutor-tooltip-inside .tooltip.tip-top-left:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{margin-left:0}.tutor-tooltip-inside .tooltip.tip-bottom-left:after,.tutor-tooltip-inside .tooltip.tip-top-left:after{right:15px;left:auto}.tutor-tooltip-inside .tooltip.tip-bottom-right:after,.tutor-tooltip-inside .tooltip.tip-top-right:after{left:15px}.tutor-tooltip-inside .tooltip.tip-left:after,.tutor-tooltip-inside .tooltip.tip-right:after{top:50%;margin-top:-10px;margin-left:auto}.tutor-tooltip-inside .tooltip.tip-left:after{right:-20px;left:auto;border-color:transparent transparent transparent #373739}.tutor-tooltip-inside .tooltip.tip-right:after{left:-20px;border-color:transparent #373739 transparent transparent}.tutor-instructor-list,.tutor-instructor-list:focus,.tutor-instructor-list:active{outline:none;cursor:pointer;text-decoration:none !important;background:#FFFFFF;border:1px solid #DCDBDC;border-radius:6px}.tutor-instructor-list .tutor-instructor-profile-photo,.tutor-instructor-list .tutor-instructor-cover-photo{background-size:cover;background-repeat:no-repeat;background-position:center center}.tutor-instructor-list .tutor-instructor-profile-photo{border-radius:50%;width:60px;height:60px}.tutor-instructor-list .tutor-instructor-name{font-style:normal;font-weight:500;font-size:24px;color:#161616;margin:0}.tutor-instructor-list .tutor-instructor-course-count{margin-bottom:10px}.tutor-instructor-list .tutor-instructor-course-count>span{font-style:normal;font-weight:500;font-size:15px;color:#161616}.tutor-instructor-list .tutor-instructor-course-count>span:last-child{color:#808080}.tutor-instructor-list .tutor-instructor-rating *{font-size:16px}.tutor-instructor-list .tutor-instructor-rating .rating-digits{color:#161616}.tutor-instructor-list .tutor-instructor-rating .rating-total-meta{color:#7A7A7A}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-cover-photo{width:100%;height:153px}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-profile-photo{border:4px solid white;margin:-31px 15px 0}.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-cp .tutor-instructor-rating{padding:0 15px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-profile-photo{border-radius:0%;width:100%;height:160px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-rating{padding:0 15px}.tutor-instructor-list.tutor-instructor-list-pp-top-full .tutor-instructor-name{margin-top:15px}.tutor-instructor-list.tutor-instructor-list-pp-top-left{padding:15px}.tutor-instructor-list.tutor-instructor-list-pp-top-left .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-cover-photo,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-cover-photo{display:none}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-profile-photo,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-profile-photo{border-radius:0%;height:102px;width:102px;top:0px;position:absolute}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-rating,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-name,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-course-count,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-rating{margin-left:118px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:calc(100% - 110px);display:inline-block;position:relative;top:6px}.tutor-instructor-list.tutor-instructor-list-pp-left-full .tutor-instructor-rating,.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-rating{top:7px;position:relative}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-profile-photo{border-radius:50%;height:82px;width:82px;margin:10px}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-name{top:11px}.tutor-instructor-list.tutor-instructor-list-pp-left-middle .tutor-instructor-course-count{top:46px}.tutor-toast-parent{position:fixed;right:25px;bottom:50px;right:50px;left:auto;max-height:400px;width:350px;overflow-x:hidden;overflow-y:auto;background:transparent;z-index:99999999}.tutor-toast-parent:empty{display:none}.tutor-toast-parent>div{background:white;padding:10px;margin:15px;border-radius:15px;-webkit-box-shadow:3px 3px 10px rgba(0,0,0,0.363);box-shadow:3px 3px 10px rgba(0,0,0,0.363);border:1px solid #E8E8E8;background:white;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;display:-o-flex;display:-ms-flex;display:-moz-flex;display:-webkit-flex;-ms-flex-line-pack:center;align-content:center;-o-align-content:center;-ms-align-content:center;-moz-align-content:center;-webkit-align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-o-align-items:center;-ms-align-items:center;-moz-align-items:center;-webkit-align-items:center}.tutor-toast-parent>div>div{padding:8px}.tutor-toast-parent>div>div:nth-child(1),.tutor-toast-parent>div>div:nth-child(3){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-o-justify-content:center;-ms-justify-content:center;-moz-justify-content:center;-webkit-justify-content:center}.tutor-toast-parent>div>div:nth-child(2){-webkit-box-flex:1;flex:1;-o-flex:1;-ms-flex:1;-moz-flex:1;-webkit-flex:1}.tutor-toast-parent>div img{width:100%;height:auto}.tutor-toast-parent>div b{font-weight:600;display:block}.tutor-toast-parent>div span{color:#333}.tutor-toast-parent>div i{cursor:pointer;font-size:14px}body.rtl .tutor-toast-parent{right:auto;left:50px}
|
|
|
|
assets/packages/plyr/plyr.polyfilled.min.js
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
"object"==typeof navigator&&function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Plyr",t):(e=e||self).Plyr=t()}(this,(function(){"use strict";!function(){if("undefined"!=typeof window)try{var e=new window.CustomEvent("test",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var t=function(e,t){var n,i;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i=n.preventDefault,n.preventDefault=function(){i.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}();var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var n=function(e){return e&&e.Math==Math&&e},i=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")(),r=function(e){try{return!!e()}catch(e){return!0}},a=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),o={}.propertyIsEnumerable,s=Object.getOwnPropertyDescriptor,l={f:s&&!o.call({1:2},1)?function(e){var t=s(this,e);return!!t&&t.enumerable}:o},c=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},u={}.toString,h=function(e){return u.call(e).slice(8,-1)},f="".split,d=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==h(e)?f.call(e,""):Object(e)}:Object,p=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},m=function(e){return d(p(e))},g=function(e){return"object"==typeof e?null!==e:"function"==typeof e},v=function(e,t){if(!g(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!g(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!g(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!g(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")},y={}.hasOwnProperty,b=function(e,t){return y.call(e,t)},w=i.document,k=g(w)&&g(w.createElement),T=function(e){return k?w.createElement(e):{}},S=!a&&!r((function(){return 7!=Object.defineProperty(T("div"),"a",{get:function(){return 7}}).a})),E=Object.getOwnPropertyDescriptor,A={f:a?E:function(e,t){if(e=m(e),t=v(t,!0),S)try{return E(e,t)}catch(e){}if(b(e,t))return c(!l.f.call(e,t),e[t])}},P=function(e){if(!g(e))throw TypeError(String(e)+" is not an object");return e},x=Object.defineProperty,C={f:a?x:function(e,t,n){if(P(e),t=v(t,!0),P(n),S)try{return x(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},O=a?function(e,t,n){return C.f(e,t,c(1,n))}:function(e,t,n){return e[t]=n,e},I=function(e,t){try{O(i,e,t)}catch(n){i[e]=t}return t},L=i["__core-js_shared__"]||I("__core-js_shared__",{}),j=Function.toString;"function"!=typeof L.inspectSource&&(L.inspectSource=function(e){return j.call(e)});var N,R,M,_=L.inspectSource,U=i.WeakMap,D="function"==typeof U&&/native code/.test(_(U)),F=t((function(e){(e.exports=function(e,t){return L[e]||(L[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),q=0,H=Math.random(),B=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++q+H).toString(36)},V=F("keys"),z=function(e){return V[e]||(V[e]=B(e))},W={},K=i.WeakMap;if(D){var $=new K,Y=$.get,G=$.has,X=$.set;N=function(e,t){return X.call($,e,t),t},R=function(e){return Y.call($,e)||{}},M=function(e){return G.call($,e)}}else{var Q=z("state");W[Q]=!0,N=function(e,t){return O(e,Q,t),t},R=function(e){return b(e,Q)?e[Q]:{}},M=function(e){return b(e,Q)}}var J,Z={set:N,get:R,has:M,enforce:function(e){return M(e)?R(e):N(e,{})},getterFor:function(e){return function(t){var n;if(!g(t)||(n=R(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},ee=t((function(e){var t=Z.get,n=Z.enforce,r=String(String).split("String");(e.exports=function(e,t,a,o){var s=!!o&&!!o.unsafe,l=!!o&&!!o.enumerable,c=!!o&&!!o.noTargetGet;"function"==typeof a&&("string"!=typeof t||b(a,"name")||O(a,"name",t),n(a).source=r.join("string"==typeof t?t:"")),e!==i?(s?!c&&e[t]&&(l=!0):delete e[t],l?e[t]=a:O(e,t,a)):l?e[t]=a:I(t,a)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||_(this)}))})),te=i,ne=function(e){return"function"==typeof e?e:void 0},ie=function(e,t){return arguments.length<2?ne(te[e])||ne(i[e]):te[e]&&te[e][t]||i[e]&&i[e][t]},re=Math.ceil,ae=Math.floor,oe=function(e){return isNaN(e=+e)?0:(e>0?ae:re)(e)},se=Math.min,le=function(e){return e>0?se(oe(e),9007199254740991):0},ce=Math.max,ue=Math.min,he=function(e,t){var n=oe(e);return n<0?ce(n+t,0):ue(n,t)},fe=function(e){return function(t,n,i){var r,a=m(t),o=le(a.length),s=he(i,o);if(e&&n!=n){for(;o>s;)if((r=a[s++])!=r)return!0}else for(;o>s;s++)if((e||s in a)&&a[s]===n)return e||s||0;return!e&&-1}},de={includes:fe(!0),indexOf:fe(!1)},pe=de.indexOf,me=function(e,t){var n,i=m(e),r=0,a=[];for(n in i)!b(W,n)&&b(i,n)&&a.push(n);for(;t.length>r;)b(i,n=t[r++])&&(~pe(a,n)||a.push(n));return a},ge=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ve=ge.concat("length","prototype"),ye={f:Object.getOwnPropertyNames||function(e){return me(e,ve)}},be={f:Object.getOwnPropertySymbols},we=ie("Reflect","ownKeys")||function(e){var t=ye.f(P(e)),n=be.f;return n?t.concat(n(e)):t},ke=function(e,t){for(var n=we(t),i=C.f,r=A.f,a=0;a<n.length;a++){var o=n[a];b(e,o)||i(e,o,r(t,o))}},Te=/#|\.prototype\./,Se=function(e,t){var n=Ae[Ee(e)];return n==xe||n!=Pe&&("function"==typeof t?r(t):!!t)},Ee=Se.normalize=function(e){return String(e).replace(Te,".").toLowerCase()},Ae=Se.data={},Pe=Se.NATIVE="N",xe=Se.POLYFILL="P",Ce=Se,Oe=A.f,Ie=function(e,t){var n,r,a,o,s,l=e.target,c=e.global,u=e.stat;if(n=c?i:u?i[l]||I(l,{}):(i[l]||{}).prototype)for(r in t){if(o=t[r],a=e.noTargetGet?(s=Oe(n,r))&&s.value:n[r],!Ce(c?r:l+(u?".":"#")+r,e.forced)&&void 0!==a){if(typeof o==typeof a)continue;ke(o,a)}(e.sham||a&&a.sham)&&O(o,"sham",!0),ee(n,r,o,e)}},Le=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())})),je=Le&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ne=Array.isArray||function(e){return"Array"==h(e)},Re=function(e){return Object(p(e))},Me=Object.keys||function(e){return me(e,ge)},_e=a?Object.defineProperties:function(e,t){P(e);for(var n,i=Me(t),r=i.length,a=0;r>a;)C.f(e,n=i[a++],t[n]);return e},Ue=ie("document","documentElement"),De=z("IE_PROTO"),Fe=function(){},qe=function(e){return"<script>"+e+"<\/script>"},He=function(){try{J=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;He=J?function(e){e.write(qe("")),e.close();var t=e.parentWindow.Object;return e=null,t}(J):((t=T("iframe")).style.display="none",Ue.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(qe("document.F=Object")),e.close(),e.F);for(var n=ge.length;n--;)delete He.prototype[ge[n]];return He()};W[De]=!0;var Be=Object.create||function(e,t){var n;return null!==e?(Fe.prototype=P(e),n=new Fe,Fe.prototype=null,n[De]=e):n=He(),void 0===t?n:_e(n,t)},Ve=ye.f,ze={}.toString,We="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],Ke={f:function(e){return We&&"[object Window]"==ze.call(e)?function(e){try{return Ve(e)}catch(e){return We.slice()}}(e):Ve(m(e))}},$e=F("wks"),Ye=i.Symbol,Ge=je?Ye:Ye&&Ye.withoutSetter||B,Xe=function(e){return b($e,e)||(Le&&b(Ye,e)?$e[e]=Ye[e]:$e[e]=Ge("Symbol."+e)),$e[e]},Qe={f:Xe},Je=C.f,Ze=function(e){var t=te.Symbol||(te.Symbol={});b(t,e)||Je(t,e,{value:Qe.f(e)})},et=C.f,tt=Xe("toStringTag"),nt=function(e,t,n){e&&!b(e=n?e:e.prototype,tt)&&et(e,tt,{configurable:!0,value:t})},it=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},rt=function(e,t,n){if(it(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}},at=Xe("species"),ot=function(e,t){var n;return Ne(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!Ne(n.prototype)?g(n)&&null===(n=n[at])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},st=[].push,lt=function(e){var t=1==e,n=2==e,i=3==e,r=4==e,a=6==e,o=5==e||a;return function(s,l,c,u){for(var h,f,p=Re(s),m=d(p),g=rt(l,c,3),v=le(m.length),y=0,b=u||ot,w=t?b(s,v):n?b(s,0):void 0;v>y;y++)if((o||y in m)&&(f=g(h=m[y],y,p),e))if(t)w[y]=f;else if(f)switch(e){case 3:return!0;case 5:return h;case 6:return y;case 2:st.call(w,h)}else if(r)return!1;return a?-1:i||r?r:w}},ct={forEach:lt(0),map:lt(1),filter:lt(2),some:lt(3),every:lt(4),find:lt(5),findIndex:lt(6)},ut=ct.forEach,ht=z("hidden"),ft=Xe("toPrimitive"),dt=Z.set,pt=Z.getterFor("Symbol"),mt=Object.prototype,gt=i.Symbol,vt=ie("JSON","stringify"),yt=A.f,bt=C.f,wt=Ke.f,kt=l.f,Tt=F("symbols"),St=F("op-symbols"),Et=F("string-to-symbol-registry"),At=F("symbol-to-string-registry"),Pt=F("wks"),xt=i.QObject,Ct=!xt||!xt.prototype||!xt.prototype.findChild,Ot=a&&r((function(){return 7!=Be(bt({},"a",{get:function(){return bt(this,"a",{value:7}).a}})).a}))?function(e,t,n){var i=yt(mt,t);i&&delete mt[t],bt(e,t,n),i&&e!==mt&&bt(mt,t,i)}:bt,It=function(e,t){var n=Tt[e]=Be(gt.prototype);return dt(n,{type:"Symbol",tag:e,description:t}),a||(n.description=t),n},Lt=je?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof gt},jt=function(e,t,n){e===mt&&jt(St,t,n),P(e);var i=v(t,!0);return P(n),b(Tt,i)?(n.enumerable?(b(e,ht)&&e[ht][i]&&(e[ht][i]=!1),n=Be(n,{enumerable:c(0,!1)})):(b(e,ht)||bt(e,ht,c(1,{})),e[ht][i]=!0),Ot(e,i,n)):bt(e,i,n)},Nt=function(e,t){P(e);var n=m(t),i=Me(n).concat(Ut(n));return ut(i,(function(t){a&&!Rt.call(n,t)||jt(e,t,n[t])})),e},Rt=function(e){var t=v(e,!0),n=kt.call(this,t);return!(this===mt&&b(Tt,t)&&!b(St,t))&&(!(n||!b(this,t)||!b(Tt,t)||b(this,ht)&&this[ht][t])||n)},Mt=function(e,t){var n=m(e),i=v(t,!0);if(n!==mt||!b(Tt,i)||b(St,i)){var r=yt(n,i);return!r||!b(Tt,i)||b(n,ht)&&n[ht][i]||(r.enumerable=!0),r}},_t=function(e){var t=wt(m(e)),n=[];return ut(t,(function(e){b(Tt,e)||b(W,e)||n.push(e)})),n},Ut=function(e){var t=e===mt,n=wt(t?St:m(e)),i=[];return ut(n,(function(e){!b(Tt,e)||t&&!b(mt,e)||i.push(Tt[e])})),i};if(Le||(ee((gt=function(){if(this instanceof gt)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=B(e),n=function(e){this===mt&&n.call(St,e),b(this,ht)&&b(this[ht],t)&&(this[ht][t]=!1),Ot(this,t,c(1,e))};return a&&Ct&&Ot(mt,t,{configurable:!0,set:n}),It(t,e)}).prototype,"toString",(function(){return pt(this).tag})),ee(gt,"withoutSetter",(function(e){return It(B(e),e)})),l.f=Rt,C.f=jt,A.f=Mt,ye.f=Ke.f=_t,be.f=Ut,Qe.f=function(e){return It(Xe(e),e)},a&&(bt(gt.prototype,"description",{configurable:!0,get:function(){return pt(this).description}}),ee(mt,"propertyIsEnumerable",Rt,{unsafe:!0}))),Ie({global:!0,wrap:!0,forced:!Le,sham:!Le},{Symbol:gt}),ut(Me(Pt),(function(e){Ze(e)})),Ie({target:"Symbol",stat:!0,forced:!Le},{for:function(e){var t=String(e);if(b(Et,t))return Et[t];var n=gt(t);return Et[t]=n,At[n]=t,n},keyFor:function(e){if(!Lt(e))throw TypeError(e+" is not a symbol");if(b(At,e))return At[e]},useSetter:function(){Ct=!0},useSimple:function(){Ct=!1}}),Ie({target:"Object",stat:!0,forced:!Le,sham:!a},{create:function(e,t){return void 0===t?Be(e):Nt(Be(e),t)},defineProperty:jt,defineProperties:Nt,getOwnPropertyDescriptor:Mt}),Ie({target:"Object",stat:!0,forced:!Le},{getOwnPropertyNames:_t,getOwnPropertySymbols:Ut}),Ie({target:"Object",stat:!0,forced:r((function(){be.f(1)}))},{getOwnPropertySymbols:function(e){return be.f(Re(e))}}),vt){var Dt=!Le||r((function(){var e=gt();return"[null]"!=vt([e])||"{}"!=vt({a:e})||"{}"!=vt(Object(e))}));Ie({target:"JSON",stat:!0,forced:Dt},{stringify:function(e,t,n){for(var i,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);if(i=t,(g(t)||void 0!==e)&&!Lt(e))return Ne(t)||(t=function(e,t){if("function"==typeof i&&(t=i.call(this,e,t)),!Lt(t))return t}),r[1]=t,vt.apply(null,r)}})}gt.prototype[ft]||O(gt.prototype,ft,gt.prototype.valueOf),nt(gt,"Symbol"),W[ht]=!0;var Ft=C.f,qt=i.Symbol;if(a&&"function"==typeof qt&&(!("description"in qt.prototype)||void 0!==qt().description)){var Ht={},Bt=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof Bt?new qt(e):void 0===e?qt():qt(e);return""===e&&(Ht[t]=!0),t};ke(Bt,qt);var Vt=Bt.prototype=qt.prototype;Vt.constructor=Bt;var zt=Vt.toString,Wt="Symbol(test)"==String(qt("test")),Kt=/^Symbol\((.*)\)[^)]+$/;Ft(Vt,"description",{configurable:!0,get:function(){var e=g(this)?this.valueOf():this,t=zt.call(e);if(b(Ht,e))return"";var n=Wt?t.slice(7,-1):t.replace(Kt,"$1");return""===n?void 0:n}}),Ie({global:!0,forced:!0},{Symbol:Bt})}Ze("iterator");var $t=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))},Yt=Object.defineProperty,Gt={},Xt=function(e){throw e},Qt=function(e,t){if(b(Gt,e))return Gt[e];t||(t={});var n=[][e],i=!!b(t,"ACCESSORS")&&t.ACCESSORS,o=b(t,0)?t[0]:Xt,s=b(t,1)?t[1]:void 0;return Gt[e]=!!n&&!r((function(){if(i&&!a)return!0;var e={length:-1};i?Yt(e,1,{enumerable:!0,get:Xt}):e[1]=1,n.call(e,o,s)}))},Jt=ct.forEach,Zt=$t("forEach"),en=Qt("forEach"),tn=Zt&&en?[].forEach:function(e){return Jt(this,e,arguments.length>1?arguments[1]:void 0)};Ie({target:"Array",proto:!0,forced:[].forEach!=tn},{forEach:tn});var nn=de.indexOf,rn=[].indexOf,an=!!rn&&1/[1].indexOf(1,-0)<0,on=$t("indexOf"),sn=Qt("indexOf",{ACCESSORS:!0,1:0});Ie({target:"Array",proto:!0,forced:an||!on||!sn},{indexOf:function(e){return an?rn.apply(this,arguments)||0:nn(this,e,arguments.length>1?arguments[1]:void 0)}});var ln=Xe("unscopables"),cn=Array.prototype;null==cn[ln]&&C.f(cn,ln,{configurable:!0,value:Be(null)});var un,hn,fn,dn=function(e){cn[ln][e]=!0},pn={},mn=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),gn=z("IE_PROTO"),vn=Object.prototype,yn=mn?Object.getPrototypeOf:function(e){return e=Re(e),b(e,gn)?e[gn]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?vn:null},bn=Xe("iterator"),wn=!1;[].keys&&("next"in(fn=[].keys())?(hn=yn(yn(fn)))!==Object.prototype&&(un=hn):wn=!0),null==un&&(un={}),b(un,bn)||O(un,bn,(function(){return this}));var kn={IteratorPrototype:un,BUGGY_SAFARI_ITERATORS:wn},Tn=kn.IteratorPrototype,Sn=function(){return this},En=function(e,t,n){var i=t+" Iterator";return e.prototype=Be(Tn,{next:c(1,n)}),nt(e,i,!1),pn[i]=Sn,e},An=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,i){return P(n),function(e){if(!g(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype")}(i),t?e.call(n,i):n.__proto__=i,n}}():void 0),Pn=kn.IteratorPrototype,xn=kn.BUGGY_SAFARI_ITERATORS,Cn=Xe("iterator"),On=function(){return this},In=function(e,t,n,i,r,a,o){En(n,t,i);var s,l,c,u=function(e){if(e===r&&m)return m;if(!xn&&e in d)return d[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},h=t+" Iterator",f=!1,d=e.prototype,p=d[Cn]||d["@@iterator"]||r&&d[r],m=!xn&&p||u(r),g="Array"==t&&d.entries||p;if(g&&(s=yn(g.call(new e)),Pn!==Object.prototype&&s.next&&(yn(s)!==Pn&&(An?An(s,Pn):"function"!=typeof s[Cn]&&O(s,Cn,On)),nt(s,h,!0))),"values"==r&&p&&"values"!==p.name&&(f=!0,m=function(){return p.call(this)}),d[Cn]!==m&&O(d,Cn,m),pn[t]=m,r)if(l={values:u("values"),keys:a?m:u("keys"),entries:u("entries")},o)for(c in l)(xn||f||!(c in d))&&ee(d,c,l[c]);else Ie({target:t,proto:!0,forced:xn||f},l);return l},Ln=Z.set,jn=Z.getterFor("Array Iterator"),Nn=In(Array,"Array",(function(e,t){Ln(this,{type:"Array Iterator",target:m(e),index:0,kind:t})}),(function(){var e=jn(this),t=e.target,n=e.kind,i=e.index++;return!t||i>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:t[i],done:!1}:{value:[i,t[i]],done:!1}}),"values");pn.Arguments=pn.Array,dn("keys"),dn("values"),dn("entries");var Rn=[].join,Mn=d!=Object,_n=$t("join",",");Ie({target:"Array",proto:!0,forced:Mn||!_n},{join:function(e){return Rn.call(m(this),void 0===e?",":e)}});var Un,Dn,Fn=function(e,t,n){var i=v(t);i in e?C.f(e,i,c(0,n)):e[i]=n},qn=ie("navigator","userAgent")||"",Hn=i.process,Bn=Hn&&Hn.versions,Vn=Bn&&Bn.v8;Vn?Dn=(Un=Vn.split("."))[0]+Un[1]:qn&&(!(Un=qn.match(/Edge\/(\d+)/))||Un[1]>=74)&&(Un=qn.match(/Chrome\/(\d+)/))&&(Dn=Un[1]);var zn=Dn&&+Dn,Wn=Xe("species"),Kn=function(e){return zn>=51||!r((function(){var t=[];return(t.constructor={})[Wn]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},$n=Kn("slice"),Yn=Qt("slice",{ACCESSORS:!0,0:0,1:2}),Gn=Xe("species"),Xn=[].slice,Qn=Math.max;Ie({target:"Array",proto:!0,forced:!$n||!Yn},{slice:function(e,t){var n,i,r,a=m(this),o=le(a.length),s=he(e,o),l=he(void 0===t?o:t,o);if(Ne(a)&&("function"!=typeof(n=a.constructor)||n!==Array&&!Ne(n.prototype)?g(n)&&null===(n=n[Gn])&&(n=void 0):n=void 0,n===Array||void 0===n))return Xn.call(a,s,l);for(i=new(void 0===n?Array:n)(Qn(l-s,0)),r=0;s<l;s++,r++)s in a&&Fn(i,r,a[s]);return i.length=r,i}});var Jn={};Jn[Xe("toStringTag")]="z";var Zn="[object z]"===String(Jn),ei=Xe("toStringTag"),ti="Arguments"==h(function(){return arguments}()),ni=Zn?h:function(e){var t,n,i;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),ei))?n:ti?h(t):"Object"==(i=h(t))&&"function"==typeof t.callee?"Arguments":i},ii=Zn?{}.toString:function(){return"[object "+ni(this)+"]"};Zn||ee(Object.prototype,"toString",ii,{unsafe:!0});var ri=function(){var e=P(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function ai(e,t){return RegExp(e,t)}var oi={UNSUPPORTED_Y:r((function(){var e=ai("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET:r((function(){var e=ai("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},si=RegExp.prototype.exec,li=String.prototype.replace,ci=si,ui=function(){var e=/a/,t=/b*/g;return si.call(e,"a"),si.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),hi=oi.UNSUPPORTED_Y||oi.BROKEN_CARET,fi=void 0!==/()??/.exec("")[1];(ui||fi||hi)&&(ci=function(e){var t,n,i,r,a=this,o=hi&&a.sticky,s=ri.call(a),l=a.source,c=0,u=e;return o&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),u=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(l="(?: "+l+")",u=" "+u,c++),n=new RegExp("^(?:"+l+")",s)),fi&&(n=new RegExp("^"+l+"$(?!\\s)",s)),ui&&(t=a.lastIndex),i=si.call(o?n:a,u),o?i?(i.input=i.input.slice(c),i[0]=i[0].slice(c),i.index=a.lastIndex,a.lastIndex+=i[0].length):a.lastIndex=0:ui&&i&&(a.lastIndex=a.global?i.index+i[0].length:t),fi&&i&&i.length>1&&li.call(i[0],n,(function(){for(r=1;r<arguments.length-2;r++)void 0===arguments[r]&&(i[r]=void 0)})),i});var di=ci;Ie({target:"RegExp",proto:!0,forced:/./.exec!==di},{exec:di});var pi=RegExp.prototype,mi=pi.toString,gi=r((function(){return"/a/b"!=mi.call({source:"a",flags:"b"})})),vi="toString"!=mi.name;(gi||vi)&&ee(RegExp.prototype,"toString",(function(){var e=P(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in pi)?ri.call(e):n)}),{unsafe:!0});var yi=function(e){return function(t,n){var i,r,a=String(p(t)),o=oe(n),s=a.length;return o<0||o>=s?e?"":void 0:(i=a.charCodeAt(o))<55296||i>56319||o+1===s||(r=a.charCodeAt(o+1))<56320||r>57343?e?a.charAt(o):i:e?a.slice(o,o+2):r-56320+(i-55296<<10)+65536}},bi={codeAt:yi(!1),charAt:yi(!0)},wi=bi.charAt,ki=Z.set,Ti=Z.getterFor("String Iterator");In(String,"String",(function(e){ki(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=Ti(this),n=t.string,i=t.index;return i>=n.length?{value:void 0,done:!0}:(e=wi(n,i),t.index+=e.length,{value:e,done:!1})}));var Si=Xe("species"),Ei=!r((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),Ai="$0"==="a".replace(/./,"$0"),Pi=Xe("replace"),xi=!!/./[Pi]&&""===/./[Pi]("a","$0"),Ci=!r((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),Oi=function(e,t,n,i){var a=Xe(e),o=!r((function(){var t={};return t[a]=function(){return 7},7!=""[e](t)})),s=o&&!r((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[Si]=function(){return n},n.flags="",n[a]=/./[a]),n.exec=function(){return t=!0,null},n[a](""),!t}));if(!o||!s||"replace"===e&&(!Ei||!Ai||xi)||"split"===e&&!Ci){var l=/./[a],c=n(a,""[e],(function(e,t,n,i,r){return t.exec===di?o&&!r?{done:!0,value:l.call(t,n,i)}:{done:!0,value:e.call(n,t,i)}:{done:!1}}),{REPLACE_KEEPS_$0:Ai,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:xi}),u=c[0],h=c[1];ee(String.prototype,e,u),ee(RegExp.prototype,a,2==t?function(e,t){return h.call(e,this,t)}:function(e){return h.call(e,this)})}i&&O(RegExp.prototype[a],"sham",!0)},Ii=bi.charAt,Li=function(e,t,n){return t+(n?Ii(e,t).length:1)},ji=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==h(e))throw TypeError("RegExp#exec called on incompatible receiver");return di.call(e,t)},Ni=Math.max,Ri=Math.min,Mi=Math.floor,_i=/\$([$&'`]|\d\d?|<[^>]*>)/g,Ui=/\$([$&'`]|\d\d?)/g;Oi("replace",2,(function(e,t,n,i){var r=i.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=i.REPLACE_KEEPS_$0,o=r?"$":"$0";return[function(n,i){var r=p(this),a=null==n?void 0:n[e];return void 0!==a?a.call(n,r,i):t.call(String(r),n,i)},function(e,i){if(!r&&a||"string"==typeof i&&-1===i.indexOf(o)){var l=n(t,e,this,i);if(l.done)return l.value}var c=P(e),u=String(this),h="function"==typeof i;h||(i=String(i));var f=c.global;if(f){var d=c.unicode;c.lastIndex=0}for(var p=[];;){var m=ji(c,u);if(null===m)break;if(p.push(m),!f)break;""===String(m[0])&&(c.lastIndex=Li(u,le(c.lastIndex),d))}for(var g,v="",y=0,b=0;b<p.length;b++){m=p[b];for(var w=String(m[0]),k=Ni(Ri(oe(m.index),u.length),0),T=[],S=1;S<m.length;S++)T.push(void 0===(g=m[S])?g:String(g));var E=m.groups;if(h){var A=[w].concat(T,k,u);void 0!==E&&A.push(E);var x=String(i.apply(void 0,A))}else x=s(w,u,k,T,E,i);k>=y&&(v+=u.slice(y,k)+x,y=k+w.length)}return v+u.slice(y)}];function s(e,n,i,r,a,o){var s=i+e.length,l=r.length,c=Ui;return void 0!==a&&(a=Re(a),c=_i),t.call(o,c,(function(t,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,i);case"'":return n.slice(s);case"<":c=a[o.slice(1,-1)];break;default:var u=+o;if(0===u)return t;if(u>l){var h=Mi(u/10);return 0===h?t:h<=l?void 0===r[h-1]?o.charAt(1):r[h-1]+o.charAt(1):t}c=r[u-1]}return void 0===c?"":c}))}}));var Di=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};Oi("search",1,(function(e,t,n){return[function(t){var n=p(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,n):new RegExp(t)[e](String(n))},function(e){var i=n(t,e,this);if(i.done)return i.value;var r=P(e),a=String(this),o=r.lastIndex;Di(o,0)||(r.lastIndex=0);var s=ji(r,a);return Di(r.lastIndex,o)||(r.lastIndex=o),null===s?-1:s.index}]}));var Fi=Xe("match"),qi=function(e){var t;return g(e)&&(void 0!==(t=e[Fi])?!!t:"RegExp"==h(e))},Hi=Xe("species"),Bi=function(e,t){var n,i=P(e).constructor;return void 0===i||null==(n=P(i)[Hi])?t:it(n)},Vi=[].push,zi=Math.min,Wi=!r((function(){return!RegExp(4294967295,"y")}));Oi("split",2,(function(e,t,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var i=String(p(this)),r=void 0===n?4294967295:n>>>0;if(0===r)return[];if(void 0===e)return[i];if(!qi(e))return t.call(i,e,r);for(var a,o,s,l=[],c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),u=0,h=new RegExp(e.source,c+"g");(a=di.call(h,i))&&!((o=h.lastIndex)>u&&(l.push(i.slice(u,a.index)),a.length>1&&a.index<i.length&&Vi.apply(l,a.slice(1)),s=a[0].length,u=o,l.length>=r));)h.lastIndex===a.index&&h.lastIndex++;return u===i.length?!s&&h.test("")||l.push(""):l.push(i.slice(u)),l.length>r?l.slice(0,r):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var r=p(this),a=null==t?void 0:t[e];return void 0!==a?a.call(t,r,n):i.call(String(r),t,n)},function(e,r){var a=n(i,e,this,r,i!==t);if(a.done)return a.value;var o=P(e),s=String(this),l=Bi(o,RegExp),c=o.unicode,u=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(Wi?"y":"g"),h=new l(Wi?o:"^(?:"+o.source+")",u),f=void 0===r?4294967295:r>>>0;if(0===f)return[];if(0===s.length)return null===ji(h,s)?[s]:[];for(var d=0,p=0,m=[];p<s.length;){h.lastIndex=Wi?p:0;var g,v=ji(h,Wi?s:s.slice(p));if(null===v||(g=zi(le(h.lastIndex+(Wi?0:p)),s.length))===d)p=Li(s,p,c);else{if(m.push(s.slice(d,p)),m.length===f)return m;for(var y=1;y<=v.length-1;y++)if(m.push(v[y]),m.length===f)return m;p=d=g}}return m.push(s.slice(d)),m}]}),!Wi);var Ki={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0};for(var $i in Ki){var Yi=i[$i],Gi=Yi&&Yi.prototype;if(Gi&&Gi.forEach!==tn)try{O(Gi,"forEach",tn)}catch(e){Gi.forEach=tn}}var Xi=Xe("iterator"),Qi=Xe("toStringTag"),Ji=Nn.values;for(var Zi in Ki){var er=i[Zi],tr=er&&er.prototype;if(tr){if(tr[Xi]!==Ji)try{O(tr,Xi,Ji)}catch(e){tr[Xi]=Ji}if(tr[Qi]||O(tr,Qi,Zi),Ki[Zi])for(var nr in Nn)if(tr[nr]!==Nn[nr])try{O(tr,nr,Nn[nr])}catch(e){tr[nr]=Nn[nr]}}}var ir=Xe("iterator"),rr=!r((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,i){t.delete("b"),n+=i+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[ir]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),ar=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},or=Object.assign,sr=Object.defineProperty,lr=!or||r((function(){if(a&&1!==or({b:1},or(sr({},"a",{enumerable:!0,get:function(){sr(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=or({},e)[n]||"abcdefghijklmnopqrst"!=Me(or({},t)).join("")}))?function(e,t){for(var n=Re(e),i=arguments.length,r=1,o=be.f,s=l.f;i>r;)for(var c,u=d(arguments[r++]),h=o?Me(u).concat(o(u)):Me(u),f=h.length,p=0;f>p;)c=h[p++],a&&!s.call(u,c)||(n[c]=u[c]);return n}:or,cr=function(e,t,n,i){try{return i?t(P(n)[0],n[1]):t(n)}catch(t){var r=e.return;throw void 0!==r&&P(r.call(e)),t}},ur=Xe("iterator"),hr=Array.prototype,fr=function(e){return void 0!==e&&(pn.Array===e||hr[ur]===e)},dr=Xe("iterator"),pr=function(e){if(null!=e)return e[dr]||e["@@iterator"]||pn[ni(e)]},mr=function(e){var t,n,i,r,a,o,s=Re(e),l="function"==typeof this?this:Array,c=arguments.length,u=c>1?arguments[1]:void 0,h=void 0!==u,f=pr(s),d=0;if(h&&(u=rt(u,c>2?arguments[2]:void 0,2)),null==f||l==Array&&fr(f))for(n=new l(t=le(s.length));t>d;d++)o=h?u(s[d],d):s[d],Fn(n,d,o);else for(a=(r=f.call(s)).next,n=new l;!(i=a.call(r)).done;d++)o=h?cr(r,u,[i.value,d],!0):i.value,Fn(n,d,o);return n.length=d,n},gr=/[^\0-\u007E]/,vr=/[.\u3002\uFF0E\uFF61]/g,yr="Overflow: input needs wider integers to process",br=Math.floor,wr=String.fromCharCode,kr=function(e){return e+22+75*(e<26)},Tr=function(e,t,n){var i=0;for(e=n?br(e/700):e>>1,e+=br(e/t);e>455;i+=36)e=br(e/35);return br(i+36*e/(e+38))},Sr=function(e){var t,n,i=[],r=(e=function(e){for(var t=[],n=0,i=e.length;n<i;){var r=e.charCodeAt(n++);if(r>=55296&&r<=56319&&n<i){var a=e.charCodeAt(n++);56320==(64512&a)?t.push(((1023&r)<<10)+(1023&a)+65536):(t.push(r),n--)}else t.push(r)}return t}(e)).length,a=128,o=0,s=72;for(t=0;t<e.length;t++)(n=e[t])<128&&i.push(wr(n));var l=i.length,c=l;for(l&&i.push("-");c<r;){var u=2147483647;for(t=0;t<e.length;t++)(n=e[t])>=a&&n<u&&(u=n);var h=c+1;if(u-a>br((2147483647-o)/h))throw RangeError(yr);for(o+=(u-a)*h,a=u,t=0;t<e.length;t++){if((n=e[t])<a&&++o>2147483647)throw RangeError(yr);if(n==a){for(var f=o,d=36;;d+=36){var p=d<=s?1:d>=s+26?26:d-s;if(f<p)break;var m=f-p,g=36-p;i.push(wr(kr(p+m%g))),f=br(m/g)}i.push(wr(kr(f))),s=Tr(o,h,c==l),o=0,++c}}++o,++a}return i.join("")},Er=function(e,t,n){for(var i in t)ee(e,i,t[i],n);return e},Ar=function(e){var t=pr(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return P(t.call(e))},Pr=ie("fetch"),xr=ie("Headers"),Cr=Xe("iterator"),Or=Z.set,Ir=Z.getterFor("URLSearchParams"),Lr=Z.getterFor("URLSearchParamsIterator"),jr=/\+/g,Nr=Array(4),Rr=function(e){return Nr[e-1]||(Nr[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},Mr=function(e){try{return decodeURIComponent(e)}catch(t){return e}},_r=function(e){var t=e.replace(jr," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(Rr(n--),Mr);return t}},Ur=/[!'()~]|%20/g,Dr={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Fr=function(e){return Dr[e]},qr=function(e){return encodeURIComponent(e).replace(Ur,Fr)},Hr=function(e,t){if(t)for(var n,i,r=t.split("&"),a=0;a<r.length;)(n=r[a++]).length&&(i=n.split("="),e.push({key:_r(i.shift()),value:_r(i.join("="))}))},Br=function(e){this.entries.length=0,Hr(this.entries,e)},Vr=function(e,t){if(e<t)throw TypeError("Not enough arguments")},zr=En((function(e,t){Or(this,{type:"URLSearchParamsIterator",iterator:Ar(Ir(e).entries),kind:t})}),"Iterator",(function(){var e=Lr(this),t=e.kind,n=e.iterator.next(),i=n.value;return n.done||(n.value="keys"===t?i.key:"values"===t?i.value:[i.key,i.value]),n})),Wr=function(){ar(this,Wr,"URLSearchParams");var e,t,n,i,r,a,o,s,l,c=arguments.length>0?arguments[0]:void 0,u=this,h=[];if(Or(u,{type:"URLSearchParams",entries:h,updateURL:function(){},updateSearchParams:Br}),void 0!==c)if(g(c))if("function"==typeof(e=pr(c)))for(n=(t=e.call(c)).next;!(i=n.call(t)).done;){if((o=(a=(r=Ar(P(i.value))).next).call(r)).done||(s=a.call(r)).done||!a.call(r).done)throw TypeError("Expected sequence with length 2");h.push({key:o.value+"",value:s.value+""})}else for(l in c)b(c,l)&&h.push({key:l,value:c[l]+""});else Hr(h,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},Kr=Wr.prototype;Er(Kr,{append:function(e,t){Vr(arguments.length,2);var n=Ir(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){Vr(arguments.length,1);for(var t=Ir(this),n=t.entries,i=e+"",r=0;r<n.length;)n[r].key===i?n.splice(r,1):r++;t.updateURL()},get:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=0;i<t.length;i++)if(t[i].key===n)return t[i].value;return null},getAll:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=[],r=0;r<t.length;r++)t[r].key===n&&i.push(t[r].value);return i},has:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=0;i<t.length;)if(t[i++].key===n)return!0;return!1},set:function(e,t){Vr(arguments.length,1);for(var n,i=Ir(this),r=i.entries,a=!1,o=e+"",s=t+"",l=0;l<r.length;l++)(n=r[l]).key===o&&(a?r.splice(l--,1):(a=!0,n.value=s));a||r.push({key:o,value:s}),i.updateURL()},sort:function(){var e,t,n,i=Ir(this),r=i.entries,a=r.slice();for(r.length=0,n=0;n<a.length;n++){for(e=a[n],t=0;t<n;t++)if(r[t].key>e.key){r.splice(t,0,e);break}t===n&&r.push(e)}i.updateURL()},forEach:function(e){for(var t,n=Ir(this).entries,i=rt(e,arguments.length>1?arguments[1]:void 0,3),r=0;r<n.length;)i((t=n[r++]).value,t.key,this)},keys:function(){return new zr(this,"keys")},values:function(){return new zr(this,"values")},entries:function(){return new zr(this,"entries")}},{enumerable:!0}),ee(Kr,Cr,Kr.entries),ee(Kr,"toString",(function(){for(var e,t=Ir(this).entries,n=[],i=0;i<t.length;)e=t[i++],n.push(qr(e.key)+"="+qr(e.value));return n.join("&")}),{enumerable:!0}),nt(Wr,"URLSearchParams"),Ie({global:!0,forced:!rr},{URLSearchParams:Wr}),rr||"function"!=typeof Pr||"function"!=typeof xr||Ie({global:!0,enumerable:!0,forced:!0},{fetch:function(e){var t,n,i,r=[e];return arguments.length>1&&(t=arguments[1],g(t)&&(n=t.body,"URLSearchParams"===ni(n)&&((i=t.headers?new xr(t.headers):new xr).has("content-type")||i.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=Be(t,{body:c(0,String(n)),headers:c(0,i)}))),r.push(t)),Pr.apply(this,r)}});var $r,Yr={URLSearchParams:Wr,getState:Ir},Gr=bi.codeAt,Xr=i.URL,Qr=Yr.URLSearchParams,Jr=Yr.getState,Zr=Z.set,ea=Z.getterFor("URL"),ta=Math.floor,na=Math.pow,ia=/[A-Za-z]/,ra=/[\d+-.A-Za-z]/,aa=/\d/,oa=/^(0x|0X)/,sa=/^[0-7]+$/,la=/^\d+$/,ca=/^[\dA-Fa-f]+$/,ua=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,ha=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,fa=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,da=/[\u0009\u000A\u000D]/g,pa=function(e,t){var n,i,r;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return"Invalid host";if(!(n=ga(t.slice(1,-1))))return"Invalid host";e.host=n}else if(Ea(e)){if(t=function(e){var t,n,i=[],r=e.toLowerCase().replace(vr,".").split(".");for(t=0;t<r.length;t++)n=r[t],i.push(gr.test(n)?"xn--"+Sr(n):n);return i.join(".")}(t),ua.test(t))return"Invalid host";if(null===(n=ma(t)))return"Invalid host";e.host=n}else{if(ha.test(t))return"Invalid host";for(n="",i=mr(t),r=0;r<i.length;r++)n+=Ta(i[r],ya);e.host=n}},ma=function(e){var t,n,i,r,a,o,s,l=e.split(".");if(l.length&&""==l[l.length-1]&&l.pop(),(t=l.length)>4)return e;for(n=[],i=0;i<t;i++){if(""==(r=l[i]))return e;if(a=10,r.length>1&&"0"==r.charAt(0)&&(a=oa.test(r)?16:8,r=r.slice(8==a?1:2)),""===r)o=0;else{if(!(10==a?la:8==a?sa:ca).test(r))return e;o=parseInt(r,a)}n.push(o)}for(i=0;i<t;i++)if(o=n[i],i==t-1){if(o>=na(256,5-t))return null}else if(o>255)return null;for(s=n.pop(),i=0;i<n.length;i++)s+=n[i]*na(256,3-i);return s},ga=function(e){var t,n,i,r,a,o,s,l=[0,0,0,0,0,0,0,0],c=0,u=null,h=0,f=function(){return e.charAt(h)};if(":"==f()){if(":"!=e.charAt(1))return;h+=2,u=++c}for(;f();){if(8==c)return;if(":"!=f()){for(t=n=0;n<4&&ca.test(f());)t=16*t+parseInt(f(),16),h++,n++;if("."==f()){if(0==n)return;if(h-=n,c>6)return;for(i=0;f();){if(r=null,i>0){if(!("."==f()&&i<4))return;h++}if(!aa.test(f()))return;for(;aa.test(f());){if(a=parseInt(f(),10),null===r)r=a;else{if(0==r)return;r=10*r+a}if(r>255)return;h++}l[c]=256*l[c]+r,2!=++i&&4!=i||c++}if(4!=i)return;break}if(":"==f()){if(h++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;h++,u=++c}}if(null!==u)for(o=c-u,c=7;0!=c&&o>0;)s=l[c],l[c--]=l[u+o-1],l[u+--o]=s;else if(8!=c)return;return l},va=function(e){var t,n,i,r;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=ta(e/256);return t.join(".")}if("object"==typeof e){for(t="",i=function(e){for(var t=null,n=1,i=null,r=0,a=0;a<8;a++)0!==e[a]?(r>n&&(t=i,n=r),i=null,r=0):(null===i&&(i=a),++r);return r>n&&(t=i,n=r),t}(e),n=0;n<8;n++)r&&0===e[n]||(r&&(r=!1),i===n?(t+=n?":":"::",r=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},ya={},ba=lr({},ya,{" ":1,'"':1,"<":1,">":1,"`":1}),wa=lr({},ba,{"#":1,"?":1,"{":1,"}":1}),ka=lr({},wa,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Ta=function(e,t){var n=Gr(e,0);return n>32&&n<127&&!b(t,e)?e:encodeURIComponent(e)},Sa={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Ea=function(e){return b(Sa,e.scheme)},Aa=function(e){return""!=e.username||""!=e.password},Pa=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},xa=function(e,t){var n;return 2==e.length&&ia.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},Ca=function(e){var t;return e.length>1&&xa(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},Oa=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&xa(t[0],!0)||t.pop()},Ia=function(e){return"."===e||"%2e"===e.toLowerCase()},La={},ja={},Na={},Ra={},Ma={},_a={},Ua={},Da={},Fa={},qa={},Ha={},Ba={},Va={},za={},Wa={},Ka={},$a={},Ya={},Ga={},Xa={},Qa={},Ja=function(e,t,n,i){var r,a,o,s,l,c=n||La,u=0,h="",f=!1,d=!1,p=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(fa,"")),t=t.replace(da,""),r=mr(t);u<=r.length;){switch(a=r[u],c){case La:if(!a||!ia.test(a)){if(n)return"Invalid scheme";c=Na;continue}h+=a.toLowerCase(),c=ja;break;case ja:if(a&&(ra.test(a)||"+"==a||"-"==a||"."==a))h+=a.toLowerCase();else{if(":"!=a){if(n)return"Invalid scheme";h="",c=Na,u=0;continue}if(n&&(Ea(e)!=b(Sa,h)||"file"==h&&(Aa(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=h,n)return void(Ea(e)&&Sa[e.scheme]==e.port&&(e.port=null));h="","file"==e.scheme?c=za:Ea(e)&&i&&i.scheme==e.scheme?c=Ra:Ea(e)?c=Da:"/"==r[u+1]?(c=Ma,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ga)}break;case Na:if(!i||i.cannotBeABaseURL&&"#"!=a)return"Invalid scheme";if(i.cannotBeABaseURL&&"#"==a){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=Qa;break}c="file"==i.scheme?za:_a;continue;case Ra:if("/"!=a||"/"!=r[u+1]){c=_a;continue}c=Fa,u++;break;case Ma:if("/"==a){c=qa;break}c=Ya;continue;case _a:if(e.scheme=i.scheme,a==$r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==a||"\\"==a&&Ea(e))c=Ua;else if("?"==a)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Xa;else{if("#"!=a){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=Ya;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=Qa}break;case Ua:if(!Ea(e)||"/"!=a&&"\\"!=a){if("/"!=a){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=Ya;continue}c=qa}else c=Fa;break;case Da:if(c=Fa,"/"!=a||"/"!=h.charAt(u+1))continue;u++;break;case Fa:if("/"!=a&&"\\"!=a){c=qa;continue}break;case qa:if("@"==a){f&&(h="%40"+h),f=!0,o=mr(h);for(var m=0;m<o.length;m++){var g=o[m];if(":"!=g||p){var v=Ta(g,ka);p?e.password+=v:e.username+=v}else p=!0}h=""}else if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)){if(f&&""==h)return"Invalid authority";u-=mr(h).length+1,h="",c=Ha}else h+=a;break;case Ha:case Ba:if(n&&"file"==e.scheme){c=Ka;continue}if(":"!=a||d){if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)){if(Ea(e)&&""==h)return"Invalid host";if(n&&""==h&&(Aa(e)||null!==e.port))return;if(s=pa(e,h))return s;if(h="",c=$a,n)return;continue}"["==a?d=!0:"]"==a&&(d=!1),h+=a}else{if(""==h)return"Invalid host";if(s=pa(e,h))return s;if(h="",c=Va,n==Ba)return}break;case Va:if(!aa.test(a)){if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)||n){if(""!=h){var y=parseInt(h,10);if(y>65535)return"Invalid port";e.port=Ea(e)&&y===Sa[e.scheme]?null:y,h=""}if(n)return;c=$a;continue}return"Invalid port"}h+=a;break;case za:if(e.scheme="file","/"==a||"\\"==a)c=Wa;else{if(!i||"file"!=i.scheme){c=Ya;continue}if(a==$r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==a)e.host=i.host,e.path=i.path.slice(),e.query="",c=Xa;else{if("#"!=a){Ca(r.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),Oa(e)),c=Ya;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=Qa}}break;case Wa:if("/"==a||"\\"==a){c=Ka;break}i&&"file"==i.scheme&&!Ca(r.slice(u).join(""))&&(xa(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=Ya;continue;case Ka:if(a==$r||"/"==a||"\\"==a||"?"==a||"#"==a){if(!n&&xa(h))c=Ya;else if(""==h){if(e.host="",n)return;c=$a}else{if(s=pa(e,h))return s;if("localhost"==e.host&&(e.host=""),n)return;h="",c=$a}continue}h+=a;break;case $a:if(Ea(e)){if(c=Ya,"/"!=a&&"\\"!=a)continue}else if(n||"?"!=a)if(n||"#"!=a){if(a!=$r&&(c=Ya,"/"!=a))continue}else e.fragment="",c=Qa;else e.query="",c=Xa;break;case Ya:if(a==$r||"/"==a||"\\"==a&&Ea(e)||!n&&("?"==a||"#"==a)){if(".."===(l=(l=h).toLowerCase())||"%2e."===l||".%2e"===l||"%2e%2e"===l?(Oa(e),"/"==a||"\\"==a&&Ea(e)||e.path.push("")):Ia(h)?"/"==a||"\\"==a&&Ea(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&xa(h)&&(e.host&&(e.host=""),h=h.charAt(0)+":"),e.path.push(h)),h="","file"==e.scheme&&(a==$r||"?"==a||"#"==a))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==a?(e.query="",c=Xa):"#"==a&&(e.fragment="",c=Qa)}else h+=Ta(a,wa);break;case Ga:"?"==a?(e.query="",c=Xa):"#"==a?(e.fragment="",c=Qa):a!=$r&&(e.path[0]+=Ta(a,ya));break;case Xa:n||"#"!=a?a!=$r&&("'"==a&&Ea(e)?e.query+="%27":e.query+="#"==a?"%23":Ta(a,ya)):(e.fragment="",c=Qa);break;case Qa:a!=$r&&(e.fragment+=Ta(a,ba))}u++}},Za=function(e){var t,n,i=ar(this,Za,"URL"),r=arguments.length>1?arguments[1]:void 0,o=String(e),s=Zr(i,{type:"URL"});if(void 0!==r)if(r instanceof Za)t=ea(r);else if(n=Ja(t={},String(r)))throw TypeError(n);if(n=Ja(s,o,null,t))throw TypeError(n);var l=s.searchParams=new Qr,c=Jr(l);c.updateSearchParams(s.query),c.updateURL=function(){s.query=String(l)||null},a||(i.href=to.call(i),i.origin=no.call(i),i.protocol=io.call(i),i.username=ro.call(i),i.password=ao.call(i),i.host=oo.call(i),i.hostname=so.call(i),i.port=lo.call(i),i.pathname=co.call(i),i.search=uo.call(i),i.searchParams=ho.call(i),i.hash=fo.call(i))},eo=Za.prototype,to=function(){var e=ea(this),t=e.scheme,n=e.username,i=e.password,r=e.host,a=e.port,o=e.path,s=e.query,l=e.fragment,c=t+":";return null!==r?(c+="//",Aa(e)&&(c+=n+(i?":"+i:"")+"@"),c+=va(r),null!==a&&(c+=":"+a)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?o[0]:o.length?"/"+o.join("/"):"",null!==s&&(c+="?"+s),null!==l&&(c+="#"+l),c},no=function(){var e=ea(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&Ea(e)?t+"://"+va(e.host)+(null!==n?":"+n:""):"null"},io=function(){return ea(this).scheme+":"},ro=function(){return ea(this).username},ao=function(){return ea(this).password},oo=function(){var e=ea(this),t=e.host,n=e.port;return null===t?"":null===n?va(t):va(t)+":"+n},so=function(){var e=ea(this).host;return null===e?"":va(e)},lo=function(){var e=ea(this).port;return null===e?"":String(e)},co=function(){var e=ea(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},uo=function(){var e=ea(this).query;return e?"?"+e:""},ho=function(){return ea(this).searchParams},fo=function(){var e=ea(this).fragment;return e?"#"+e:""},po=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(a&&_e(eo,{href:po(to,(function(e){var t=ea(this),n=String(e),i=Ja(t,n);if(i)throw TypeError(i);Jr(t.searchParams).updateSearchParams(t.query)})),origin:po(no),protocol:po(io,(function(e){var t=ea(this);Ja(t,String(e)+":",La)})),username:po(ro,(function(e){var t=ea(this),n=mr(String(e));if(!Pa(t)){t.username="";for(var i=0;i<n.length;i++)t.username+=Ta(n[i],ka)}})),password:po(ao,(function(e){var t=ea(this),n=mr(String(e));if(!Pa(t)){t.password="";for(var i=0;i<n.length;i++)t.password+=Ta(n[i],ka)}})),host:po(oo,(function(e){var t=ea(this);t.cannotBeABaseURL||Ja(t,String(e),Ha)})),hostname:po(so,(function(e){var t=ea(this);t.cannotBeABaseURL||Ja(t,String(e),Ba)})),port:po(lo,(function(e){var t=ea(this);Pa(t)||(""==(e=String(e))?t.port=null:Ja(t,e,Va))})),pathname:po(co,(function(e){var t=ea(this);t.cannotBeABaseURL||(t.path=[],Ja(t,e+"",$a))})),search:po(uo,(function(e){var t=ea(this);""==(e=String(e))?t.query=null:("?"==e.charAt(0)&&(e=e.slice(1)),t.query="",Ja(t,e,Xa)),Jr(t.searchParams).updateSearchParams(t.query)})),searchParams:po(ho),hash:po(fo,(function(e){var t=ea(this);""!=(e=String(e))?("#"==e.charAt(0)&&(e=e.slice(1)),t.fragment="",Ja(t,e,Qa)):t.fragment=null}))}),ee(eo,"toJSON",(function(){return to.call(this)}),{enumerable:!0}),ee(eo,"toString",(function(){return to.call(this)}),{enumerable:!0}),Xr){var mo=Xr.createObjectURL,go=Xr.revokeObjectURL;mo&&ee(Za,"createObjectURL",(function(e){return mo.apply(Xr,arguments)})),go&&ee(Za,"revokeObjectURL",(function(e){return go.apply(Xr,arguments)}))}function vo(e){return(vo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function yo(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function bo(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function wo(e,t,n){return t&&bo(e.prototype,t),n&&bo(e,n),e}function ko(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function To(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function So(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?To(Object(n),!0).forEach((function(t){ko(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):To(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Eo(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Ao(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);i=!0);}catch(e){r=!0,a=e}finally{try{i||null==s.return||s.return()}finally{if(r)throw a}}return n}(e,t)||xo(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Po(e){return function(e){if(Array.isArray(e))return Co(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||xo(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function xo(e,t){if(e){if("string"==typeof e)return Co(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Co(e,t):void 0}}function Co(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}nt(Za,"URL"),Ie({global:!0,forced:!rr,sham:!a},{URL:Za}),function(e){var t=function(){try{return!!Symbol.iterator}catch(e){return!1}}(),n=function(e){var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n},i=function(e){return encodeURIComponent(e).replace(/%20/g,"+")},r=function(e){return decodeURIComponent(String(e).replace(/\+/g," "))};(function(){try{var t=e.URLSearchParams;return"a=1"===new t("?a=1").toString()&&"function"==typeof t.prototype.set}catch(e){return!1}})()||function(){var r=function e(t){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var n=vo(t);if("undefined"===n);else if("string"===n)""!==t&&this._fromString(t);else if(t instanceof e){var i=this;t.forEach((function(e,t){i.append(t,e)}))}else{if(null===t||"object"!==n)throw new TypeError("Unsupported input's type for URLSearchParams");if("[object Array]"===Object.prototype.toString.call(t))for(var r=0;r<t.length;r++){var a=t[r];if("[object Array]"!==Object.prototype.toString.call(a)&&2===a.length)throw new TypeError("Expected [string, any] as entry at index "+r+" of URLSearchParams's input");this.append(a[0],a[1])}else for(var o in t)t.hasOwnProperty(o)&&this.append(o,t[o])}},a=r.prototype;a.append=function(e,t){e in this._entries?this._entries[e].push(String(t)):this._entries[e]=[String(t)]},a.delete=function(e){delete this._entries[e]},a.get=function(e){return e in this._entries?this._entries[e][0]:null},a.getAll=function(e){return e in this._entries?this._entries[e].slice(0):[]},a.has=function(e){return e in this._entries},a.set=function(e,t){this._entries[e]=[String(t)]},a.forEach=function(e,t){var n;for(var i in this._entries)if(this._entries.hasOwnProperty(i)){n=this._entries[i];for(var r=0;r<n.length;r++)e.call(t,n[r],i,this)}},a.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),n(e)},a.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),n(e)},a.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),n(e)},t&&(a[Symbol.iterator]=a.entries),a.toString=function(){var e=[];return this.forEach((function(t,n){e.push(i(n)+"="+i(t))})),e.join("&")},e.URLSearchParams=r}();var a=e.URLSearchParams.prototype;"function"!=typeof a.sort&&(a.sort=function(){var e=this,t=[];this.forEach((function(n,i){t.push([i,n]),e._entries||e.delete(i)})),t.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),e._entries&&(e._entries={});for(var n=0;n<t.length;n++)this.append(t[n][0],t[n][1])}),"function"!=typeof a._fromString&&Object.defineProperty(a,"_fromString",{enumerable:!1,configurable:!1,writable:!1,value:function(e){if(this._entries)this._entries={};else{var t=[];this.forEach((function(e,n){t.push(n)}));for(var n=0;n<t.length;n++)this.delete(t[n])}var i,a=(e=e.replace(/^\?/,"")).split("&");for(n=0;n<a.length;n++)i=a[n].split("="),this.append(r(i[0]),i.length>1?r(i[1]):"")}})}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e),function(e){if(function(){try{var t=new e.URL("b","http://a");return t.pathname="c d","http://a/c%20d"===t.href&&t.searchParams}catch(e){return!1}}()||function(){var t=e.URL,n=function(t,n){"string"!=typeof t&&(t=String(t));var i,r=document;if(n&&(void 0===e.location||n!==e.location.href)){(i=(r=document.implementation.createHTMLDocument("")).createElement("base")).href=n,r.head.appendChild(i);try{if(0!==i.href.indexOf(n))throw new Error(i.href)}catch(e){throw new Error("URL unable to set base "+n+" due to "+e)}}var a=r.createElement("a");if(a.href=t,i&&(r.body.appendChild(a),a.href=a.href),":"===a.protocol||!/:/.test(a.href))throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:a});var o=new e.URLSearchParams(this.search),s=!0,l=!0,c=this;["append","delete","set"].forEach((function(e){var t=o[e];o[e]=function(){t.apply(o,arguments),s&&(l=!1,c.search=o.toString(),l=!0)}})),Object.defineProperty(this,"searchParams",{value:o,enumerable:!0});var u=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==u&&(u=this.search,l&&(s=!1,this.searchParams._fromString(this.search),s=!0))}})},i=n.prototype;["hash","host","hostname","port","protocol"].forEach((function(e){!function(e){Object.defineProperty(i,e,{get:function(){return this._anchorElement[e]},set:function(t){this._anchorElement[e]=t},enumerable:!0})}(e)})),Object.defineProperty(i,"search",{get:function(){return this._anchorElement.search},set:function(e){this._anchorElement.search=e,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(i,{toString:{get:function(){var e=this;return function(){return e.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(e){this._anchorElement.href=e,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(e){this._anchorElement.pathname=e},enumerable:!0},origin:{get:function(){var e={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],t=this._anchorElement.port!=e&&""!==this._anchorElement.port;return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(t?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(e){},enumerable:!0},username:{get:function(){return""},set:function(e){},enumerable:!0}}),n.createObjectURL=function(e){return t.createObjectURL.apply(t,arguments)},n.revokeObjectURL=function(e){return t.revokeObjectURL.apply(t,arguments)},e.URL=n}(),void 0!==e.location&&!("origin"in e.location)){var t=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:t,enumerable:!0})}catch(n){setInterval((function(){e.location.origin=t()}),100)}}}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e);var Oo=Xe("isConcatSpreadable"),Io=zn>=51||!r((function(){var e=[];return e[Oo]=!1,e.concat()[0]!==e})),Lo=Kn("concat"),jo=function(e){if(!g(e))return!1;var t=e[Oo];return void 0!==t?!!t:Ne(e)};Ie({target:"Array",proto:!0,forced:!Io||!Lo},{concat:function(e){var t,n,i,r,a,o=Re(this),s=ot(o,0),l=0;for(t=-1,i=arguments.length;t<i;t++)if(a=-1===t?o:arguments[t],jo(a)){if(l+(r=le(a.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<r;n++,l++)n in a&&Fn(s,l,a[n])}else{if(l>=9007199254740991)throw TypeError("Maximum allowed index exceeded");Fn(s,l++,a)}return s.length=l,s}});var No=ct.filter,Ro=Kn("filter"),Mo=Qt("filter");Ie({target:"Array",proto:!0,forced:!Ro||!Mo},{filter:function(e){return No(this,e,arguments.length>1?arguments[1]:void 0)}});var _o=ct.find,Uo=!0,Do=Qt("find");"find"in[]&&Array(1).find((function(){Uo=!1})),Ie({target:"Array",proto:!0,forced:Uo||!Do},{find:function(e){return _o(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("find");var Fo=Xe("iterator"),qo=!1;try{var Ho=0,Bo={next:function(){return{done:!!Ho++}},return:function(){qo=!0}};Bo[Fo]=function(){return this},Array.from(Bo,(function(){throw 2}))}catch(e){}var Vo=function(e,t){if(!t&&!qo)return!1;var n=!1;try{var i={};i[Fo]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(e){}return n},zo=!Vo((function(e){Array.from(e)}));Ie({target:"Array",stat:!0,forced:zo},{from:mr});var Wo=de.includes,Ko=Qt("indexOf",{ACCESSORS:!0,1:0});Ie({target:"Array",proto:!0,forced:!Ko},{includes:function(e){return Wo(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("includes");var $o=ct.map,Yo=Kn("map"),Go=Qt("map");Ie({target:"Array",proto:!0,forced:!Yo||!Go},{map:function(e){return $o(this,e,arguments.length>1?arguments[1]:void 0)}});var Xo=function(e,t,n){var i,r;return An&&"function"==typeof(i=t.constructor)&&i!==n&&g(r=i.prototype)&&r!==n.prototype&&An(e,r),e},Qo="\t\n\v\f\r \u2028\u2029\ufeff",Jo="["+Qo+"]",Zo=RegExp("^"+Jo+Jo+"*"),es=RegExp(Jo+Jo+"*$"),ts=function(e){return function(t){var n=String(p(t));return 1&e&&(n=n.replace(Zo,"")),2&e&&(n=n.replace(es,"")),n}},ns={start:ts(1),end:ts(2),trim:ts(3)},is=ye.f,rs=A.f,as=C.f,os=ns.trim,ss=i.Number,ls=ss.prototype,cs="Number"==h(Be(ls)),us=function(e){var t,n,i,r,a,o,s,l,c=v(e,!1);if("string"==typeof c&&c.length>2)if(43===(t=(c=os(c)).charCodeAt(0))||45===t){if(88===(n=c.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(c.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+c}for(o=(a=c.slice(2)).length,s=0;s<o;s++)if((l=a.charCodeAt(s))<48||l>r)return NaN;return parseInt(a,i)}return+c};if(Ce("Number",!ss(" 0o1")||!ss("0b1")||ss("+0x1"))){for(var hs,fs=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof fs&&(cs?r((function(){ls.valueOf.call(n)})):"Number"!=h(n))?Xo(new ss(us(t)),n,fs):us(t)},ds=a?is(ss):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),ps=0;ds.length>ps;ps++)b(ss,hs=ds[ps])&&!b(fs,hs)&&as(fs,hs,rs(ss,hs));fs.prototype=ls,ls.constructor=fs,ee(i,"Number",fs)}var ms=r((function(){Me(1)}));Ie({target:"Object",stat:!0,forced:ms},{keys:function(e){return Me(Re(e))}});var gs=function(e){if(qi(e))throw TypeError("The method doesn't accept regular expressions");return e},vs=Xe("match"),ys=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[vs]=!1,"/./"[e](t)}catch(e){}}return!1};Ie({target:"String",proto:!0,forced:!ys("includes")},{includes:function(e){return!!~String(p(this)).indexOf(gs(e),arguments.length>1?arguments[1]:void 0)}});var bs=!r((function(){return Object.isExtensible(Object.preventExtensions({}))})),ws=t((function(e){var t=C.f,n=B("meta"),i=0,r=Object.isExtensible||function(){return!0},a=function(e){t(e,n,{value:{objectID:"O"+ ++i,weakData:{}}})},o=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!g(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!b(e,n)){if(!r(e))return"F";if(!t)return"E";a(e)}return e[n].objectID},getWeakData:function(e,t){if(!b(e,n)){if(!r(e))return!0;if(!t)return!1;a(e)}return e[n].weakData},onFreeze:function(e){return bs&&o.REQUIRED&&r(e)&&!b(e,n)&&a(e),e}};W[n]=!0})),ks=(ws.REQUIRED,ws.fastKey,ws.getWeakData,ws.onFreeze,t((function(e){var t=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,n,i,r,a){var o,s,l,c,u,h,f,d=rt(n,i,r?2:1);if(a)o=e;else{if("function"!=typeof(s=pr(e)))throw TypeError("Target is not iterable");if(fr(s)){for(l=0,c=le(e.length);c>l;l++)if((u=r?d(P(f=e[l])[0],f[1]):d(e[l]))&&u instanceof t)return u;return new t(!1)}o=s.call(e)}for(h=o.next;!(f=h.call(o)).done;)if("object"==typeof(u=cr(o,d,f.value,r))&&u&&u instanceof t)return u;return new t(!1)}).stop=function(e){return new t(!0,e)}}))),Ts=ws.getWeakData,Ss=Z.set,Es=Z.getterFor,As=ct.find,Ps=ct.findIndex,xs=0,Cs=function(e){return e.frozen||(e.frozen=new Os)},Os=function(){this.entries=[]},Is=function(e,t){return As(e.entries,(function(e){return e[0]===t}))};Os.prototype={get:function(e){var t=Is(this,e);if(t)return t[1]},has:function(e){return!!Is(this,e)},set:function(e,t){var n=Is(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=Ps(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}};var Ls={getConstructor:function(e,t,n,i){var r=e((function(e,a){ar(e,r,t),Ss(e,{type:t,id:xs++,frozen:void 0}),null!=a&&ks(a,e[i],e,n)})),a=Es(t),o=function(e,t,n){var i=a(e),r=Ts(P(t),!0);return!0===r?Cs(i).set(t,n):r[i.id]=n,e};return Er(r.prototype,{delete:function(e){var t=a(this);if(!g(e))return!1;var n=Ts(e);return!0===n?Cs(t).delete(e):n&&b(n,t.id)&&delete n[t.id]},has:function(e){var t=a(this);if(!g(e))return!1;var n=Ts(e);return!0===n?Cs(t).has(e):n&&b(n,t.id)}}),Er(r.prototype,n?{get:function(e){var t=a(this);if(g(e)){var n=Ts(e);return!0===n?Cs(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return o(this,e,t)}}:{add:function(e){return o(this,e,!0)}}),r}},js=(t((function(e){var t,n=Z.enforce,a=!i.ActiveXObject&&"ActiveXObject"in i,o=Object.isExtensible,s=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},l=e.exports=function(e,t,n){var a=-1!==e.indexOf("Map"),o=-1!==e.indexOf("Weak"),s=a?"set":"add",l=i[e],c=l&&l.prototype,u=l,h={},f=function(e){var t=c[e];ee(c,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(o&&!g(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return o&&!g(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(o&&!g(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(Ce(e,"function"!=typeof l||!(o||c.forEach&&!r((function(){(new l).entries().next()})))))u=n.getConstructor(t,e,a,s),ws.REQUIRED=!0;else if(Ce(e,!0)){var d=new u,p=d[s](o?{}:-0,1)!=d,m=r((function(){d.has(1)})),v=Vo((function(e){new l(e)})),y=!o&&r((function(){for(var e=new l,t=5;t--;)e[s](t,t);return!e.has(-0)}));v||((u=t((function(t,n){ar(t,u,e);var i=Xo(new l,t,u);return null!=n&&ks(n,i[s],i,a),i}))).prototype=c,c.constructor=u),(m||y)&&(f("delete"),f("has"),a&&f("get")),(y||p)&&f(s),o&&c.clear&&delete c.clear}return h[e]=u,Ie({global:!0,forced:u!=l},h),nt(u,e),o||n.setStrong(u,e,a),u}("WeakMap",s,Ls);if(D&&a){t=Ls.getConstructor(s,"WeakMap",!0),ws.REQUIRED=!0;var c=l.prototype,u=c.delete,h=c.has,f=c.get,d=c.set;Er(c,{delete:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),u.call(this,e)||i.frozen.delete(e)}return u.call(this,e)},has:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),h.call(this,e)||i.frozen.has(e)}return h.call(this,e)},get:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),h.call(this,e)?f.call(this,e):i.frozen.get(e)}return f.call(this,e)},set:function(e,i){if(g(e)&&!o(e)){var r=n(this);r.frozen||(r.frozen=new t),h.call(this,e)?d.call(this,e,i):r.frozen.set(e,i)}else d.call(this,e,i);return this}})}})),ct.every),Ns=$t("every"),Rs=Qt("every");Ie({target:"Array",proto:!0,forced:!Ns||!Rs},{every:function(e){return js(this,e,arguments.length>1?arguments[1]:void 0)}}),Ie({target:"Object",stat:!0,forced:Object.assign!==lr},{assign:lr});var Ms=ns.trim;Ie({target:"String",proto:!0,forced:function(e){return r((function(){return!!Qo[e]()||"
"!="
"[e]()||Qo[e].name!==e}))}("trim")},{trim:function(){return Ms(this)}});var _s=ct.some,Us=$t("some"),Ds=Qt("some");Ie({target:"Array",proto:!0,forced:!Us||!Ds},{some:function(e){return _s(this,e,arguments.length>1?arguments[1]:void 0)}});var Fs="".repeat||function(e){var t=String(p(this)),n="",i=oe(e);if(i<0||i==1/0)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n},qs=1..toFixed,Hs=Math.floor,Bs=function(e,t,n){return 0===t?n:t%2==1?Bs(e,t-1,n*e):Bs(e*e,t/2,n)},Vs=qs&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!r((function(){qs.call({})}));Ie({target:"Number",proto:!0,forced:Vs},{toFixed:function(e){var t,n,i,r,a=function(e){if("number"!=typeof e&&"Number"!=h(e))throw TypeError("Incorrect invocation");return+e}(this),o=oe(e),s=[0,0,0,0,0,0],l="",c="0",u=function(e,t){for(var n=-1,i=t;++n<6;)i+=e*s[n],s[n]=i%1e7,i=Hs(i/1e7)},f=function(e){for(var t=6,n=0;--t>=0;)n+=s[t],s[t]=Hs(n/e),n=n%e*1e7},d=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==s[e]){var n=String(s[e]);t=""===t?n:t+Fs.call("0",7-n.length)+n}return t};if(o<0||o>20)throw RangeError("Incorrect fraction digits");if(a!=a)return"NaN";if(a<=-1e21||a>=1e21)return String(a);if(a<0&&(l="-",a=-a),a>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(a*Bs(2,69,1))-69)<0?a*Bs(2,-t,1):a/Bs(2,t,1),n*=4503599627370496,(t=52-t)>0){for(u(0,n),i=o;i>=7;)u(1e7,0),i-=7;for(u(Bs(10,i,1),0),i=t-1;i>=23;)f(1<<23),i-=23;f(1<<i),u(1,1),f(2),c=d()}else u(0,n),u(1<<-t,0),c=d()+Fs.call("0",o);return c=o>0?l+((r=c.length)<=o?"0."+Fs.call("0",o-r)+c:c.slice(0,r-o)+"."+c.slice(r-o)):l+c}});var zs=l.f,Ws=function(e){return function(t){for(var n,i=m(t),r=Me(i),o=r.length,s=0,l=[];o>s;)n=r[s++],a&&!zs.call(i,n)||l.push(e?[n,i[n]]:i[n]);return l}},Ks={entries:Ws(!0),values:Ws(!1)},$s=Ks.entries;Ie({target:"Object",stat:!0},{entries:function(e){return $s(e)}});var Ys=Ks.values;Ie({target:"Object",stat:!0},{values:function(e){return Ys(e)}}),Ie({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var Gs=A.f,Xs=r((function(){Gs(1)}));function Qs(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Js(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function el(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zs(Object(n),!0).forEach((function(t){Js(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ie({target:"Object",stat:!0,forced:!a||Xs,sham:!a},{getOwnPropertyDescriptor:function(e,t){return Gs(m(e),t)}}),Ie({target:"Object",stat:!0,sham:!a},{getOwnPropertyDescriptors:function(e){for(var t,n,i=m(e),r=A.f,a=we(i),o={},s=0;a.length>s;)void 0!==(n=r(i,t=a[s++]))&&Fn(o,t,n);return o}}),Oi("match",1,(function(e,t,n){return[function(t){var n=p(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,n):new RegExp(t)[e](String(n))},function(e){var i=n(t,e,this);if(i.done)return i.value;var r=P(e),a=String(this);if(!r.global)return ji(r,a);var o=r.unicode;r.lastIndex=0;for(var s,l=[],c=0;null!==(s=ji(r,a));){var u=String(s[0]);l[c]=u,""===u&&(r.lastIndex=Li(a,le(r.lastIndex),o)),c++}return 0===c?null:l}]}));var tl={addCSS:!0,thumbWidth:15,watch:!0};function nl(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}var il=function(e){return null!=e?e.constructor:null},rl=function(e,t){return!!(e&&t&&e instanceof t)},al=function(e){return null==e},ol=function(e){return il(e)===Object},sl=function(e){return il(e)===String},ll=function(e){return Array.isArray(e)},cl=function(e){return rl(e,NodeList)},ul=sl,hl=ll,fl=cl,dl=function(e){return rl(e,Element)},pl=function(e){return rl(e,Event)},ml=function(e){return al(e)||(sl(e)||ll(e)||cl(e))&&!e.length||ol(e)&&!Object.keys(e).length};function gl(e,t){if(1>t){var n=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}var vl,yl,bl,wl=function(){function e(t,n){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),dl(t)?this.element=t:ul(t)&&(this.element=document.querySelector(t)),dl(this.element)&&ml(this.element.rangeTouch)&&(this.config=el({},tl,{},n),this.init())}return function(e,t,n){t&&Qs(e.prototype,t),n&&Qs(e,n)}(e,[{key:"init",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="",this.element.style.webKitUserSelect="",this.element.style.touchAction=""),this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(e){var t=this,n=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach((function(e){t.element[n](e,(function(e){return t.set(e)}),!1)}))}},{key:"get",value:function(t){if(!e.enabled||!pl(t))return null;var n,i=t.target,r=t.changedTouches[0],a=parseFloat(i.getAttribute("min"))||0,o=parseFloat(i.getAttribute("max"))||100,s=parseFloat(i.getAttribute("step"))||1,l=i.getBoundingClientRect(),c=100/l.width*(this.config.thumbWidth/2)/100;return 0>(n=100/l.width*(r.clientX-l.left))?n=0:100<n&&(n=100),50>n?n-=(100-2*n)*c:50<n&&(n+=2*(n-50)*c),a+gl(n/100*(o-a),s)}},{key:"set",value:function(t){e.enabled&&pl(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var n=new Event(t,{bubbles:!0});e.dispatchEvent(n)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=null;if(ml(t)||ul(t)?i=Array.from(document.querySelectorAll(ul(t)?t:'input[type="range"]')):dl(t)?i=[t]:fl(t)?i=Array.from(t):hl(t)&&(i=t.filter(dl)),ml(i))return null;var r=el({},tl,{},n);if(ul(t)&&r.watch){var a=new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){dl(n)&&nl(n,t)&&new e(n,r)}))}))}));a.observe(document.body,{childList:!0,subtree:!0})}return i.map((function(t){return new e(t,n)}))}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}(),kl=i.Promise,Tl=Xe("species"),Sl=function(e){var t=ie(e),n=C.f;a&&t&&!t[Tl]&&n(t,Tl,{configurable:!0,get:function(){return this}})},El=/(iphone|ipod|ipad).*applewebkit/i.test(qn),Al=i.location,Pl=i.setImmediate,xl=i.clearImmediate,Cl=i.process,Ol=i.MessageChannel,Il=i.Dispatch,Ll=0,jl={},Nl=function(e){if(jl.hasOwnProperty(e)){var t=jl[e];delete jl[e],t()}},Rl=function(e){return function(){Nl(e)}},Ml=function(e){Nl(e.data)},_l=function(e){i.postMessage(e+"",Al.protocol+"//"+Al.host)};Pl&&xl||(Pl=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return jl[++Ll]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},vl(Ll),Ll},xl=function(e){delete jl[e]},"process"==h(Cl)?vl=function(e){Cl.nextTick(Rl(e))}:Il&&Il.now?vl=function(e){Il.now(Rl(e))}:Ol&&!El?(bl=(yl=new Ol).port2,yl.port1.onmessage=Ml,vl=rt(bl.postMessage,bl,1)):!i.addEventListener||"function"!=typeof postMessage||i.importScripts||r(_l)||"file:"===Al.protocol?vl="onreadystatechange"in T("script")?function(e){Ue.appendChild(T("script")).onreadystatechange=function(){Ue.removeChild(this),Nl(e)}}:function(e){setTimeout(Rl(e),0)}:(vl=_l,i.addEventListener("message",Ml,!1)));var Ul,Dl,Fl,ql,Hl,Bl,Vl,zl,Wl={set:Pl,clear:xl},Kl=A.f,$l=Wl.set,Yl=i.MutationObserver||i.WebKitMutationObserver,Gl=i.process,Xl=i.Promise,Ql="process"==h(Gl),Jl=Kl(i,"queueMicrotask"),Zl=Jl&&Jl.value;Zl||(Ul=function(){var e,t;for(Ql&&(e=Gl.domain)&&e.exit();Dl;){t=Dl.fn,Dl=Dl.next;try{t()}catch(e){throw Dl?ql():Fl=void 0,e}}Fl=void 0,e&&e.enter()},Ql?ql=function(){Gl.nextTick(Ul)}:Yl&&!El?(Hl=!0,Bl=document.createTextNode(""),new Yl(Ul).observe(Bl,{characterData:!0}),ql=function(){Bl.data=Hl=!Hl}):Xl&&Xl.resolve?(Vl=Xl.resolve(void 0),zl=Vl.then,ql=function(){zl.call(Vl,Ul)}):ql=function(){$l.call(i,Ul)});var ec,tc,nc,ic,rc=Zl||function(e){var t={fn:e,next:void 0};Fl&&(Fl.next=t),Dl||(Dl=t,ql()),Fl=t},ac=function(e){var t,n;this.promise=new e((function(e,i){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=i})),this.resolve=it(t),this.reject=it(n)},oc={f:function(e){return new ac(e)}},sc=function(e,t){if(P(e),g(t)&&t.constructor===e)return t;var n=oc.f(e);return(0,n.resolve)(t),n.promise},lc=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},cc=Wl.set,uc=Xe("species"),hc="Promise",fc=Z.get,dc=Z.set,pc=Z.getterFor(hc),mc=kl,gc=i.TypeError,vc=i.document,yc=i.process,bc=ie("fetch"),wc=oc.f,kc=wc,Tc="process"==h(yc),Sc=!!(vc&&vc.createEvent&&i.dispatchEvent),Ec=Ce(hc,(function(){if(!(_(mc)!==String(mc))){if(66===zn)return!0;if(!Tc&&"function"!=typeof PromiseRejectionEvent)return!0}if(zn>=51&&/native code/.test(mc))return!1;var e=mc.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[uc]=t,!(e.then((function(){}))instanceof t)})),Ac=Ec||!Vo((function(e){mc.all(e).catch((function(){}))})),Pc=function(e){var t;return!(!g(e)||"function"!=typeof(t=e.then))&&t},xc=function(e,t,n){if(!t.notified){t.notified=!0;var i=t.reactions;rc((function(){for(var r=t.value,a=1==t.state,o=0;i.length>o;){var s,l,c,u=i[o++],h=a?u.ok:u.fail,f=u.resolve,d=u.reject,p=u.domain;try{h?(a||(2===t.rejection&&Lc(e,t),t.rejection=1),!0===h?s=r:(p&&p.enter(),s=h(r),p&&(p.exit(),c=!0)),s===u.promise?d(gc("Promise-chain cycle")):(l=Pc(s))?l.call(s,f,d):f(s)):d(r)}catch(e){p&&!c&&p.exit(),d(e)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&Oc(e,t)}))}},Cc=function(e,t,n){var r,a;Sc?((r=vc.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),i.dispatchEvent(r)):r={promise:t,reason:n},(a=i["on"+e])?a(r):"unhandledrejection"===e&&function(e,t){var n=i.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}("Unhandled promise rejection",n)},Oc=function(e,t){cc.call(i,(function(){var n,i=t.value;if(Ic(t)&&(n=lc((function(){Tc?yc.emit("unhandledRejection",i,e):Cc("unhandledrejection",e,i)})),t.rejection=Tc||Ic(t)?2:1,n.error))throw n.value}))},Ic=function(e){return 1!==e.rejection&&!e.parent},Lc=function(e,t){cc.call(i,(function(){Tc?yc.emit("rejectionHandled",e):Cc("rejectionhandled",e,t.value)}))},jc=function(e,t,n,i){return function(r){e(t,n,r,i)}},Nc=function(e,t,n,i){t.done||(t.done=!0,i&&(t=i),t.value=n,t.state=2,xc(e,t,!0))},Rc=function(e,t,n,i){if(!t.done){t.done=!0,i&&(t=i);try{if(e===n)throw gc("Promise can't be resolved itself");var r=Pc(n);r?rc((function(){var i={done:!1};try{r.call(n,jc(Rc,e,i,t),jc(Nc,e,i,t))}catch(n){Nc(e,i,n,t)}})):(t.value=n,t.state=1,xc(e,t,!1))}catch(n){Nc(e,{done:!1},n,t)}}};Ec&&(mc=function(e){ar(this,mc,hc),it(e),ec.call(this);var t=fc(this);try{e(jc(Rc,this,t),jc(Nc,this,t))}catch(e){Nc(this,t,e)}},(ec=function(e){dc(this,{type:hc,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=Er(mc.prototype,{then:function(e,t){var n=pc(this),i=wc(Bi(this,mc));return i.ok="function"!=typeof e||e,i.fail="function"==typeof t&&t,i.domain=Tc?yc.domain:void 0,n.parent=!0,n.reactions.push(i),0!=n.state&&xc(this,n,!1),i.promise},catch:function(e){return this.then(void 0,e)}}),tc=function(){var e=new ec,t=fc(e);this.promise=e,this.resolve=jc(Rc,e,t),this.reject=jc(Nc,e,t)},oc.f=wc=function(e){return e===mc||e===nc?new tc(e):kc(e)},"function"==typeof kl&&(ic=kl.prototype.then,ee(kl.prototype,"then",(function(e,t){var n=this;return new mc((function(e,t){ic.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof bc&&Ie({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return sc(mc,bc.apply(i,arguments))}}))),Ie({global:!0,wrap:!0,forced:Ec},{Promise:mc}),nt(mc,hc,!1),Sl(hc),nc=ie(hc),Ie({target:hc,stat:!0,forced:Ec},{reject:function(e){var t=wc(this);return t.reject.call(void 0,e),t.promise}}),Ie({target:hc,stat:!0,forced:Ec},{resolve:function(e){return sc(this,e)}}),Ie({target:hc,stat:!0,forced:Ac},{all:function(e){var t=this,n=wc(t),i=n.resolve,r=n.reject,a=lc((function(){var n=it(t.resolve),a=[],o=0,s=1;ks(e,(function(e){var l=o++,c=!1;a.push(void 0),s++,n.call(t,e).then((function(e){c||(c=!0,a[l]=e,--s||i(a))}),r)})),--s||i(a)}));return a.error&&r(a.value),n.promise},race:function(e){var t=this,n=wc(t),i=n.reject,r=lc((function(){var r=it(t.resolve);ks(e,(function(e){r.call(t,e).then(n.resolve,i)}))}));return r.error&&i(r.value),n.promise}});var Mc,_c=A.f,Uc="".startsWith,Dc=Math.min,Fc=ys("startsWith"),qc=!(Fc||(Mc=_c(String.prototype,"startsWith"),!Mc||Mc.writable));Ie({target:"String",proto:!0,forced:!qc&&!Fc},{startsWith:function(e){var t=String(p(this));gs(e);var n=le(Dc(arguments.length>1?arguments[1]:void 0,t.length)),i=String(e);return Uc?Uc.call(t,i,n):t.slice(n,n+i.length)===i}});var Hc,Bc,Vc,zc=function(e){return null!=e?e.constructor:null},Wc=function(e,t){return Boolean(e&&t&&e instanceof t)},Kc=function(e){return null==e},$c=function(e){return zc(e)===Object},Yc=function(e){return zc(e)===String},Gc=function(e){return zc(e)===Function},Xc=function(e){return Array.isArray(e)},Qc=function(e){return Wc(e,NodeList)},Jc=function(e){return Kc(e)||(Yc(e)||Xc(e)||Qc(e))&&!e.length||$c(e)&&!Object.keys(e).length},Zc=Kc,eu=$c,tu=function(e){return zc(e)===Number&&!Number.isNaN(e)},nu=Yc,iu=function(e){return zc(e)===Boolean},ru=Gc,au=Xc,ou=Qc,su=function(e){return Wc(e,Element)},lu=function(e){return Wc(e,Event)},cu=function(e){return Wc(e,KeyboardEvent)},uu=function(e){return Wc(e,TextTrack)||!Kc(e)&&Yc(e.kind)},hu=function(e){return Wc(e,Promise)&&Gc(e.then)},fu=function(e){if(Wc(e,window.URL))return!0;if(!Yc(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!Jc(new URL(t).hostname)}catch(e){return!1}},du=Jc,pu=(Hc=document.createElement("span"),Bc={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},Vc=Object.keys(Bc).find((function(e){return void 0!==Hc.style[e]})),!!nu(Vc)&&Bc[Vc]);function mu(e,t){setTimeout((function(){try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}var gu={isIE:
|
2 |
/* @cc_on!@ */
|
3 |
!!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},vu=function(e){return function(t,n,i,r){it(n);var a=Re(t),o=d(a),s=le(a.length),l=e?s-1:0,c=e?-1:1;if(i<2)for(;;){if(l in o){r=o[l],l+=c;break}if(l+=c,e?l<0:s<=l)throw TypeError("Reduce of empty array with no initial value")}for(;e?l>=0:s>l;l+=c)l in o&&(r=n(r,o[l],l,a));return r}},yu={left:vu(!1),right:vu(!0)}.left,bu=$t("reduce"),wu=Qt("reduce",{1:0});function ku(e,t){return t.split(".").reduce((function(e,t){return e&&e[t]}),e)}function Tu(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];if(!n.length)return e;var r=n.shift();return eu(r)?(Object.keys(r).forEach((function(t){eu(r[t])?(Object.keys(e).includes(t)||Object.assign(e,ko({},t,{})),Tu(e[t],r[t])):Object.assign(e,ko({},t,r[t]))})),Tu.apply(void 0,[e].concat(n))):e}function Su(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach((function(e,n){var i=n>0?t.cloneNode(!0):t,r=e.parentNode,a=e.nextSibling;i.appendChild(e),a?r.insertBefore(i,a):r.appendChild(i)}))}function Eu(e,t){su(e)&&!du(t)&&Object.entries(t).filter((function(e){var t=Ao(e,2)[1];return!Zc(t)})).forEach((function(t){var n=Ao(t,2),i=n[0],r=n[1];return e.setAttribute(i,r)}))}function Au(e,t,n){var i=document.createElement(e);return eu(t)&&Eu(i,t),nu(n)&&(i.innerText=n),i}function Pu(e,t,n,i){su(t)&&t.appendChild(Au(e,n,i))}function xu(e){ou(e)||au(e)?Array.from(e).forEach(xu):su(e)&&su(e.parentNode)&&e.parentNode.removeChild(e)}function Cu(e){if(su(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function Ou(e,t){return su(t)&&su(t.parentNode)&&su(e)?(t.parentNode.replaceChild(e,t),e):null}function Iu(e,t){if(!nu(e)||du(e))return{};var n={},i=Tu({},t);return e.split(",").forEach((function(e){var t=e.trim(),r=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),o=Ao(a,1)[0],s=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":nu(i.class)?n.class="".concat(i.class," ").concat(r):n.class=r;break;case"#":n.id=t.replace("#","");break;case"[":n[o]=s}})),Tu(i,n)}function Lu(e,t){if(su(e)){var n=t;iu(n)||(n=!e.hidden),e.hidden=n}}function ju(e,t,n){if(ou(e))return Array.from(e).map((function(e){return ju(e,t,n)}));if(su(e)){var i="toggle";return void 0!==n&&(i=n?"add":"remove"),e.classList[i](t),e.classList.contains(t)}return!1}function Nu(e,t){return su(e)&&e.classList.contains(t)}function Ru(e,t){var n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function Mu(e){return this.elements.container.querySelectorAll(e)}function _u(e){return this.elements.container.querySelector(e)}function Uu(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];su(e)&&(e.focus({preventScroll:!0}),t&&ju(e,this.config.classNames.tabFocus))}Ie({target:"Array",proto:!0,forced:!bu||!wu},{reduce:function(e){return yu(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var Du,Fu={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},qu={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var i=gu.isIPhone&&n&&qu.playsinline,r=qu[e]||"html5"!==t;return{api:r,ui:r&&qu.rangeInput&&("video"!==e||!gu.isIPhone||i)}},pip:!(gu.isIPhone||!ru(Au("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||Au("video").disablePictureInPicture)),airplay:ru(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(du(e))return!1;var t=Ao(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(Fu).includes(n)&&(n+='; codecs="'.concat(Fu[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(Du=document.createElement("input"),Du.type="range","range"===Du.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==pu,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},Hu=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function Bu(e,t,n){var i=this,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!du(t)&&ru(n)){var s=t.split(" "),l=o;Hu&&(l={passive:a,capture:o}),s.forEach((function(t){i&&i.eventListeners&&r&&i.eventListeners.push({element:e,type:t,callback:n,options:l}),e[r?"addEventListener":"removeEventListener"](t,n,l)}))}}function Vu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Bu.call(this,e,t,n,!0,i,r)}function zu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Bu.call(this,e,t,n,!1,i,r)}function Wu(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=function o(){zu(e,n,o,r,a);for(var s=arguments.length,l=new Array(s),c=0;c<s;c++)l[c]=arguments[c];i.apply(t,l)};Bu.call(this,e,n,o,!0,r,a)}function Ku(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(su(e)&&!du(t)){var r=new CustomEvent(t,{bubbles:n,detail:So(So({},i),{},{plyr:this})});e.dispatchEvent(r)}}function $u(){this&&this.eventListeners&&(this.eventListeners.forEach((function(e){var t=e.element,n=e.type,i=e.callback,r=e.options;t.removeEventListener(n,i,r)})),this.eventListeners=[])}function Yu(){var e=this;return new Promise((function(t){return e.ready?setTimeout(t,0):Vu.call(e,e.elements.container,"ready",t)})).then((function(){}))}function Gu(e){hu(e)&&e.then(null,(function(){}))}function Xu(e){return!!(au(e)||nu(e)&&e.includes(":"))&&(au(e)?e:e.split(":")).map(Number).every(tu)}function Qu(e){if(!au(e)||!e.every(tu))return null;var t=Ao(e,2),n=t[0],i=t[1],r=function e(t,n){return 0===n?t:e(n,t%n)}(n,i);return[n/r,i/r]}function Ju(e){var t=function(e){return Xu(e)?e.split(":").map(Number):null},n=t(e);if(null===n&&(n=t(this.config.ratio)),null===n&&!du(this.embed)&&au(this.embed.ratio)&&(n=this.embed.ratio),null===n&&this.isHTML5){var i=this.media;n=Qu([i.videoWidth,i.videoHeight])}return n}function Zu(e){if(!this.isVideo)return{};var t=this.elements.wrapper,n=Ju.call(this,e),i=Ao(au(n)?n:[0,0],2),r=100/i[0]*i[1];if(t.style.paddingBottom="".concat(r,"%"),this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){var a=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),o=(a-r)/(a/50);this.media.style.transform="translateY(-".concat(o,"%)")}else this.isHTML5&&t.classList.toggle(this.config.classNames.videoFixedRatio,null!==n);return{padding:r,ratio:n}}var eh={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter((function(t){var n=t.getAttribute("type");return!!du(n)||qu.mime.call(e,n)})):[]},getQualityOptions:function(){return this.config.quality.forced?this.config.quality.options:eh.getSources.call(this).map((function(e){return Number(e.getAttribute("size"))})).filter(Boolean)},setup:function(){if(this.isHTML5){var e=this;e.options.speed=e.config.speed.options,du(this.config.ratio)||Zu.call(e),Object.defineProperty(e.media,"quality",{get:function(){var t=eh.getSources.call(e).find((function(t){return t.getAttribute("src")===e.source}));return t&&Number(t.getAttribute("size"))},set:function(t){if(e.quality!==t){if(e.config.quality.forced&&ru(e.config.quality.onChange))e.config.quality.onChange(t);else{var n=eh.getSources.call(e).find((function(e){return Number(e.getAttribute("size"))===t}));if(!n)return;var i=e.media,r=i.currentTime,a=i.paused,o=i.preload,s=i.readyState,l=i.playbackRate;e.media.src=n.getAttribute("src"),("none"!==o||s)&&(e.once("loadedmetadata",(function(){e.speed=l,e.currentTime=r,a||Gu(e.play())})),e.media.load())}Ku.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&(xu(eh.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function th(e){return au(e)?e.filter((function(t,n){return e.indexOf(t)===n})):e}var nh=C.f,ih=ye.f,rh=Z.set,ah=Xe("match"),oh=i.RegExp,sh=oh.prototype,lh=/a/g,ch=/a/g,uh=new oh(lh)!==lh,hh=oi.UNSUPPORTED_Y;if(a&&Ce("RegExp",!uh||hh||r((function(){return ch[ah]=!1,oh(lh)!=lh||oh(ch)==ch||"/a/i"!=oh(lh,"i")})))){for(var fh=function(e,t){var n,i=this instanceof fh,r=qi(e),a=void 0===t;if(!i&&r&&e.constructor===fh&&a)return e;uh?r&&!a&&(e=e.source):e instanceof fh&&(a&&(t=ri.call(e)),e=e.source),hh&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var o=Xo(uh?new oh(e,t):oh(e,t),i?this:sh,fh);return hh&&n&&rh(o,{sticky:n}),o},dh=function(e){e in fh||nh(fh,e,{configurable:!0,get:function(){return oh[e]},set:function(t){oh[e]=t}})},ph=ih(oh),mh=0;ph.length>mh;)dh(ph[mh++]);sh.constructor=fh,fh.prototype=sh,ee(i,"RegExp",fh)}function gh(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return du(e)?e:e.toString().replace(/{(\d+)}/g,(function(e,t){return n[t].toString()}))}Sl("RegExp");var vh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),n.toString())},yh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.toString().replace(/\w\S*/g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()}))};function bh(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return t=vh(t,"-"," "),t=vh(t,"_"," "),t=yh(t),vh(t," ","")}function wh(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}var kh={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},Th=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(du(e)||du(t))return"";var n=ku(t.i18n,e);if(du(n))return Object.keys(kh).includes(e)?kh[e]:"";var i={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(i).forEach((function(e){var t=Ao(e,2),i=t[0],r=t[1];n=vh(n,i,r)})),n},Sh=function(){function e(t){yo(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return wo(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(du(n))return null;var i=JSON.parse(n);return nu(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&&eu(t)){var n=this.get();du(n)&&(n={}),Tu(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function Eh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise((function(n,i){try{var r=new XMLHttpRequest;if(!("withCredentials"in r))return;r.addEventListener("load",(function(){if("text"===t)try{n(JSON.parse(r.responseText))}catch(e){n(r.responseText)}else n(r.response)})),r.addEventListener("error",(function(){throw new Error(r.status)})),r.open("GET",e,!0),r.responseType=t,r.send()}catch(e){i(e)}}))}function Ah(e,t){if(nu(e)){var n=nu(t),i=function(){return null!==document.getElementById(t)},r=function(e,t){e.innerHTML=t,n&&i()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!i()){var a=Sh.supported,o=document.createElement("div");if(o.setAttribute("hidden",""),n&&o.setAttribute("id",t),a){var s=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==s){var l=JSON.parse(s);r(o,l.content)}}Eh(e).then((function(e){du(e)||(a&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),r(o,e))})).catch((function(){}))}}}var Ph=Math.ceil,xh=Math.floor;Ie({target:"Math",stat:!0},{trunc:function(e){return(e>0?xh:Ph)(e)}});var Ch=function(e){return Math.trunc(e/60/60%60,10)},Oh=function(e){return Math.trunc(e/60%60,10)},Ih=function(e){return Math.trunc(e%60,10)};function Lh(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!tu(e))return Lh(void 0,t,n);var i=function(e){return"0".concat(e).slice(-2)},r=Ch(e),a=Oh(e),o=Ih(e);return r=t||r>0?"".concat(r,":"):"","".concat(n&&e>0?"-":"").concat(r).concat(i(a),":").concat(i(o))}var jh={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||gu.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=_u.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:Mu.call(this,this.config.selectors.buttons.play),pause:_u.call(this,this.config.selectors.buttons.pause),restart:_u.call(this,this.config.selectors.buttons.restart),rewind:_u.call(this,this.config.selectors.buttons.rewind),fastForward:_u.call(this,this.config.selectors.buttons.fastForward),mute:_u.call(this,this.config.selectors.buttons.mute),pip:_u.call(this,this.config.selectors.buttons.pip),airplay:_u.call(this,this.config.selectors.buttons.airplay),settings:_u.call(this,this.config.selectors.buttons.settings),captions:_u.call(this,this.config.selectors.buttons.captions),fullscreen:_u.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=_u.call(this,this.config.selectors.progress),this.elements.inputs={seek:_u.call(this,this.config.selectors.inputs.seek),volume:_u.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:_u.call(this,this.config.selectors.display.buffer),currentTime:_u.call(this,this.config.selectors.display.currentTime),duration:_u.call(this,this.config.selectors.display.duration)},su(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=jh.getIconUrl.call(this),i="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),r=document.createElementNS("http://www.w3.org/2000/svg","svg");Eu(r,Tu(t,{"aria-hidden":"true",focusable:"false"}));var a=document.createElementNS("http://www.w3.org/2000/svg","use"),o="".concat(i,"-").concat(e);return"href"in a&&a.setAttributeNS("http://www.w3.org/1999/xlink","href",o),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o),r.appendChild(a),r},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Th(e,this.config),i=So(So({},t),{},{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")});return Au("span",i,n)},createBadge:function(e){if(du(e))return null;var t=Au("span",{class:this.config.classNames.menu.value});return t.appendChild(Au("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=this,i=Tu({},t),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return(t=bh(t)).charAt(0).toLowerCase()+t.slice(1)}(e),a={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach((function(e){Object.keys(i).includes(e)&&(a[e]=i[e],delete i[e])})),"button"!==a.element||Object.keys(i).includes("type")||(i.type="button"),Object.keys(i).includes("class")?i.class.split(" ").some((function(e){return e===n.config.classNames.control}))||Tu(i,{class:"".concat(i.class," ").concat(this.config.classNames.control)}):i.class=this.config.classNames.control,e){case"play":a.toggle=!0,a.label="play",a.labelPressed="pause",a.icon="play",a.iconPressed="pause";break;case"mute":a.toggle=!0,a.label="mute",a.labelPressed="unmute",a.icon="volume",a.iconPressed="muted";break;case"captions":a.toggle=!0,a.label="enableCaptions",a.labelPressed="disableCaptions",a.icon="captions-off",a.iconPressed="captions-on";break;case"fullscreen":a.toggle=!0,a.label="enterFullscreen",a.labelPressed="exitFullscreen",a.icon="enter-fullscreen",a.iconPressed="exit-fullscreen";break;case"play-large":i.class+=" ".concat(this.config.classNames.control,"--overlaid"),r="play",a.label="play",a.icon="play";break;default:du(a.label)&&(a.label=r),du(a.icon)&&(a.icon=e)}var o=Au(a.element);return a.toggle?(o.appendChild(jh.createIcon.call(this,a.iconPressed,{class:"icon--pressed"})),o.appendChild(jh.createIcon.call(this,a.icon,{class:"icon--not-pressed"})),o.appendChild(jh.createLabel.call(this,a.labelPressed,{class:"label--pressed"})),o.appendChild(jh.createLabel.call(this,a.label,{class:"label--not-pressed"}))):(o.appendChild(jh.createIcon.call(this,a.icon)),o.appendChild(jh.createLabel.call(this,a.label))),Tu(i,Iu(this.config.selectors.buttons[r],i)),Eu(o,i),"play"===r?(au(this.elements.buttons[r])||(this.elements.buttons[r]=[]),this.elements.buttons[r].push(o)):this.elements.buttons[r]=o,o},createRange:function(e,t){var n=Au("input",Tu(Iu(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":Th(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,jh.updateRangeFill.call(this,n),wl.setup(n),n},createProgress:function(e,t){var n=Au("progress",Tu(Iu(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(Au("span",null,"0"));var i={played:"played",buffer:"buffered"}[e],r=i?Th(i,this.config):"";n.innerText="% ".concat(r.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e,t){var n=Iu(this.config.selectors.display[e],t),i=Au("div",Tu(n,{class:"".concat(n.class?n.class:""," ").concat(this.config.classNames.display.time," ").trim(),"aria-label":Th(e,this.config)}),"00:00");return this.elements.display[e]=i,i},bindMenuItemShortcuts:function(e,t){var n=this;Vu.call(this,e,"keydown keyup",(function(i){if([32,38,39,40].includes(i.which)&&(i.preventDefault(),i.stopPropagation(),"keydown"!==i.type)){var r,a=Ru(e,'[role="menuitemradio"]');if(!a&&[32,39].includes(i.which))jh.showMenuPanel.call(n,t,!0);else 32!==i.which&&(40===i.which||a&&39===i.which?(r=e.nextElementSibling,su(r)||(r=e.parentNode.firstElementChild)):(r=e.previousElementSibling,su(r)||(r=e.parentNode.lastElementChild)),Uu.call(n,r,!0))}}),!1),Vu.call(this,e,"keyup",(function(e){13===e.which&&jh.focusFirstMenuItem.call(n,null,!0)}))},createMenuItem:function(e){var t=this,n=e.value,i=e.list,r=e.type,a=e.title,o=e.badge,s=void 0===o?null:o,l=e.checked,c=void 0!==l&&l,u=Iu(this.config.selectors.inputs[r]),h=Au("button",Tu(u,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(u.class?u.class:"").trim(),"aria-checked":c,value:n})),f=Au("span");f.innerHTML=a,su(s)&&f.appendChild(s),h.appendChild(f),Object.defineProperty(h,"checked",{enumerable:!0,get:function(){return"true"===h.getAttribute("aria-checked")},set:function(e){e&&Array.from(h.parentNode.children).filter((function(e){return Ru(e,'[role="menuitemradio"]')})).forEach((function(e){return e.setAttribute("aria-checked","false")})),h.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(h,"click keyup",(function(e){if(!cu(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),h.checked=!0,r){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}jh.showMenuPanel.call(t,"home",cu(e))}}),r,!1),jh.bindMenuItemShortcuts.call(this,h,r),i.appendChild(h)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!tu(e))return e;var n=Ch(this.duration)>0;return Lh(e,n,t)},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];su(e)&&tu(t)&&(e.innerText=jh.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(su(this.elements.inputs.volume)&&jh.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),su(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;su(e)&&(e.value=t,jh.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&&lu(e)){var n=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=function(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}(this.currentTime,this.duration),"timeupdate"===e.type&&jh.setRange.call(this,this.elements.inputs.seek,n);break;case"playing":case"progress":!function(e,n){var i=tu(n)?n:0,r=su(e)?e:t.elements.display.buffer;if(su(r)){r.value=i;var a=r.getElementsByTagName("span")[0];su(a)&&(a.childNodes[0].nodeValue=i)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=lu(e)?e.target:e;if(su(t)&&"range"===t.getAttribute("type")){if(Ru(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=jh.formatTime(this.currentTime),i=jh.formatTime(this.duration),r=Th("seekLabel",this.config);t.setAttribute("aria-valuetext",r.replace("{currentTime}",n).replace("{duration}",i))}else if(Ru(t,this.config.selectors.inputs.volume)){var a=100*t.value;t.setAttribute("aria-valuenow",a),t.setAttribute("aria-valuetext","".concat(a.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);gu.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&&su(this.elements.inputs.seek)&&su(this.elements.display.seekTooltip)&&0!==this.duration){var n="".concat(this.config.classNames.tooltip,"--visible"),i=function(e){return ju(t.elements.display.seekTooltip,n,e)};if(this.touch)i(!1);else{var r=0,a=this.elements.progress.getBoundingClientRect();if(lu(e))r=100/a.width*(e.pageX-a.left);else{if(!Nu(this.elements.display.seekTooltip,n))return;r=parseFloat(this.elements.display.seekTooltip.style.left,10)}r<0?r=0:r>100&&(r=100),jh.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*r),this.elements.display.seekTooltip.style.left="".concat(r,"%"),lu(e)&&["mouseenter","mouseleave"].includes(e.type)&&i("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!su(this.elements.display.duration)&&this.config.invertTime;jh.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||jh.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return Lu(this.elements.display.currentTime,!0),void Lu(this.elements.progress,!0);su(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=su(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&jh.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&jh.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),jh.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){Lu(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var i=this.elements.settings.panels[e],r=null,a=t;if("captions"===e)r=this.currentTrack;else{if(r=du(n)?this[e]:n,du(r)&&(r=this.config[e].default),!du(this.options[e])&&!this.options[e].includes(r))return void this.debug.warn("Unsupported value of '".concat(r,"' for ").concat(e));if(!this.config[e].options.includes(r))return void this.debug.warn("Disabled value of '".concat(r,"' for ").concat(e))}if(su(a)||(a=i&&i.querySelector('[role="menu"]')),su(a)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=jh.getLabel.call(this,e,r);var o=a&&a.querySelector('[value="'.concat(r,'"]'));su(o)&&(o.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?Th("normal",this.config):"".concat(t,"×");case"quality":if(tu(t)){var n=Th("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return yh(t);case"captions":return Mh.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(su(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');au(e)&&(this.options.quality=th(e).filter((function(e){return t.config.quality.options.includes(e)})));var i=!du(this.options.quality)&&this.options.quality.length>1;if(jh.toggleMenuButton.call(this,"quality",i),Cu(n),jh.checkMenu.call(this),i){var r=function(e){var n=Th("qualityBadge.".concat(e),t.config);return n.length?jh.createBadge.call(t,n):null};this.options.quality.sort((function(e,n){var i=t.config.quality.options;return i.indexOf(e)>i.indexOf(n)?1:-1})).forEach((function(e){jh.createMenuItem.call(t,{value:e,list:n,type:"quality",title:jh.getLabel.call(t,"quality",e),badge:r(e)})})),jh.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(su(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=Mh.getTracks.call(this),i=Boolean(n.length);if(jh.toggleMenuButton.call(this,"captions",i),Cu(t),jh.checkMenu.call(this),i){var r=n.map((function(n,i){return{value:i,checked:e.captions.toggled&&e.currentTrack===i,title:Mh.getLabel.call(e,n),badge:n.language&&jh.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}}));r.unshift({value:-1,checked:!this.captions.toggled,title:Th("disabled",this.config),list:t,type:"language"}),r.forEach(jh.createMenuItem.bind(this)),jh.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(){var e=this;if(su(this.elements.settings.panels.speed)){var t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter((function(t){return t>=e.minimumSpeed&&t<=e.maximumSpeed}));var n=!du(this.options.speed)&&this.options.speed.length>1;jh.toggleMenuButton.call(this,"speed",n),Cu(t),jh.checkMenu.call(this),n&&(this.options.speed.forEach((function(n){jh.createMenuItem.call(e,{value:n,list:t,type:"speed",title:jh.getLabel.call(e,"speed",n)})})),jh.updateSetting.call(this,"speed",t))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!du(e)&&Object.values(e).some((function(e){return!e.hidden}));Lu(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;su(n)||(n=Object.values(this.elements.settings.panels).find((function(e){return!e.hidden})));var i=n.querySelector('[role^="menuitem"]');Uu.call(this,i,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(su(t)&&su(n)){var i=t.hidden,r=i;if(iu(e))r=e;else if(cu(e)&&27===e.which)r=!1;else if(lu(e)){var a=ru(e.composedPath)?e.composedPath()[0]:e.target,o=t.contains(a);if(o||!o&&e.target!==n&&r)return}n.setAttribute("aria-expanded",r),Lu(t,!r),ju(this.elements.container,this.config.classNames.menu.open,r),r&&cu(e)?jh.focusFirstMenuItem.call(this,null,!0):r||i||Uu.call(this,n,cu(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,i=t.scrollHeight;return xu(t),{width:n,height:i}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.elements.container.querySelector("#plyr-settings-".concat(this.id,"-").concat(t));if(su(i)){var r=i.parentNode,a=Array.from(r.children).find((function(e){return!e.hidden}));if(qu.transitions&&!qu.reducedMotion){r.style.width="".concat(a.scrollWidth,"px"),r.style.height="".concat(a.scrollHeight,"px");var o=jh.getMenuSize.call(this,i),s=function t(n){n.target===r&&["width","height"].includes(n.propertyName)&&(r.style.width="",r.style.height="",zu.call(e,r,pu,t))};Vu.call(this,r,pu,s),r.style.width="".concat(o.width,"px"),r.style.height="".concat(o.height,"px")}Lu(a,!0),Lu(i,!1),jh.focusFirstMenuItem.call(this,i,n)}},setDownloadUrl:function(){var e=this.elements.buttons.download;su(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=jh.bindMenuItemShortcuts,i=jh.createButton,r=jh.createProgress,a=jh.createRange,o=jh.createTime,s=jh.setQualityMenu,l=jh.setSpeedMenu,c=jh.showMenuPanel;this.elements.controls=null,au(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));var u=Au("div",Iu(this.config.selectors.controls.wrapper));this.elements.controls=u;var h={class:"plyr__controls__item"};return th(au(this.config.controls)?this.config.controls:[]).forEach((function(s){if("restart"===s&&u.appendChild(i.call(t,"restart",h)),"rewind"===s&&u.appendChild(i.call(t,"rewind",h)),"play"===s&&u.appendChild(i.call(t,"play",h)),"fast-forward"===s&&u.appendChild(i.call(t,"fast-forward",h)),"progress"===s){var l=Au("div",{class:"".concat(h.class," plyr__progress__container")}),f=Au("div",Iu(t.config.selectors.progress));if(f.appendChild(a.call(t,"seek",{id:"plyr-seek-".concat(e.id)})),f.appendChild(r.call(t,"buffer")),t.config.tooltips.seek){var d=Au("span",{class:t.config.classNames.tooltip},"00:00");f.appendChild(d),t.elements.display.seekTooltip=d}t.elements.progress=f,l.appendChild(t.elements.progress),u.appendChild(l)}if("current-time"===s&&u.appendChild(o.call(t,"currentTime",h)),"duration"===s&&u.appendChild(o.call(t,"duration",h)),"mute"===s||"volume"===s){var p=t.elements.volume;if(su(p)&&u.contains(p)||(p=Au("div",Tu({},h,{class:"".concat(h.class," plyr__volume").trim()})),t.elements.volume=p,u.appendChild(p)),"mute"===s&&p.appendChild(i.call(t,"mute")),"volume"===s&&!gu.isIos){var m={max:1,step:.05,value:t.config.volume};p.appendChild(a.call(t,"volume",Tu(m,{id:"plyr-volume-".concat(e.id)})))}}if("captions"===s&&u.appendChild(i.call(t,"captions",h)),"settings"===s&&!du(t.config.settings)){var g=Au("div",Tu({},h,{class:"".concat(h.class," plyr__menu").trim(),hidden:""}));g.appendChild(i.call(t,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var v=Au("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),y=Au("div"),b=Au("div",{id:"plyr-settings-".concat(e.id,"-home")}),w=Au("div",{role:"menu"});b.appendChild(w),y.appendChild(b),t.elements.settings.panels.home=b,t.config.settings.forEach((function(i){var r=Au("button",Tu(Iu(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));n.call(t,r,i),Vu.call(t,r,"click",(function(){c.call(t,i,!1)}));var a=Au("span",null,Th(i,t.config)),o=Au("span",{class:t.config.classNames.menu.value});o.innerHTML=e[i],a.appendChild(o),r.appendChild(a),w.appendChild(r);var s=Au("div",{id:"plyr-settings-".concat(e.id,"-").concat(i),hidden:""}),l=Au("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});l.appendChild(Au("span",{"aria-hidden":!0},Th(i,t.config))),l.appendChild(Au("span",{class:t.config.classNames.hidden},Th("menuBack",t.config))),Vu.call(t,s,"keydown",(function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),c.call(t,"home",!0))}),!1),Vu.call(t,l,"click",(function(){c.call(t,"home",!1)})),s.appendChild(l),s.appendChild(Au("div",{role:"menu"})),y.appendChild(s),t.elements.settings.buttons[i]=r,t.elements.settings.panels[i]=s})),v.appendChild(y),g.appendChild(v),u.appendChild(g),t.elements.settings.popup=v,t.elements.settings.menu=g}if("pip"===s&&qu.pip&&u.appendChild(i.call(t,"pip",h)),"airplay"===s&&qu.airplay&&u.appendChild(i.call(t,"airplay",h)),"download"===s){var k=Tu({},h,{element:"a",href:t.download,target:"_blank"});t.isHTML5&&(k.download="");var T=t.config.urls.download;!fu(T)&&t.isEmbed&&Tu(k,{icon:"logo-".concat(t.provider),label:t.provider}),u.appendChild(i.call(t,"download",k))}"fullscreen"===s&&u.appendChild(i.call(t,"fullscreen",h))})),this.isHTML5&&s.call(this,eh.getQualityOptions.call(this)),l.call(this),u},inject:function(){var e=this;if(this.config.loadSprite){var t=jh.getIconUrl.call(this);t.cors&&Ah(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var i={id:this.id,seektime:this.config.seekTime,title:this.config.title},r=!0;ru(this.config.controls)&&(this.config.controls=this.config.controls.call(this,i)),this.config.controls||(this.config.controls=[]),su(this.config.controls)||nu(this.config.controls)?n=this.config.controls:(n=jh.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:Mh.getLabel.call(this)}),r=!1);var a,o;if(r&&nu(this.config.controls)&&(a=n,Object.entries(i).forEach((function(e){var t=Ao(e,2),n=t[0],i=t[1];a=vh(a,"{".concat(n,"}"),i)})),n=a),nu(this.config.selectors.controls.container)&&(o=document.querySelector(this.config.selectors.controls.container)),su(o)||(o=this.elements.container),o[su(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),su(this.elements.controls)||jh.findElements.call(this),!du(this.elements.buttons)){var s=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return Nu(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];ju(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach((function(e){au(e)||ou(e)?Array.from(e).filter(Boolean).forEach(s):s(e)}))}if(gu.isEdge&&mu(o),this.config.tooltips.controls){var l=this.config,c=l.classNames,u=l.selectors,h="".concat(u.controls.wrapper," ").concat(u.labels," .").concat(c.hidden),f=Mu.call(this,h);Array.from(f).forEach((function(t){ju(t,e.config.classNames.hidden,!1),ju(t,e.config.classNames.tooltip,!0)}))}}};function Nh(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e;if(t){var i=document.createElement("a");i.href=n,n=i.href}try{return new URL(n)}catch(e){return null}}function Rh(e){var t=new URLSearchParams;return eu(e)&&Object.entries(e).forEach((function(e){var n=Ao(e,2),i=n[0],r=n[1];t.set(i,r)})),t}var Mh={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!qu.textTracks)au(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&jh.setCaptionsMenu.call(this);else{if(su(this.elements.captions)||(this.elements.captions=Au("div",Iu(this.config.selectors.captions)),function(e,t){su(e)&&su(t)&&t.parentNode.insertBefore(e,t.nextSibling)}(this.elements.captions,this.elements.wrapper)),gu.isIE&&window.URL){var e=this.media.querySelectorAll("track");Array.from(e).forEach((function(e){var t=e.getAttribute("src"),n=Nh(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&Eh(t,"blob").then((function(t){e.setAttribute("src",window.URL.createObjectURL(t))})).catch((function(){xu(e)}))}))}var t=th((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map((function(e){return e.split("-")[0]}))),n=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===n)n=Ao(t,1)[0];var i=this.storage.get("captions");if(iu(i)||(i=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:i,language:n,languages:t}),this.isHTML5){var r=this.config.captions.update?"addtrack removetrack":"removetrack";Vu.call(this,this.media.textTracks,r,Mh.update.bind(this))}setTimeout(Mh.update.bind(this),0)}},update:function(){var e=this,t=Mh.getTracks.call(this,!0),n=this.captions,i=n.active,r=n.language,a=n.meta,o=n.currentTrackNode,s=Boolean(t.find((function(e){return e.language===r})));this.isHTML5&&this.isVideo&&t.filter((function(e){return!a.get(e)})).forEach((function(t){e.debug.log("Track added",t),a.set(t,{default:"showing"===t.mode}),"showing"===t.mode&&(t.mode="hidden"),Vu.call(e,t,"cuechange",(function(){return Mh.updateCues.call(e)}))})),(s&&this.language!==r||!t.includes(o))&&(Mh.setLanguage.call(this,r),Mh.toggle.call(this,i&&s)),ju(this.elements.container,this.config.classNames.captions.enabled,!du(t)),au(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&jh.setCaptionsMenu.call(this)},toggle:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var i=this.captions.toggled,r=this.config.classNames.captions.active,a=Zc(e)?!i:e;if(a!==i){if(n||(this.captions.active=a,this.storage.set({captions:a})),!this.language&&a&&!n){var o=Mh.getTracks.call(this),s=Mh.findTrack.call(this,[this.captions.language].concat(Po(this.captions.languages)),!0);return this.captions.language=s.language,void Mh.set.call(this,o.indexOf(s))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=a),ju(this.elements.container,r,a),this.captions.toggled=a,jh.updateSetting.call(this,"captions"),Ku.call(this,this.media,a?"captionsenabled":"captionsdisabled")}setTimeout((function(){a&&t.captions.toggled&&(t.captions.currentTrackNode.mode="hidden")}))}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=Mh.getTracks.call(this);if(-1!==e)if(tu(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var i=n[e],r=i||{},a=r.language;this.captions.currentTrackNode=i,jh.updateSetting.call(this,"captions"),t||(this.captions.language=a,this.storage.set({language:a})),this.isVimeo&&this.embed.enableTextTrack(a),Ku.call(this,this.media,"languagechange")}Mh.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&Mh.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else Mh.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(nu(e)){var n=e.toLowerCase();this.captions.language=n;var i=Mh.getTracks.call(this),r=Mh.findTrack.call(this,[n]);Mh.set.call(this,i.indexOf(r),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=Array.from((this.media||{}).textTracks||[]);return n.filter((function(n){return!e.isHTML5||t||e.captions.meta.has(n)})).filter((function(e){return["captions","subtitles"].includes(e.kind)}))},findTrack:function(e){var t,n=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=Mh.getTracks.call(this),a=function(e){return Number((n.captions.meta.get(e)||{}).default)},o=Array.from(r).sort((function(e,t){return a(t)-a(e)}));return e.every((function(e){return!(t=o.find((function(t){return t.language===e})))})),t||(i?o[0]:void 0)},getCurrentTrack:function(){return Mh.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!uu(t)&&qu.textTracks&&this.captions.toggled&&(t=Mh.getCurrentTrack.call(this)),uu(t)?du(t.label)?du(t.language)?Th("enabled",this.config):e.language.toUpperCase():t.label:Th("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(su(this.elements.captions))if(Zc(e)||Array.isArray(e)){var t=e;if(!t){var n=Mh.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map((function(e){return e.getCueAsHTML()})).map(wh)}var i=t.map((function(e){return e.trim()})).join("\n");if(i!==this.elements.captions.innerHTML){Cu(this.elements.captions);var r=Au("span",Iu(this.config.selectors.caption));r.innerHTML=i,this.elements.captions.appendChild(r),Ku.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},_h={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.6.2/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,premium:!1,referrerPolicy:null},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},Uh="picture-in-picture",Dh="inline",Fh={html5:"html5",youtube:"youtube",vimeo:"vimeo"},qh="audio",Hh="video";var Bh=function(){},Vh=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];yo(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return wo(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):Bh}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):Bh}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):Bh}}]),e}(),zh=function(){function e(t){var n=this;yo(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){return(Element.prototype.closest||function(){var e=this;do{if(Ru.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),Vu.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),(function(){n.onChange()})),Vu.call(this.player,this.player.elements.container,"dblclick",(function(e){su(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()})),Vu.call(this,this.player.elements.container,"keydown",(function(e){return n.trapFocus(e)})),this.update()}return wo(e,[{key:"onChange",value:function(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;su(e)&&(e.pressed=this.active),Ku.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0)}}},{key:"toggleFallback",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",ju(this.target,this.player.config.classNames.fullscreen.fallback,e),gu.isIos){var t=document.head.querySelector('meta[name="viewport"]'),n="viewport-fit=cover";t||(t=document.createElement("meta")).setAttribute("name","viewport");var i=nu(t.content)&&t.content.includes(n);e?(this.cleanupViewport=!i,i||(t.content+=",".concat(n))):this.cleanupViewport&&(t.content=t.content.split(",").filter((function(e){return e.trim()!==n})).join(","))}this.onChange()}},{key:"trapFocus",value:function(e){if(!gu.isIos&&this.active&&"Tab"===e.key&&9===e.keyCode){var t=document.activeElement,n=Mu.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),i=Ao(n,1)[0],r=n[n.length-1];t!==r||e.shiftKey?t===i&&e.shiftKey&&(r.focus(),e.preventDefault()):(i.focus(),e.preventDefault())}}},{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");ju(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&(gu.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?this.toggleFallback(!0):this.prefix?du(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen({navigationUI:"hide"}))}},{key:"exit",value:function(){if(this.enabled)if(gu.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),Gu(this.player.play());else if(!e.native||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!du(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){if(!this.enabled)return!1;if(!e.native||this.forceFallback)return Nu(this.target,this.player.config.classNames.fullscreen.fallback);var t=this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement;return t&&t.shadowRoot?t===this.target.getRootNode().host:t===this.target}},{key:"target",get:function(){return gu.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen||this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(ru(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some((function(t){return!(!ru(document["".concat(t,"ExitFullscreen")])&&!ru(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)})),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}(),Wh=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1};function Kh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise((function(n,i){var r=new Image,a=function(){delete r.onload,delete r.onerror,(r.naturalWidth>=t?n:i)(r)};Object.assign(r,{onload:a,onerror:a,src:e})}))}Ie({target:"Math",stat:!0},{sign:Wh});var $h={addStyleHook:function(){ju(this.elements.container,this.config.selectors.container.replace(".",""),!0),ju(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void $h.toggleNativeControls.call(this,!0);su(this.elements.controls)||(jh.inject.call(this),this.listeners.controls()),$h.toggleNativeControls.call(this),this.isHTML5&&Mh.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,jh.updateVolume.call(this),jh.timeUpdate.call(this),$h.checkPlaying.call(this),ju(this.elements.container,this.config.classNames.pip.supported,qu.pip&&this.isHTML5&&this.isVideo),ju(this.elements.container,this.config.classNames.airplay.supported,qu.airplay&&this.isHTML5),ju(this.elements.container,this.config.classNames.isIos,gu.isIos),ju(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((function(){Ku.call(e,e.media,"ready")}),0),$h.setTitle.call(this),this.poster&&$h.setPoster.call(this,this.poster,!1).catch((function(){})),this.config.duration&&jh.durationUpdate.call(this)},setTitle:function(){var e=Th("play",this.config);if(nu(this.config.title)&&!du(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach((function(t){t.setAttribute("aria-label",e)})),this.isEmbed){var t=_u.call(this,"iframe");if(!su(t))return;var n=du(this.config.title)?"video":this.config.title,i=Th("frameTitle",this.config);t.setAttribute("title",i.replace("{title}",n))}},togglePoster:function(e){ju(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return n&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),Yu.call(this).then((function(){return Kh(e)})).catch((function(n){throw e===t.poster&&$h.togglePoster.call(t,!1),n})).then((function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")})).then((function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),$h.togglePoster.call(t,!0),e})))},checkPlaying:function(e){var t=this;ju(this.elements.container,this.config.classNames.playing,this.playing),ju(this.elements.container,this.config.classNames.paused,this.paused),ju(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((function(e){Object.assign(e,{pressed:t.playing}),e.setAttribute("aria-label",Th(t.playing?"pause":"play",t.config))})),lu(e)&&"timeupdate"===e.type||$h.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((function(){ju(t.elements.container,t.config.classNames.loading,t.loading),$h.toggleControls.call(t)}),this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}},migrateStyles:function(){var e=this;Object.values(So({},this.media.style)).filter((function(e){return!du(e)&&e.startsWith("--plyr")})).forEach((function(t){e.elements.container.style.setProperty(t,e.media.style.getPropertyValue(t)),e.media.style.removeProperty(t)})),du(this.media.style)&&this.media.removeAttribute("style")}},Yh=function(){function e(t){yo(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return wo(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,i=e.keyCode?e.keyCode:e.which,r="keydown"===e.type,a=r&&i===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&&tu(i)){if(r){var o=document.activeElement;if(su(o)){var s=t.config.selectors.editable;if(o!==n.inputs.seek&&Ru(o,s))return;if(32===e.which&&Ru(o,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(i)&&(e.preventDefault(),e.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:a||(t.currentTime=t.duration/10*(i-48));break;case 32:case 75:a||Gu(t.togglePlay());break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:a||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:a||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===i&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=i}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){jh.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,ju(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var i,r=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||r)i=t.config.classNames.tabFocus,ju(Mu.call(t,".".concat(i)),i,!1),"focusout"!==e.type&&(this.focusTimer=setTimeout((function(){var e=document.activeElement;n.container.contains(e)&&ju(document.activeElement,t.config.classNames.tabFocus,!0)}),10))}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&Bu.call(t,window,"keydown keyup",this.handleKey,e,!1),Bu.call(t,document.body,"click",this.toggleMenu,e),Wu.call(t,document.body,"touchstart",this.firstTouch),Bu.call(t,document.body,"keydown focus blur focusout",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this.player,t=e.config,n=e.elements,i=e.timers;!t.keyboard.global&&t.keyboard.focused&&Vu.call(e,n.container,"keydown keyup",this.handleKey,!1),Vu.call(e,n.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",(function(t){var r=n.controls;r&&"enterfullscreen"===t.type&&(r.pressed=!1,r.hover=!1);var a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&($h.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(i.controls),i.controls=setTimeout((function(){return $h.toggleControls.call(e,!1)}),a)}));var r=function(t){if(!t)return Zu.call(e);var i=n.container.getBoundingClientRect(),r=i.width,a=i.height;return Zu.call(e,"".concat(r,":").concat(a))},a=function(){clearTimeout(i.resized),i.resized=setTimeout(r,50)};Vu.call(e,n.container,"enterfullscreen exitfullscreen",(function(t){var i=e.fullscreen,o=i.target,s=i.usingNative;if(o===n.container&&(e.isEmbed||!du(e.config.ratio))){var l="enterfullscreen"===t.type,c=r(l);c.padding;!function(t,n,i){if(e.isVimeo&&!e.config.vimeo.premium){var r=e.elements.wrapper.firstChild,a=Ao(t,2)[1],o=Ao(Ju.call(e),2),s=o[0],l=o[1];r.style.maxWidth=i?"".concat(a/l*s,"px"):null,r.style.margin=i?"0 auto":null}}(c.ratio,0,l),s||(l?Vu.call(e,window,"resize",a):zu.call(e,window,"resize",a))}}))}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(Vu.call(t,t.media,"timeupdate seeking seeked",(function(e){return jh.timeUpdate.call(t,e)})),Vu.call(t,t.media,"durationchange loadeddata loadedmetadata",(function(e){return jh.durationUpdate.call(t,e)})),Vu.call(t,t.media,"ended",(function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&(t.restart(),t.pause())})),Vu.call(t,t.media,"progress playing seeking seeked",(function(e){return jh.updateProgress.call(t,e)})),Vu.call(t,t.media,"volumechange",(function(e){return jh.updateVolume.call(t,e)})),Vu.call(t,t.media,"playing play pause ended emptied timeupdate",(function(e){return $h.checkPlaying.call(t,e)})),Vu.call(t,t.media,"waiting canplay seeked playing",(function(e){return $h.checkLoading.call(t,e)})),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var i=_u.call(t,".".concat(t.config.classNames.video));if(!su(i))return;Vu.call(t,n.container,"click",(function(r){([n.container,i].includes(r.target)||i.contains(r.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(r,t.restart,"restart"),e.proxy(r,(function(){Gu(t.play())}),"play")):e.proxy(r,(function(){Gu(t.togglePlay())}),"play")))}))}t.supported.ui&&t.config.disableContextMenu&&Vu.call(t,n.wrapper,"contextmenu",(function(e){e.preventDefault()}),!1),Vu.call(t,t.media,"volumechange",(function(){t.storage.set({volume:t.volume,muted:t.muted})})),Vu.call(t,t.media,"ratechange",(function(){jh.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})})),Vu.call(t,t.media,"qualitychange",(function(e){jh.updateSetting.call(t,"quality",null,e.detail.quality)})),Vu.call(t,t.media,"ready qualitychange",(function(){jh.setDownloadUrl.call(t)}));var r=t.config.events.concat(["keyup","keydown"]).join(" ");Vu.call(t,t.media,r,(function(e){var i=e.detail,r=void 0===i?{}:i;"error"===e.type&&(r=t.media.error),Ku.call(t,n.container,e.type,!0,r)}))}},{key:"proxy",value:function(e,t,n){var i=this.player,r=i.config.listeners[n],a=!0;ru(r)&&(a=r.call(i,e)),!1!==a&&ru(t)&&t.call(i,e)}},{key:"bind",value:function(e,t,n,i){var r=this,a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.player,s=o.config.listeners[i],l=ru(s);Vu.call(o,e,t,(function(e){return r.proxy(e,n,i)}),a&&!l)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,i=gu.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach((function(n){e.bind(n,"click",(function(){Gu(t.togglePlay())}),"play")})),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",(function(){t.muted=!t.muted}),"mute"),this.bind(n.buttons.captions,"click",(function(){return t.toggleCaptions()})),this.bind(n.buttons.download,"click",(function(){Ku.call(t,t.media,"download")}),"download"),this.bind(n.buttons.fullscreen,"click",(function(){t.fullscreen.toggle()}),"fullscreen"),this.bind(n.buttons.pip,"click",(function(){t.pip="toggle"}),"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",(function(e){e.stopPropagation(),e.preventDefault(),jh.toggleMenu.call(t,e)}),null,!1),this.bind(n.buttons.settings,"keyup",(function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),jh.toggleMenu.call(t,e)):jh.focusFirstMenuItem.call(t,null,!0))}),null,!1),this.bind(n.settings.menu,"keydown",(function(e){27===e.which&&jh.toggleMenu.call(t,e)})),this.bind(n.inputs.seek,"mousedown mousemove",(function(e){var t=n.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",i)})),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",(function(e){var n=e.currentTarget,i=e.keyCode?e.keyCode:e.which;if(!cu(e)||39===i||37===i){t.lastSeekTime=Date.now();var r=n.hasAttribute("play-on-seeked"),a=["mouseup","touchend","keyup"].includes(e.type);r&&a?(n.removeAttribute("play-on-seeked"),Gu(t.play())):!a&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}})),gu.isIos){var r=Mu.call(t,'input[type="range"]');Array.from(r).forEach((function(t){return e.bind(t,i,(function(e){return mu(e.target)}))}))}this.bind(n.inputs.seek,i,(function(e){var n=e.currentTarget,i=n.getAttribute("seek-value");du(i)&&(i=n.value),n.removeAttribute("seek-value"),t.currentTime=i/n.max*t.duration}),"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",(function(e){return jh.updateSeekTooltip.call(t,e)})),this.bind(n.progress,"mousemove touchmove",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)})),this.bind(n.progress,"mouseleave touchend click",(function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)})),this.bind(n.progress,"mousedown touchstart",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)})),this.bind(n.progress,"mouseup touchend",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)})),gu.isWebkit&&Array.from(Mu.call(t,'input[type="range"]')).forEach((function(n){e.bind(n,"input",(function(e){return jh.updateRangeFill.call(t,e.target)}))})),t.config.toggleInvert&&!su(n.display.duration)&&this.bind(n.display.currentTime,"click",(function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,jh.timeUpdate.call(t))})),this.bind(n.inputs.volume,i,(function(e){t.volume=e.target.value}),"volume"),this.bind(n.controls,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type})),n.fullscreen&&Array.from(n.fullscreen.children).filter((function(e){return!e.contains(n.container)})).forEach((function(i){e.bind(i,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type}))})),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",(function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)})),this.bind(n.controls,"focusin",(function(){var i=t.config,r=t.timers;ju(n.controls,i.classNames.noTransition,!0),$h.toggleControls.call(t,!0),setTimeout((function(){ju(n.controls,i.classNames.noTransition,!1)}),0);var a=e.touch?3e3:4e3;clearTimeout(r.controls),r.controls=setTimeout((function(){return $h.toggleControls.call(t,!1)}),a)})),this.bind(n.inputs.volume,"wheel",(function(e){var n=e.webkitDirectionInvertedFromDevice,i=Ao([e.deltaX,-e.deltaY].map((function(e){return n?-e:e})),2),r=i[0],a=i[1],o=Math.sign(Math.abs(r)>Math.abs(a)?r:a);t.increaseVolume(o/50);var s=t.media.volume;(1===o&&s<1||-1===o&&s>0)&&e.preventDefault()}),"volume",!1)}}]),e}(),Gh=Kn("splice"),Xh=Qt("splice",{ACCESSORS:!0,0:0,1:2}),Qh=Math.max,Jh=Math.min;Ie({target:"Array",proto:!0,forced:!Gh||!Xh},{splice:function(e,t){var n,i,r,a,o,s,l=Re(this),c=le(l.length),u=he(e,c),h=arguments.length;if(0===h?n=i=0:1===h?(n=0,i=c-u):(n=h-2,i=Jh(Qh(oe(t),0),c-u)),c+n-i>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(r=ot(l,i),a=0;a<i;a++)(o=u+a)in l&&Fn(r,a,l[o]);if(r.length=i,n<i){for(a=u;a<c-i;a++)s=a+n,(o=a+i)in l?l[s]=l[o]:delete l[s];for(a=c;a>c-i+n;a--)delete l[a-1]}else if(n>i)for(a=c-i;a>u;a--)s=a+n-1,(o=a+i-1)in l?l[s]=l[o]:delete l[s];for(a=0;a<n;a++)l[a+u]=arguments[a+2];return l.length=c-i+n,r}});var Zh=t((function(e,t){e.exports=function(){var e=function(){},t={},n={},i={};function r(e,t){if(e){var r=i[e];if(n[e]=t,r)for(;r.length;)r[0](e,t),r.splice(0,1)}}function a(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function o(t,n,i,r){var a,s,l=document,c=i.async,u=(i.numRetries||0)+1,h=i.before||e,f=t.replace(/[\?|#].*$/,""),d=t.replace(/^(css|img)!/,"");r=r||0,/(^css!|\.css$)/.test(f)?((s=l.createElement("link")).rel="stylesheet",s.href=d,(a="hideFocus"in s)&&s.relList&&(a=0,s.rel="preload",s.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(f)?(s=l.createElement("img")).src=d:((s=l.createElement("script")).src=t,s.async=void 0===c||c),s.onload=s.onerror=s.onbeforeload=function(e){var l=e.type[0];if(a)try{s.sheet.cssText.length||(l="e")}catch(e){18!=e.code&&(l="e")}if("e"==l){if((r+=1)<u)return o(t,n,i,r)}else if("preload"==s.rel&&"style"==s.as)return s.rel="stylesheet";n(t,l,e.defaultPrevented)},!1!==h(t,s)&&l.head.appendChild(s)}function s(e,n,i){var s,l;if(n&&n.trim&&(s=n),l=(s?i:n)||{},s){if(s in t)throw"LoadJS";t[s]=!0}function c(t,n){!function(e,t,n){var i,r,a=(e=e.push?e:[e]).length,s=a,l=[];for(i=function(e,n,i){if("e"==n&&l.push(e),"b"==n){if(!i)return;l.push(e)}--a||t(l)},r=0;r<s;r++)o(e[r],i,n)}(e,(function(e){a(l,e),t&&a({success:t,error:n},e),r(s,e)}),l)}if(l.returnPromise)return new Promise(c);c()}return s.ready=function(e,t){return function(e,t){e=e.push?e:[e];var r,a,o,s=[],l=e.length,c=l;for(r=function(e,n){n.length&&s.push(e),--c||t(s)};l--;)a=e[l],(o=n[a])?r(a,o):(i[a]=i[a]||[]).push(r)}(e,(function(e){a(t,e)})),s},s.done=function(e){r(e,[])},s.reset=function(){t={},n={},i={}},s.isDefined=function(e){return e in t},s}()}));function ef(e){return new Promise((function(t,n){Zh(e,{success:t,error:n})}))}function tf(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Ku.call(this,this.media,e?"play":"pause"))}var nf={setup:function(){var e=this;ju(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,Zu.call(e),eu(window.Vimeo)?nf.ready.call(e):ef(e.config.urls.vimeo.sdk).then((function(){nf.ready.call(e)})).catch((function(t){e.debug.warn("Vimeo SDK (player.js) failed to load",t)}))},ready:function(){var e=this,t=this,n=t.config.vimeo,i=n.premium,r=n.referrerPolicy,a=Eo(n,["premium","referrerPolicy"]);i&&Object.assign(a,{controls:!1,sidedock:!1});var o=Rh(So({loop:t.config.loop.active,autoplay:t.autoplay,muted:t.muted,gesture:"media",playsinline:!this.config.fullscreen.iosNative},a)),s=t.media.getAttribute("src");du(s)&&(s=t.media.getAttribute(t.config.attributes.embed.id));var l,c=du(l=s)?null:tu(Number(l))?l:l.match(/^.*(vimeo.com\/|video\/)(\d+).*/)?RegExp.$2:l,u=Au("iframe"),h=gh(t.config.urls.vimeo.iframe,c,o);u.setAttribute("src",h),u.setAttribute("allowfullscreen",""),u.setAttribute("allow","autoplay,fullscreen,picture-in-picture"),du(r)||u.setAttribute("referrerPolicy",r);var f=t.poster;if(i)u.setAttribute("data-poster",f),t.media=Ou(u,t.media);else{var d=Au("div",{class:t.config.classNames.embedContainer,"data-poster":f});d.appendChild(u),t.media=Ou(d,t.media)}Eh(gh(t.config.urls.vimeo.api,c),"json").then((function(e){if(!du(e)){var n=new URL(e[0].thumbnail_large);n.pathname="".concat(n.pathname.split("_")[0],".jpg"),$h.setPoster.call(t,n.href).catch((function(){}))}})),t.embed=new window.Vimeo.Player(u,{autopause:t.config.autopause,muted:t.muted}),t.media.paused=!0,t.media.currentTime=0,t.supported.ui&&t.embed.disableTextTrack(),t.media.play=function(){return tf.call(t,!0),t.embed.play()},t.media.pause=function(){return tf.call(t,!1),t.embed.pause()},t.media.stop=function(){t.pause(),t.currentTime=0};var p=t.media.currentTime;Object.defineProperty(t.media,"currentTime",{get:function(){return p},set:function(e){var n=t.embed,i=t.media,r=t.paused,a=t.volume,o=r&&!n.hasPlayed;i.seeking=!0,Ku.call(t,i,"seeking"),Promise.resolve(o&&n.setVolume(0)).then((function(){return n.setCurrentTime(e)})).then((function(){return o&&n.pause()})).then((function(){return o&&n.setVolume(a)})).catch((function(){}))}});var m=t.config.speed.selected;Object.defineProperty(t.media,"playbackRate",{get:function(){return m},set:function(e){t.embed.setPlaybackRate(e).then((function(){m=e,Ku.call(t,t.media,"ratechange")})).catch((function(){t.options.speed=[1]}))}});var g=t.config.volume;Object.defineProperty(t.media,"volume",{get:function(){return g},set:function(e){t.embed.setVolume(e).then((function(){g=e,Ku.call(t,t.media,"volumechange")}))}});var v=t.config.muted;Object.defineProperty(t.media,"muted",{get:function(){return v},set:function(e){var n=!!iu(e)&&e;t.embed.setVolume(n?0:t.config.volume).then((function(){v=n,Ku.call(t,t.media,"volumechange")}))}});var y,b=t.config.loop;Object.defineProperty(t.media,"loop",{get:function(){return b},set:function(e){var n=iu(e)?e:t.config.loop.active;t.embed.setLoop(n).then((function(){b=n}))}}),t.embed.getVideoUrl().then((function(e){y=e,jh.setDownloadUrl.call(t)})).catch((function(t){e.debug.warn(t)})),Object.defineProperty(t.media,"currentSrc",{get:function(){return y}}),Object.defineProperty(t.media,"ended",{get:function(){return t.currentTime===t.duration}}),Promise.all([t.embed.getVideoWidth(),t.embed.getVideoHeight()]).then((function(n){var i=Ao(n,2),r=i[0],a=i[1];t.embed.ratio=[r,a],Zu.call(e)})),t.embed.setAutopause(t.config.autopause).then((function(e){t.config.autopause=e})),t.embed.getVideoTitle().then((function(n){t.config.title=n,$h.setTitle.call(e)})),t.embed.getCurrentTime().then((function(e){p=e,Ku.call(t,t.media,"timeupdate")})),t.embed.getDuration().then((function(e){t.media.duration=e,Ku.call(t,t.media,"durationchange")})),t.embed.getTextTracks().then((function(e){t.media.textTracks=e,Mh.setup.call(t)})),t.embed.on("cuechange",(function(e){var n=e.cues,i=(void 0===n?[]:n).map((function(e){return function(e){var t=document.createDocumentFragment(),n=document.createElement("div");return t.appendChild(n),n.innerHTML=e,t.firstChild.innerText}(e.text)}));Mh.updateCues.call(t,i)})),t.embed.on("loaded",(function(){(t.embed.getPaused().then((function(e){tf.call(t,!e),e||Ku.call(t,t.media,"playing")})),su(t.embed.element)&&t.supported.ui)&&t.embed.element.setAttribute("tabindex",-1)})),t.embed.on("bufferstart",(function(){Ku.call(t,t.media,"waiting")})),t.embed.on("bufferend",(function(){Ku.call(t,t.media,"playing")})),t.embed.on("play",(function(){tf.call(t,!0),Ku.call(t,t.media,"playing")})),t.embed.on("pause",(function(){tf.call(t,!1)})),t.embed.on("timeupdate",(function(e){t.media.seeking=!1,p=e.seconds,Ku.call(t,t.media,"timeupdate")})),t.embed.on("progress",(function(e){t.media.buffered=e.percent,Ku.call(t,t.media,"progress"),1===parseInt(e.percent,10)&&Ku.call(t,t.media,"canplaythrough"),t.embed.getDuration().then((function(e){e!==t.media.duration&&(t.media.duration=e,Ku.call(t,t.media,"durationchange"))}))})),t.embed.on("seeked",(function(){t.media.seeking=!1,Ku.call(t,t.media,"seeked")})),t.embed.on("ended",(function(){t.media.paused=!0,Ku.call(t,t.media,"ended")})),t.embed.on("error",(function(e){t.media.error=e,Ku.call(t,t.media,"error")})),setTimeout((function(){return $h.build.call(t)}),0)}};function rf(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Ku.call(this,this.media,e?"play":"pause"))}function af(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}var of={setup:function(){var e=this;if(ju(this.elements.wrapper,this.config.classNames.embed,!0),eu(window.YT)&&ru(window.YT.Player))of.ready.call(this);else{var t=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=function(){ru(t)&&t(),of.ready.call(e)},ef(this.config.urls.youtube.sdk).catch((function(t){e.debug.warn("YouTube API failed to load",t)}))}},getTitle:function(e){var t=this;Eh(gh(this.config.urls.youtube.api,e)).then((function(e){if(eu(e)){var n=e.title,i=e.height,r=e.width;t.config.title=n,$h.setTitle.call(t),t.embed.ratio=[r,i]}Zu.call(t)})).catch((function(){Zu.call(t)}))},ready:function(){var e=this,t=e.media&&e.media.getAttribute("id");if(du(t)||!t.startsWith("youtube-")){var n=e.media.getAttribute("src");du(n)&&(n=e.media.getAttribute(this.config.attributes.embed.id));var i,r,a=du(i=n)?null:i.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/)?RegExp.$2:i,o=(r=e.provider,"".concat(r,"-").concat(Math.floor(1e4*Math.random()))),s=Au("div",{id:o,"data-poster":e.poster});e.media=Ou(s,e.media);var l=function(e){return"https://i.ytimg.com/vi/".concat(a,"/").concat(e,"default.jpg")};Kh(l("maxres"),121).catch((function(){return Kh(l("sd"),121)})).catch((function(){return Kh(l("hq"))})).then((function(t){return $h.setPoster.call(e,t.src)})).then((function(t){t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")})).catch((function(){}));var c=e.config.youtube;e.embed=new window.YT.Player(o,{videoId:a,host:af(c),playerVars:Tu({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui?0:1,disablekb:1,playsinline:e.config.fullscreen.iosNative?0:1,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},c),events:{onError:function(t){if(!e.media.error){var n=t.data,i={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[n]||"An unknown error occured";e.media.error={code:n,message:i},Ku.call(e,e.media,"error")}},onPlaybackRateChange:function(t){var n=t.target;e.media.playbackRate=n.getPlaybackRate(),Ku.call(e,e.media,"ratechange")},onReady:function(t){if(!ru(e.media.play)){var n=t.target;of.getTitle.call(e,a),e.media.play=function(){rf.call(e,!0),n.playVideo()},e.media.pause=function(){rf.call(e,!1),n.pauseVideo()},e.media.stop=function(){n.stopVideo()},e.media.duration=n.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get:function(){return Number(n.getCurrentTime())},set:function(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,Ku.call(e,e.media,"seeking"),n.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get:function(){return n.getPlaybackRate()},set:function(e){n.setPlaybackRate(e)}});var i=e.config.volume;Object.defineProperty(e.media,"volume",{get:function(){return i},set:function(t){i=t,n.setVolume(100*i),Ku.call(e,e.media,"volumechange")}});var r=e.config.muted;Object.defineProperty(e.media,"muted",{get:function(){return r},set:function(t){var i=iu(t)?t:r;r=i,n[i?"mute":"unMute"](),Ku.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get:function(){return n.getVideoUrl()}}),Object.defineProperty(e.media,"ended",{get:function(){return e.currentTime===e.duration}});var o=n.getAvailablePlaybackRates();e.options.speed=o.filter((function(t){return e.config.speed.options.includes(t)})),e.supported.ui&&e.media.setAttribute("tabindex",-1),Ku.call(e,e.media,"timeupdate"),Ku.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((function(){e.media.buffered=n.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&Ku.call(e,e.media,"progress"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),Ku.call(e,e.media,"canplaythrough"))}),200),setTimeout((function(){return $h.build.call(e)}),50)}},onStateChange:function(t){var n=t.target;switch(clearInterval(e.timers.playing),e.media.seeking&&[1,2].includes(t.data)&&(e.media.seeking=!1,Ku.call(e,e.media,"seeked")),t.data){case-1:Ku.call(e,e.media,"timeupdate"),e.media.buffered=n.getVideoLoadedFraction(),Ku.call(e,e.media,"progress");break;case 0:rf.call(e,!1),e.media.loop?(n.stopVideo(),n.playVideo()):Ku.call(e,e.media,"ended");break;case 1:e.config.autoplay||!e.media.paused||e.embed.hasPlayed?(rf.call(e,!0),Ku.call(e,e.media,"playing"),e.timers.playing=setInterval((function(){Ku.call(e,e.media,"timeupdate")}),50),e.media.duration!==n.getDuration()&&(e.media.duration=n.getDuration(),Ku.call(e,e.media,"durationchange"))):e.media.pause();break;case 2:e.muted||e.embed.unMute(),rf.call(e,!1);break;case 3:Ku.call(e,e.media,"waiting")}Ku.call(e,e.elements.container,"statechange",!1,{code:t.data})}}})}}},sf={setup:function(){this.media?(ju(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),ju(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&ju(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=Au("div",{class:this.config.classNames.video}),Su(this.media,this.elements.wrapper),this.elements.poster=Au("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?eh.setup.call(this):this.isYouTube?of.setup.call(this):this.isVimeo&&nf.setup.call(this)):this.debug.warn("No media element found!")}},lf=function(){function e(t){var n=this;yo(this,e),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise((function(e,t){n.on("loaded",e),n.on("error",t)})),this.load()}return wo(e,[{key:"load",value:function(){var e=this;this.enabled&&(eu(window.google)&&eu(window.google.ima)?this.ready():ef(this.player.config.urls.googleIMA.sdk).then((function(){e.ready()})).catch((function(){e.trigger("error",new Error("Google IMA SDK failed to load"))})))}},{key:"ready",value:function(){var e,t=this;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then((function(){t.clearSafetyTimer("onAdsManagerLoaded()")})),this.listeners(),this.setupIMA()}},{key:"setupIMA",value:function(){var e=this;this.elements.container=Au("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(function(t){return e.onAdsManagerLoaded(t)}),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(t){return e.onAdError(t)}),!1),this.requestAds()}},{key:"requestAds",value:function(){var e=this.player.elements.container;try{var t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}}},{key:"pollCountdown",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!t)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");var n=function(){var t=Lh(Math.max(e.manager.getRemainingTime(),0)),n="".concat(Th("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)};this.countdownTimer=setInterval(n,100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(e){return t.onAdError(e)})),Object.keys(google.ima.AdEvent.Type).forEach((function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],(function(e){return t.onAdEvent(e)}))})),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;du(this.cuePoints)||this.cuePoints.forEach((function(t){if(0!==t&&-1!==t&&t<e.player.duration){var n=e.player.elements.progress;if(su(n)){var i=100/e.player.duration*t,r=Au("span",{class:e.player.config.classNames.cues});r.style.left="".concat(i.toString(),"%"),n.appendChild(r)}}}))}},{key:"onAdEvent",value:function(e){var t=this,n=this.player.elements.container,i=e.getAd(),r=e.getAdData();switch(function(e){Ku.call(t.player,t.player.media,"ads".concat(e.replace(/_/g,"").toLowerCase()))}(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=n.offsetWidth,i.height=n.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:r.adError&&this.player.debug.warn("Non-fatal ad error: ".concat(r.adError.getMessage()))}}},{key:"onAdError",value:function(e){this.cancel(),this.player.debug.warn("Ads error",e)}},{key:"listeners",value:function(){var e,t=this,n=this.player.elements.container;this.player.on("canplay",(function(){t.addCuePoints()})),this.player.on("ended",(function(){t.loader.contentComplete()})),this.player.on("timeupdate",(function(){e=t.player.currentTime})),this.player.on("seeked",(function(){var n=t.player.currentTime;du(t.cuePoints)||t.cuePoints.forEach((function(i,r){e<i&&i<n&&(t.manager.discardAdBreak(),t.cuePoints.splice(r,1))}))})),window.addEventListener("resize",(function(){t.manager&&t.manager.resize(n.offsetWidth,n.offsetHeight,google.ima.ViewMode.NORMAL)}))}},{key:"play",value:function(){var e=this,t=this.player.elements.container;this.managerPromise||this.resumeContent(),this.managerPromise.then((function(){e.manager.setVolume(e.player.volume),e.elements.displayContainer.initialize();try{e.initialized||(e.manager.init(t.offsetWidth,t.offsetHeight,google.ima.ViewMode.NORMAL),e.manager.start()),e.initialized=!0}catch(t){e.onAdError(t)}})).catch((function(){}))}},{key:"resumeContent",value:function(){this.elements.container.style.zIndex="",this.playing=!1,Gu(this.player.media.play())}},{key:"pauseContent",value:function(){this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()}},{key:"cancel",value:function(){this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()}},{key:"loadAds",value:function(){var e=this;this.managerPromise.then((function(){e.manager&&e.manager.destroy(),e.managerPromise=new Promise((function(t){e.on("loaded",t),e.player.debug.log(e.manager)})),e.initialized=!1,e.requestAds()})).catch((function(){}))}},{key:"trigger",value:function(e){for(var t=this,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var a=this.events[e];au(a)&&a.forEach((function(e){ru(e)&&e.apply(t,i)}))}},{key:"on",value:function(e,t){return au(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this}},{key:"startSafetyTimer",value:function(e,t){var n=this;this.player.debug.log("Safety timer invoked from: ".concat(t)),this.safetyTimer=setTimeout((function(){n.cancel(),n.clearSafetyTimer("startSafetyTimer()")}),e)}},{key:"clearSafetyTimer",value:function(e){Zc(this.safetyTimer)||(this.player.debug.log("Safety timer cleared from: ".concat(e)),clearTimeout(this.safetyTimer),this.safetyTimer=null)}},{key:"enabled",get:function(){var e=this.config;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!du(e.publisherId)||fu(e.tagUrl))}},{key:"tagUrl",get:function(){var e=this.config;if(fu(e.tagUrl))return e.tagUrl;var t={AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId};return"".concat("https://go.aniview.com/api/adserver6/vast/","?").concat(Rh(t))}}]),e}(),cf=ct.findIndex,uf=!0,hf=Qt("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){uf=!1})),Ie({target:"Array",proto:!0,forced:uf||!hf},{findIndex:function(e){return cf(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("findIndex");var ff=Math.min,df=[].lastIndexOf,pf=!!df&&1/[1].lastIndexOf(1,-0)<0,mf=$t("lastIndexOf"),gf=Qt("indexOf",{ACCESSORS:!0,1:0}),vf=pf||!mf||!gf?function(e){if(pf)return df.apply(this,arguments)||0;var t=m(this),n=le(t.length),i=n-1;for(arguments.length>1&&(i=ff(i,oe(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:df;Ie({target:"Array",proto:!0,forced:vf!==[].lastIndexOf},{lastIndexOf:vf});var yf=function(e,t){var n={};return e>t.width/t.height?(n.width=t.width,n.height=1/e*t.width):(n.height=t.height,n.width=e*t.height),n},bf=function(){function e(t){yo(this,e),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}return wo(e,[{key:"load",value:function(){var e=this;this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((function(){e.enabled&&(e.render(),e.determineContainerAutoSizing(),e.loaded=!0)}))}},{key:"getThumbnails",value:function(){var e=this;return new Promise((function(t){var n=e.player.config.previewThumbnails.src;if(du(n))throw new Error("Missing previewThumbnails.src config attribute");var i=function(){e.thumbnails.sort((function(e,t){return e.height-t.height})),e.player.debug.log("Preview thumbnails",e.thumbnails),t()};if(ru(n))n((function(t){e.thumbnails=t,i()}));else{var r=(nu(n)?[n]:n).map((function(t){return e.getThumbnail(t)}));Promise.all(r).then(i)}}))}},{key:"getThumbnail",value:function(e){var t=this;return new Promise((function(n){Eh(e).then((function(i){var r,a,o={frames:(r=i,a=[],r.split(/\r\n\r\n|\n\n|\r\r/).forEach((function(e){var t={};e.split(/\r\n|\n|\r/).forEach((function(e){if(tu(t.startTime)){if(!du(e.trim())&&du(t.text)){var n=e.trim().split("#xywh="),i=Ao(n,1);if(t.text=i[0],n[1]){var r=Ao(n[1].split(","),4);t.x=r[0],t.y=r[1],t.w=r[2],t.h=r[3]}}}else{var a=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);a&&(t.startTime=60*Number(a[1]||0)*60+60*Number(a[2])+Number(a[3])+Number("0.".concat(a[4])),t.endTime=60*Number(a[6]||0)*60+60*Number(a[7])+Number(a[8])+Number("0.".concat(a[9])))}})),t.text&&a.push(t)})),a),height:null,urlPrefix:""};o.frames[0].text.startsWith("/")||o.frames[0].text.startsWith("http://")||o.frames[0].text.startsWith("https://")||(o.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var s=new Image;s.onload=function(){o.height=s.naturalHeight,o.width=s.naturalWidth,t.thumbnails.push(o),n()},s.src=o.urlPrefix+o.frames[0].text}))}))}},{key:"startMove",value:function(e){if(this.loaded&&lu(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=Lh(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){(Zc(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):Wu.call(this.player,this.player.media,"timeupdate",(function(){e.mouseDown||e.toggleScrubbingContainer(!1)}))}},{key:"listeners",value:function(){var e=this;this.player.on("play",(function(){e.toggleThumbContainer(!1,!0)})),this.player.on("seeked",(function(){e.toggleThumbContainer(!1)})),this.player.on("timeupdate",(function(){e.lastTime=e.player.media.currentTime}))}},{key:"render",value:function(){this.elements.thumb.container=Au("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=Au("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=Au("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=Au("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),su(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=Au("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"destroy",value:function(){this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();var t=this.thumbnails[0].frames.findIndex((function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime})),n=t>=0,i=0;this.mouseDown||this.toggleThumbContainer(n),n&&(this.thumbnails.forEach((function(n,r){e.loadedImages.includes(n.frames[t].text)&&(i=r)})),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(i)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,i=this.thumbnails[t],r=i.urlPrefix,a=i.frames[n],o=i.frames[n].text,s=r+o;if(this.currentImageElement&&this.currentImageElement.dataset.filename===o)this.showImage(this.currentImageElement,a,t,n,o,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var l=new Image;l.src=s,l.dataset.index=n,l.dataset.filename=o,this.showingThumbFilename=o,this.player.debug.log("Loading image: ".concat(s)),l.onload=function(){return e.showImage(l,a,t,n,o,!0)},this.loadingImage=l,this.removeOldImages(l)}}},{key:"showImage",value:function(e,t,n,i,r){var a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(r,". num: ").concat(i,". qual: ").concat(n,". newimg: ").concat(a)),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(r)||this.loadedImages.push(r)),this.preloadNearby(i,!0).then(this.preloadNearby(i,!1)).then(this.getHigherQuality(n,e,t,r))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach((function(n){if("img"===n.tagName.toLowerCase()){var i=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var r=t.currentImageContainer;setTimeout((function(){r.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))}),i)}}}))}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise((function(i){setTimeout((function(){var r=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===r){var a;a=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var o=!1;a.forEach((function(e){var n=e.text;if(n!==r&&!t.loadedImages.includes(n)){o=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var a=t.thumbnails[0].urlPrefix+n,s=new Image;s.src=a,s.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),i()}}})),o||i()}}),300)}))}},{key:"getHigherQuality",value:function(e,t,n,i){var r=this;if(e<this.thumbnails.length-1){var a=t.naturalHeight;this.usingSprites&&(a=n.h),a<this.thumbContainerHeight&&setTimeout((function(){r.showingThumbFilename===i&&(r.player.debug.log("Showing higher quality thumb for: ".concat(i)),r.loadImage(e+1))}),300)}}},{key:"toggleThumbContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(this.sizeSpecifiedInCSS){if(this.elements.thumb.imageContainer.clientHeight>20&&this.elements.thumb.imageContainer.clientWidth<20){var e=Math.floor(this.elements.thumb.imageContainer.clientHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.width="".concat(e,"px")}else if(this.elements.thumb.imageContainer.clientHeight<20&&this.elements.thumb.imageContainer.clientWidth>20){var t=Math.floor(this.elements.thumb.imageContainer.clientWidth/this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(t,"px")}}else{var n=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(n,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,i=t.left-e.left+10,r=t.right-e.left-n.clientWidth-10,a=this.mousePosX-e.left-n.clientWidth/2;a<i&&(a=i),a>r&&(a=r),n.style.left="".concat(a,"px")}},{key:"setScrubbingContainerSize",value:function(){var e=yf(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}),t=e.width,n=e.height;this.elements.scrubbing.container.style.width="".concat(t,"px"),this.elements.scrubbing.container.style.height="".concat(n,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(e.naturalHeight*n,"px"),e.style.width="".concat(e.naturalWidth*n,"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?yf(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}).height:this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),wf={insertElements:function(e,t){var n=this;nu(t)?Pu(e,this.media,{src:t}):au(t)&&t.forEach((function(t){Pu(e,n.media,t)}))},change:function(e){var t=this;ku(e,"sources.length")?(eh.cancelRequests.call(this),this.destroy.call(this,(function(){t.options.quality=[],xu(t.media),t.media=null,su(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,i=e.type,r=Ao(n,1)[0],a=r.provider,o=void 0===a?Fh.html5:a,s=r.src,l="html5"===o?i:"div",c="html5"===o?{}:{src:s};Object.assign(t,{provider:o,type:i,supported:qu.check(i,o,t.config.playsinline),media:Au(l,c)}),t.elements.container.appendChild(t.media),iu(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),du(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),$h.addStyleHook.call(t),t.isHTML5&&wf.insertElements.call(t,"source",n),t.config.title=e.title,sf.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&wf.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&$h.build.call(t),t.isHTML5&&t.media.load(),du(e.previewThumbnails)||(Object.assign(t.config.previewThumbnails,e.previewThumbnails),t.previewThumbnails&&t.previewThumbnails.loaded&&(t.previewThumbnails.destroy(),t.previewThumbnails=null),t.config.previewThumbnails.enabled&&(t.previewThumbnails=new bf(t))),t.fullscreen.update()}),!0)):this.debug.warn("Invalid source format")}};var kf,Tf=function(){function e(t,n){var i=this;if(yo(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=qu.touch,this.media=t,nu(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||ou(this.media)||au(this.media))&&(this.media=this.media[0]),this.config=Tu({},_h,e.defaults,n||{},function(){try{return JSON.parse(i.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new Vh(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",qu),!Zc(this.media)&&su(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(qu.check().api){var r=this.media.cloneNode(!0);r.autoplay=!1,this.elements.original=r;var a=this.media.tagName.toLowerCase(),o=null,s=null;switch(a){case"div":if(o=this.media.querySelector("iframe"),su(o)){if(s=Nh(o.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?Fh.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?Fh.vimeo:null}(s.toString()),this.elements.container=this.media,this.media=o,this.elements.container.className="",s.search.length){var l=["1","true"];l.includes(s.searchParams.get("autoplay"))&&(this.config.autoplay=!0),l.includes(s.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=l.includes(s.searchParams.get("playsinline")),this.config.youtube.hl=s.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(du(this.provider)||!Object.keys(Fh).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=Hh;break;case"video":case"audio":this.type=a,this.provider=Fh.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=qu.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new Yh(this),this.storage=new Sh(this),this.media.plyr=this,su(this.elements.container)||(this.elements.container=Au("div",{tabindex:0}),Su(this.media,this.elements.container)),$h.migrateStyles.call(this),$h.addStyleHook.call(this),sf.setup.call(this),this.config.debug&&Vu.call(this,this.elements.container,this.config.events.join(" "),(function(e){i.debug.log("event: ".concat(e.type))})),this.fullscreen=new zh(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&$h.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new lf(this)),this.isHTML5&&this.config.autoplay&&setTimeout((function(){return Gu(i.play())}),10),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new bf(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return wo(e,[{key:"play",value:function(){var e=this;return ru(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((function(){return e.ads.play()})).catch((function(){return Gu(e.media.play())})),this.media.play()):null}},{key:"pause",value:function(){return this.playing&&ru(this.media.pause)?this.media.pause():null}},{key:"togglePlay",value:function(e){return(iu(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):ru(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime-=tu(e)?e:this.config.seekTime}},{key:"forward",value:function(e){this.currentTime+=tu(e)?e:this.config.seekTime}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(tu(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){Mh.toggle.call(this,e,!1)}},{key:"airplay",value:function(){qu.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=Nu(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,i=ju(this.elements.container,this.config.classNames.hideControls,n);if(i&&au(this.config.controls)&&this.config.controls.includes("settings")&&!du(this.config.settings)&&jh.toggleMenu.call(this,!1),i!==t){var r=i?"controlshidden":"controlsshown";Ku.call(this,this.media,r)}return!i}return!1}},{key:"on",value:function(e,t){Vu.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){Wu.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){zu(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var i=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&(xu(t.elements.buttons.play),xu(t.elements.captions),xu(t.elements.controls),xu(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),ru(e)&&e()):($u.call(t),Ou(t.elements.original,t.elements.container),Ku.call(t,t.elements.original,"destroyed",!0),ru(e)&&e.call(t.elements.original),t.ready=!1,setTimeout((function(){t.elements=null,t.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?($h.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&ru(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}}},{key:"supports",value:function(e){return qu.mime.call(this,e)}},{key:"isHTML5",get:function(){return this.provider===Fh.html5}},{key:"isEmbed",get:function(){return this.isYouTube||this.isVimeo}},{key:"isYouTube",get:function(){return this.provider===Fh.youtube}},{key:"isVimeo",get:function(){return this.provider===Fh.vimeo}},{key:"isVideo",get:function(){return this.type===Hh}},{key:"isAudio",get:function(){return this.type===qh}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=tu(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return tu(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=tu(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;nu(t)&&(t=Number(t)),tu(t)||(t=this.storage.get("volume")),tu(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!du(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;iu(t)||(t=this.storage.get("muted")),iu(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=this,n=null;tu(e)&&(n=e),tu(n)||(n=this.storage.get("speed")),tu(n)||(n=this.config.speed.selected);var i=this.minimumSpeed,r=this.maximumSpeed;n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:255;return Math.min(Math.max(e,t),n)}(n,i,r),this.config.speed.selected=n,setTimeout((function(){t.media.playbackRate=n}),0)},get:function(){return Number(this.media.playbackRate)}},{key:"minimumSpeed",get:function(){return this.isYouTube?Math.min.apply(Math,Po(this.options.speed)):this.isVimeo?.5:.0625}},{key:"maximumSpeed",get:function(){return this.isYouTube?Math.max.apply(Math,Po(this.options.speed)):this.isVimeo?2:16}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var i=[!du(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(tu),r=!0;if(!n.includes(i)){var a=function(e,t){return au(e)&&e.length?e.reduce((function(e,n){return Math.abs(n-t)<Math.abs(e-t)?n:e})):null}(n,i);this.debug.warn("Unsupported quality option: ".concat(i,", using ").concat(a," instead")),i=a,r=!1}t.selected=i,this.media.quality=i,r&&this.storage.set({quality:i})}},get:function(){return this.media.quality}},{key:"loop",set:function(e){var t=iu(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t},get:function(){return Boolean(this.media.loop)}},{key:"source",set:function(e){wf.change.call(this,e)},get:function(){return this.media.currentSrc}},{key:"download",get:function(){var e=this.config.urls.download;return fu(e)?e:this.source},set:function(e){fu(e)&&(this.config.urls.download=e,jh.setDownloadUrl.call(this))}},{key:"poster",set:function(e){this.isVideo?$h.setPoster.call(this,e,!1).catch((function(){})):this.debug.warn("Poster can only be set for video")},get:function(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}},{key:"ratio",get:function(){if(!this.isVideo)return null;var e=Qu(Ju.call(this));return au(e)?e.join(":"):e},set:function(e){this.isVideo?nu(e)&&Xu(e)?(this.config.ratio=e,Zu.call(this)):this.debug.error("Invalid aspect ratio specified (".concat(e,")")):this.debug.warn("Aspect ratio can only be set for video")}},{key:"autoplay",set:function(e){var t=iu(e)?e:this.config.autoplay;this.config.autoplay=t},get:function(){return Boolean(this.config.autoplay)}},{key:"currentTrack",set:function(e){Mh.set.call(this,e,!1)},get:function(){var e=this.captions,t=e.toggled,n=e.currentTrack;return t?n:-1}},{key:"language",set:function(e){Mh.setLanguage.call(this,e,!1)},get:function(){return(Mh.getCurrentTrack.call(this)||{}).language}},{key:"pip",set:function(e){if(qu.pip){var t=iu(e)?e:!this.pip;ru(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?Uh:Dh),ru(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}},get:function(){return qu.pip?du(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===Uh:null}}],[{key:"supported",value:function(e,t,n){return qu.check(e,t,n)}},{key:"loadSprite",value:function(e,t){return Ah(e,t)}},{key:"setup",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null;return nu(t)?i=Array.from(document.querySelectorAll(t)):ou(t)?i=Array.from(t):au(t)&&(i=t.filter(su)),du(i)?null:i.map((function(t){return new e(t,n)}))}}]),e}();return Tf.defaults=(kf=_h,JSON.parse(JSON.stringify(kf))),Tf}));
|
4 |
-
//# sourceMappingURL=plyr.polyfilled.min.js.map
|
1 |
"object"==typeof navigator&&function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Plyr",t):(e=e||self).Plyr=t()}(this,(function(){"use strict";!function(){if("undefined"!=typeof window)try{var e=new window.CustomEvent("test",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var t=function(e,t){var n,i;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i=n.preventDefault,n.preventDefault=function(){i.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}();var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var n=function(e){return e&&e.Math==Math&&e},i=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")(),r=function(e){try{return!!e()}catch(e){return!0}},a=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),o={}.propertyIsEnumerable,s=Object.getOwnPropertyDescriptor,l={f:s&&!o.call({1:2},1)?function(e){var t=s(this,e);return!!t&&t.enumerable}:o},c=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},u={}.toString,h=function(e){return u.call(e).slice(8,-1)},f="".split,d=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==h(e)?f.call(e,""):Object(e)}:Object,p=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},m=function(e){return d(p(e))},g=function(e){return"object"==typeof e?null!==e:"function"==typeof e},v=function(e,t){if(!g(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!g(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!g(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!g(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")},y={}.hasOwnProperty,b=function(e,t){return y.call(e,t)},w=i.document,k=g(w)&&g(w.createElement),T=function(e){return k?w.createElement(e):{}},S=!a&&!r((function(){return 7!=Object.defineProperty(T("div"),"a",{get:function(){return 7}}).a})),E=Object.getOwnPropertyDescriptor,A={f:a?E:function(e,t){if(e=m(e),t=v(t,!0),S)try{return E(e,t)}catch(e){}if(b(e,t))return c(!l.f.call(e,t),e[t])}},P=function(e){if(!g(e))throw TypeError(String(e)+" is not an object");return e},x=Object.defineProperty,C={f:a?x:function(e,t,n){if(P(e),t=v(t,!0),P(n),S)try{return x(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},O=a?function(e,t,n){return C.f(e,t,c(1,n))}:function(e,t,n){return e[t]=n,e},I=function(e,t){try{O(i,e,t)}catch(n){i[e]=t}return t},L=i["__core-js_shared__"]||I("__core-js_shared__",{}),j=Function.toString;"function"!=typeof L.inspectSource&&(L.inspectSource=function(e){return j.call(e)});var N,R,M,_=L.inspectSource,U=i.WeakMap,D="function"==typeof U&&/native code/.test(_(U)),F=t((function(e){(e.exports=function(e,t){return L[e]||(L[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),q=0,H=Math.random(),B=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++q+H).toString(36)},V=F("keys"),z=function(e){return V[e]||(V[e]=B(e))},W={},K=i.WeakMap;if(D){var $=new K,Y=$.get,G=$.has,X=$.set;N=function(e,t){return X.call($,e,t),t},R=function(e){return Y.call($,e)||{}},M=function(e){return G.call($,e)}}else{var Q=z("state");W[Q]=!0,N=function(e,t){return O(e,Q,t),t},R=function(e){return b(e,Q)?e[Q]:{}},M=function(e){return b(e,Q)}}var J,Z={set:N,get:R,has:M,enforce:function(e){return M(e)?R(e):N(e,{})},getterFor:function(e){return function(t){var n;if(!g(t)||(n=R(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},ee=t((function(e){var t=Z.get,n=Z.enforce,r=String(String).split("String");(e.exports=function(e,t,a,o){var s=!!o&&!!o.unsafe,l=!!o&&!!o.enumerable,c=!!o&&!!o.noTargetGet;"function"==typeof a&&("string"!=typeof t||b(a,"name")||O(a,"name",t),n(a).source=r.join("string"==typeof t?t:"")),e!==i?(s?!c&&e[t]&&(l=!0):delete e[t],l?e[t]=a:O(e,t,a)):l?e[t]=a:I(t,a)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||_(this)}))})),te=i,ne=function(e){return"function"==typeof e?e:void 0},ie=function(e,t){return arguments.length<2?ne(te[e])||ne(i[e]):te[e]&&te[e][t]||i[e]&&i[e][t]},re=Math.ceil,ae=Math.floor,oe=function(e){return isNaN(e=+e)?0:(e>0?ae:re)(e)},se=Math.min,le=function(e){return e>0?se(oe(e),9007199254740991):0},ce=Math.max,ue=Math.min,he=function(e,t){var n=oe(e);return n<0?ce(n+t,0):ue(n,t)},fe=function(e){return function(t,n,i){var r,a=m(t),o=le(a.length),s=he(i,o);if(e&&n!=n){for(;o>s;)if((r=a[s++])!=r)return!0}else for(;o>s;s++)if((e||s in a)&&a[s]===n)return e||s||0;return!e&&-1}},de={includes:fe(!0),indexOf:fe(!1)},pe=de.indexOf,me=function(e,t){var n,i=m(e),r=0,a=[];for(n in i)!b(W,n)&&b(i,n)&&a.push(n);for(;t.length>r;)b(i,n=t[r++])&&(~pe(a,n)||a.push(n));return a},ge=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ve=ge.concat("length","prototype"),ye={f:Object.getOwnPropertyNames||function(e){return me(e,ve)}},be={f:Object.getOwnPropertySymbols},we=ie("Reflect","ownKeys")||function(e){var t=ye.f(P(e)),n=be.f;return n?t.concat(n(e)):t},ke=function(e,t){for(var n=we(t),i=C.f,r=A.f,a=0;a<n.length;a++){var o=n[a];b(e,o)||i(e,o,r(t,o))}},Te=/#|\.prototype\./,Se=function(e,t){var n=Ae[Ee(e)];return n==xe||n!=Pe&&("function"==typeof t?r(t):!!t)},Ee=Se.normalize=function(e){return String(e).replace(Te,".").toLowerCase()},Ae=Se.data={},Pe=Se.NATIVE="N",xe=Se.POLYFILL="P",Ce=Se,Oe=A.f,Ie=function(e,t){var n,r,a,o,s,l=e.target,c=e.global,u=e.stat;if(n=c?i:u?i[l]||I(l,{}):(i[l]||{}).prototype)for(r in t){if(o=t[r],a=e.noTargetGet?(s=Oe(n,r))&&s.value:n[r],!Ce(c?r:l+(u?".":"#")+r,e.forced)&&void 0!==a){if(typeof o==typeof a)continue;ke(o,a)}(e.sham||a&&a.sham)&&O(o,"sham",!0),ee(n,r,o,e)}},Le=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())})),je=Le&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ne=Array.isArray||function(e){return"Array"==h(e)},Re=function(e){return Object(p(e))},Me=Object.keys||function(e){return me(e,ge)},_e=a?Object.defineProperties:function(e,t){P(e);for(var n,i=Me(t),r=i.length,a=0;r>a;)C.f(e,n=i[a++],t[n]);return e},Ue=ie("document","documentElement"),De=z("IE_PROTO"),Fe=function(){},qe=function(e){return"<script>"+e+"<\/script>"},He=function(){try{J=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;He=J?function(e){e.write(qe("")),e.close();var t=e.parentWindow.Object;return e=null,t}(J):((t=T("iframe")).style.display="none",Ue.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(qe("document.F=Object")),e.close(),e.F);for(var n=ge.length;n--;)delete He.prototype[ge[n]];return He()};W[De]=!0;var Be=Object.create||function(e,t){var n;return null!==e?(Fe.prototype=P(e),n=new Fe,Fe.prototype=null,n[De]=e):n=He(),void 0===t?n:_e(n,t)},Ve=ye.f,ze={}.toString,We="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],Ke={f:function(e){return We&&"[object Window]"==ze.call(e)?function(e){try{return Ve(e)}catch(e){return We.slice()}}(e):Ve(m(e))}},$e=F("wks"),Ye=i.Symbol,Ge=je?Ye:Ye&&Ye.withoutSetter||B,Xe=function(e){return b($e,e)||(Le&&b(Ye,e)?$e[e]=Ye[e]:$e[e]=Ge("Symbol."+e)),$e[e]},Qe={f:Xe},Je=C.f,Ze=function(e){var t=te.Symbol||(te.Symbol={});b(t,e)||Je(t,e,{value:Qe.f(e)})},et=C.f,tt=Xe("toStringTag"),nt=function(e,t,n){e&&!b(e=n?e:e.prototype,tt)&&et(e,tt,{configurable:!0,value:t})},it=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},rt=function(e,t,n){if(it(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}},at=Xe("species"),ot=function(e,t){var n;return Ne(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!Ne(n.prototype)?g(n)&&null===(n=n[at])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},st=[].push,lt=function(e){var t=1==e,n=2==e,i=3==e,r=4==e,a=6==e,o=5==e||a;return function(s,l,c,u){for(var h,f,p=Re(s),m=d(p),g=rt(l,c,3),v=le(m.length),y=0,b=u||ot,w=t?b(s,v):n?b(s,0):void 0;v>y;y++)if((o||y in m)&&(f=g(h=m[y],y,p),e))if(t)w[y]=f;else if(f)switch(e){case 3:return!0;case 5:return h;case 6:return y;case 2:st.call(w,h)}else if(r)return!1;return a?-1:i||r?r:w}},ct={forEach:lt(0),map:lt(1),filter:lt(2),some:lt(3),every:lt(4),find:lt(5),findIndex:lt(6)},ut=ct.forEach,ht=z("hidden"),ft=Xe("toPrimitive"),dt=Z.set,pt=Z.getterFor("Symbol"),mt=Object.prototype,gt=i.Symbol,vt=ie("JSON","stringify"),yt=A.f,bt=C.f,wt=Ke.f,kt=l.f,Tt=F("symbols"),St=F("op-symbols"),Et=F("string-to-symbol-registry"),At=F("symbol-to-string-registry"),Pt=F("wks"),xt=i.QObject,Ct=!xt||!xt.prototype||!xt.prototype.findChild,Ot=a&&r((function(){return 7!=Be(bt({},"a",{get:function(){return bt(this,"a",{value:7}).a}})).a}))?function(e,t,n){var i=yt(mt,t);i&&delete mt[t],bt(e,t,n),i&&e!==mt&&bt(mt,t,i)}:bt,It=function(e,t){var n=Tt[e]=Be(gt.prototype);return dt(n,{type:"Symbol",tag:e,description:t}),a||(n.description=t),n},Lt=je?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof gt},jt=function(e,t,n){e===mt&&jt(St,t,n),P(e);var i=v(t,!0);return P(n),b(Tt,i)?(n.enumerable?(b(e,ht)&&e[ht][i]&&(e[ht][i]=!1),n=Be(n,{enumerable:c(0,!1)})):(b(e,ht)||bt(e,ht,c(1,{})),e[ht][i]=!0),Ot(e,i,n)):bt(e,i,n)},Nt=function(e,t){P(e);var n=m(t),i=Me(n).concat(Ut(n));return ut(i,(function(t){a&&!Rt.call(n,t)||jt(e,t,n[t])})),e},Rt=function(e){var t=v(e,!0),n=kt.call(this,t);return!(this===mt&&b(Tt,t)&&!b(St,t))&&(!(n||!b(this,t)||!b(Tt,t)||b(this,ht)&&this[ht][t])||n)},Mt=function(e,t){var n=m(e),i=v(t,!0);if(n!==mt||!b(Tt,i)||b(St,i)){var r=yt(n,i);return!r||!b(Tt,i)||b(n,ht)&&n[ht][i]||(r.enumerable=!0),r}},_t=function(e){var t=wt(m(e)),n=[];return ut(t,(function(e){b(Tt,e)||b(W,e)||n.push(e)})),n},Ut=function(e){var t=e===mt,n=wt(t?St:m(e)),i=[];return ut(n,(function(e){!b(Tt,e)||t&&!b(mt,e)||i.push(Tt[e])})),i};if(Le||(ee((gt=function(){if(this instanceof gt)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=B(e),n=function(e){this===mt&&n.call(St,e),b(this,ht)&&b(this[ht],t)&&(this[ht][t]=!1),Ot(this,t,c(1,e))};return a&&Ct&&Ot(mt,t,{configurable:!0,set:n}),It(t,e)}).prototype,"toString",(function(){return pt(this).tag})),ee(gt,"withoutSetter",(function(e){return It(B(e),e)})),l.f=Rt,C.f=jt,A.f=Mt,ye.f=Ke.f=_t,be.f=Ut,Qe.f=function(e){return It(Xe(e),e)},a&&(bt(gt.prototype,"description",{configurable:!0,get:function(){return pt(this).description}}),ee(mt,"propertyIsEnumerable",Rt,{unsafe:!0}))),Ie({global:!0,wrap:!0,forced:!Le,sham:!Le},{Symbol:gt}),ut(Me(Pt),(function(e){Ze(e)})),Ie({target:"Symbol",stat:!0,forced:!Le},{for:function(e){var t=String(e);if(b(Et,t))return Et[t];var n=gt(t);return Et[t]=n,At[n]=t,n},keyFor:function(e){if(!Lt(e))throw TypeError(e+" is not a symbol");if(b(At,e))return At[e]},useSetter:function(){Ct=!0},useSimple:function(){Ct=!1}}),Ie({target:"Object",stat:!0,forced:!Le,sham:!a},{create:function(e,t){return void 0===t?Be(e):Nt(Be(e),t)},defineProperty:jt,defineProperties:Nt,getOwnPropertyDescriptor:Mt}),Ie({target:"Object",stat:!0,forced:!Le},{getOwnPropertyNames:_t,getOwnPropertySymbols:Ut}),Ie({target:"Object",stat:!0,forced:r((function(){be.f(1)}))},{getOwnPropertySymbols:function(e){return be.f(Re(e))}}),vt){var Dt=!Le||r((function(){var e=gt();return"[null]"!=vt([e])||"{}"!=vt({a:e})||"{}"!=vt(Object(e))}));Ie({target:"JSON",stat:!0,forced:Dt},{stringify:function(e,t,n){for(var i,r=[e],a=1;arguments.length>a;)r.push(arguments[a++]);if(i=t,(g(t)||void 0!==e)&&!Lt(e))return Ne(t)||(t=function(e,t){if("function"==typeof i&&(t=i.call(this,e,t)),!Lt(t))return t}),r[1]=t,vt.apply(null,r)}})}gt.prototype[ft]||O(gt.prototype,ft,gt.prototype.valueOf),nt(gt,"Symbol"),W[ht]=!0;var Ft=C.f,qt=i.Symbol;if(a&&"function"==typeof qt&&(!("description"in qt.prototype)||void 0!==qt().description)){var Ht={},Bt=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof Bt?new qt(e):void 0===e?qt():qt(e);return""===e&&(Ht[t]=!0),t};ke(Bt,qt);var Vt=Bt.prototype=qt.prototype;Vt.constructor=Bt;var zt=Vt.toString,Wt="Symbol(test)"==String(qt("test")),Kt=/^Symbol\((.*)\)[^)]+$/;Ft(Vt,"description",{configurable:!0,get:function(){var e=g(this)?this.valueOf():this,t=zt.call(e);if(b(Ht,e))return"";var n=Wt?t.slice(7,-1):t.replace(Kt,"$1");return""===n?void 0:n}}),Ie({global:!0,forced:!0},{Symbol:Bt})}Ze("iterator");var $t=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))},Yt=Object.defineProperty,Gt={},Xt=function(e){throw e},Qt=function(e,t){if(b(Gt,e))return Gt[e];t||(t={});var n=[][e],i=!!b(t,"ACCESSORS")&&t.ACCESSORS,o=b(t,0)?t[0]:Xt,s=b(t,1)?t[1]:void 0;return Gt[e]=!!n&&!r((function(){if(i&&!a)return!0;var e={length:-1};i?Yt(e,1,{enumerable:!0,get:Xt}):e[1]=1,n.call(e,o,s)}))},Jt=ct.forEach,Zt=$t("forEach"),en=Qt("forEach"),tn=Zt&&en?[].forEach:function(e){return Jt(this,e,arguments.length>1?arguments[1]:void 0)};Ie({target:"Array",proto:!0,forced:[].forEach!=tn},{forEach:tn});var nn=de.indexOf,rn=[].indexOf,an=!!rn&&1/[1].indexOf(1,-0)<0,on=$t("indexOf"),sn=Qt("indexOf",{ACCESSORS:!0,1:0});Ie({target:"Array",proto:!0,forced:an||!on||!sn},{indexOf:function(e){return an?rn.apply(this,arguments)||0:nn(this,e,arguments.length>1?arguments[1]:void 0)}});var ln=Xe("unscopables"),cn=Array.prototype;null==cn[ln]&&C.f(cn,ln,{configurable:!0,value:Be(null)});var un,hn,fn,dn=function(e){cn[ln][e]=!0},pn={},mn=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),gn=z("IE_PROTO"),vn=Object.prototype,yn=mn?Object.getPrototypeOf:function(e){return e=Re(e),b(e,gn)?e[gn]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?vn:null},bn=Xe("iterator"),wn=!1;[].keys&&("next"in(fn=[].keys())?(hn=yn(yn(fn)))!==Object.prototype&&(un=hn):wn=!0),null==un&&(un={}),b(un,bn)||O(un,bn,(function(){return this}));var kn={IteratorPrototype:un,BUGGY_SAFARI_ITERATORS:wn},Tn=kn.IteratorPrototype,Sn=function(){return this},En=function(e,t,n){var i=t+" Iterator";return e.prototype=Be(Tn,{next:c(1,n)}),nt(e,i,!1),pn[i]=Sn,e},An=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,i){return P(n),function(e){if(!g(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype")}(i),t?e.call(n,i):n.__proto__=i,n}}():void 0),Pn=kn.IteratorPrototype,xn=kn.BUGGY_SAFARI_ITERATORS,Cn=Xe("iterator"),On=function(){return this},In=function(e,t,n,i,r,a,o){En(n,t,i);var s,l,c,u=function(e){if(e===r&&m)return m;if(!xn&&e in d)return d[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},h=t+" Iterator",f=!1,d=e.prototype,p=d[Cn]||d["@@iterator"]||r&&d[r],m=!xn&&p||u(r),g="Array"==t&&d.entries||p;if(g&&(s=yn(g.call(new e)),Pn!==Object.prototype&&s.next&&(yn(s)!==Pn&&(An?An(s,Pn):"function"!=typeof s[Cn]&&O(s,Cn,On)),nt(s,h,!0))),"values"==r&&p&&"values"!==p.name&&(f=!0,m=function(){return p.call(this)}),d[Cn]!==m&&O(d,Cn,m),pn[t]=m,r)if(l={values:u("values"),keys:a?m:u("keys"),entries:u("entries")},o)for(c in l)(xn||f||!(c in d))&&ee(d,c,l[c]);else Ie({target:t,proto:!0,forced:xn||f},l);return l},Ln=Z.set,jn=Z.getterFor("Array Iterator"),Nn=In(Array,"Array",(function(e,t){Ln(this,{type:"Array Iterator",target:m(e),index:0,kind:t})}),(function(){var e=jn(this),t=e.target,n=e.kind,i=e.index++;return!t||i>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:t[i],done:!1}:{value:[i,t[i]],done:!1}}),"values");pn.Arguments=pn.Array,dn("keys"),dn("values"),dn("entries");var Rn=[].join,Mn=d!=Object,_n=$t("join",",");Ie({target:"Array",proto:!0,forced:Mn||!_n},{join:function(e){return Rn.call(m(this),void 0===e?",":e)}});var Un,Dn,Fn=function(e,t,n){var i=v(t);i in e?C.f(e,i,c(0,n)):e[i]=n},qn=ie("navigator","userAgent")||"",Hn=i.process,Bn=Hn&&Hn.versions,Vn=Bn&&Bn.v8;Vn?Dn=(Un=Vn.split("."))[0]+Un[1]:qn&&(!(Un=qn.match(/Edge\/(\d+)/))||Un[1]>=74)&&(Un=qn.match(/Chrome\/(\d+)/))&&(Dn=Un[1]);var zn=Dn&&+Dn,Wn=Xe("species"),Kn=function(e){return zn>=51||!r((function(){var t=[];return(t.constructor={})[Wn]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},$n=Kn("slice"),Yn=Qt("slice",{ACCESSORS:!0,0:0,1:2}),Gn=Xe("species"),Xn=[].slice,Qn=Math.max;Ie({target:"Array",proto:!0,forced:!$n||!Yn},{slice:function(e,t){var n,i,r,a=m(this),o=le(a.length),s=he(e,o),l=he(void 0===t?o:t,o);if(Ne(a)&&("function"!=typeof(n=a.constructor)||n!==Array&&!Ne(n.prototype)?g(n)&&null===(n=n[Gn])&&(n=void 0):n=void 0,n===Array||void 0===n))return Xn.call(a,s,l);for(i=new(void 0===n?Array:n)(Qn(l-s,0)),r=0;s<l;s++,r++)s in a&&Fn(i,r,a[s]);return i.length=r,i}});var Jn={};Jn[Xe("toStringTag")]="z";var Zn="[object z]"===String(Jn),ei=Xe("toStringTag"),ti="Arguments"==h(function(){return arguments}()),ni=Zn?h:function(e){var t,n,i;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),ei))?n:ti?h(t):"Object"==(i=h(t))&&"function"==typeof t.callee?"Arguments":i},ii=Zn?{}.toString:function(){return"[object "+ni(this)+"]"};Zn||ee(Object.prototype,"toString",ii,{unsafe:!0});var ri=function(){var e=P(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function ai(e,t){return RegExp(e,t)}var oi={UNSUPPORTED_Y:r((function(){var e=ai("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET:r((function(){var e=ai("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},si=RegExp.prototype.exec,li=String.prototype.replace,ci=si,ui=function(){var e=/a/,t=/b*/g;return si.call(e,"a"),si.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),hi=oi.UNSUPPORTED_Y||oi.BROKEN_CARET,fi=void 0!==/()??/.exec("")[1];(ui||fi||hi)&&(ci=function(e){var t,n,i,r,a=this,o=hi&&a.sticky,s=ri.call(a),l=a.source,c=0,u=e;return o&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),u=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(l="(?: "+l+")",u=" "+u,c++),n=new RegExp("^(?:"+l+")",s)),fi&&(n=new RegExp("^"+l+"$(?!\\s)",s)),ui&&(t=a.lastIndex),i=si.call(o?n:a,u),o?i?(i.input=i.input.slice(c),i[0]=i[0].slice(c),i.index=a.lastIndex,a.lastIndex+=i[0].length):a.lastIndex=0:ui&&i&&(a.lastIndex=a.global?i.index+i[0].length:t),fi&&i&&i.length>1&&li.call(i[0],n,(function(){for(r=1;r<arguments.length-2;r++)void 0===arguments[r]&&(i[r]=void 0)})),i});var di=ci;Ie({target:"RegExp",proto:!0,forced:/./.exec!==di},{exec:di});var pi=RegExp.prototype,mi=pi.toString,gi=r((function(){return"/a/b"!=mi.call({source:"a",flags:"b"})})),vi="toString"!=mi.name;(gi||vi)&&ee(RegExp.prototype,"toString",(function(){var e=P(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(void 0===n&&e instanceof RegExp&&!("flags"in pi)?ri.call(e):n)}),{unsafe:!0});var yi=function(e){return function(t,n){var i,r,a=String(p(t)),o=oe(n),s=a.length;return o<0||o>=s?e?"":void 0:(i=a.charCodeAt(o))<55296||i>56319||o+1===s||(r=a.charCodeAt(o+1))<56320||r>57343?e?a.charAt(o):i:e?a.slice(o,o+2):r-56320+(i-55296<<10)+65536}},bi={codeAt:yi(!1),charAt:yi(!0)},wi=bi.charAt,ki=Z.set,Ti=Z.getterFor("String Iterator");In(String,"String",(function(e){ki(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=Ti(this),n=t.string,i=t.index;return i>=n.length?{value:void 0,done:!0}:(e=wi(n,i),t.index+=e.length,{value:e,done:!1})}));var Si=Xe("species"),Ei=!r((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),Ai="$0"==="a".replace(/./,"$0"),Pi=Xe("replace"),xi=!!/./[Pi]&&""===/./[Pi]("a","$0"),Ci=!r((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),Oi=function(e,t,n,i){var a=Xe(e),o=!r((function(){var t={};return t[a]=function(){return 7},7!=""[e](t)})),s=o&&!r((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[Si]=function(){return n},n.flags="",n[a]=/./[a]),n.exec=function(){return t=!0,null},n[a](""),!t}));if(!o||!s||"replace"===e&&(!Ei||!Ai||xi)||"split"===e&&!Ci){var l=/./[a],c=n(a,""[e],(function(e,t,n,i,r){return t.exec===di?o&&!r?{done:!0,value:l.call(t,n,i)}:{done:!0,value:e.call(n,t,i)}:{done:!1}}),{REPLACE_KEEPS_$0:Ai,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:xi}),u=c[0],h=c[1];ee(String.prototype,e,u),ee(RegExp.prototype,a,2==t?function(e,t){return h.call(e,this,t)}:function(e){return h.call(e,this)})}i&&O(RegExp.prototype[a],"sham",!0)},Ii=bi.charAt,Li=function(e,t,n){return t+(n?Ii(e,t).length:1)},ji=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==h(e))throw TypeError("RegExp#exec called on incompatible receiver");return di.call(e,t)},Ni=Math.max,Ri=Math.min,Mi=Math.floor,_i=/\$([$&'`]|\d\d?|<[^>]*>)/g,Ui=/\$([$&'`]|\d\d?)/g;Oi("replace",2,(function(e,t,n,i){var r=i.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=i.REPLACE_KEEPS_$0,o=r?"$":"$0";return[function(n,i){var r=p(this),a=null==n?void 0:n[e];return void 0!==a?a.call(n,r,i):t.call(String(r),n,i)},function(e,i){if(!r&&a||"string"==typeof i&&-1===i.indexOf(o)){var l=n(t,e,this,i);if(l.done)return l.value}var c=P(e),u=String(this),h="function"==typeof i;h||(i=String(i));var f=c.global;if(f){var d=c.unicode;c.lastIndex=0}for(var p=[];;){var m=ji(c,u);if(null===m)break;if(p.push(m),!f)break;""===String(m[0])&&(c.lastIndex=Li(u,le(c.lastIndex),d))}for(var g,v="",y=0,b=0;b<p.length;b++){m=p[b];for(var w=String(m[0]),k=Ni(Ri(oe(m.index),u.length),0),T=[],S=1;S<m.length;S++)T.push(void 0===(g=m[S])?g:String(g));var E=m.groups;if(h){var A=[w].concat(T,k,u);void 0!==E&&A.push(E);var x=String(i.apply(void 0,A))}else x=s(w,u,k,T,E,i);k>=y&&(v+=u.slice(y,k)+x,y=k+w.length)}return v+u.slice(y)}];function s(e,n,i,r,a,o){var s=i+e.length,l=r.length,c=Ui;return void 0!==a&&(a=Re(a),c=_i),t.call(o,c,(function(t,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,i);case"'":return n.slice(s);case"<":c=a[o.slice(1,-1)];break;default:var u=+o;if(0===u)return t;if(u>l){var h=Mi(u/10);return 0===h?t:h<=l?void 0===r[h-1]?o.charAt(1):r[h-1]+o.charAt(1):t}c=r[u-1]}return void 0===c?"":c}))}}));var Di=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};Oi("search",1,(function(e,t,n){return[function(t){var n=p(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,n):new RegExp(t)[e](String(n))},function(e){var i=n(t,e,this);if(i.done)return i.value;var r=P(e),a=String(this),o=r.lastIndex;Di(o,0)||(r.lastIndex=0);var s=ji(r,a);return Di(r.lastIndex,o)||(r.lastIndex=o),null===s?-1:s.index}]}));var Fi=Xe("match"),qi=function(e){var t;return g(e)&&(void 0!==(t=e[Fi])?!!t:"RegExp"==h(e))},Hi=Xe("species"),Bi=function(e,t){var n,i=P(e).constructor;return void 0===i||null==(n=P(i)[Hi])?t:it(n)},Vi=[].push,zi=Math.min,Wi=!r((function(){return!RegExp(4294967295,"y")}));Oi("split",2,(function(e,t,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var i=String(p(this)),r=void 0===n?4294967295:n>>>0;if(0===r)return[];if(void 0===e)return[i];if(!qi(e))return t.call(i,e,r);for(var a,o,s,l=[],c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),u=0,h=new RegExp(e.source,c+"g");(a=di.call(h,i))&&!((o=h.lastIndex)>u&&(l.push(i.slice(u,a.index)),a.length>1&&a.index<i.length&&Vi.apply(l,a.slice(1)),s=a[0].length,u=o,l.length>=r));)h.lastIndex===a.index&&h.lastIndex++;return u===i.length?!s&&h.test("")||l.push(""):l.push(i.slice(u)),l.length>r?l.slice(0,r):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var r=p(this),a=null==t?void 0:t[e];return void 0!==a?a.call(t,r,n):i.call(String(r),t,n)},function(e,r){var a=n(i,e,this,r,i!==t);if(a.done)return a.value;var o=P(e),s=String(this),l=Bi(o,RegExp),c=o.unicode,u=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(Wi?"y":"g"),h=new l(Wi?o:"^(?:"+o.source+")",u),f=void 0===r?4294967295:r>>>0;if(0===f)return[];if(0===s.length)return null===ji(h,s)?[s]:[];for(var d=0,p=0,m=[];p<s.length;){h.lastIndex=Wi?p:0;var g,v=ji(h,Wi?s:s.slice(p));if(null===v||(g=zi(le(h.lastIndex+(Wi?0:p)),s.length))===d)p=Li(s,p,c);else{if(m.push(s.slice(d,p)),m.length===f)return m;for(var y=1;y<=v.length-1;y++)if(m.push(v[y]),m.length===f)return m;p=d=g}}return m.push(s.slice(d)),m}]}),!Wi);var Ki={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0};for(var $i in Ki){var Yi=i[$i],Gi=Yi&&Yi.prototype;if(Gi&&Gi.forEach!==tn)try{O(Gi,"forEach",tn)}catch(e){Gi.forEach=tn}}var Xi=Xe("iterator"),Qi=Xe("toStringTag"),Ji=Nn.values;for(var Zi in Ki){var er=i[Zi],tr=er&&er.prototype;if(tr){if(tr[Xi]!==Ji)try{O(tr,Xi,Ji)}catch(e){tr[Xi]=Ji}if(tr[Qi]||O(tr,Qi,Zi),Ki[Zi])for(var nr in Nn)if(tr[nr]!==Nn[nr])try{O(tr,nr,Nn[nr])}catch(e){tr[nr]=Nn[nr]}}}var ir=Xe("iterator"),rr=!r((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,i){t.delete("b"),n+=i+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[ir]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),ar=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e},or=Object.assign,sr=Object.defineProperty,lr=!or||r((function(){if(a&&1!==or({b:1},or(sr({},"a",{enumerable:!0,get:function(){sr(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=or({},e)[n]||"abcdefghijklmnopqrst"!=Me(or({},t)).join("")}))?function(e,t){for(var n=Re(e),i=arguments.length,r=1,o=be.f,s=l.f;i>r;)for(var c,u=d(arguments[r++]),h=o?Me(u).concat(o(u)):Me(u),f=h.length,p=0;f>p;)c=h[p++],a&&!s.call(u,c)||(n[c]=u[c]);return n}:or,cr=function(e,t,n,i){try{return i?t(P(n)[0],n[1]):t(n)}catch(t){var r=e.return;throw void 0!==r&&P(r.call(e)),t}},ur=Xe("iterator"),hr=Array.prototype,fr=function(e){return void 0!==e&&(pn.Array===e||hr[ur]===e)},dr=Xe("iterator"),pr=function(e){if(null!=e)return e[dr]||e["@@iterator"]||pn[ni(e)]},mr=function(e){var t,n,i,r,a,o,s=Re(e),l="function"==typeof this?this:Array,c=arguments.length,u=c>1?arguments[1]:void 0,h=void 0!==u,f=pr(s),d=0;if(h&&(u=rt(u,c>2?arguments[2]:void 0,2)),null==f||l==Array&&fr(f))for(n=new l(t=le(s.length));t>d;d++)o=h?u(s[d],d):s[d],Fn(n,d,o);else for(a=(r=f.call(s)).next,n=new l;!(i=a.call(r)).done;d++)o=h?cr(r,u,[i.value,d],!0):i.value,Fn(n,d,o);return n.length=d,n},gr=/[^\0-\u007E]/,vr=/[.\u3002\uFF0E\uFF61]/g,yr="Overflow: input needs wider integers to process",br=Math.floor,wr=String.fromCharCode,kr=function(e){return e+22+75*(e<26)},Tr=function(e,t,n){var i=0;for(e=n?br(e/700):e>>1,e+=br(e/t);e>455;i+=36)e=br(e/35);return br(i+36*e/(e+38))},Sr=function(e){var t,n,i=[],r=(e=function(e){for(var t=[],n=0,i=e.length;n<i;){var r=e.charCodeAt(n++);if(r>=55296&&r<=56319&&n<i){var a=e.charCodeAt(n++);56320==(64512&a)?t.push(((1023&r)<<10)+(1023&a)+65536):(t.push(r),n--)}else t.push(r)}return t}(e)).length,a=128,o=0,s=72;for(t=0;t<e.length;t++)(n=e[t])<128&&i.push(wr(n));var l=i.length,c=l;for(l&&i.push("-");c<r;){var u=2147483647;for(t=0;t<e.length;t++)(n=e[t])>=a&&n<u&&(u=n);var h=c+1;if(u-a>br((2147483647-o)/h))throw RangeError(yr);for(o+=(u-a)*h,a=u,t=0;t<e.length;t++){if((n=e[t])<a&&++o>2147483647)throw RangeError(yr);if(n==a){for(var f=o,d=36;;d+=36){var p=d<=s?1:d>=s+26?26:d-s;if(f<p)break;var m=f-p,g=36-p;i.push(wr(kr(p+m%g))),f=br(m/g)}i.push(wr(kr(f))),s=Tr(o,h,c==l),o=0,++c}}++o,++a}return i.join("")},Er=function(e,t,n){for(var i in t)ee(e,i,t[i],n);return e},Ar=function(e){var t=pr(e);if("function"!=typeof t)throw TypeError(String(e)+" is not iterable");return P(t.call(e))},Pr=ie("fetch"),xr=ie("Headers"),Cr=Xe("iterator"),Or=Z.set,Ir=Z.getterFor("URLSearchParams"),Lr=Z.getterFor("URLSearchParamsIterator"),jr=/\+/g,Nr=Array(4),Rr=function(e){return Nr[e-1]||(Nr[e-1]=RegExp("((?:%[\\da-f]{2}){"+e+"})","gi"))},Mr=function(e){try{return decodeURIComponent(e)}catch(t){return e}},_r=function(e){var t=e.replace(jr," "),n=4;try{return decodeURIComponent(t)}catch(e){for(;n;)t=t.replace(Rr(n--),Mr);return t}},Ur=/[!'()~]|%20/g,Dr={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Fr=function(e){return Dr[e]},qr=function(e){return encodeURIComponent(e).replace(Ur,Fr)},Hr=function(e,t){if(t)for(var n,i,r=t.split("&"),a=0;a<r.length;)(n=r[a++]).length&&(i=n.split("="),e.push({key:_r(i.shift()),value:_r(i.join("="))}))},Br=function(e){this.entries.length=0,Hr(this.entries,e)},Vr=function(e,t){if(e<t)throw TypeError("Not enough arguments")},zr=En((function(e,t){Or(this,{type:"URLSearchParamsIterator",iterator:Ar(Ir(e).entries),kind:t})}),"Iterator",(function(){var e=Lr(this),t=e.kind,n=e.iterator.next(),i=n.value;return n.done||(n.value="keys"===t?i.key:"values"===t?i.value:[i.key,i.value]),n})),Wr=function(){ar(this,Wr,"URLSearchParams");var e,t,n,i,r,a,o,s,l,c=arguments.length>0?arguments[0]:void 0,u=this,h=[];if(Or(u,{type:"URLSearchParams",entries:h,updateURL:function(){},updateSearchParams:Br}),void 0!==c)if(g(c))if("function"==typeof(e=pr(c)))for(n=(t=e.call(c)).next;!(i=n.call(t)).done;){if((o=(a=(r=Ar(P(i.value))).next).call(r)).done||(s=a.call(r)).done||!a.call(r).done)throw TypeError("Expected sequence with length 2");h.push({key:o.value+"",value:s.value+""})}else for(l in c)b(c,l)&&h.push({key:l,value:c[l]+""});else Hr(h,"string"==typeof c?"?"===c.charAt(0)?c.slice(1):c:c+"")},Kr=Wr.prototype;Er(Kr,{append:function(e,t){Vr(arguments.length,2);var n=Ir(this);n.entries.push({key:e+"",value:t+""}),n.updateURL()},delete:function(e){Vr(arguments.length,1);for(var t=Ir(this),n=t.entries,i=e+"",r=0;r<n.length;)n[r].key===i?n.splice(r,1):r++;t.updateURL()},get:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=0;i<t.length;i++)if(t[i].key===n)return t[i].value;return null},getAll:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=[],r=0;r<t.length;r++)t[r].key===n&&i.push(t[r].value);return i},has:function(e){Vr(arguments.length,1);for(var t=Ir(this).entries,n=e+"",i=0;i<t.length;)if(t[i++].key===n)return!0;return!1},set:function(e,t){Vr(arguments.length,1);for(var n,i=Ir(this),r=i.entries,a=!1,o=e+"",s=t+"",l=0;l<r.length;l++)(n=r[l]).key===o&&(a?r.splice(l--,1):(a=!0,n.value=s));a||r.push({key:o,value:s}),i.updateURL()},sort:function(){var e,t,n,i=Ir(this),r=i.entries,a=r.slice();for(r.length=0,n=0;n<a.length;n++){for(e=a[n],t=0;t<n;t++)if(r[t].key>e.key){r.splice(t,0,e);break}t===n&&r.push(e)}i.updateURL()},forEach:function(e){for(var t,n=Ir(this).entries,i=rt(e,arguments.length>1?arguments[1]:void 0,3),r=0;r<n.length;)i((t=n[r++]).value,t.key,this)},keys:function(){return new zr(this,"keys")},values:function(){return new zr(this,"values")},entries:function(){return new zr(this,"entries")}},{enumerable:!0}),ee(Kr,Cr,Kr.entries),ee(Kr,"toString",(function(){for(var e,t=Ir(this).entries,n=[],i=0;i<t.length;)e=t[i++],n.push(qr(e.key)+"="+qr(e.value));return n.join("&")}),{enumerable:!0}),nt(Wr,"URLSearchParams"),Ie({global:!0,forced:!rr},{URLSearchParams:Wr}),rr||"function"!=typeof Pr||"function"!=typeof xr||Ie({global:!0,enumerable:!0,forced:!0},{fetch:function(e){var t,n,i,r=[e];return arguments.length>1&&(t=arguments[1],g(t)&&(n=t.body,"URLSearchParams"===ni(n)&&((i=t.headers?new xr(t.headers):new xr).has("content-type")||i.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"),t=Be(t,{body:c(0,String(n)),headers:c(0,i)}))),r.push(t)),Pr.apply(this,r)}});var $r,Yr={URLSearchParams:Wr,getState:Ir},Gr=bi.codeAt,Xr=i.URL,Qr=Yr.URLSearchParams,Jr=Yr.getState,Zr=Z.set,ea=Z.getterFor("URL"),ta=Math.floor,na=Math.pow,ia=/[A-Za-z]/,ra=/[\d+-.A-Za-z]/,aa=/\d/,oa=/^(0x|0X)/,sa=/^[0-7]+$/,la=/^\d+$/,ca=/^[\dA-Fa-f]+$/,ua=/[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,ha=/[\u0000\u0009\u000A\u000D #/:?@[\\]]/,fa=/^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,da=/[\u0009\u000A\u000D]/g,pa=function(e,t){var n,i,r;if("["==t.charAt(0)){if("]"!=t.charAt(t.length-1))return"Invalid host";if(!(n=ga(t.slice(1,-1))))return"Invalid host";e.host=n}else if(Ea(e)){if(t=function(e){var t,n,i=[],r=e.toLowerCase().replace(vr,".").split(".");for(t=0;t<r.length;t++)n=r[t],i.push(gr.test(n)?"xn--"+Sr(n):n);return i.join(".")}(t),ua.test(t))return"Invalid host";if(null===(n=ma(t)))return"Invalid host";e.host=n}else{if(ha.test(t))return"Invalid host";for(n="",i=mr(t),r=0;r<i.length;r++)n+=Ta(i[r],ya);e.host=n}},ma=function(e){var t,n,i,r,a,o,s,l=e.split(".");if(l.length&&""==l[l.length-1]&&l.pop(),(t=l.length)>4)return e;for(n=[],i=0;i<t;i++){if(""==(r=l[i]))return e;if(a=10,r.length>1&&"0"==r.charAt(0)&&(a=oa.test(r)?16:8,r=r.slice(8==a?1:2)),""===r)o=0;else{if(!(10==a?la:8==a?sa:ca).test(r))return e;o=parseInt(r,a)}n.push(o)}for(i=0;i<t;i++)if(o=n[i],i==t-1){if(o>=na(256,5-t))return null}else if(o>255)return null;for(s=n.pop(),i=0;i<n.length;i++)s+=n[i]*na(256,3-i);return s},ga=function(e){var t,n,i,r,a,o,s,l=[0,0,0,0,0,0,0,0],c=0,u=null,h=0,f=function(){return e.charAt(h)};if(":"==f()){if(":"!=e.charAt(1))return;h+=2,u=++c}for(;f();){if(8==c)return;if(":"!=f()){for(t=n=0;n<4&&ca.test(f());)t=16*t+parseInt(f(),16),h++,n++;if("."==f()){if(0==n)return;if(h-=n,c>6)return;for(i=0;f();){if(r=null,i>0){if(!("."==f()&&i<4))return;h++}if(!aa.test(f()))return;for(;aa.test(f());){if(a=parseInt(f(),10),null===r)r=a;else{if(0==r)return;r=10*r+a}if(r>255)return;h++}l[c]=256*l[c]+r,2!=++i&&4!=i||c++}if(4!=i)return;break}if(":"==f()){if(h++,!f())return}else if(f())return;l[c++]=t}else{if(null!==u)return;h++,u=++c}}if(null!==u)for(o=c-u,c=7;0!=c&&o>0;)s=l[c],l[c--]=l[u+o-1],l[u+--o]=s;else if(8!=c)return;return l},va=function(e){var t,n,i,r;if("number"==typeof e){for(t=[],n=0;n<4;n++)t.unshift(e%256),e=ta(e/256);return t.join(".")}if("object"==typeof e){for(t="",i=function(e){for(var t=null,n=1,i=null,r=0,a=0;a<8;a++)0!==e[a]?(r>n&&(t=i,n=r),i=null,r=0):(null===i&&(i=a),++r);return r>n&&(t=i,n=r),t}(e),n=0;n<8;n++)r&&0===e[n]||(r&&(r=!1),i===n?(t+=n?":":"::",r=!0):(t+=e[n].toString(16),n<7&&(t+=":")));return"["+t+"]"}return e},ya={},ba=lr({},ya,{" ":1,'"':1,"<":1,">":1,"`":1}),wa=lr({},ba,{"#":1,"?":1,"{":1,"}":1}),ka=lr({},wa,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Ta=function(e,t){var n=Gr(e,0);return n>32&&n<127&&!b(t,e)?e:encodeURIComponent(e)},Sa={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Ea=function(e){return b(Sa,e.scheme)},Aa=function(e){return""!=e.username||""!=e.password},Pa=function(e){return!e.host||e.cannotBeABaseURL||"file"==e.scheme},xa=function(e,t){var n;return 2==e.length&&ia.test(e.charAt(0))&&(":"==(n=e.charAt(1))||!t&&"|"==n)},Ca=function(e){var t;return e.length>1&&xa(e.slice(0,2))&&(2==e.length||"/"===(t=e.charAt(2))||"\\"===t||"?"===t||"#"===t)},Oa=function(e){var t=e.path,n=t.length;!n||"file"==e.scheme&&1==n&&xa(t[0],!0)||t.pop()},Ia=function(e){return"."===e||"%2e"===e.toLowerCase()},La={},ja={},Na={},Ra={},Ma={},_a={},Ua={},Da={},Fa={},qa={},Ha={},Ba={},Va={},za={},Wa={},Ka={},$a={},Ya={},Ga={},Xa={},Qa={},Ja=function(e,t,n,i){var r,a,o,s,l,c=n||La,u=0,h="",f=!1,d=!1,p=!1;for(n||(e.scheme="",e.username="",e.password="",e.host=null,e.port=null,e.path=[],e.query=null,e.fragment=null,e.cannotBeABaseURL=!1,t=t.replace(fa,"")),t=t.replace(da,""),r=mr(t);u<=r.length;){switch(a=r[u],c){case La:if(!a||!ia.test(a)){if(n)return"Invalid scheme";c=Na;continue}h+=a.toLowerCase(),c=ja;break;case ja:if(a&&(ra.test(a)||"+"==a||"-"==a||"."==a))h+=a.toLowerCase();else{if(":"!=a){if(n)return"Invalid scheme";h="",c=Na,u=0;continue}if(n&&(Ea(e)!=b(Sa,h)||"file"==h&&(Aa(e)||null!==e.port)||"file"==e.scheme&&!e.host))return;if(e.scheme=h,n)return void(Ea(e)&&Sa[e.scheme]==e.port&&(e.port=null));h="","file"==e.scheme?c=za:Ea(e)&&i&&i.scheme==e.scheme?c=Ra:Ea(e)?c=Da:"/"==r[u+1]?(c=Ma,u++):(e.cannotBeABaseURL=!0,e.path.push(""),c=Ga)}break;case Na:if(!i||i.cannotBeABaseURL&&"#"!=a)return"Invalid scheme";if(i.cannotBeABaseURL&&"#"==a){e.scheme=i.scheme,e.path=i.path.slice(),e.query=i.query,e.fragment="",e.cannotBeABaseURL=!0,c=Qa;break}c="file"==i.scheme?za:_a;continue;case Ra:if("/"!=a||"/"!=r[u+1]){c=_a;continue}c=Fa,u++;break;case Ma:if("/"==a){c=qa;break}c=Ya;continue;case _a:if(e.scheme=i.scheme,a==$r)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query;else if("/"==a||"\\"==a&&Ea(e))c=Ua;else if("?"==a)e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query="",c=Xa;else{if("#"!=a){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.path.pop(),c=Ya;continue}e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=Qa}break;case Ua:if(!Ea(e)||"/"!=a&&"\\"!=a){if("/"!=a){e.username=i.username,e.password=i.password,e.host=i.host,e.port=i.port,c=Ya;continue}c=qa}else c=Fa;break;case Da:if(c=Fa,"/"!=a||"/"!=h.charAt(u+1))continue;u++;break;case Fa:if("/"!=a&&"\\"!=a){c=qa;continue}break;case qa:if("@"==a){f&&(h="%40"+h),f=!0,o=mr(h);for(var m=0;m<o.length;m++){var g=o[m];if(":"!=g||p){var v=Ta(g,ka);p?e.password+=v:e.username+=v}else p=!0}h=""}else if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)){if(f&&""==h)return"Invalid authority";u-=mr(h).length+1,h="",c=Ha}else h+=a;break;case Ha:case Ba:if(n&&"file"==e.scheme){c=Ka;continue}if(":"!=a||d){if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)){if(Ea(e)&&""==h)return"Invalid host";if(n&&""==h&&(Aa(e)||null!==e.port))return;if(s=pa(e,h))return s;if(h="",c=$a,n)return;continue}"["==a?d=!0:"]"==a&&(d=!1),h+=a}else{if(""==h)return"Invalid host";if(s=pa(e,h))return s;if(h="",c=Va,n==Ba)return}break;case Va:if(!aa.test(a)){if(a==$r||"/"==a||"?"==a||"#"==a||"\\"==a&&Ea(e)||n){if(""!=h){var y=parseInt(h,10);if(y>65535)return"Invalid port";e.port=Ea(e)&&y===Sa[e.scheme]?null:y,h=""}if(n)return;c=$a;continue}return"Invalid port"}h+=a;break;case za:if(e.scheme="file","/"==a||"\\"==a)c=Wa;else{if(!i||"file"!=i.scheme){c=Ya;continue}if(a==$r)e.host=i.host,e.path=i.path.slice(),e.query=i.query;else if("?"==a)e.host=i.host,e.path=i.path.slice(),e.query="",c=Xa;else{if("#"!=a){Ca(r.slice(u).join(""))||(e.host=i.host,e.path=i.path.slice(),Oa(e)),c=Ya;continue}e.host=i.host,e.path=i.path.slice(),e.query=i.query,e.fragment="",c=Qa}}break;case Wa:if("/"==a||"\\"==a){c=Ka;break}i&&"file"==i.scheme&&!Ca(r.slice(u).join(""))&&(xa(i.path[0],!0)?e.path.push(i.path[0]):e.host=i.host),c=Ya;continue;case Ka:if(a==$r||"/"==a||"\\"==a||"?"==a||"#"==a){if(!n&&xa(h))c=Ya;else if(""==h){if(e.host="",n)return;c=$a}else{if(s=pa(e,h))return s;if("localhost"==e.host&&(e.host=""),n)return;h="",c=$a}continue}h+=a;break;case $a:if(Ea(e)){if(c=Ya,"/"!=a&&"\\"!=a)continue}else if(n||"?"!=a)if(n||"#"!=a){if(a!=$r&&(c=Ya,"/"!=a))continue}else e.fragment="",c=Qa;else e.query="",c=Xa;break;case Ya:if(a==$r||"/"==a||"\\"==a&&Ea(e)||!n&&("?"==a||"#"==a)){if(".."===(l=(l=h).toLowerCase())||"%2e."===l||".%2e"===l||"%2e%2e"===l?(Oa(e),"/"==a||"\\"==a&&Ea(e)||e.path.push("")):Ia(h)?"/"==a||"\\"==a&&Ea(e)||e.path.push(""):("file"==e.scheme&&!e.path.length&&xa(h)&&(e.host&&(e.host=""),h=h.charAt(0)+":"),e.path.push(h)),h="","file"==e.scheme&&(a==$r||"?"==a||"#"==a))for(;e.path.length>1&&""===e.path[0];)e.path.shift();"?"==a?(e.query="",c=Xa):"#"==a&&(e.fragment="",c=Qa)}else h+=Ta(a,wa);break;case Ga:"?"==a?(e.query="",c=Xa):"#"==a?(e.fragment="",c=Qa):a!=$r&&(e.path[0]+=Ta(a,ya));break;case Xa:n||"#"!=a?a!=$r&&("'"==a&&Ea(e)?e.query+="%27":e.query+="#"==a?"%23":Ta(a,ya)):(e.fragment="",c=Qa);break;case Qa:a!=$r&&(e.fragment+=Ta(a,ba))}u++}},Za=function(e){var t,n,i=ar(this,Za,"URL"),r=arguments.length>1?arguments[1]:void 0,o=String(e),s=Zr(i,{type:"URL"});if(void 0!==r)if(r instanceof Za)t=ea(r);else if(n=Ja(t={},String(r)))throw TypeError(n);if(n=Ja(s,o,null,t))throw TypeError(n);var l=s.searchParams=new Qr,c=Jr(l);c.updateSearchParams(s.query),c.updateURL=function(){s.query=String(l)||null},a||(i.href=to.call(i),i.origin=no.call(i),i.protocol=io.call(i),i.username=ro.call(i),i.password=ao.call(i),i.host=oo.call(i),i.hostname=so.call(i),i.port=lo.call(i),i.pathname=co.call(i),i.search=uo.call(i),i.searchParams=ho.call(i),i.hash=fo.call(i))},eo=Za.prototype,to=function(){var e=ea(this),t=e.scheme,n=e.username,i=e.password,r=e.host,a=e.port,o=e.path,s=e.query,l=e.fragment,c=t+":";return null!==r?(c+="//",Aa(e)&&(c+=n+(i?":"+i:"")+"@"),c+=va(r),null!==a&&(c+=":"+a)):"file"==t&&(c+="//"),c+=e.cannotBeABaseURL?o[0]:o.length?"/"+o.join("/"):"",null!==s&&(c+="?"+s),null!==l&&(c+="#"+l),c},no=function(){var e=ea(this),t=e.scheme,n=e.port;if("blob"==t)try{return new URL(t.path[0]).origin}catch(e){return"null"}return"file"!=t&&Ea(e)?t+"://"+va(e.host)+(null!==n?":"+n:""):"null"},io=function(){return ea(this).scheme+":"},ro=function(){return ea(this).username},ao=function(){return ea(this).password},oo=function(){var e=ea(this),t=e.host,n=e.port;return null===t?"":null===n?va(t):va(t)+":"+n},so=function(){var e=ea(this).host;return null===e?"":va(e)},lo=function(){var e=ea(this).port;return null===e?"":String(e)},co=function(){var e=ea(this),t=e.path;return e.cannotBeABaseURL?t[0]:t.length?"/"+t.join("/"):""},uo=function(){var e=ea(this).query;return e?"?"+e:""},ho=function(){return ea(this).searchParams},fo=function(){var e=ea(this).fragment;return e?"#"+e:""},po=function(e,t){return{get:e,set:t,configurable:!0,enumerable:!0}};if(a&&_e(eo,{href:po(to,(function(e){var t=ea(this),n=String(e),i=Ja(t,n);if(i)throw TypeError(i);Jr(t.searchParams).updateSearchParams(t.query)})),origin:po(no),protocol:po(io,(function(e){var t=ea(this);Ja(t,String(e)+":",La)})),username:po(ro,(function(e){var t=ea(this),n=mr(String(e));if(!Pa(t)){t.username="";for(var i=0;i<n.length;i++)t.username+=Ta(n[i],ka)}})),password:po(ao,(function(e){var t=ea(this),n=mr(String(e));if(!Pa(t)){t.password="";for(var i=0;i<n.length;i++)t.password+=Ta(n[i],ka)}})),host:po(oo,(function(e){var t=ea(this);t.cannotBeABaseURL||Ja(t,String(e),Ha)})),hostname:po(so,(function(e){var t=ea(this);t.cannotBeABaseURL||Ja(t,String(e),Ba)})),port:po(lo,(function(e){var t=ea(this);Pa(t)||(""==(e=String(e))?t.port=null:Ja(t,e,Va))})),pathname:po(co,(function(e){var t=ea(this);t.cannotBeABaseURL||(t.path=[],Ja(t,e+"",$a))})),search:po(uo,(function(e){var t=ea(this);""==(e=String(e))?t.query=null:("?"==e.charAt(0)&&(e=e.slice(1)),t.query="",Ja(t,e,Xa)),Jr(t.searchParams).updateSearchParams(t.query)})),searchParams:po(ho),hash:po(fo,(function(e){var t=ea(this);""!=(e=String(e))?("#"==e.charAt(0)&&(e=e.slice(1)),t.fragment="",Ja(t,e,Qa)):t.fragment=null}))}),ee(eo,"toJSON",(function(){return to.call(this)}),{enumerable:!0}),ee(eo,"toString",(function(){return to.call(this)}),{enumerable:!0}),Xr){var mo=Xr.createObjectURL,go=Xr.revokeObjectURL;mo&&ee(Za,"createObjectURL",(function(e){return mo.apply(Xr,arguments)})),go&&ee(Za,"revokeObjectURL",(function(e){return go.apply(Xr,arguments)}))}function vo(e){return(vo="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function yo(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function bo(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function wo(e,t,n){return t&&bo(e.prototype,t),n&&bo(e,n),e}function ko(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function To(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function So(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?To(Object(n),!0).forEach((function(t){ko(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):To(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Eo(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Ao(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],i=!0,r=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(i=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);i=!0);}catch(e){r=!0,a=e}finally{try{i||null==s.return||s.return()}finally{if(r)throw a}}return n}(e,t)||xo(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Po(e){return function(e){if(Array.isArray(e))return Co(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||xo(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function xo(e,t){if(e){if("string"==typeof e)return Co(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Co(e,t):void 0}}function Co(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}nt(Za,"URL"),Ie({global:!0,forced:!rr,sham:!a},{URL:Za}),function(e){var t=function(){try{return!!Symbol.iterator}catch(e){return!1}}(),n=function(e){var n={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return t&&(n[Symbol.iterator]=function(){return n}),n},i=function(e){return encodeURIComponent(e).replace(/%20/g,"+")},r=function(e){return decodeURIComponent(String(e).replace(/\+/g," "))};(function(){try{var t=e.URLSearchParams;return"a=1"===new t("?a=1").toString()&&"function"==typeof t.prototype.set}catch(e){return!1}})()||function(){var r=function e(t){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var n=vo(t);if("undefined"===n);else if("string"===n)""!==t&&this._fromString(t);else if(t instanceof e){var i=this;t.forEach((function(e,t){i.append(t,e)}))}else{if(null===t||"object"!==n)throw new TypeError("Unsupported input's type for URLSearchParams");if("[object Array]"===Object.prototype.toString.call(t))for(var r=0;r<t.length;r++){var a=t[r];if("[object Array]"!==Object.prototype.toString.call(a)&&2===a.length)throw new TypeError("Expected [string, any] as entry at index "+r+" of URLSearchParams's input");this.append(a[0],a[1])}else for(var o in t)t.hasOwnProperty(o)&&this.append(o,t[o])}},a=r.prototype;a.append=function(e,t){e in this._entries?this._entries[e].push(String(t)):this._entries[e]=[String(t)]},a.delete=function(e){delete this._entries[e]},a.get=function(e){return e in this._entries?this._entries[e][0]:null},a.getAll=function(e){return e in this._entries?this._entries[e].slice(0):[]},a.has=function(e){return e in this._entries},a.set=function(e,t){this._entries[e]=[String(t)]},a.forEach=function(e,t){var n;for(var i in this._entries)if(this._entries.hasOwnProperty(i)){n=this._entries[i];for(var r=0;r<n.length;r++)e.call(t,n[r],i,this)}},a.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),n(e)},a.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),n(e)},a.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),n(e)},t&&(a[Symbol.iterator]=a.entries),a.toString=function(){var e=[];return this.forEach((function(t,n){e.push(i(n)+"="+i(t))})),e.join("&")},e.URLSearchParams=r}();var a=e.URLSearchParams.prototype;"function"!=typeof a.sort&&(a.sort=function(){var e=this,t=[];this.forEach((function(n,i){t.push([i,n]),e._entries||e.delete(i)})),t.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),e._entries&&(e._entries={});for(var n=0;n<t.length;n++)this.append(t[n][0],t[n][1])}),"function"!=typeof a._fromString&&Object.defineProperty(a,"_fromString",{enumerable:!1,configurable:!1,writable:!1,value:function(e){if(this._entries)this._entries={};else{var t=[];this.forEach((function(e,n){t.push(n)}));for(var n=0;n<t.length;n++)this.delete(t[n])}var i,a=(e=e.replace(/^\?/,"")).split("&");for(n=0;n<a.length;n++)i=a[n].split("="),this.append(r(i[0]),i.length>1?r(i[1]):"")}})}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e),function(e){if(function(){try{var t=new e.URL("b","http://a");return t.pathname="c d","http://a/c%20d"===t.href&&t.searchParams}catch(e){return!1}}()||function(){var t=e.URL,n=function(t,n){"string"!=typeof t&&(t=String(t));var i,r=document;if(n&&(void 0===e.location||n!==e.location.href)){(i=(r=document.implementation.createHTMLDocument("")).createElement("base")).href=n,r.head.appendChild(i);try{if(0!==i.href.indexOf(n))throw new Error(i.href)}catch(e){throw new Error("URL unable to set base "+n+" due to "+e)}}var a=r.createElement("a");if(a.href=t,i&&(r.body.appendChild(a),a.href=a.href),":"===a.protocol||!/:/.test(a.href))throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:a});var o=new e.URLSearchParams(this.search),s=!0,l=!0,c=this;["append","delete","set"].forEach((function(e){var t=o[e];o[e]=function(){t.apply(o,arguments),s&&(l=!1,c.search=o.toString(),l=!0)}})),Object.defineProperty(this,"searchParams",{value:o,enumerable:!0});var u=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==u&&(u=this.search,l&&(s=!1,this.searchParams._fromString(this.search),s=!0))}})},i=n.prototype;["hash","host","hostname","port","protocol"].forEach((function(e){!function(e){Object.defineProperty(i,e,{get:function(){return this._anchorElement[e]},set:function(t){this._anchorElement[e]=t},enumerable:!0})}(e)})),Object.defineProperty(i,"search",{get:function(){return this._anchorElement.search},set:function(e){this._anchorElement.search=e,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(i,{toString:{get:function(){var e=this;return function(){return e.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(e){this._anchorElement.href=e,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(e){this._anchorElement.pathname=e},enumerable:!0},origin:{get:function(){var e={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],t=this._anchorElement.port!=e&&""!==this._anchorElement.port;return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(t?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(e){},enumerable:!0},username:{get:function(){return""},set:function(e){},enumerable:!0}}),n.createObjectURL=function(e){return t.createObjectURL.apply(t,arguments)},n.revokeObjectURL=function(e){return t.revokeObjectURL.apply(t,arguments)},e.URL=n}(),void 0!==e.location&&!("origin"in e.location)){var t=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:t,enumerable:!0})}catch(n){setInterval((function(){e.location.origin=t()}),100)}}}(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:e);var Oo=Xe("isConcatSpreadable"),Io=zn>=51||!r((function(){var e=[];return e[Oo]=!1,e.concat()[0]!==e})),Lo=Kn("concat"),jo=function(e){if(!g(e))return!1;var t=e[Oo];return void 0!==t?!!t:Ne(e)};Ie({target:"Array",proto:!0,forced:!Io||!Lo},{concat:function(e){var t,n,i,r,a,o=Re(this),s=ot(o,0),l=0;for(t=-1,i=arguments.length;t<i;t++)if(a=-1===t?o:arguments[t],jo(a)){if(l+(r=le(a.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<r;n++,l++)n in a&&Fn(s,l,a[n])}else{if(l>=9007199254740991)throw TypeError("Maximum allowed index exceeded");Fn(s,l++,a)}return s.length=l,s}});var No=ct.filter,Ro=Kn("filter"),Mo=Qt("filter");Ie({target:"Array",proto:!0,forced:!Ro||!Mo},{filter:function(e){return No(this,e,arguments.length>1?arguments[1]:void 0)}});var _o=ct.find,Uo=!0,Do=Qt("find");"find"in[]&&Array(1).find((function(){Uo=!1})),Ie({target:"Array",proto:!0,forced:Uo||!Do},{find:function(e){return _o(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("find");var Fo=Xe("iterator"),qo=!1;try{var Ho=0,Bo={next:function(){return{done:!!Ho++}},return:function(){qo=!0}};Bo[Fo]=function(){return this},Array.from(Bo,(function(){throw 2}))}catch(e){}var Vo=function(e,t){if(!t&&!qo)return!1;var n=!1;try{var i={};i[Fo]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(e){}return n},zo=!Vo((function(e){Array.from(e)}));Ie({target:"Array",stat:!0,forced:zo},{from:mr});var Wo=de.includes,Ko=Qt("indexOf",{ACCESSORS:!0,1:0});Ie({target:"Array",proto:!0,forced:!Ko},{includes:function(e){return Wo(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("includes");var $o=ct.map,Yo=Kn("map"),Go=Qt("map");Ie({target:"Array",proto:!0,forced:!Yo||!Go},{map:function(e){return $o(this,e,arguments.length>1?arguments[1]:void 0)}});var Xo=function(e,t,n){var i,r;return An&&"function"==typeof(i=t.constructor)&&i!==n&&g(r=i.prototype)&&r!==n.prototype&&An(e,r),e},Qo="\t\n\v\f\r \u2028\u2029\ufeff",Jo="["+Qo+"]",Zo=RegExp("^"+Jo+Jo+"*"),es=RegExp(Jo+Jo+"*$"),ts=function(e){return function(t){var n=String(p(t));return 1&e&&(n=n.replace(Zo,"")),2&e&&(n=n.replace(es,"")),n}},ns={start:ts(1),end:ts(2),trim:ts(3)},is=ye.f,rs=A.f,as=C.f,os=ns.trim,ss=i.Number,ls=ss.prototype,cs="Number"==h(Be(ls)),us=function(e){var t,n,i,r,a,o,s,l,c=v(e,!1);if("string"==typeof c&&c.length>2)if(43===(t=(c=os(c)).charCodeAt(0))||45===t){if(88===(n=c.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(c.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+c}for(o=(a=c.slice(2)).length,s=0;s<o;s++)if((l=a.charCodeAt(s))<48||l>r)return NaN;return parseInt(a,i)}return+c};if(Ce("Number",!ss(" 0o1")||!ss("0b1")||ss("+0x1"))){for(var hs,fs=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof fs&&(cs?r((function(){ls.valueOf.call(n)})):"Number"!=h(n))?Xo(new ss(us(t)),n,fs):us(t)},ds=a?is(ss):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),ps=0;ds.length>ps;ps++)b(ss,hs=ds[ps])&&!b(fs,hs)&&as(fs,hs,rs(ss,hs));fs.prototype=ls,ls.constructor=fs,ee(i,"Number",fs)}var ms=r((function(){Me(1)}));Ie({target:"Object",stat:!0,forced:ms},{keys:function(e){return Me(Re(e))}});var gs=function(e){if(qi(e))throw TypeError("The method doesn't accept regular expressions");return e},vs=Xe("match"),ys=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[vs]=!1,"/./"[e](t)}catch(e){}}return!1};Ie({target:"String",proto:!0,forced:!ys("includes")},{includes:function(e){return!!~String(p(this)).indexOf(gs(e),arguments.length>1?arguments[1]:void 0)}});var bs=!r((function(){return Object.isExtensible(Object.preventExtensions({}))})),ws=t((function(e){var t=C.f,n=B("meta"),i=0,r=Object.isExtensible||function(){return!0},a=function(e){t(e,n,{value:{objectID:"O"+ ++i,weakData:{}}})},o=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!g(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!b(e,n)){if(!r(e))return"F";if(!t)return"E";a(e)}return e[n].objectID},getWeakData:function(e,t){if(!b(e,n)){if(!r(e))return!0;if(!t)return!1;a(e)}return e[n].weakData},onFreeze:function(e){return bs&&o.REQUIRED&&r(e)&&!b(e,n)&&a(e),e}};W[n]=!0})),ks=(ws.REQUIRED,ws.fastKey,ws.getWeakData,ws.onFreeze,t((function(e){var t=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,n,i,r,a){var o,s,l,c,u,h,f,d=rt(n,i,r?2:1);if(a)o=e;else{if("function"!=typeof(s=pr(e)))throw TypeError("Target is not iterable");if(fr(s)){for(l=0,c=le(e.length);c>l;l++)if((u=r?d(P(f=e[l])[0],f[1]):d(e[l]))&&u instanceof t)return u;return new t(!1)}o=s.call(e)}for(h=o.next;!(f=h.call(o)).done;)if("object"==typeof(u=cr(o,d,f.value,r))&&u&&u instanceof t)return u;return new t(!1)}).stop=function(e){return new t(!0,e)}}))),Ts=ws.getWeakData,Ss=Z.set,Es=Z.getterFor,As=ct.find,Ps=ct.findIndex,xs=0,Cs=function(e){return e.frozen||(e.frozen=new Os)},Os=function(){this.entries=[]},Is=function(e,t){return As(e.entries,(function(e){return e[0]===t}))};Os.prototype={get:function(e){var t=Is(this,e);if(t)return t[1]},has:function(e){return!!Is(this,e)},set:function(e,t){var n=Is(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=Ps(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}};var Ls={getConstructor:function(e,t,n,i){var r=e((function(e,a){ar(e,r,t),Ss(e,{type:t,id:xs++,frozen:void 0}),null!=a&&ks(a,e[i],e,n)})),a=Es(t),o=function(e,t,n){var i=a(e),r=Ts(P(t),!0);return!0===r?Cs(i).set(t,n):r[i.id]=n,e};return Er(r.prototype,{delete:function(e){var t=a(this);if(!g(e))return!1;var n=Ts(e);return!0===n?Cs(t).delete(e):n&&b(n,t.id)&&delete n[t.id]},has:function(e){var t=a(this);if(!g(e))return!1;var n=Ts(e);return!0===n?Cs(t).has(e):n&&b(n,t.id)}}),Er(r.prototype,n?{get:function(e){var t=a(this);if(g(e)){var n=Ts(e);return!0===n?Cs(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return o(this,e,t)}}:{add:function(e){return o(this,e,!0)}}),r}},js=(t((function(e){var t,n=Z.enforce,a=!i.ActiveXObject&&"ActiveXObject"in i,o=Object.isExtensible,s=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},l=e.exports=function(e,t,n){var a=-1!==e.indexOf("Map"),o=-1!==e.indexOf("Weak"),s=a?"set":"add",l=i[e],c=l&&l.prototype,u=l,h={},f=function(e){var t=c[e];ee(c,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(o&&!g(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return o&&!g(e)?void 0:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(o&&!g(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(Ce(e,"function"!=typeof l||!(o||c.forEach&&!r((function(){(new l).entries().next()})))))u=n.getConstructor(t,e,a,s),ws.REQUIRED=!0;else if(Ce(e,!0)){var d=new u,p=d[s](o?{}:-0,1)!=d,m=r((function(){d.has(1)})),v=Vo((function(e){new l(e)})),y=!o&&r((function(){for(var e=new l,t=5;t--;)e[s](t,t);return!e.has(-0)}));v||((u=t((function(t,n){ar(t,u,e);var i=Xo(new l,t,u);return null!=n&&ks(n,i[s],i,a),i}))).prototype=c,c.constructor=u),(m||y)&&(f("delete"),f("has"),a&&f("get")),(y||p)&&f(s),o&&c.clear&&delete c.clear}return h[e]=u,Ie({global:!0,forced:u!=l},h),nt(u,e),o||n.setStrong(u,e,a),u}("WeakMap",s,Ls);if(D&&a){t=Ls.getConstructor(s,"WeakMap",!0),ws.REQUIRED=!0;var c=l.prototype,u=c.delete,h=c.has,f=c.get,d=c.set;Er(c,{delete:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),u.call(this,e)||i.frozen.delete(e)}return u.call(this,e)},has:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),h.call(this,e)||i.frozen.has(e)}return h.call(this,e)},get:function(e){if(g(e)&&!o(e)){var i=n(this);return i.frozen||(i.frozen=new t),h.call(this,e)?f.call(this,e):i.frozen.get(e)}return f.call(this,e)},set:function(e,i){if(g(e)&&!o(e)){var r=n(this);r.frozen||(r.frozen=new t),h.call(this,e)?d.call(this,e,i):r.frozen.set(e,i)}else d.call(this,e,i);return this}})}})),ct.every),Ns=$t("every"),Rs=Qt("every");Ie({target:"Array",proto:!0,forced:!Ns||!Rs},{every:function(e){return js(this,e,arguments.length>1?arguments[1]:void 0)}}),Ie({target:"Object",stat:!0,forced:Object.assign!==lr},{assign:lr});var Ms=ns.trim;Ie({target:"String",proto:!0,forced:function(e){return r((function(){return!!Qo[e]()||"
"!="
"[e]()||Qo[e].name!==e}))}("trim")},{trim:function(){return Ms(this)}});var _s=ct.some,Us=$t("some"),Ds=Qt("some");Ie({target:"Array",proto:!0,forced:!Us||!Ds},{some:function(e){return _s(this,e,arguments.length>1?arguments[1]:void 0)}});var Fs="".repeat||function(e){var t=String(p(this)),n="",i=oe(e);if(i<0||i==1/0)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n},qs=1..toFixed,Hs=Math.floor,Bs=function(e,t,n){return 0===t?n:t%2==1?Bs(e,t-1,n*e):Bs(e*e,t/2,n)},Vs=qs&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!r((function(){qs.call({})}));Ie({target:"Number",proto:!0,forced:Vs},{toFixed:function(e){var t,n,i,r,a=function(e){if("number"!=typeof e&&"Number"!=h(e))throw TypeError("Incorrect invocation");return+e}(this),o=oe(e),s=[0,0,0,0,0,0],l="",c="0",u=function(e,t){for(var n=-1,i=t;++n<6;)i+=e*s[n],s[n]=i%1e7,i=Hs(i/1e7)},f=function(e){for(var t=6,n=0;--t>=0;)n+=s[t],s[t]=Hs(n/e),n=n%e*1e7},d=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==s[e]){var n=String(s[e]);t=""===t?n:t+Fs.call("0",7-n.length)+n}return t};if(o<0||o>20)throw RangeError("Incorrect fraction digits");if(a!=a)return"NaN";if(a<=-1e21||a>=1e21)return String(a);if(a<0&&(l="-",a=-a),a>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(a*Bs(2,69,1))-69)<0?a*Bs(2,-t,1):a/Bs(2,t,1),n*=4503599627370496,(t=52-t)>0){for(u(0,n),i=o;i>=7;)u(1e7,0),i-=7;for(u(Bs(10,i,1),0),i=t-1;i>=23;)f(1<<23),i-=23;f(1<<i),u(1,1),f(2),c=d()}else u(0,n),u(1<<-t,0),c=d()+Fs.call("0",o);return c=o>0?l+((r=c.length)<=o?"0."+Fs.call("0",o-r)+c:c.slice(0,r-o)+"."+c.slice(r-o)):l+c}});var zs=l.f,Ws=function(e){return function(t){for(var n,i=m(t),r=Me(i),o=r.length,s=0,l=[];o>s;)n=r[s++],a&&!zs.call(i,n)||l.push(e?[n,i[n]]:i[n]);return l}},Ks={entries:Ws(!0),values:Ws(!1)},$s=Ks.entries;Ie({target:"Object",stat:!0},{entries:function(e){return $s(e)}});var Ys=Ks.values;Ie({target:"Object",stat:!0},{values:function(e){return Ys(e)}}),Ie({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var Gs=A.f,Xs=r((function(){Gs(1)}));function Qs(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function Js(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Zs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function el(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zs(Object(n),!0).forEach((function(t){Js(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ie({target:"Object",stat:!0,forced:!a||Xs,sham:!a},{getOwnPropertyDescriptor:function(e,t){return Gs(m(e),t)}}),Ie({target:"Object",stat:!0,sham:!a},{getOwnPropertyDescriptors:function(e){for(var t,n,i=m(e),r=A.f,a=we(i),o={},s=0;a.length>s;)void 0!==(n=r(i,t=a[s++]))&&Fn(o,t,n);return o}}),Oi("match",1,(function(e,t,n){return[function(t){var n=p(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,n):new RegExp(t)[e](String(n))},function(e){var i=n(t,e,this);if(i.done)return i.value;var r=P(e),a=String(this);if(!r.global)return ji(r,a);var o=r.unicode;r.lastIndex=0;for(var s,l=[],c=0;null!==(s=ji(r,a));){var u=String(s[0]);l[c]=u,""===u&&(r.lastIndex=Li(a,le(r.lastIndex),o)),c++}return 0===c?null:l}]}));var tl={addCSS:!0,thumbWidth:15,watch:!0};function nl(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}var il=function(e){return null!=e?e.constructor:null},rl=function(e,t){return!!(e&&t&&e instanceof t)},al=function(e){return null==e},ol=function(e){return il(e)===Object},sl=function(e){return il(e)===String},ll=function(e){return Array.isArray(e)},cl=function(e){return rl(e,NodeList)},ul=sl,hl=ll,fl=cl,dl=function(e){return rl(e,Element)},pl=function(e){return rl(e,Event)},ml=function(e){return al(e)||(sl(e)||ll(e)||cl(e))&&!e.length||ol(e)&&!Object.keys(e).length};function gl(e,t){if(1>t){var n=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}var vl,yl,bl,wl=function(){function e(t,n){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),dl(t)?this.element=t:ul(t)&&(this.element=document.querySelector(t)),dl(this.element)&&ml(this.element.rangeTouch)&&(this.config=el({},tl,{},n),this.init())}return function(e,t,n){t&&Qs(e.prototype,t),n&&Qs(e,n)}(e,[{key:"init",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="",this.element.style.webKitUserSelect="",this.element.style.touchAction=""),this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(e){var t=this,n=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach((function(e){t.element[n](e,(function(e){return t.set(e)}),!1)}))}},{key:"get",value:function(t){if(!e.enabled||!pl(t))return null;var n,i=t.target,r=t.changedTouches[0],a=parseFloat(i.getAttribute("min"))||0,o=parseFloat(i.getAttribute("max"))||100,s=parseFloat(i.getAttribute("step"))||1,l=i.getBoundingClientRect(),c=100/l.width*(this.config.thumbWidth/2)/100;return 0>(n=100/l.width*(r.clientX-l.left))?n=0:100<n&&(n=100),50>n?n-=(100-2*n)*c:50<n&&(n+=2*(n-50)*c),a+gl(n/100*(o-a),s)}},{key:"set",value:function(t){e.enabled&&pl(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var n=new Event(t,{bubbles:!0});e.dispatchEvent(n)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=null;if(ml(t)||ul(t)?i=Array.from(document.querySelectorAll(ul(t)?t:'input[type="range"]')):dl(t)?i=[t]:fl(t)?i=Array.from(t):hl(t)&&(i=t.filter(dl)),ml(i))return null;var r=el({},tl,{},n);if(ul(t)&&r.watch){var a=new MutationObserver((function(n){Array.from(n).forEach((function(n){Array.from(n.addedNodes).forEach((function(n){dl(n)&&nl(n,t)&&new e(n,r)}))}))}));a.observe(document.body,{childList:!0,subtree:!0})}return i.map((function(t){return new e(t,n)}))}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}(),kl=i.Promise,Tl=Xe("species"),Sl=function(e){var t=ie(e),n=C.f;a&&t&&!t[Tl]&&n(t,Tl,{configurable:!0,get:function(){return this}})},El=/(iphone|ipod|ipad).*applewebkit/i.test(qn),Al=i.location,Pl=i.setImmediate,xl=i.clearImmediate,Cl=i.process,Ol=i.MessageChannel,Il=i.Dispatch,Ll=0,jl={},Nl=function(e){if(jl.hasOwnProperty(e)){var t=jl[e];delete jl[e],t()}},Rl=function(e){return function(){Nl(e)}},Ml=function(e){Nl(e.data)},_l=function(e){i.postMessage(e+"",Al.protocol+"//"+Al.host)};Pl&&xl||(Pl=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return jl[++Ll]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},vl(Ll),Ll},xl=function(e){delete jl[e]},"process"==h(Cl)?vl=function(e){Cl.nextTick(Rl(e))}:Il&&Il.now?vl=function(e){Il.now(Rl(e))}:Ol&&!El?(bl=(yl=new Ol).port2,yl.port1.onmessage=Ml,vl=rt(bl.postMessage,bl,1)):!i.addEventListener||"function"!=typeof postMessage||i.importScripts||r(_l)||"file:"===Al.protocol?vl="onreadystatechange"in T("script")?function(e){Ue.appendChild(T("script")).onreadystatechange=function(){Ue.removeChild(this),Nl(e)}}:function(e){setTimeout(Rl(e),0)}:(vl=_l,i.addEventListener("message",Ml,!1)));var Ul,Dl,Fl,ql,Hl,Bl,Vl,zl,Wl={set:Pl,clear:xl},Kl=A.f,$l=Wl.set,Yl=i.MutationObserver||i.WebKitMutationObserver,Gl=i.process,Xl=i.Promise,Ql="process"==h(Gl),Jl=Kl(i,"queueMicrotask"),Zl=Jl&&Jl.value;Zl||(Ul=function(){var e,t;for(Ql&&(e=Gl.domain)&&e.exit();Dl;){t=Dl.fn,Dl=Dl.next;try{t()}catch(e){throw Dl?ql():Fl=void 0,e}}Fl=void 0,e&&e.enter()},Ql?ql=function(){Gl.nextTick(Ul)}:Yl&&!El?(Hl=!0,Bl=document.createTextNode(""),new Yl(Ul).observe(Bl,{characterData:!0}),ql=function(){Bl.data=Hl=!Hl}):Xl&&Xl.resolve?(Vl=Xl.resolve(void 0),zl=Vl.then,ql=function(){zl.call(Vl,Ul)}):ql=function(){$l.call(i,Ul)});var ec,tc,nc,ic,rc=Zl||function(e){var t={fn:e,next:void 0};Fl&&(Fl.next=t),Dl||(Dl=t,ql()),Fl=t},ac=function(e){var t,n;this.promise=new e((function(e,i){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=i})),this.resolve=it(t),this.reject=it(n)},oc={f:function(e){return new ac(e)}},sc=function(e,t){if(P(e),g(t)&&t.constructor===e)return t;var n=oc.f(e);return(0,n.resolve)(t),n.promise},lc=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},cc=Wl.set,uc=Xe("species"),hc="Promise",fc=Z.get,dc=Z.set,pc=Z.getterFor(hc),mc=kl,gc=i.TypeError,vc=i.document,yc=i.process,bc=ie("fetch"),wc=oc.f,kc=wc,Tc="process"==h(yc),Sc=!!(vc&&vc.createEvent&&i.dispatchEvent),Ec=Ce(hc,(function(){if(!(_(mc)!==String(mc))){if(66===zn)return!0;if(!Tc&&"function"!=typeof PromiseRejectionEvent)return!0}if(zn>=51&&/native code/.test(mc))return!1;var e=mc.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[uc]=t,!(e.then((function(){}))instanceof t)})),Ac=Ec||!Vo((function(e){mc.all(e).catch((function(){}))})),Pc=function(e){var t;return!(!g(e)||"function"!=typeof(t=e.then))&&t},xc=function(e,t,n){if(!t.notified){t.notified=!0;var i=t.reactions;rc((function(){for(var r=t.value,a=1==t.state,o=0;i.length>o;){var s,l,c,u=i[o++],h=a?u.ok:u.fail,f=u.resolve,d=u.reject,p=u.domain;try{h?(a||(2===t.rejection&&Lc(e,t),t.rejection=1),!0===h?s=r:(p&&p.enter(),s=h(r),p&&(p.exit(),c=!0)),s===u.promise?d(gc("Promise-chain cycle")):(l=Pc(s))?l.call(s,f,d):f(s)):d(r)}catch(e){p&&!c&&p.exit(),d(e)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&Oc(e,t)}))}},Cc=function(e,t,n){var r,a;Sc?((r=vc.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),i.dispatchEvent(r)):r={promise:t,reason:n},(a=i["on"+e])?a(r):"unhandledrejection"===e&&function(e,t){var n=i.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}("Unhandled promise rejection",n)},Oc=function(e,t){cc.call(i,(function(){var n,i=t.value;if(Ic(t)&&(n=lc((function(){Tc?yc.emit("unhandledRejection",i,e):Cc("unhandledrejection",e,i)})),t.rejection=Tc||Ic(t)?2:1,n.error))throw n.value}))},Ic=function(e){return 1!==e.rejection&&!e.parent},Lc=function(e,t){cc.call(i,(function(){Tc?yc.emit("rejectionHandled",e):Cc("rejectionhandled",e,t.value)}))},jc=function(e,t,n,i){return function(r){e(t,n,r,i)}},Nc=function(e,t,n,i){t.done||(t.done=!0,i&&(t=i),t.value=n,t.state=2,xc(e,t,!0))},Rc=function(e,t,n,i){if(!t.done){t.done=!0,i&&(t=i);try{if(e===n)throw gc("Promise can't be resolved itself");var r=Pc(n);r?rc((function(){var i={done:!1};try{r.call(n,jc(Rc,e,i,t),jc(Nc,e,i,t))}catch(n){Nc(e,i,n,t)}})):(t.value=n,t.state=1,xc(e,t,!1))}catch(n){Nc(e,{done:!1},n,t)}}};Ec&&(mc=function(e){ar(this,mc,hc),it(e),ec.call(this);var t=fc(this);try{e(jc(Rc,this,t),jc(Nc,this,t))}catch(e){Nc(this,t,e)}},(ec=function(e){dc(this,{type:hc,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=Er(mc.prototype,{then:function(e,t){var n=pc(this),i=wc(Bi(this,mc));return i.ok="function"!=typeof e||e,i.fail="function"==typeof t&&t,i.domain=Tc?yc.domain:void 0,n.parent=!0,n.reactions.push(i),0!=n.state&&xc(this,n,!1),i.promise},catch:function(e){return this.then(void 0,e)}}),tc=function(){var e=new ec,t=fc(e);this.promise=e,this.resolve=jc(Rc,e,t),this.reject=jc(Nc,e,t)},oc.f=wc=function(e){return e===mc||e===nc?new tc(e):kc(e)},"function"==typeof kl&&(ic=kl.prototype.then,ee(kl.prototype,"then",(function(e,t){var n=this;return new mc((function(e,t){ic.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof bc&&Ie({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return sc(mc,bc.apply(i,arguments))}}))),Ie({global:!0,wrap:!0,forced:Ec},{Promise:mc}),nt(mc,hc,!1),Sl(hc),nc=ie(hc),Ie({target:hc,stat:!0,forced:Ec},{reject:function(e){var t=wc(this);return t.reject.call(void 0,e),t.promise}}),Ie({target:hc,stat:!0,forced:Ec},{resolve:function(e){return sc(this,e)}}),Ie({target:hc,stat:!0,forced:Ac},{all:function(e){var t=this,n=wc(t),i=n.resolve,r=n.reject,a=lc((function(){var n=it(t.resolve),a=[],o=0,s=1;ks(e,(function(e){var l=o++,c=!1;a.push(void 0),s++,n.call(t,e).then((function(e){c||(c=!0,a[l]=e,--s||i(a))}),r)})),--s||i(a)}));return a.error&&r(a.value),n.promise},race:function(e){var t=this,n=wc(t),i=n.reject,r=lc((function(){var r=it(t.resolve);ks(e,(function(e){r.call(t,e).then(n.resolve,i)}))}));return r.error&&i(r.value),n.promise}});var Mc,_c=A.f,Uc="".startsWith,Dc=Math.min,Fc=ys("startsWith"),qc=!(Fc||(Mc=_c(String.prototype,"startsWith"),!Mc||Mc.writable));Ie({target:"String",proto:!0,forced:!qc&&!Fc},{startsWith:function(e){var t=String(p(this));gs(e);var n=le(Dc(arguments.length>1?arguments[1]:void 0,t.length)),i=String(e);return Uc?Uc.call(t,i,n):t.slice(n,n+i.length)===i}});var Hc,Bc,Vc,zc=function(e){return null!=e?e.constructor:null},Wc=function(e,t){return Boolean(e&&t&&e instanceof t)},Kc=function(e){return null==e},$c=function(e){return zc(e)===Object},Yc=function(e){return zc(e)===String},Gc=function(e){return zc(e)===Function},Xc=function(e){return Array.isArray(e)},Qc=function(e){return Wc(e,NodeList)},Jc=function(e){return Kc(e)||(Yc(e)||Xc(e)||Qc(e))&&!e.length||$c(e)&&!Object.keys(e).length},Zc=Kc,eu=$c,tu=function(e){return zc(e)===Number&&!Number.isNaN(e)},nu=Yc,iu=function(e){return zc(e)===Boolean},ru=Gc,au=Xc,ou=Qc,su=function(e){return Wc(e,Element)},lu=function(e){return Wc(e,Event)},cu=function(e){return Wc(e,KeyboardEvent)},uu=function(e){return Wc(e,TextTrack)||!Kc(e)&&Yc(e.kind)},hu=function(e){return Wc(e,Promise)&&Gc(e.then)},fu=function(e){if(Wc(e,window.URL))return!0;if(!Yc(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!Jc(new URL(t).hostname)}catch(e){return!1}},du=Jc,pu=(Hc=document.createElement("span"),Bc={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},Vc=Object.keys(Bc).find((function(e){return void 0!==Hc.style[e]})),!!nu(Vc)&&Bc[Vc]);function mu(e,t){setTimeout((function(){try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}var gu={isIE:
|
2 |
/* @cc_on!@ */
|
3 |
!!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},vu=function(e){return function(t,n,i,r){it(n);var a=Re(t),o=d(a),s=le(a.length),l=e?s-1:0,c=e?-1:1;if(i<2)for(;;){if(l in o){r=o[l],l+=c;break}if(l+=c,e?l<0:s<=l)throw TypeError("Reduce of empty array with no initial value")}for(;e?l>=0:s>l;l+=c)l in o&&(r=n(r,o[l],l,a));return r}},yu={left:vu(!1),right:vu(!0)}.left,bu=$t("reduce"),wu=Qt("reduce",{1:0});function ku(e,t){return t.split(".").reduce((function(e,t){return e&&e[t]}),e)}function Tu(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];if(!n.length)return e;var r=n.shift();return eu(r)?(Object.keys(r).forEach((function(t){eu(r[t])?(Object.keys(e).includes(t)||Object.assign(e,ko({},t,{})),Tu(e[t],r[t])):Object.assign(e,ko({},t,r[t]))})),Tu.apply(void 0,[e].concat(n))):e}function Su(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach((function(e,n){var i=n>0?t.cloneNode(!0):t,r=e.parentNode,a=e.nextSibling;i.appendChild(e),a?r.insertBefore(i,a):r.appendChild(i)}))}function Eu(e,t){su(e)&&!du(t)&&Object.entries(t).filter((function(e){var t=Ao(e,2)[1];return!Zc(t)})).forEach((function(t){var n=Ao(t,2),i=n[0],r=n[1];return e.setAttribute(i,r)}))}function Au(e,t,n){var i=document.createElement(e);return eu(t)&&Eu(i,t),nu(n)&&(i.innerText=n),i}function Pu(e,t,n,i){su(t)&&t.appendChild(Au(e,n,i))}function xu(e){ou(e)||au(e)?Array.from(e).forEach(xu):su(e)&&su(e.parentNode)&&e.parentNode.removeChild(e)}function Cu(e){if(su(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function Ou(e,t){return su(t)&&su(t.parentNode)&&su(e)?(t.parentNode.replaceChild(e,t),e):null}function Iu(e,t){if(!nu(e)||du(e))return{};var n={},i=Tu({},t);return e.split(",").forEach((function(e){var t=e.trim(),r=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),o=Ao(a,1)[0],s=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":nu(i.class)?n.class="".concat(i.class," ").concat(r):n.class=r;break;case"#":n.id=t.replace("#","");break;case"[":n[o]=s}})),Tu(i,n)}function Lu(e,t){if(su(e)){var n=t;iu(n)||(n=!e.hidden),e.hidden=n}}function ju(e,t,n){if(ou(e))return Array.from(e).map((function(e){return ju(e,t,n)}));if(su(e)){var i="toggle";return void 0!==n&&(i=n?"add":"remove"),e.classList[i](t),e.classList.contains(t)}return!1}function Nu(e,t){return su(e)&&e.classList.contains(t)}function Ru(e,t){var n=Element.prototype;return(n.matches||n.webkitMatchesSelector||n.mozMatchesSelector||n.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function Mu(e){return this.elements.container.querySelectorAll(e)}function _u(e){return this.elements.container.querySelector(e)}function Uu(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];su(e)&&(e.focus({preventScroll:!0}),t&&ju(e,this.config.classNames.tabFocus))}Ie({target:"Array",proto:!0,forced:!bu||!wu},{reduce:function(e){return yu(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var Du,Fu={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},qu={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var i=gu.isIPhone&&n&&qu.playsinline,r=qu[e]||"html5"!==t;return{api:r,ui:r&&qu.rangeInput&&("video"!==e||!gu.isIPhone||i)}},pip:!(gu.isIPhone||!ru(Au("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||Au("video").disablePictureInPicture)),airplay:ru(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(du(e))return!1;var t=Ao(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(Fu).includes(n)&&(n+='; codecs="'.concat(Fu[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(Du=document.createElement("input"),Du.type="range","range"===Du.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==pu,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},Hu=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function Bu(e,t,n){var i=this,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!du(t)&&ru(n)){var s=t.split(" "),l=o;Hu&&(l={passive:a,capture:o}),s.forEach((function(t){i&&i.eventListeners&&r&&i.eventListeners.push({element:e,type:t,callback:n,options:l}),e[r?"addEventListener":"removeEventListener"](t,n,l)}))}}function Vu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Bu.call(this,e,t,n,!0,i,r)}function zu(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Bu.call(this,e,t,n,!1,i,r)}function Wu(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=function o(){zu(e,n,o,r,a);for(var s=arguments.length,l=new Array(s),c=0;c<s;c++)l[c]=arguments[c];i.apply(t,l)};Bu.call(this,e,n,o,!0,r,a)}function Ku(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(su(e)&&!du(t)){var r=new CustomEvent(t,{bubbles:n,detail:So(So({},i),{},{plyr:this})});e.dispatchEvent(r)}}function $u(){this&&this.eventListeners&&(this.eventListeners.forEach((function(e){var t=e.element,n=e.type,i=e.callback,r=e.options;t.removeEventListener(n,i,r)})),this.eventListeners=[])}function Yu(){var e=this;return new Promise((function(t){return e.ready?setTimeout(t,0):Vu.call(e,e.elements.container,"ready",t)})).then((function(){}))}function Gu(e){hu(e)&&e.then(null,(function(){}))}function Xu(e){return!!(au(e)||nu(e)&&e.includes(":"))&&(au(e)?e:e.split(":")).map(Number).every(tu)}function Qu(e){if(!au(e)||!e.every(tu))return null;var t=Ao(e,2),n=t[0],i=t[1],r=function e(t,n){return 0===n?t:e(n,t%n)}(n,i);return[n/r,i/r]}function Ju(e){var t=function(e){return Xu(e)?e.split(":").map(Number):null},n=t(e);if(null===n&&(n=t(this.config.ratio)),null===n&&!du(this.embed)&&au(this.embed.ratio)&&(n=this.embed.ratio),null===n&&this.isHTML5){var i=this.media;n=Qu([i.videoWidth,i.videoHeight])}return n}function Zu(e){if(!this.isVideo)return{};var t=this.elements.wrapper,n=Ju.call(this,e),i=Ao(au(n)?n:[0,0],2),r=100/i[0]*i[1];if(t.style.paddingBottom="".concat(r,"%"),this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){var a=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),o=(a-r)/(a/50);this.media.style.transform="translateY(-".concat(o,"%)")}else this.isHTML5&&t.classList.toggle(this.config.classNames.videoFixedRatio,null!==n);return{padding:r,ratio:n}}var eh={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter((function(t){var n=t.getAttribute("type");return!!du(n)||qu.mime.call(e,n)})):[]},getQualityOptions:function(){return this.config.quality.forced?this.config.quality.options:eh.getSources.call(this).map((function(e){return Number(e.getAttribute("size"))})).filter(Boolean)},setup:function(){if(this.isHTML5){var e=this;e.options.speed=e.config.speed.options,du(this.config.ratio)||Zu.call(e),Object.defineProperty(e.media,"quality",{get:function(){var t=eh.getSources.call(e).find((function(t){return t.getAttribute("src")===e.source}));return t&&Number(t.getAttribute("size"))},set:function(t){if(e.quality!==t){if(e.config.quality.forced&&ru(e.config.quality.onChange))e.config.quality.onChange(t);else{var n=eh.getSources.call(e).find((function(e){return Number(e.getAttribute("size"))===t}));if(!n)return;var i=e.media,r=i.currentTime,a=i.paused,o=i.preload,s=i.readyState,l=i.playbackRate;e.media.src=n.getAttribute("src"),("none"!==o||s)&&(e.once("loadedmetadata",(function(){e.speed=l,e.currentTime=r,a||Gu(e.play())})),e.media.load())}Ku.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&(xu(eh.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function th(e){return au(e)?e.filter((function(t,n){return e.indexOf(t)===n})):e}var nh=C.f,ih=ye.f,rh=Z.set,ah=Xe("match"),oh=i.RegExp,sh=oh.prototype,lh=/a/g,ch=/a/g,uh=new oh(lh)!==lh,hh=oi.UNSUPPORTED_Y;if(a&&Ce("RegExp",!uh||hh||r((function(){return ch[ah]=!1,oh(lh)!=lh||oh(ch)==ch||"/a/i"!=oh(lh,"i")})))){for(var fh=function(e,t){var n,i=this instanceof fh,r=qi(e),a=void 0===t;if(!i&&r&&e.constructor===fh&&a)return e;uh?r&&!a&&(e=e.source):e instanceof fh&&(a&&(t=ri.call(e)),e=e.source),hh&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var o=Xo(uh?new oh(e,t):oh(e,t),i?this:sh,fh);return hh&&n&&rh(o,{sticky:n}),o},dh=function(e){e in fh||nh(fh,e,{configurable:!0,get:function(){return oh[e]},set:function(t){oh[e]=t}})},ph=ih(oh),mh=0;ph.length>mh;)dh(ph[mh++]);sh.constructor=fh,fh.prototype=sh,ee(i,"RegExp",fh)}function gh(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return du(e)?e:e.toString().replace(/{(\d+)}/g,(function(e,t){return n[t].toString()}))}Sl("RegExp");var vh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),n.toString())},yh=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.toString().replace(/\w\S*/g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()}))};function bh(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return t=vh(t,"-"," "),t=vh(t,"_"," "),t=yh(t),vh(t," ","")}function wh(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}var kh={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},Th=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(du(e)||du(t))return"";var n=ku(t.i18n,e);if(du(n))return Object.keys(kh).includes(e)?kh[e]:"";var i={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(i).forEach((function(e){var t=Ao(e,2),i=t[0],r=t[1];n=vh(n,i,r)})),n},Sh=function(){function e(t){yo(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return wo(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(du(n))return null;var i=JSON.parse(n);return nu(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&&eu(t)){var n=this.get();du(n)&&(n={}),Tu(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function Eh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise((function(n,i){try{var r=new XMLHttpRequest;if(!("withCredentials"in r))return;r.addEventListener("load",(function(){if("text"===t)try{n(JSON.parse(r.responseText))}catch(e){n(r.responseText)}else n(r.response)})),r.addEventListener("error",(function(){throw new Error(r.status)})),r.open("GET",e,!0),r.responseType=t,r.send()}catch(e){i(e)}}))}function Ah(e,t){if(nu(e)){var n=nu(t),i=function(){return null!==document.getElementById(t)},r=function(e,t){e.innerHTML=t,n&&i()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!i()){var a=Sh.supported,o=document.createElement("div");if(o.setAttribute("hidden",""),n&&o.setAttribute("id",t),a){var s=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==s){var l=JSON.parse(s);r(o,l.content)}}Eh(e).then((function(e){du(e)||(a&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),r(o,e))})).catch((function(){}))}}}var Ph=Math.ceil,xh=Math.floor;Ie({target:"Math",stat:!0},{trunc:function(e){return(e>0?xh:Ph)(e)}});var Ch=function(e){return Math.trunc(e/60/60%60,10)},Oh=function(e){return Math.trunc(e/60%60,10)},Ih=function(e){return Math.trunc(e%60,10)};function Lh(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!tu(e))return Lh(void 0,t,n);var i=function(e){return"0".concat(e).slice(-2)},r=Ch(e),a=Oh(e),o=Ih(e);return r=t||r>0?"".concat(r,":"):"","".concat(n&&e>0?"-":"").concat(r).concat(i(a),":").concat(i(o))}var jh={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||gu.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=_u.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:Mu.call(this,this.config.selectors.buttons.play),pause:_u.call(this,this.config.selectors.buttons.pause),restart:_u.call(this,this.config.selectors.buttons.restart),rewind:_u.call(this,this.config.selectors.buttons.rewind),fastForward:_u.call(this,this.config.selectors.buttons.fastForward),mute:_u.call(this,this.config.selectors.buttons.mute),pip:_u.call(this,this.config.selectors.buttons.pip),airplay:_u.call(this,this.config.selectors.buttons.airplay),settings:_u.call(this,this.config.selectors.buttons.settings),captions:_u.call(this,this.config.selectors.buttons.captions),fullscreen:_u.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=_u.call(this,this.config.selectors.progress),this.elements.inputs={seek:_u.call(this,this.config.selectors.inputs.seek),volume:_u.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:_u.call(this,this.config.selectors.display.buffer),currentTime:_u.call(this,this.config.selectors.display.currentTime),duration:_u.call(this,this.config.selectors.display.duration)},su(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=jh.getIconUrl.call(this),i="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),r=document.createElementNS("http://www.w3.org/2000/svg","svg");Eu(r,Tu(t,{"aria-hidden":"true",focusable:"false"}));var a=document.createElementNS("http://www.w3.org/2000/svg","use"),o="".concat(i,"-").concat(e);return"href"in a&&a.setAttributeNS("http://www.w3.org/1999/xlink","href",o),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o),r.appendChild(a),r},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Th(e,this.config),i=So(So({},t),{},{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")});return Au("span",i,n)},createBadge:function(e){if(du(e))return null;var t=Au("span",{class:this.config.classNames.menu.value});return t.appendChild(Au("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=this,i=Tu({},t),r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=e.toString();return(t=bh(t)).charAt(0).toLowerCase()+t.slice(1)}(e),a={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach((function(e){Object.keys(i).includes(e)&&(a[e]=i[e],delete i[e])})),"button"!==a.element||Object.keys(i).includes("type")||(i.type="button"),Object.keys(i).includes("class")?i.class.split(" ").some((function(e){return e===n.config.classNames.control}))||Tu(i,{class:"".concat(i.class," ").concat(this.config.classNames.control)}):i.class=this.config.classNames.control,e){case"play":a.toggle=!0,a.label="play",a.labelPressed="pause",a.icon="play",a.iconPressed="pause";break;case"mute":a.toggle=!0,a.label="mute",a.labelPressed="unmute",a.icon="volume",a.iconPressed="muted";break;case"captions":a.toggle=!0,a.label="enableCaptions",a.labelPressed="disableCaptions",a.icon="captions-off",a.iconPressed="captions-on";break;case"fullscreen":a.toggle=!0,a.label="enterFullscreen",a.labelPressed="exitFullscreen",a.icon="enter-fullscreen",a.iconPressed="exit-fullscreen";break;case"play-large":i.class+=" ".concat(this.config.classNames.control,"--overlaid"),r="play",a.label="play",a.icon="play";break;default:du(a.label)&&(a.label=r),du(a.icon)&&(a.icon=e)}var o=Au(a.element);return a.toggle?(o.appendChild(jh.createIcon.call(this,a.iconPressed,{class:"icon--pressed"})),o.appendChild(jh.createIcon.call(this,a.icon,{class:"icon--not-pressed"})),o.appendChild(jh.createLabel.call(this,a.labelPressed,{class:"label--pressed"})),o.appendChild(jh.createLabel.call(this,a.label,{class:"label--not-pressed"}))):(o.appendChild(jh.createIcon.call(this,a.icon)),o.appendChild(jh.createLabel.call(this,a.label))),Tu(i,Iu(this.config.selectors.buttons[r],i)),Eu(o,i),"play"===r?(au(this.elements.buttons[r])||(this.elements.buttons[r]=[]),this.elements.buttons[r].push(o)):this.elements.buttons[r]=o,o},createRange:function(e,t){var n=Au("input",Tu(Iu(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":Th(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,jh.updateRangeFill.call(this,n),wl.setup(n),n},createProgress:function(e,t){var n=Au("progress",Tu(Iu(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(Au("span",null,"0"));var i={played:"played",buffer:"buffered"}[e],r=i?Th(i,this.config):"";n.innerText="% ".concat(r.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e,t){var n=Iu(this.config.selectors.display[e],t),i=Au("div",Tu(n,{class:"".concat(n.class?n.class:""," ").concat(this.config.classNames.display.time," ").trim(),"aria-label":Th(e,this.config)}),"00:00");return this.elements.display[e]=i,i},bindMenuItemShortcuts:function(e,t){var n=this;Vu.call(this,e,"keydown keyup",(function(i){if([32,38,39,40].includes(i.which)&&(i.preventDefault(),i.stopPropagation(),"keydown"!==i.type)){var r,a=Ru(e,'[role="menuitemradio"]');if(!a&&[32,39].includes(i.which))jh.showMenuPanel.call(n,t,!0);else 32!==i.which&&(40===i.which||a&&39===i.which?(r=e.nextElementSibling,su(r)||(r=e.parentNode.firstElementChild)):(r=e.previousElementSibling,su(r)||(r=e.parentNode.lastElementChild)),Uu.call(n,r,!0))}}),!1),Vu.call(this,e,"keyup",(function(e){13===e.which&&jh.focusFirstMenuItem.call(n,null,!0)}))},createMenuItem:function(e){var t=this,n=e.value,i=e.list,r=e.type,a=e.title,o=e.badge,s=void 0===o?null:o,l=e.checked,c=void 0!==l&&l,u=Iu(this.config.selectors.inputs[r]),h=Au("button",Tu(u,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(u.class?u.class:"").trim(),"aria-checked":c,value:n})),f=Au("span");f.innerHTML=a,su(s)&&f.appendChild(s),h.appendChild(f),Object.defineProperty(h,"checked",{enumerable:!0,get:function(){return"true"===h.getAttribute("aria-checked")},set:function(e){e&&Array.from(h.parentNode.children).filter((function(e){return Ru(e,'[role="menuitemradio"]')})).forEach((function(e){return e.setAttribute("aria-checked","false")})),h.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(h,"click keyup",(function(e){if(!cu(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),h.checked=!0,r){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}jh.showMenuPanel.call(t,"home",cu(e))}}),r,!1),jh.bindMenuItemShortcuts.call(this,h,r),i.appendChild(h)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!tu(e))return e;var n=Ch(this.duration)>0;return Lh(e,n,t)},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];su(e)&&tu(t)&&(e.innerText=jh.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(su(this.elements.inputs.volume)&&jh.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),su(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;su(e)&&(e.value=t,jh.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&&lu(e)){var n=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=function(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}(this.currentTime,this.duration),"timeupdate"===e.type&&jh.setRange.call(this,this.elements.inputs.seek,n);break;case"playing":case"progress":!function(e,n){var i=tu(n)?n:0,r=su(e)?e:t.elements.display.buffer;if(su(r)){r.value=i;var a=r.getElementsByTagName("span")[0];su(a)&&(a.childNodes[0].nodeValue=i)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=lu(e)?e.target:e;if(su(t)&&"range"===t.getAttribute("type")){if(Ru(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=jh.formatTime(this.currentTime),i=jh.formatTime(this.duration),r=Th("seekLabel",this.config);t.setAttribute("aria-valuetext",r.replace("{currentTime}",n).replace("{duration}",i))}else if(Ru(t,this.config.selectors.inputs.volume)){var a=100*t.value;t.setAttribute("aria-valuenow",a),t.setAttribute("aria-valuetext","".concat(a.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);gu.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&&su(this.elements.inputs.seek)&&su(this.elements.display.seekTooltip)&&0!==this.duration){var n="".concat(this.config.classNames.tooltip,"--visible"),i=function(e){return ju(t.elements.display.seekTooltip,n,e)};if(this.touch)i(!1);else{var r=0,a=this.elements.progress.getBoundingClientRect();if(lu(e))r=100/a.width*(e.pageX-a.left);else{if(!Nu(this.elements.display.seekTooltip,n))return;r=parseFloat(this.elements.display.seekTooltip.style.left,10)}r<0?r=0:r>100&&(r=100),jh.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*r),this.elements.display.seekTooltip.style.left="".concat(r,"%"),lu(e)&&["mouseenter","mouseleave"].includes(e.type)&&i("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!su(this.elements.display.duration)&&this.config.invertTime;jh.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||jh.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return Lu(this.elements.display.currentTime,!0),void Lu(this.elements.progress,!0);su(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=su(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&jh.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&jh.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),jh.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){Lu(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var i=this.elements.settings.panels[e],r=null,a=t;if("captions"===e)r=this.currentTrack;else{if(r=du(n)?this[e]:n,du(r)&&(r=this.config[e].default),!du(this.options[e])&&!this.options[e].includes(r))return void this.debug.warn("Unsupported value of '".concat(r,"' for ").concat(e));if(!this.config[e].options.includes(r))return void this.debug.warn("Disabled value of '".concat(r,"' for ").concat(e))}if(su(a)||(a=i&&i.querySelector('[role="menu"]')),su(a)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=jh.getLabel.call(this,e,r);var o=a&&a.querySelector('[value="'.concat(r,'"]'));su(o)&&(o.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?Th("normal",this.config):"".concat(t,"×");case"quality":if(tu(t)){var n=Th("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return yh(t);case"captions":return Mh.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(su(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');au(e)&&(this.options.quality=th(e).filter((function(e){return t.config.quality.options.includes(e)})));var i=!du(this.options.quality)&&this.options.quality.length>1;if(jh.toggleMenuButton.call(this,"quality",i),Cu(n),jh.checkMenu.call(this),i){var r=function(e){var n=Th("qualityBadge.".concat(e),t.config);return n.length?jh.createBadge.call(t,n):null};this.options.quality.sort((function(e,n){var i=t.config.quality.options;return i.indexOf(e)>i.indexOf(n)?1:-1})).forEach((function(e){jh.createMenuItem.call(t,{value:e,list:n,type:"quality",title:jh.getLabel.call(t,"quality",e),badge:r(e)})})),jh.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(su(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=Mh.getTracks.call(this),i=Boolean(n.length);if(jh.toggleMenuButton.call(this,"captions",i),Cu(t),jh.checkMenu.call(this),i){var r=n.map((function(n,i){return{value:i,checked:e.captions.toggled&&e.currentTrack===i,title:Mh.getLabel.call(e,n),badge:n.language&&jh.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}}));r.unshift({value:-1,checked:!this.captions.toggled,title:Th("disabled",this.config),list:t,type:"language"}),r.forEach(jh.createMenuItem.bind(this)),jh.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(){var e=this;if(su(this.elements.settings.panels.speed)){var t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter((function(t){return t>=e.minimumSpeed&&t<=e.maximumSpeed}));var n=!du(this.options.speed)&&this.options.speed.length>1;jh.toggleMenuButton.call(this,"speed",n),Cu(t),jh.checkMenu.call(this),n&&(this.options.speed.forEach((function(n){jh.createMenuItem.call(e,{value:n,list:t,type:"speed",title:jh.getLabel.call(e,"speed",n)})})),jh.updateSetting.call(this,"speed",t))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!du(e)&&Object.values(e).some((function(e){return!e.hidden}));Lu(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;su(n)||(n=Object.values(this.elements.settings.panels).find((function(e){return!e.hidden})));var i=n.querySelector('[role^="menuitem"]');Uu.call(this,i,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(su(t)&&su(n)){var i=t.hidden,r=i;if(iu(e))r=e;else if(cu(e)&&27===e.which)r=!1;else if(lu(e)){var a=ru(e.composedPath)?e.composedPath()[0]:e.target,o=t.contains(a);if(o||!o&&e.target!==n&&r)return}n.setAttribute("aria-expanded",r),Lu(t,!r),ju(this.elements.container,this.config.classNames.menu.open,r),r&&cu(e)?jh.focusFirstMenuItem.call(this,null,!0):r||i||Uu.call(this,n,cu(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,i=t.scrollHeight;return xu(t),{width:n,height:i}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.elements.container.querySelector("#plyr-settings-".concat(this.id,"-").concat(t));if(su(i)){var r=i.parentNode,a=Array.from(r.children).find((function(e){return!e.hidden}));if(qu.transitions&&!qu.reducedMotion){r.style.width="".concat(a.scrollWidth,"px"),r.style.height="".concat(a.scrollHeight,"px");var o=jh.getMenuSize.call(this,i),s=function t(n){n.target===r&&["width","height"].includes(n.propertyName)&&(r.style.width="",r.style.height="",zu.call(e,r,pu,t))};Vu.call(this,r,pu,s),r.style.width="".concat(o.width,"px"),r.style.height="".concat(o.height,"px")}Lu(a,!0),Lu(i,!1),jh.focusFirstMenuItem.call(this,i,n)}},setDownloadUrl:function(){var e=this.elements.buttons.download;su(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=jh.bindMenuItemShortcuts,i=jh.createButton,r=jh.createProgress,a=jh.createRange,o=jh.createTime,s=jh.setQualityMenu,l=jh.setSpeedMenu,c=jh.showMenuPanel;this.elements.controls=null,au(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));var u=Au("div",Iu(this.config.selectors.controls.wrapper));this.elements.controls=u;var h={class:"plyr__controls__item"};return th(au(this.config.controls)?this.config.controls:[]).forEach((function(s){if("restart"===s&&u.appendChild(i.call(t,"restart",h)),"rewind"===s&&u.appendChild(i.call(t,"rewind",h)),"play"===s&&u.appendChild(i.call(t,"play",h)),"fast-forward"===s&&u.appendChild(i.call(t,"fast-forward",h)),"progress"===s){var l=Au("div",{class:"".concat(h.class," plyr__progress__container")}),f=Au("div",Iu(t.config.selectors.progress));if(f.appendChild(a.call(t,"seek",{id:"plyr-seek-".concat(e.id)})),f.appendChild(r.call(t,"buffer")),t.config.tooltips.seek){var d=Au("span",{class:t.config.classNames.tooltip},"00:00");f.appendChild(d),t.elements.display.seekTooltip=d}t.elements.progress=f,l.appendChild(t.elements.progress),u.appendChild(l)}if("current-time"===s&&u.appendChild(o.call(t,"currentTime",h)),"duration"===s&&u.appendChild(o.call(t,"duration",h)),"mute"===s||"volume"===s){var p=t.elements.volume;if(su(p)&&u.contains(p)||(p=Au("div",Tu({},h,{class:"".concat(h.class," plyr__volume").trim()})),t.elements.volume=p,u.appendChild(p)),"mute"===s&&p.appendChild(i.call(t,"mute")),"volume"===s&&!gu.isIos){var m={max:1,step:.05,value:t.config.volume};p.appendChild(a.call(t,"volume",Tu(m,{id:"plyr-volume-".concat(e.id)})))}}if("captions"===s&&u.appendChild(i.call(t,"captions",h)),"settings"===s&&!du(t.config.settings)){var g=Au("div",Tu({},h,{class:"".concat(h.class," plyr__menu").trim(),hidden:""}));g.appendChild(i.call(t,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var v=Au("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),y=Au("div"),b=Au("div",{id:"plyr-settings-".concat(e.id,"-home")}),w=Au("div",{role:"menu"});b.appendChild(w),y.appendChild(b),t.elements.settings.panels.home=b,t.config.settings.forEach((function(i){var r=Au("button",Tu(Iu(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));n.call(t,r,i),Vu.call(t,r,"click",(function(){c.call(t,i,!1)}));var a=Au("span",null,Th(i,t.config)),o=Au("span",{class:t.config.classNames.menu.value});o.innerHTML=e[i],a.appendChild(o),r.appendChild(a),w.appendChild(r);var s=Au("div",{id:"plyr-settings-".concat(e.id,"-").concat(i),hidden:""}),l=Au("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});l.appendChild(Au("span",{"aria-hidden":!0},Th(i,t.config))),l.appendChild(Au("span",{class:t.config.classNames.hidden},Th("menuBack",t.config))),Vu.call(t,s,"keydown",(function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),c.call(t,"home",!0))}),!1),Vu.call(t,l,"click",(function(){c.call(t,"home",!1)})),s.appendChild(l),s.appendChild(Au("div",{role:"menu"})),y.appendChild(s),t.elements.settings.buttons[i]=r,t.elements.settings.panels[i]=s})),v.appendChild(y),g.appendChild(v),u.appendChild(g),t.elements.settings.popup=v,t.elements.settings.menu=g}if("pip"===s&&qu.pip&&u.appendChild(i.call(t,"pip",h)),"airplay"===s&&qu.airplay&&u.appendChild(i.call(t,"airplay",h)),"download"===s){var k=Tu({},h,{element:"a",href:t.download,target:"_blank"});t.isHTML5&&(k.download="");var T=t.config.urls.download;!fu(T)&&t.isEmbed&&Tu(k,{icon:"logo-".concat(t.provider),label:t.provider}),u.appendChild(i.call(t,"download",k))}"fullscreen"===s&&u.appendChild(i.call(t,"fullscreen",h))})),this.isHTML5&&s.call(this,eh.getQualityOptions.call(this)),l.call(this),u},inject:function(){var e=this;if(this.config.loadSprite){var t=jh.getIconUrl.call(this);t.cors&&Ah(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var i={id:this.id,seektime:this.config.seekTime,title:this.config.title},r=!0;ru(this.config.controls)&&(this.config.controls=this.config.controls.call(this,i)),this.config.controls||(this.config.controls=[]),su(this.config.controls)||nu(this.config.controls)?n=this.config.controls:(n=jh.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:Mh.getLabel.call(this)}),r=!1);var a,o;if(r&&nu(this.config.controls)&&(a=n,Object.entries(i).forEach((function(e){var t=Ao(e,2),n=t[0],i=t[1];a=vh(a,"{".concat(n,"}"),i)})),n=a),nu(this.config.selectors.controls.container)&&(o=document.querySelector(this.config.selectors.controls.container)),su(o)||(o=this.elements.container),o[su(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),su(this.elements.controls)||jh.findElements.call(this),!du(this.elements.buttons)){var s=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return Nu(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];ju(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach((function(e){au(e)||ou(e)?Array.from(e).filter(Boolean).forEach(s):s(e)}))}if(gu.isEdge&&mu(o),this.config.tooltips.controls){var l=this.config,c=l.classNames,u=l.selectors,h="".concat(u.controls.wrapper," ").concat(u.labels," .").concat(c.hidden),f=Mu.call(this,h);Array.from(f).forEach((function(t){ju(t,e.config.classNames.hidden,!1),ju(t,e.config.classNames.tooltip,!0)}))}}};function Nh(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e;if(t){var i=document.createElement("a");i.href=n,n=i.href}try{return new URL(n)}catch(e){return null}}function Rh(e){var t=new URLSearchParams;return eu(e)&&Object.entries(e).forEach((function(e){var n=Ao(e,2),i=n[0],r=n[1];t.set(i,r)})),t}var Mh={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!qu.textTracks)au(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&jh.setCaptionsMenu.call(this);else{if(su(this.elements.captions)||(this.elements.captions=Au("div",Iu(this.config.selectors.captions)),function(e,t){su(e)&&su(t)&&t.parentNode.insertBefore(e,t.nextSibling)}(this.elements.captions,this.elements.wrapper)),gu.isIE&&window.URL){var e=this.media.querySelectorAll("track");Array.from(e).forEach((function(e){var t=e.getAttribute("src"),n=Nh(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&Eh(t,"blob").then((function(t){e.setAttribute("src",window.URL.createObjectURL(t))})).catch((function(){xu(e)}))}))}var t=th((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map((function(e){return e.split("-")[0]}))),n=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===n)n=Ao(t,1)[0];var i=this.storage.get("captions");if(iu(i)||(i=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:i,language:n,languages:t}),this.isHTML5){var r=this.config.captions.update?"addtrack removetrack":"removetrack";Vu.call(this,this.media.textTracks,r,Mh.update.bind(this))}setTimeout(Mh.update.bind(this),0)}},update:function(){var e=this,t=Mh.getTracks.call(this,!0),n=this.captions,i=n.active,r=n.language,a=n.meta,o=n.currentTrackNode,s=Boolean(t.find((function(e){return e.language===r})));this.isHTML5&&this.isVideo&&t.filter((function(e){return!a.get(e)})).forEach((function(t){e.debug.log("Track added",t),a.set(t,{default:"showing"===t.mode}),"showing"===t.mode&&(t.mode="hidden"),Vu.call(e,t,"cuechange",(function(){return Mh.updateCues.call(e)}))})),(s&&this.language!==r||!t.includes(o))&&(Mh.setLanguage.call(this,r),Mh.toggle.call(this,i&&s)),ju(this.elements.container,this.config.classNames.captions.enabled,!du(t)),au(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&jh.setCaptionsMenu.call(this)},toggle:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var i=this.captions.toggled,r=this.config.classNames.captions.active,a=Zc(e)?!i:e;if(a!==i){if(n||(this.captions.active=a,this.storage.set({captions:a})),!this.language&&a&&!n){var o=Mh.getTracks.call(this),s=Mh.findTrack.call(this,[this.captions.language].concat(Po(this.captions.languages)),!0);return this.captions.language=s.language,void Mh.set.call(this,o.indexOf(s))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=a),ju(this.elements.container,r,a),this.captions.toggled=a,jh.updateSetting.call(this,"captions"),Ku.call(this,this.media,a?"captionsenabled":"captionsdisabled")}setTimeout((function(){a&&t.captions.toggled&&(t.captions.currentTrackNode.mode="hidden")}))}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=Mh.getTracks.call(this);if(-1!==e)if(tu(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var i=n[e],r=i||{},a=r.language;this.captions.currentTrackNode=i,jh.updateSetting.call(this,"captions"),t||(this.captions.language=a,this.storage.set({language:a})),this.isVimeo&&this.embed.enableTextTrack(a),Ku.call(this,this.media,"languagechange")}Mh.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&Mh.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else Mh.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(nu(e)){var n=e.toLowerCase();this.captions.language=n;var i=Mh.getTracks.call(this),r=Mh.findTrack.call(this,[n]);Mh.set.call(this,i.indexOf(r),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=Array.from((this.media||{}).textTracks||[]);return n.filter((function(n){return!e.isHTML5||t||e.captions.meta.has(n)})).filter((function(e){return["captions","subtitles"].includes(e.kind)}))},findTrack:function(e){var t,n=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=Mh.getTracks.call(this),a=function(e){return Number((n.captions.meta.get(e)||{}).default)},o=Array.from(r).sort((function(e,t){return a(t)-a(e)}));return e.every((function(e){return!(t=o.find((function(t){return t.language===e})))})),t||(i?o[0]:void 0)},getCurrentTrack:function(){return Mh.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!uu(t)&&qu.textTracks&&this.captions.toggled&&(t=Mh.getCurrentTrack.call(this)),uu(t)?du(t.label)?du(t.language)?Th("enabled",this.config):e.language.toUpperCase():t.label:Th("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(su(this.elements.captions))if(Zc(e)||Array.isArray(e)){var t=e;if(!t){var n=Mh.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map((function(e){return e.getCueAsHTML()})).map(wh)}var i=t.map((function(e){return e.trim()})).join("\n");if(i!==this.elements.captions.innerHTML){Cu(this.elements.captions);var r=Au("span",Iu(this.config.selectors.caption));r.innerHTML=i,this.elements.captions.appendChild(r),Ku.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},_h={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.6.2/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,premium:!1,referrerPolicy:null},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},Uh="picture-in-picture",Dh="inline",Fh={html5:"html5",youtube:"youtube",vimeo:"vimeo"},qh="audio",Hh="video";var Bh=function(){},Vh=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];yo(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return wo(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):Bh}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):Bh}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):Bh}}]),e}(),zh=function(){function e(t){var n=this;yo(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){return(Element.prototype.closest||function(){var e=this;do{if(Ru.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),Vu.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),(function(){n.onChange()})),Vu.call(this.player,this.player.elements.container,"dblclick",(function(e){su(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()})),Vu.call(this,this.player.elements.container,"keydown",(function(e){return n.trapFocus(e)})),this.update()}return wo(e,[{key:"onChange",value:function(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;su(e)&&(e.pressed=this.active),Ku.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0)}}},{key:"toggleFallback",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",ju(this.target,this.player.config.classNames.fullscreen.fallback,e),gu.isIos){var t=document.head.querySelector('meta[name="viewport"]'),n="viewport-fit=cover";t||(t=document.createElement("meta")).setAttribute("name","viewport");var i=nu(t.content)&&t.content.includes(n);e?(this.cleanupViewport=!i,i||(t.content+=",".concat(n))):this.cleanupViewport&&(t.content=t.content.split(",").filter((function(e){return e.trim()!==n})).join(","))}this.onChange()}},{key:"trapFocus",value:function(e){if(!gu.isIos&&this.active&&"Tab"===e.key&&9===e.keyCode){var t=document.activeElement,n=Mu.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),i=Ao(n,1)[0],r=n[n.length-1];t!==r||e.shiftKey?t===i&&e.shiftKey&&(r.focus(),e.preventDefault()):(i.focus(),e.preventDefault())}}},{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");ju(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&(gu.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?this.toggleFallback(!0):this.prefix?du(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen({navigationUI:"hide"}))}},{key:"exit",value:function(){if(this.enabled)if(gu.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),Gu(this.player.play());else if(!e.native||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!du(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){if(!this.enabled)return!1;if(!e.native||this.forceFallback)return Nu(this.target,this.player.config.classNames.fullscreen.fallback);var t=this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement;return t&&t.shadowRoot?t===this.target.getRootNode().host:t===this.target}},{key:"target",get:function(){return gu.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen||this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(ru(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some((function(t){return!(!ru(document["".concat(t,"ExitFullscreen")])&&!ru(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)})),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}(),Wh=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1};function Kh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise((function(n,i){var r=new Image,a=function(){delete r.onload,delete r.onerror,(r.naturalWidth>=t?n:i)(r)};Object.assign(r,{onload:a,onerror:a,src:e})}))}Ie({target:"Math",stat:!0},{sign:Wh});var $h={addStyleHook:function(){ju(this.elements.container,this.config.selectors.container.replace(".",""),!0),ju(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void $h.toggleNativeControls.call(this,!0);su(this.elements.controls)||(jh.inject.call(this),this.listeners.controls()),$h.toggleNativeControls.call(this),this.isHTML5&&Mh.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,jh.updateVolume.call(this),jh.timeUpdate.call(this),$h.checkPlaying.call(this),ju(this.elements.container,this.config.classNames.pip.supported,qu.pip&&this.isHTML5&&this.isVideo),ju(this.elements.container,this.config.classNames.airplay.supported,qu.airplay&&this.isHTML5),ju(this.elements.container,this.config.classNames.isIos,gu.isIos),ju(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((function(){Ku.call(e,e.media,"ready")}),0),$h.setTitle.call(this),this.poster&&$h.setPoster.call(this,this.poster,!1).catch((function(){})),this.config.duration&&jh.durationUpdate.call(this)},setTitle:function(){var e=Th("play",this.config);if(nu(this.config.title)&&!du(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach((function(t){t.setAttribute("aria-label",e)})),this.isEmbed){var t=_u.call(this,"iframe");if(!su(t))return;var n=du(this.config.title)?"video":this.config.title,i=Th("frameTitle",this.config);t.setAttribute("title",i.replace("{title}",n))}},togglePoster:function(e){ju(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return n&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),Yu.call(this).then((function(){return Kh(e)})).catch((function(n){throw e===t.poster&&$h.togglePoster.call(t,!1),n})).then((function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")})).then((function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),$h.togglePoster.call(t,!0),e})))},checkPlaying:function(e){var t=this;ju(this.elements.container,this.config.classNames.playing,this.playing),ju(this.elements.container,this.config.classNames.paused,this.paused),ju(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((function(e){Object.assign(e,{pressed:t.playing}),e.setAttribute("aria-label",Th(t.playing?"pause":"play",t.config))})),lu(e)&&"timeupdate"===e.type||$h.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((function(){ju(t.elements.container,t.config.classNames.loading,t.loading),$h.toggleControls.call(t)}),this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}},migrateStyles:function(){var e=this;Object.values(So({},this.media.style)).filter((function(e){return!du(e)&&e.startsWith("--plyr")})).forEach((function(t){e.elements.container.style.setProperty(t,e.media.style.getPropertyValue(t)),e.media.style.removeProperty(t)})),du(this.media.style)&&this.media.removeAttribute("style")}},Yh=function(){function e(t){yo(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return wo(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,i=e.keyCode?e.keyCode:e.which,r="keydown"===e.type,a=r&&i===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&&tu(i)){if(r){var o=document.activeElement;if(su(o)){var s=t.config.selectors.editable;if(o!==n.inputs.seek&&Ru(o,s))return;if(32===e.which&&Ru(o,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(i)&&(e.preventDefault(),e.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:a||(t.currentTime=t.duration/10*(i-48));break;case 32:case 75:a||Gu(t.togglePlay());break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:a||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:a||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===i&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=i}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){jh.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,ju(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var i,r=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||r)i=t.config.classNames.tabFocus,ju(Mu.call(t,".".concat(i)),i,!1),"focusout"!==e.type&&(this.focusTimer=setTimeout((function(){var e=document.activeElement;n.container.contains(e)&&ju(document.activeElement,t.config.classNames.tabFocus,!0)}),10))}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&Bu.call(t,window,"keydown keyup",this.handleKey,e,!1),Bu.call(t,document.body,"click",this.toggleMenu,e),Wu.call(t,document.body,"touchstart",this.firstTouch),Bu.call(t,document.body,"keydown focus blur focusout",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this.player,t=e.config,n=e.elements,i=e.timers;!t.keyboard.global&&t.keyboard.focused&&Vu.call(e,n.container,"keydown keyup",this.handleKey,!1),Vu.call(e,n.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",(function(t){var r=n.controls;r&&"enterfullscreen"===t.type&&(r.pressed=!1,r.hover=!1);var a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&($h.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(i.controls),i.controls=setTimeout((function(){return $h.toggleControls.call(e,!1)}),a)}));var r=function(t){if(!t)return Zu.call(e);var i=n.container.getBoundingClientRect(),r=i.width,a=i.height;return Zu.call(e,"".concat(r,":").concat(a))},a=function(){clearTimeout(i.resized),i.resized=setTimeout(r,50)};Vu.call(e,n.container,"enterfullscreen exitfullscreen",(function(t){var i=e.fullscreen,o=i.target,s=i.usingNative;if(o===n.container&&(e.isEmbed||!du(e.config.ratio))){var l="enterfullscreen"===t.type,c=r(l);c.padding;!function(t,n,i){if(e.isVimeo&&!e.config.vimeo.premium){var r=e.elements.wrapper.firstChild,a=Ao(t,2)[1],o=Ao(Ju.call(e),2),s=o[0],l=o[1];r.style.maxWidth=i?"".concat(a/l*s,"px"):null,r.style.margin=i?"0 auto":null}}(c.ratio,0,l),s||(l?Vu.call(e,window,"resize",a):zu.call(e,window,"resize",a))}}))}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(Vu.call(t,t.media,"timeupdate seeking seeked",(function(e){return jh.timeUpdate.call(t,e)})),Vu.call(t,t.media,"durationchange loadeddata loadedmetadata",(function(e){return jh.durationUpdate.call(t,e)})),Vu.call(t,t.media,"ended",(function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&(t.restart(),t.pause())})),Vu.call(t,t.media,"progress playing seeking seeked",(function(e){return jh.updateProgress.call(t,e)})),Vu.call(t,t.media,"volumechange",(function(e){return jh.updateVolume.call(t,e)})),Vu.call(t,t.media,"playing play pause ended emptied timeupdate",(function(e){return $h.checkPlaying.call(t,e)})),Vu.call(t,t.media,"waiting canplay seeked playing",(function(e){return $h.checkLoading.call(t,e)})),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var i=_u.call(t,".".concat(t.config.classNames.video));if(!su(i))return;Vu.call(t,n.container,"click",(function(r){([n.container,i].includes(r.target)||i.contains(r.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(r,t.restart,"restart"),e.proxy(r,(function(){Gu(t.play())}),"play")):e.proxy(r,(function(){Gu(t.togglePlay())}),"play")))}))}t.supported.ui&&t.config.disableContextMenu&&Vu.call(t,n.wrapper,"contextmenu",(function(e){e.preventDefault()}),!1),Vu.call(t,t.media,"volumechange",(function(){t.storage.set({volume:t.volume,muted:t.muted})})),Vu.call(t,t.media,"ratechange",(function(){jh.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})})),Vu.call(t,t.media,"qualitychange",(function(e){jh.updateSetting.call(t,"quality",null,e.detail.quality)})),Vu.call(t,t.media,"ready qualitychange",(function(){jh.setDownloadUrl.call(t)}));var r=t.config.events.concat(["keyup","keydown"]).join(" ");Vu.call(t,t.media,r,(function(e){var i=e.detail,r=void 0===i?{}:i;"error"===e.type&&(r=t.media.error),Ku.call(t,n.container,e.type,!0,r)}))}},{key:"proxy",value:function(e,t,n){var i=this.player,r=i.config.listeners[n],a=!0;ru(r)&&(a=r.call(i,e)),!1!==a&&ru(t)&&t.call(i,e)}},{key:"bind",value:function(e,t,n,i){var r=this,a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.player,s=o.config.listeners[i],l=ru(s);Vu.call(o,e,t,(function(e){return r.proxy(e,n,i)}),a&&!l)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,i=gu.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach((function(n){e.bind(n,"click",(function(){Gu(t.togglePlay())}),"play")})),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",(function(){t.muted=!t.muted}),"mute"),this.bind(n.buttons.captions,"click",(function(){return t.toggleCaptions()})),this.bind(n.buttons.download,"click",(function(){Ku.call(t,t.media,"download")}),"download"),this.bind(n.buttons.fullscreen,"click",(function(){t.fullscreen.toggle()}),"fullscreen"),this.bind(n.buttons.pip,"click",(function(){t.pip="toggle"}),"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",(function(e){e.stopPropagation(),e.preventDefault(),jh.toggleMenu.call(t,e)}),null,!1),this.bind(n.buttons.settings,"keyup",(function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),jh.toggleMenu.call(t,e)):jh.focusFirstMenuItem.call(t,null,!0))}),null,!1),this.bind(n.settings.menu,"keydown",(function(e){27===e.which&&jh.toggleMenu.call(t,e)})),this.bind(n.inputs.seek,"mousedown mousemove",(function(e){var t=n.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",i)})),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",(function(e){var n=e.currentTarget,i=e.keyCode?e.keyCode:e.which;if(!cu(e)||39===i||37===i){t.lastSeekTime=Date.now();var r=n.hasAttribute("play-on-seeked"),a=["mouseup","touchend","keyup"].includes(e.type);r&&a?(n.removeAttribute("play-on-seeked"),Gu(t.play())):!a&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}})),gu.isIos){var r=Mu.call(t,'input[type="range"]');Array.from(r).forEach((function(t){return e.bind(t,i,(function(e){return mu(e.target)}))}))}this.bind(n.inputs.seek,i,(function(e){var n=e.currentTarget,i=n.getAttribute("seek-value");du(i)&&(i=n.value),n.removeAttribute("seek-value"),t.currentTime=i/n.max*t.duration}),"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",(function(e){return jh.updateSeekTooltip.call(t,e)})),this.bind(n.progress,"mousemove touchmove",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)})),this.bind(n.progress,"mouseleave touchend click",(function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)})),this.bind(n.progress,"mousedown touchstart",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)})),this.bind(n.progress,"mouseup touchend",(function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)})),gu.isWebkit&&Array.from(Mu.call(t,'input[type="range"]')).forEach((function(n){e.bind(n,"input",(function(e){return jh.updateRangeFill.call(t,e.target)}))})),t.config.toggleInvert&&!su(n.display.duration)&&this.bind(n.display.currentTime,"click",(function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,jh.timeUpdate.call(t))})),this.bind(n.inputs.volume,i,(function(e){t.volume=e.target.value}),"volume"),this.bind(n.controls,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type})),n.fullscreen&&Array.from(n.fullscreen.children).filter((function(e){return!e.contains(n.container)})).forEach((function(i){e.bind(i,"mouseenter mouseleave",(function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type}))})),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",(function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)})),this.bind(n.controls,"focusin",(function(){var i=t.config,r=t.timers;ju(n.controls,i.classNames.noTransition,!0),$h.toggleControls.call(t,!0),setTimeout((function(){ju(n.controls,i.classNames.noTransition,!1)}),0);var a=e.touch?3e3:4e3;clearTimeout(r.controls),r.controls=setTimeout((function(){return $h.toggleControls.call(t,!1)}),a)})),this.bind(n.inputs.volume,"wheel",(function(e){var n=e.webkitDirectionInvertedFromDevice,i=Ao([e.deltaX,-e.deltaY].map((function(e){return n?-e:e})),2),r=i[0],a=i[1],o=Math.sign(Math.abs(r)>Math.abs(a)?r:a);t.increaseVolume(o/50);var s=t.media.volume;(1===o&&s<1||-1===o&&s>0)&&e.preventDefault()}),"volume",!1)}}]),e}(),Gh=Kn("splice"),Xh=Qt("splice",{ACCESSORS:!0,0:0,1:2}),Qh=Math.max,Jh=Math.min;Ie({target:"Array",proto:!0,forced:!Gh||!Xh},{splice:function(e,t){var n,i,r,a,o,s,l=Re(this),c=le(l.length),u=he(e,c),h=arguments.length;if(0===h?n=i=0:1===h?(n=0,i=c-u):(n=h-2,i=Jh(Qh(oe(t),0),c-u)),c+n-i>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(r=ot(l,i),a=0;a<i;a++)(o=u+a)in l&&Fn(r,a,l[o]);if(r.length=i,n<i){for(a=u;a<c-i;a++)s=a+n,(o=a+i)in l?l[s]=l[o]:delete l[s];for(a=c;a>c-i+n;a--)delete l[a-1]}else if(n>i)for(a=c-i;a>u;a--)s=a+n-1,(o=a+i-1)in l?l[s]=l[o]:delete l[s];for(a=0;a<n;a++)l[a+u]=arguments[a+2];return l.length=c-i+n,r}});var Zh=t((function(e,t){e.exports=function(){var e=function(){},t={},n={},i={};function r(e,t){if(e){var r=i[e];if(n[e]=t,r)for(;r.length;)r[0](e,t),r.splice(0,1)}}function a(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function o(t,n,i,r){var a,s,l=document,c=i.async,u=(i.numRetries||0)+1,h=i.before||e,f=t.replace(/[\?|#].*$/,""),d=t.replace(/^(css|img)!/,"");r=r||0,/(^css!|\.css$)/.test(f)?((s=l.createElement("link")).rel="stylesheet",s.href=d,(a="hideFocus"in s)&&s.relList&&(a=0,s.rel="preload",s.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(f)?(s=l.createElement("img")).src=d:((s=l.createElement("script")).src=t,s.async=void 0===c||c),s.onload=s.onerror=s.onbeforeload=function(e){var l=e.type[0];if(a)try{s.sheet.cssText.length||(l="e")}catch(e){18!=e.code&&(l="e")}if("e"==l){if((r+=1)<u)return o(t,n,i,r)}else if("preload"==s.rel&&"style"==s.as)return s.rel="stylesheet";n(t,l,e.defaultPrevented)},!1!==h(t,s)&&l.head.appendChild(s)}function s(e,n,i){var s,l;if(n&&n.trim&&(s=n),l=(s?i:n)||{},s){if(s in t)throw"LoadJS";t[s]=!0}function c(t,n){!function(e,t,n){var i,r,a=(e=e.push?e:[e]).length,s=a,l=[];for(i=function(e,n,i){if("e"==n&&l.push(e),"b"==n){if(!i)return;l.push(e)}--a||t(l)},r=0;r<s;r++)o(e[r],i,n)}(e,(function(e){a(l,e),t&&a({success:t,error:n},e),r(s,e)}),l)}if(l.returnPromise)return new Promise(c);c()}return s.ready=function(e,t){return function(e,t){e=e.push?e:[e];var r,a,o,s=[],l=e.length,c=l;for(r=function(e,n){n.length&&s.push(e),--c||t(s)};l--;)a=e[l],(o=n[a])?r(a,o):(i[a]=i[a]||[]).push(r)}(e,(function(e){a(t,e)})),s},s.done=function(e){r(e,[])},s.reset=function(){t={},n={},i={}},s.isDefined=function(e){return e in t},s}()}));function ef(e){return new Promise((function(t,n){Zh(e,{success:t,error:n})}))}function tf(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Ku.call(this,this.media,e?"play":"pause"))}var nf={setup:function(){var e=this;ju(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,Zu.call(e),eu(window.Vimeo)?nf.ready.call(e):ef(e.config.urls.vimeo.sdk).then((function(){nf.ready.call(e)})).catch((function(t){e.debug.warn("Vimeo SDK (player.js) failed to load",t)}))},ready:function(){var e=this,t=this,n=t.config.vimeo,i=n.premium,r=n.referrerPolicy,a=Eo(n,["premium","referrerPolicy"]);i&&Object.assign(a,{controls:!1,sidedock:!1});var o=Rh(So({loop:t.config.loop.active,autoplay:t.autoplay,muted:t.muted,gesture:"media",playsinline:!this.config.fullscreen.iosNative},a)),s=t.media.getAttribute("src");du(s)&&(s=t.media.getAttribute(t.config.attributes.embed.id));var l,c=du(l=s)?null:tu(Number(l))?l:l.match(/^.*(vimeo.com\/|video\/)(\d+).*/)?RegExp.$2:l,u=Au("iframe"),h=gh(t.config.urls.vimeo.iframe,c,o);u.setAttribute("src",h),u.setAttribute("allowfullscreen",""),u.setAttribute("allow","autoplay,fullscreen,picture-in-picture"),du(r)||u.setAttribute("referrerPolicy",r);var f=t.poster;if(i)u.setAttribute("data-poster",f),t.media=Ou(u,t.media);else{var d=Au("div",{class:t.config.classNames.embedContainer,"data-poster":f});d.appendChild(u),t.media=Ou(d,t.media)}Eh(gh(t.config.urls.vimeo.api,c),"json").then((function(e){if(!du(e)){var n=new URL(e[0].thumbnail_large);n.pathname="".concat(n.pathname.split("_")[0],".jpg"),$h.setPoster.call(t,n.href).catch((function(){}))}})),t.embed=new window.Vimeo.Player(u,{autopause:t.config.autopause,muted:t.muted}),t.media.paused=!0,t.media.currentTime=0,t.supported.ui&&t.embed.disableTextTrack(),t.media.play=function(){return tf.call(t,!0),t.embed.play()},t.media.pause=function(){return tf.call(t,!1),t.embed.pause()},t.media.stop=function(){t.pause(),t.currentTime=0};var p=t.media.currentTime;Object.defineProperty(t.media,"currentTime",{get:function(){return p},set:function(e){var n=t.embed,i=t.media,r=t.paused,a=t.volume,o=r&&!n.hasPlayed;i.seeking=!0,Ku.call(t,i,"seeking"),Promise.resolve(o&&n.setVolume(0)).then((function(){return n.setCurrentTime(e)})).then((function(){return o&&n.pause()})).then((function(){return o&&n.setVolume(a)})).catch((function(){}))}});var m=t.config.speed.selected;Object.defineProperty(t.media,"playbackRate",{get:function(){return m},set:function(e){t.embed.setPlaybackRate(e).then((function(){m=e,Ku.call(t,t.media,"ratechange")})).catch((function(){t.options.speed=[1]}))}});var g=t.config.volume;Object.defineProperty(t.media,"volume",{get:function(){return g},set:function(e){t.embed.setVolume(e).then((function(){g=e,Ku.call(t,t.media,"volumechange")}))}});var v=t.config.muted;Object.defineProperty(t.media,"muted",{get:function(){return v},set:function(e){var n=!!iu(e)&&e;t.embed.setVolume(n?0:t.config.volume).then((function(){v=n,Ku.call(t,t.media,"volumechange")}))}});var y,b=t.config.loop;Object.defineProperty(t.media,"loop",{get:function(){return b},set:function(e){var n=iu(e)?e:t.config.loop.active;t.embed.setLoop(n).then((function(){b=n}))}}),t.embed.getVideoUrl().then((function(e){y=e,jh.setDownloadUrl.call(t)})).catch((function(t){e.debug.warn(t)})),Object.defineProperty(t.media,"currentSrc",{get:function(){return y}}),Object.defineProperty(t.media,"ended",{get:function(){return t.currentTime===t.duration}}),Promise.all([t.embed.getVideoWidth(),t.embed.getVideoHeight()]).then((function(n){var i=Ao(n,2),r=i[0],a=i[1];t.embed.ratio=[r,a],Zu.call(e)})),t.embed.setAutopause(t.config.autopause).then((function(e){t.config.autopause=e})),t.embed.getVideoTitle().then((function(n){t.config.title=n,$h.setTitle.call(e)})),t.embed.getCurrentTime().then((function(e){p=e,Ku.call(t,t.media,"timeupdate")})),t.embed.getDuration().then((function(e){t.media.duration=e,Ku.call(t,t.media,"durationchange")})),t.embed.getTextTracks().then((function(e){t.media.textTracks=e,Mh.setup.call(t)})),t.embed.on("cuechange",(function(e){var n=e.cues,i=(void 0===n?[]:n).map((function(e){return function(e){var t=document.createDocumentFragment(),n=document.createElement("div");return t.appendChild(n),n.innerHTML=e,t.firstChild.innerText}(e.text)}));Mh.updateCues.call(t,i)})),t.embed.on("loaded",(function(){(t.embed.getPaused().then((function(e){tf.call(t,!e),e||Ku.call(t,t.media,"playing")})),su(t.embed.element)&&t.supported.ui)&&t.embed.element.setAttribute("tabindex",-1)})),t.embed.on("bufferstart",(function(){Ku.call(t,t.media,"waiting")})),t.embed.on("bufferend",(function(){Ku.call(t,t.media,"playing")})),t.embed.on("play",(function(){tf.call(t,!0),Ku.call(t,t.media,"playing")})),t.embed.on("pause",(function(){tf.call(t,!1)})),t.embed.on("timeupdate",(function(e){t.media.seeking=!1,p=e.seconds,Ku.call(t,t.media,"timeupdate")})),t.embed.on("progress",(function(e){t.media.buffered=e.percent,Ku.call(t,t.media,"progress"),1===parseInt(e.percent,10)&&Ku.call(t,t.media,"canplaythrough"),t.embed.getDuration().then((function(e){e!==t.media.duration&&(t.media.duration=e,Ku.call(t,t.media,"durationchange"))}))})),t.embed.on("seeked",(function(){t.media.seeking=!1,Ku.call(t,t.media,"seeked")})),t.embed.on("ended",(function(){t.media.paused=!0,Ku.call(t,t.media,"ended")})),t.embed.on("error",(function(e){t.media.error=e,Ku.call(t,t.media,"error")})),setTimeout((function(){return $h.build.call(t)}),0)}};function rf(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Ku.call(this,this.media,e?"play":"pause"))}function af(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}var of={setup:function(){var e=this;if(ju(this.elements.wrapper,this.config.classNames.embed,!0),eu(window.YT)&&ru(window.YT.Player))of.ready.call(this);else{var t=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=function(){ru(t)&&t(),of.ready.call(e)},ef(this.config.urls.youtube.sdk).catch((function(t){e.debug.warn("YouTube API failed to load",t)}))}},getTitle:function(e){var t=this;Eh(gh(this.config.urls.youtube.api,e)).then((function(e){if(eu(e)){var n=e.title,i=e.height,r=e.width;t.config.title=n,$h.setTitle.call(t),t.embed.ratio=[r,i]}Zu.call(t)})).catch((function(){Zu.call(t)}))},ready:function(){var e=this,t=e.media&&e.media.getAttribute("id");if(du(t)||!t.startsWith("youtube-")){var n=e.media.getAttribute("src");du(n)&&(n=e.media.getAttribute(this.config.attributes.embed.id));var i,r,a=du(i=n)?null:i.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/)?RegExp.$2:i,o=(r=e.provider,"".concat(r,"-").concat(Math.floor(1e4*Math.random()))),s=Au("div",{id:o,"data-poster":e.poster});e.media=Ou(s,e.media);var l=function(e){return"https://i.ytimg.com/vi/".concat(a,"/").concat(e,"default.jpg")};Kh(l("maxres"),121).catch((function(){return Kh(l("sd"),121)})).catch((function(){return Kh(l("hq"))})).then((function(t){return $h.setPoster.call(e,t.src)})).then((function(t){t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")})).catch((function(){}));var c=e.config.youtube;e.embed=new window.YT.Player(o,{videoId:a,host:af(c),playerVars:Tu({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui?0:1,disablekb:1,playsinline:e.config.fullscreen.iosNative?0:1,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},c),events:{onError:function(t){if(!e.media.error){var n=t.data,i={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[n]||"An unknown error occured";e.media.error={code:n,message:i},Ku.call(e,e.media,"error")}},onPlaybackRateChange:function(t){var n=t.target;e.media.playbackRate=n.getPlaybackRate(),Ku.call(e,e.media,"ratechange")},onReady:function(t){if(!ru(e.media.play)){var n=t.target;of.getTitle.call(e,a),e.media.play=function(){rf.call(e,!0),n.playVideo()},e.media.pause=function(){rf.call(e,!1),n.pauseVideo()},e.media.stop=function(){n.stopVideo()},e.media.duration=n.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get:function(){return Number(n.getCurrentTime())},set:function(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,Ku.call(e,e.media,"seeking"),n.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get:function(){return n.getPlaybackRate()},set:function(e){n.setPlaybackRate(e)}});var i=e.config.volume;Object.defineProperty(e.media,"volume",{get:function(){return i},set:function(t){i=t,n.setVolume(100*i),Ku.call(e,e.media,"volumechange")}});var r=e.config.muted;Object.defineProperty(e.media,"muted",{get:function(){return r},set:function(t){var i=iu(t)?t:r;r=i,n[i?"mute":"unMute"](),Ku.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get:function(){return n.getVideoUrl()}}),Object.defineProperty(e.media,"ended",{get:function(){return e.currentTime===e.duration}});var o=n.getAvailablePlaybackRates();e.options.speed=o.filter((function(t){return e.config.speed.options.includes(t)})),e.supported.ui&&e.media.setAttribute("tabindex",-1),Ku.call(e,e.media,"timeupdate"),Ku.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((function(){e.media.buffered=n.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&Ku.call(e,e.media,"progress"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),Ku.call(e,e.media,"canplaythrough"))}),200),setTimeout((function(){return $h.build.call(e)}),50)}},onStateChange:function(t){var n=t.target;switch(clearInterval(e.timers.playing),e.media.seeking&&[1,2].includes(t.data)&&(e.media.seeking=!1,Ku.call(e,e.media,"seeked")),t.data){case-1:Ku.call(e,e.media,"timeupdate"),e.media.buffered=n.getVideoLoadedFraction(),Ku.call(e,e.media,"progress");break;case 0:rf.call(e,!1),e.media.loop?(n.stopVideo(),n.playVideo()):Ku.call(e,e.media,"ended");break;case 1:e.config.autoplay||!e.media.paused||e.embed.hasPlayed?(rf.call(e,!0),Ku.call(e,e.media,"playing"),e.timers.playing=setInterval((function(){Ku.call(e,e.media,"timeupdate")}),50),e.media.duration!==n.getDuration()&&(e.media.duration=n.getDuration(),Ku.call(e,e.media,"durationchange"))):e.media.pause();break;case 2:e.muted||e.embed.unMute(),rf.call(e,!1);break;case 3:Ku.call(e,e.media,"waiting")}Ku.call(e,e.elements.container,"statechange",!1,{code:t.data})}}})}}},sf={setup:function(){this.media?(ju(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),ju(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&ju(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=Au("div",{class:this.config.classNames.video}),Su(this.media,this.elements.wrapper),this.elements.poster=Au("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?eh.setup.call(this):this.isYouTube?of.setup.call(this):this.isVimeo&&nf.setup.call(this)):this.debug.warn("No media element found!")}},lf=function(){function e(t){var n=this;yo(this,e),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise((function(e,t){n.on("loaded",e),n.on("error",t)})),this.load()}return wo(e,[{key:"load",value:function(){var e=this;this.enabled&&(eu(window.google)&&eu(window.google.ima)?this.ready():ef(this.player.config.urls.googleIMA.sdk).then((function(){e.ready()})).catch((function(){e.trigger("error",new Error("Google IMA SDK failed to load"))})))}},{key:"ready",value:function(){var e,t=this;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then((function(){t.clearSafetyTimer("onAdsManagerLoaded()")})),this.listeners(),this.setupIMA()}},{key:"setupIMA",value:function(){var e=this;this.elements.container=Au("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(function(t){return e.onAdsManagerLoaded(t)}),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(t){return e.onAdError(t)}),!1),this.requestAds()}},{key:"requestAds",value:function(){var e=this.player.elements.container;try{var t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}}},{key:"pollCountdown",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!t)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");var n=function(){var t=Lh(Math.max(e.manager.getRemainingTime(),0)),n="".concat(Th("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)};this.countdownTimer=setInterval(n,100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(function(e){return t.onAdError(e)})),Object.keys(google.ima.AdEvent.Type).forEach((function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],(function(e){return t.onAdEvent(e)}))})),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;du(this.cuePoints)||this.cuePoints.forEach((function(t){if(0!==t&&-1!==t&&t<e.player.duration){var n=e.player.elements.progress;if(su(n)){var i=100/e.player.duration*t,r=Au("span",{class:e.player.config.classNames.cues});r.style.left="".concat(i.toString(),"%"),n.appendChild(r)}}}))}},{key:"onAdEvent",value:function(e){var t=this,n=this.player.elements.container,i=e.getAd(),r=e.getAdData();switch(function(e){Ku.call(t.player,t.player.media,"ads".concat(e.replace(/_/g,"").toLowerCase()))}(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=n.offsetWidth,i.height=n.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:r.adError&&this.player.debug.warn("Non-fatal ad error: ".concat(r.adError.getMessage()))}}},{key:"onAdError",value:function(e){this.cancel(),this.player.debug.warn("Ads error",e)}},{key:"listeners",value:function(){var e,t=this,n=this.player.elements.container;this.player.on("canplay",(function(){t.addCuePoints()})),this.player.on("ended",(function(){t.loader.contentComplete()})),this.player.on("timeupdate",(function(){e=t.player.currentTime})),this.player.on("seeked",(function(){var n=t.player.currentTime;du(t.cuePoints)||t.cuePoints.forEach((function(i,r){e<i&&i<n&&(t.manager.discardAdBreak(),t.cuePoints.splice(r,1))}))})),window.addEventListener("resize",(function(){t.manager&&t.manager.resize(n.offsetWidth,n.offsetHeight,google.ima.ViewMode.NORMAL)}))}},{key:"play",value:function(){var e=this,t=this.player.elements.container;this.managerPromise||this.resumeContent(),this.managerPromise.then((function(){e.manager.setVolume(e.player.volume),e.elements.displayContainer.initialize();try{e.initialized||(e.manager.init(t.offsetWidth,t.offsetHeight,google.ima.ViewMode.NORMAL),e.manager.start()),e.initialized=!0}catch(t){e.onAdError(t)}})).catch((function(){}))}},{key:"resumeContent",value:function(){this.elements.container.style.zIndex="",this.playing=!1,Gu(this.player.media.play())}},{key:"pauseContent",value:function(){this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()}},{key:"cancel",value:function(){this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()}},{key:"loadAds",value:function(){var e=this;this.managerPromise.then((function(){e.manager&&e.manager.destroy(),e.managerPromise=new Promise((function(t){e.on("loaded",t),e.player.debug.log(e.manager)})),e.initialized=!1,e.requestAds()})).catch((function(){}))}},{key:"trigger",value:function(e){for(var t=this,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var a=this.events[e];au(a)&&a.forEach((function(e){ru(e)&&e.apply(t,i)}))}},{key:"on",value:function(e,t){return au(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this}},{key:"startSafetyTimer",value:function(e,t){var n=this;this.player.debug.log("Safety timer invoked from: ".concat(t)),this.safetyTimer=setTimeout((function(){n.cancel(),n.clearSafetyTimer("startSafetyTimer()")}),e)}},{key:"clearSafetyTimer",value:function(e){Zc(this.safetyTimer)||(this.player.debug.log("Safety timer cleared from: ".concat(e)),clearTimeout(this.safetyTimer),this.safetyTimer=null)}},{key:"enabled",get:function(){var e=this.config;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!du(e.publisherId)||fu(e.tagUrl))}},{key:"tagUrl",get:function(){var e=this.config;if(fu(e.tagUrl))return e.tagUrl;var t={AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId};return"".concat("https://go.aniview.com/api/adserver6/vast/","?").concat(Rh(t))}}]),e}(),cf=ct.findIndex,uf=!0,hf=Qt("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){uf=!1})),Ie({target:"Array",proto:!0,forced:uf||!hf},{findIndex:function(e){return cf(this,e,arguments.length>1?arguments[1]:void 0)}}),dn("findIndex");var ff=Math.min,df=[].lastIndexOf,pf=!!df&&1/[1].lastIndexOf(1,-0)<0,mf=$t("lastIndexOf"),gf=Qt("indexOf",{ACCESSORS:!0,1:0}),vf=pf||!mf||!gf?function(e){if(pf)return df.apply(this,arguments)||0;var t=m(this),n=le(t.length),i=n-1;for(arguments.length>1&&(i=ff(i,oe(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}:df;Ie({target:"Array",proto:!0,forced:vf!==[].lastIndexOf},{lastIndexOf:vf});var yf=function(e,t){var n={};return e>t.width/t.height?(n.width=t.width,n.height=1/e*t.width):(n.height=t.height,n.width=e*t.height),n},bf=function(){function e(t){yo(this,e),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}return wo(e,[{key:"load",value:function(){var e=this;this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((function(){e.enabled&&(e.render(),e.determineContainerAutoSizing(),e.loaded=!0)}))}},{key:"getThumbnails",value:function(){var e=this;return new Promise((function(t){var n=e.player.config.previewThumbnails.src;if(du(n))throw new Error("Missing previewThumbnails.src config attribute");var i=function(){e.thumbnails.sort((function(e,t){return e.height-t.height})),e.player.debug.log("Preview thumbnails",e.thumbnails),t()};if(ru(n))n((function(t){e.thumbnails=t,i()}));else{var r=(nu(n)?[n]:n).map((function(t){return e.getThumbnail(t)}));Promise.all(r).then(i)}}))}},{key:"getThumbnail",value:function(e){var t=this;return new Promise((function(n){Eh(e).then((function(i){var r,a,o={frames:(r=i,a=[],r.split(/\r\n\r\n|\n\n|\r\r/).forEach((function(e){var t={};e.split(/\r\n|\n|\r/).forEach((function(e){if(tu(t.startTime)){if(!du(e.trim())&&du(t.text)){var n=e.trim().split("#xywh="),i=Ao(n,1);if(t.text=i[0],n[1]){var r=Ao(n[1].split(","),4);t.x=r[0],t.y=r[1],t.w=r[2],t.h=r[3]}}}else{var a=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);a&&(t.startTime=60*Number(a[1]||0)*60+60*Number(a[2])+Number(a[3])+Number("0.".concat(a[4])),t.endTime=60*Number(a[6]||0)*60+60*Number(a[7])+Number(a[8])+Number("0.".concat(a[9])))}})),t.text&&a.push(t)})),a),height:null,urlPrefix:""};o.frames[0].text.startsWith("/")||o.frames[0].text.startsWith("http://")||o.frames[0].text.startsWith("https://")||(o.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var s=new Image;s.onload=function(){o.height=s.naturalHeight,o.width=s.naturalWidth,t.thumbnails.push(o),n()},s.src=o.urlPrefix+o.frames[0].text}))}))}},{key:"startMove",value:function(e){if(this.loaded&&lu(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=Lh(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){(Zc(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):Wu.call(this.player,this.player.media,"timeupdate",(function(){e.mouseDown||e.toggleScrubbingContainer(!1)}))}},{key:"listeners",value:function(){var e=this;this.player.on("play",(function(){e.toggleThumbContainer(!1,!0)})),this.player.on("seeked",(function(){e.toggleThumbContainer(!1)})),this.player.on("timeupdate",(function(){e.lastTime=e.player.media.currentTime}))}},{key:"render",value:function(){this.elements.thumb.container=Au("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=Au("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=Au("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=Au("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),su(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=Au("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"destroy",value:function(){this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();var t=this.thumbnails[0].frames.findIndex((function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime})),n=t>=0,i=0;this.mouseDown||this.toggleThumbContainer(n),n&&(this.thumbnails.forEach((function(n,r){e.loadedImages.includes(n.frames[t].text)&&(i=r)})),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(i)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,i=this.thumbnails[t],r=i.urlPrefix,a=i.frames[n],o=i.frames[n].text,s=r+o;if(this.currentImageElement&&this.currentImageElement.dataset.filename===o)this.showImage(this.currentImageElement,a,t,n,o,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var l=new Image;l.src=s,l.dataset.index=n,l.dataset.filename=o,this.showingThumbFilename=o,this.player.debug.log("Loading image: ".concat(s)),l.onload=function(){return e.showImage(l,a,t,n,o,!0)},this.loadingImage=l,this.removeOldImages(l)}}},{key:"showImage",value:function(e,t,n,i,r){var a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(r,". num: ").concat(i,". qual: ").concat(n,". newimg: ").concat(a)),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(r)||this.loadedImages.push(r)),this.preloadNearby(i,!0).then(this.preloadNearby(i,!1)).then(this.getHigherQuality(n,e,t,r))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach((function(n){if("img"===n.tagName.toLowerCase()){var i=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var r=t.currentImageContainer;setTimeout((function(){r.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))}),i)}}}))}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise((function(i){setTimeout((function(){var r=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===r){var a;a=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var o=!1;a.forEach((function(e){var n=e.text;if(n!==r&&!t.loadedImages.includes(n)){o=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var a=t.thumbnails[0].urlPrefix+n,s=new Image;s.src=a,s.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),i()}}})),o||i()}}),300)}))}},{key:"getHigherQuality",value:function(e,t,n,i){var r=this;if(e<this.thumbnails.length-1){var a=t.naturalHeight;this.usingSprites&&(a=n.h),a<this.thumbContainerHeight&&setTimeout((function(){r.showingThumbFilename===i&&(r.player.debug.log("Showing higher quality thumb for: ".concat(i)),r.loadImage(e+1))}),300)}}},{key:"toggleThumbContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(this.sizeSpecifiedInCSS){if(this.elements.thumb.imageContainer.clientHeight>20&&this.elements.thumb.imageContainer.clientWidth<20){var e=Math.floor(this.elements.thumb.imageContainer.clientHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.width="".concat(e,"px")}else if(this.elements.thumb.imageContainer.clientHeight<20&&this.elements.thumb.imageContainer.clientWidth>20){var t=Math.floor(this.elements.thumb.imageContainer.clientWidth/this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(t,"px")}}else{var n=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(n,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,i=t.left-e.left+10,r=t.right-e.left-n.clientWidth-10,a=this.mousePosX-e.left-n.clientWidth/2;a<i&&(a=i),a>r&&(a=r),n.style.left="".concat(a,"px")}},{key:"setScrubbingContainerSize",value:function(){var e=yf(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}),t=e.width,n=e.height;this.elements.scrubbing.container.style.width="".concat(t,"px"),this.elements.scrubbing.container.style.height="".concat(n,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(e.naturalHeight*n,"px"),e.style.width="".concat(e.naturalWidth*n,"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?yf(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight}).height:this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),wf={insertElements:function(e,t){var n=this;nu(t)?Pu(e,this.media,{src:t}):au(t)&&t.forEach((function(t){Pu(e,n.media,t)}))},change:function(e){var t=this;ku(e,"sources.length")?(eh.cancelRequests.call(this),this.destroy.call(this,(function(){t.options.quality=[],xu(t.media),t.media=null,su(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,i=e.type,r=Ao(n,1)[0],a=r.provider,o=void 0===a?Fh.html5:a,s=r.src,l="html5"===o?i:"div",c="html5"===o?{}:{src:s};Object.assign(t,{provider:o,type:i,supported:qu.check(i,o,t.config.playsinline),media:Au(l,c)}),t.elements.container.appendChild(t.media),iu(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),du(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),$h.addStyleHook.call(t),t.isHTML5&&wf.insertElements.call(t,"source",n),t.config.title=e.title,sf.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&wf.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&$h.build.call(t),t.isHTML5&&t.media.load(),du(e.previewThumbnails)||(Object.assign(t.config.previewThumbnails,e.previewThumbnails),t.previewThumbnails&&t.previewThumbnails.loaded&&(t.previewThumbnails.destroy(),t.previewThumbnails=null),t.config.previewThumbnails.enabled&&(t.previewThumbnails=new bf(t))),t.fullscreen.update()}),!0)):this.debug.warn("Invalid source format")}};var kf,Tf=function(){function e(t,n){var i=this;if(yo(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=qu.touch,this.media=t,nu(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||ou(this.media)||au(this.media))&&(this.media=this.media[0]),this.config=Tu({},_h,e.defaults,n||{},function(){try{return JSON.parse(i.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new Vh(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",qu),!Zc(this.media)&&su(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(qu.check().api){var r=this.media.cloneNode(!0);r.autoplay=!1,this.elements.original=r;var a=this.media.tagName.toLowerCase(),o=null,s=null;switch(a){case"div":if(o=this.media.querySelector("iframe"),su(o)){if(s=Nh(o.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?Fh.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?Fh.vimeo:null}(s.toString()),this.elements.container=this.media,this.media=o,this.elements.container.className="",s.search.length){var l=["1","true"];l.includes(s.searchParams.get("autoplay"))&&(this.config.autoplay=!0),l.includes(s.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=l.includes(s.searchParams.get("playsinline")),this.config.youtube.hl=s.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(du(this.provider)||!Object.keys(Fh).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=Hh;break;case"video":case"audio":this.type=a,this.provider=Fh.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=qu.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new Yh(this),this.storage=new Sh(this),this.media.plyr=this,su(this.elements.container)||(this.elements.container=Au("div",{tabindex:0}),Su(this.media,this.elements.container)),$h.migrateStyles.call(this),$h.addStyleHook.call(this),sf.setup.call(this),this.config.debug&&Vu.call(this,this.elements.container,this.config.events.join(" "),(function(e){i.debug.log("event: ".concat(e.type))})),this.fullscreen=new zh(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&$h.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new lf(this)),this.isHTML5&&this.config.autoplay&&setTimeout((function(){return Gu(i.play())}),10),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new bf(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return wo(e,[{key:"play",value:function(){var e=this;return ru(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((function(){return e.ads.play()})).catch((function(){return Gu(e.media.play())})),this.media.play()):null}},{key:"pause",value:function(){return this.playing&&ru(this.media.pause)?this.media.pause():null}},{key:"togglePlay",value:function(e){return(iu(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):ru(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime-=tu(e)?e:this.config.seekTime}},{key:"forward",value:function(e){this.currentTime+=tu(e)?e:this.config.seekTime}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(tu(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){Mh.toggle.call(this,e,!1)}},{key:"airplay",value:function(){qu.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=Nu(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,i=ju(this.elements.container,this.config.classNames.hideControls,n);if(i&&au(this.config.controls)&&this.config.controls.includes("settings")&&!du(this.config.settings)&&jh.toggleMenu.call(this,!1),i!==t){var r=i?"controlshidden":"controlsshown";Ku.call(this,this.media,r)}return!i}return!1}},{key:"on",value:function(e,t){Vu.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){Wu.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){zu(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var i=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&(xu(t.elements.buttons.play),xu(t.elements.captions),xu(t.elements.controls),xu(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),ru(e)&&e()):($u.call(t),Ou(t.elements.original,t.elements.container),Ku.call(t,t.elements.original,"destroyed",!0),ru(e)&&e.call(t.elements.original),t.ready=!1,setTimeout((function(){t.elements=null,t.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?($h.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&ru(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}}},{key:"supports",value:function(e){return qu.mime.call(this,e)}},{key:"isHTML5",get:function(){return this.provider===Fh.html5}},{key:"isEmbed",get:function(){return this.isYouTube||this.isVimeo}},{key:"isYouTube",get:function(){return this.provider===Fh.youtube}},{key:"isVimeo",get:function(){return this.provider===Fh.vimeo}},{key:"isVideo",get:function(){return this.type===Hh}},{key:"isAudio",get:function(){return this.type===qh}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=tu(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return tu(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=tu(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;nu(t)&&(t=Number(t)),tu(t)||(t=this.storage.get("volume")),tu(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!du(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;iu(t)||(t=this.storage.get("muted")),iu(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=this,n=null;tu(e)&&(n=e),tu(n)||(n=this.storage.get("speed")),tu(n)||(n=this.config.speed.selected);var i=this.minimumSpeed,r=this.maximumSpeed;n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:255;return Math.min(Math.max(e,t),n)}(n,i,r),this.config.speed.selected=n,setTimeout((function(){t.media.playbackRate=n}),0)},get:function(){return Number(this.media.playbackRate)}},{key:"minimumSpeed",get:function(){return this.isYouTube?Math.min.apply(Math,Po(this.options.speed)):this.isVimeo?.5:.0625}},{key:"maximumSpeed",get:function(){return this.isYouTube?Math.max.apply(Math,Po(this.options.speed)):this.isVimeo?2:16}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var i=[!du(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(tu),r=!0;if(!n.includes(i)){var a=function(e,t){return au(e)&&e.length?e.reduce((function(e,n){return Math.abs(n-t)<Math.abs(e-t)?n:e})):null}(n,i);this.debug.warn("Unsupported quality option: ".concat(i,", using ").concat(a," instead")),i=a,r=!1}t.selected=i,this.media.quality=i,r&&this.storage.set({quality:i})}},get:function(){return this.media.quality}},{key:"loop",set:function(e){var t=iu(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t},get:function(){return Boolean(this.media.loop)}},{key:"source",set:function(e){wf.change.call(this,e)},get:function(){return this.media.currentSrc}},{key:"download",get:function(){var e=this.config.urls.download;return fu(e)?e:this.source},set:function(e){fu(e)&&(this.config.urls.download=e,jh.setDownloadUrl.call(this))}},{key:"poster",set:function(e){this.isVideo?$h.setPoster.call(this,e,!1).catch((function(){})):this.debug.warn("Poster can only be set for video")},get:function(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}},{key:"ratio",get:function(){if(!this.isVideo)return null;var e=Qu(Ju.call(this));return au(e)?e.join(":"):e},set:function(e){this.isVideo?nu(e)&&Xu(e)?(this.config.ratio=e,Zu.call(this)):this.debug.error("Invalid aspect ratio specified (".concat(e,")")):this.debug.warn("Aspect ratio can only be set for video")}},{key:"autoplay",set:function(e){var t=iu(e)?e:this.config.autoplay;this.config.autoplay=t},get:function(){return Boolean(this.config.autoplay)}},{key:"currentTrack",set:function(e){Mh.set.call(this,e,!1)},get:function(){var e=this.captions,t=e.toggled,n=e.currentTrack;return t?n:-1}},{key:"language",set:function(e){Mh.setLanguage.call(this,e,!1)},get:function(){return(Mh.getCurrentTrack.call(this)||{}).language}},{key:"pip",set:function(e){if(qu.pip){var t=iu(e)?e:!this.pip;ru(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?Uh:Dh),ru(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}},get:function(){return qu.pip?du(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===Uh:null}}],[{key:"supported",value:function(e,t,n){return qu.check(e,t,n)}},{key:"loadSprite",value:function(e,t){return Ah(e,t)}},{key:"setup",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null;return nu(t)?i=Array.from(document.querySelectorAll(t)):ou(t)?i=Array.from(t):au(t)&&(i=t.filter(su)),du(i)?null:i.map((function(t){return new e(t,n)}))}}]),e}();return Tf.defaults=(kf=_h,JSON.parse(JSON.stringify(kf))),Tf}));
|
|
classes/Admin.php
CHANGED
@@ -345,7 +345,7 @@ class Admin{
|
|
345 |
global $wpdb;
|
346 |
|
347 |
$is_erase_data = tutor_utils()->get_option('delete_on_uninstall');
|
348 |
-
|
349 |
|
350 |
$plugin_file = tutor()->basename;
|
351 |
if ($is_erase_data && current_user_can( 'deactivate_plugin', $plugin_file )) {
|
@@ -373,18 +373,18 @@ class Admin{
|
|
373 |
//Delete categories
|
374 |
$terms = wp_get_object_terms( $post_id, 'course-category' );
|
375 |
foreach( $terms as $term ){
|
376 |
-
|
377 |
}
|
378 |
|
379 |
//Delete tags if available
|
380 |
$terms = wp_get_object_terms( $post_id, 'course-tag' );
|
381 |
foreach( $terms as $term ){
|
382 |
-
|
383 |
}
|
384 |
|
385 |
//Delete All Meta
|
386 |
-
|
387 |
-
|
388 |
}
|
389 |
}
|
390 |
|
@@ -394,24 +394,24 @@ class Admin{
|
|
394 |
$tutor_comments = $wpdb->get_col("SELECT comment_ID from {$wpdb->comments} WHERE comment_agent = 'comment_agent' ;");
|
395 |
$comments_ids_strings = "'".implode("','", $tutor_comments)."'";
|
396 |
if (is_array($tutor_comments) && count($tutor_comments)){
|
397 |
-
|
398 |
}
|
399 |
-
|
400 |
|
401 |
/**
|
402 |
* Delete Options
|
403 |
*/
|
404 |
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
|
412 |
//Deleting Table
|
413 |
$prefix = $wpdb->prefix;
|
414 |
-
|
415 |
|
416 |
deactivate_plugins($plugin_file);
|
417 |
}
|
345 |
global $wpdb;
|
346 |
|
347 |
$is_erase_data = tutor_utils()->get_option('delete_on_uninstall');
|
348 |
+
//=> Deleting Data
|
349 |
|
350 |
$plugin_file = tutor()->basename;
|
351 |
if ($is_erase_data && current_user_can( 'deactivate_plugin', $plugin_file )) {
|
373 |
//Delete categories
|
374 |
$terms = wp_get_object_terms( $post_id, 'course-category' );
|
375 |
foreach( $terms as $term ){
|
376 |
+
wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-category' );
|
377 |
}
|
378 |
|
379 |
//Delete tags if available
|
380 |
$terms = wp_get_object_terms( $post_id, 'course-tag' );
|
381 |
foreach( $terms as $term ){
|
382 |
+
wp_remove_object_terms( $post_id, array( $term->term_id ), 'course-tag' );
|
383 |
}
|
384 |
|
385 |
//Delete All Meta
|
386 |
+
$wpdb->delete($wpdb->postmeta, array('post_id' => $post_id) );
|
387 |
+
$wpdb->delete($wpdb->posts, array('ID' => $post_id) );
|
388 |
}
|
389 |
}
|
390 |
|
394 |
$tutor_comments = $wpdb->get_col("SELECT comment_ID from {$wpdb->comments} WHERE comment_agent = 'comment_agent' ;");
|
395 |
$comments_ids_strings = "'".implode("','", $tutor_comments)."'";
|
396 |
if (is_array($tutor_comments) && count($tutor_comments)){
|
397 |
+
$wpdb->query("DELETE from {$wpdb->commentmeta} WHERE comment_ID in({$comments_ids_strings}) ");
|
398 |
}
|
399 |
+
$wpdb->delete($wpdb->comments, array('comment_agent' => 'comment_agent'));
|
400 |
|
401 |
/**
|
402 |
* Delete Options
|
403 |
*/
|
404 |
|
405 |
+
delete_option('tutor_option');
|
406 |
+
$wpdb->delete($wpdb->usermeta, array('meta_key' => '_is_tutor_student'));
|
407 |
+
$wpdb->delete($wpdb->usermeta, array('meta_key' => '_tutor_instructor_approved'));
|
408 |
+
$wpdb->delete($wpdb->usermeta, array('meta_key' => '_tutor_instructor_status'));
|
409 |
+
$wpdb->delete($wpdb->usermeta, array('meta_key' => '_is_tutor_instructor'));
|
410 |
+
$wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key LIKE '%_tutor_completed_lesson_id_%' ");
|
411 |
|
412 |
//Deleting Table
|
413 |
$prefix = $wpdb->prefix;
|
414 |
+
$wpdb->query("DROP TABLE IF EXISTS {$prefix}tutor_quiz_attempts, {$prefix}tutor_quiz_attempt_answers, {$prefix}tutor_quiz_questions, {$prefix}tutor_quiz_question_answers, {$prefix}tutor_earnings, {$prefix}tutor_withdraws ");
|
415 |
|
416 |
deactivate_plugins($plugin_file);
|
417 |
}
|
classes/Course.php
CHANGED
@@ -3,10 +3,7 @@ namespace TUTOR;
|
|
3 |
|
4 |
if ( ! defined( 'ABSPATH' ) )
|
5 |
exit;
|
6 |
-
|
7 |
-
* @since 1.8.0
|
8 |
-
*/
|
9 |
-
session_start();
|
10 |
class Course extends Tutor_Base {
|
11 |
|
12 |
private $additional_meta=array(
|
@@ -54,7 +51,6 @@ class Course extends Tutor_Base {
|
|
54 |
*/
|
55 |
add_action('tutor/dashboard_course_builder_form_field_after', array($this, 'register_meta_box_in_frontend'));
|
56 |
|
57 |
-
|
58 |
/**
|
59 |
* Do Stuff for the course save from frontend
|
60 |
*/
|
@@ -90,7 +86,6 @@ class Course extends Tutor_Base {
|
|
90 |
*/
|
91 |
add_filter('tutor_course_price', array($this, 'remove_price_if_enrolled'));
|
92 |
|
93 |
-
|
94 |
/**
|
95 |
* Remove course complete button if course completion is strict mode
|
96 |
* @since v.1.6.1
|
@@ -109,11 +104,13 @@ class Course extends Tutor_Base {
|
|
109 |
* @since v.1.6.6
|
110 |
*/
|
111 |
add_action('deleted_post', array($this, 'delete_tutor_course_data'));
|
|
|
112 |
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
|
|
117 |
}
|
118 |
|
119 |
/**
|
@@ -357,7 +354,7 @@ class Course extends Tutor_Base {
|
|
357 |
/**
|
358 |
* @since 1.8.0
|
359 |
*/
|
360 |
-
|
361 |
}
|
362 |
|
363 |
/**
|
@@ -729,21 +726,6 @@ class Course extends Tutor_Base {
|
|
729 |
$courses_post_type = tutor()->course_post_type;
|
730 |
$post_type = tutils()->array_get('post_type', $postarr);
|
731 |
|
732 |
-
/*
|
733 |
-
$post_author = (int) tutor_utils()->avalue_dot('post_author', $data);
|
734 |
-
|
735 |
-
if ( ! $post_author){
|
736 |
-
$user_ID = (int) tutor_utils()->avalue_dot('user_ID', $postarr);
|
737 |
-
if ($user_ID){
|
738 |
-
$data['post_author'] = $user_ID;
|
739 |
-
}else{
|
740 |
-
$post_ID = (int) tutor_utils()->avalue_dot('ID', $postarr);
|
741 |
-
$post_author = (int) $wpdb->get_var("SELECT post_author FROM {$wpdb->posts} WHERE ID = {$post_ID} ");
|
742 |
-
|
743 |
-
$data['post_author'] = $post_author;
|
744 |
-
}
|
745 |
-
}*/
|
746 |
-
|
747 |
if ($courses_post_type === $post_type){
|
748 |
$post_ID = (int) tutor_utils()->avalue_dot('ID', $postarr);
|
749 |
$post_author = (int) $wpdb->get_var($wpdb->prepare("SELECT post_author FROM {$wpdb->posts} WHERE ID = %d ", $post_ID));
|
@@ -1272,5 +1254,31 @@ class Course extends Tutor_Base {
|
|
1272 |
<?php
|
1273 |
}
|
1274 |
|
1275 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1276 |
}
|
3 |
|
4 |
if ( ! defined( 'ABSPATH' ) )
|
5 |
exit;
|
6 |
+
|
|
|
|
|
|
|
7 |
class Course extends Tutor_Base {
|
8 |
|
9 |
private $additional_meta=array(
|
51 |
*/
|
52 |
add_action('tutor/dashboard_course_builder_form_field_after', array($this, 'register_meta_box_in_frontend'));
|
53 |
|
|
|
54 |
/**
|
55 |
* Do Stuff for the course save from frontend
|
56 |
*/
|
86 |
*/
|
87 |
add_filter('tutor_course_price', array($this, 'remove_price_if_enrolled'));
|
88 |
|
|
|
89 |
/**
|
90 |
* Remove course complete button if course completion is strict mode
|
91 |
* @since v.1.6.1
|
104 |
* @since v.1.6.6
|
105 |
*/
|
106 |
add_action('deleted_post', array($this, 'delete_tutor_course_data'));
|
107 |
+
add_action('tutor/dashboard_course_builder_form_field_after', array($this, 'tutor_course_setting_metabox_frontend'));
|
108 |
|
109 |
+
/**
|
110 |
+
* Delete course data after deleted course
|
111 |
+
* @since v.1.8.2
|
112 |
+
*/
|
113 |
+
add_action('before_delete_post', array($this, 'delete_associated_enrollment'));
|
114 |
}
|
115 |
|
116 |
/**
|
354 |
/**
|
355 |
* @since 1.8.0
|
356 |
*/
|
357 |
+
setcookie( "tutor_course_updated", true, time() + 5 );
|
358 |
}
|
359 |
|
360 |
/**
|
726 |
$courses_post_type = tutor()->course_post_type;
|
727 |
$post_type = tutils()->array_get('post_type', $postarr);
|
728 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
729 |
if ($courses_post_type === $post_type){
|
730 |
$post_ID = (int) tutor_utils()->avalue_dot('ID', $postarr);
|
731 |
$post_author = (int) $wpdb->get_var($wpdb->prepare("SELECT post_author FROM {$wpdb->posts} WHERE ID = %d ", $post_ID));
|
1254 |
<?php
|
1255 |
}
|
1256 |
|
1257 |
+
/**
|
1258 |
+
* Delete associated enrollment
|
1259 |
+
* @since v.1.8.2
|
1260 |
+
*/
|
1261 |
+
public function delete_associated_enrollment($post_id) {
|
1262 |
+
global $wpdb;
|
1263 |
+
|
1264 |
+
$enroll_id = $wpdb->get_var( $wpdb->prepare(
|
1265 |
+
"SELECT
|
1266 |
+
post_id
|
1267 |
+
FROM
|
1268 |
+
{$wpdb->postmeta}
|
1269 |
+
WHERE
|
1270 |
+
meta_key='_tutor_enrolled_by_order_id'
|
1271 |
+
AND meta_value = %d
|
1272 |
+
",
|
1273 |
+
$post_id
|
1274 |
+
) );
|
1275 |
+
|
1276 |
+
if(is_numeric($enroll_id) && $enroll_id>0) {
|
1277 |
+
|
1278 |
+
$course_id = get_post_field('post_parent', $enroll_id);
|
1279 |
+
$user_id = get_post_field('post_author', $enroll_id);
|
1280 |
+
|
1281 |
+
tutils()->cancel_course_enrol($course_id, $user_id);
|
1282 |
+
}
|
1283 |
+
}
|
1284 |
}
|
classes/Delete_Enrollment_With_Order.php
DELETED
@@ -1,26 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace TUTOR;
|
4 |
-
|
5 |
-
if ( ! defined( 'ABSPATH' ) )
|
6 |
-
exit;
|
7 |
-
|
8 |
-
class Delete_Enrollment_With_Order {
|
9 |
-
function __construct(){
|
10 |
-
add_action('before_delete_post', array($this, 'delete_associated_enrollment'));
|
11 |
-
}
|
12 |
-
|
13 |
-
public function delete_associated_enrollment($post_id){
|
14 |
-
global $wpdb;
|
15 |
-
|
16 |
-
$enroll_id = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_tutor_enrolled_by_order_id' AND meta_value = %d", $post_id));
|
17 |
-
|
18 |
-
if(is_numeric($enroll_id) && $enroll_id>0){
|
19 |
-
|
20 |
-
$course_id = get_post_field('post_parent', $enroll_id);
|
21 |
-
$user_id = get_post_field('post_author', $enroll_id);
|
22 |
-
|
23 |
-
tutils()->cancel_course_enrol($course_id, $user_id);
|
24 |
-
}
|
25 |
-
}
|
26 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/Quiz.php
CHANGED
@@ -17,15 +17,25 @@ if ( ! defined( 'ABSPATH' ) )
|
|
17 |
class Quiz {
|
18 |
|
19 |
private $allowed_attributes = array(
|
20 |
-
'src'
|
21 |
-
'style'
|
22 |
-
'class'
|
23 |
-
'id'
|
24 |
-
'href'
|
25 |
-
'alt'
|
26 |
-
'title'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
-
private $allowed_html = array( 'img', 'b', 'i', 'br', 'a' );
|
29 |
|
30 |
public function __construct() {
|
31 |
|
@@ -276,16 +286,35 @@ class Quiz {
|
|
276 |
|
277 |
if ( $question_type === 'true_false' || $question_type === 'single_choice' ) {
|
278 |
|
|
|
|
|
|
|
|
|
|
|
279 |
$given_answer = $answers;
|
280 |
-
$is_answer_was_correct = (bool) $wpdb->get_var( "SELECT is_correct FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE answer_id =
|
281 |
|
282 |
} elseif ( $question_type === 'multiple_choice' ) {
|
283 |
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
|
290 |
|
291 |
if (count(array_diff($get_original_answers, $given_answer)) === 0 && count($get_original_answers) === count($given_answer)) {
|
@@ -298,7 +327,7 @@ class Quiz {
|
|
298 |
$given_answer = (array) array_map( 'sanitize_text_field', $answers );
|
299 |
$given_answer = maybe_serialize( $given_answer );
|
300 |
|
301 |
-
$get_original_answer = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
302 |
$gap_answer = (array) explode( '|', $get_original_answer->answer_two_gap_match );
|
303 |
|
304 |
$gap_answer = array_map( 'sanitize_text_field', $gap_answer );
|
17 |
class Quiz {
|
18 |
|
19 |
private $allowed_attributes = array(
|
20 |
+
'src' => array(),
|
21 |
+
'style' => array(),
|
22 |
+
'class' => array(),
|
23 |
+
'id' => array(),
|
24 |
+
'href' => array(),
|
25 |
+
'alt' => array(),
|
26 |
+
'title' => array(),
|
27 |
+
'type' => array(),
|
28 |
+
'controls' => array(),
|
29 |
+
'muted' => array(),
|
30 |
+
'loop' => array(),
|
31 |
+
'poster' => array(),
|
32 |
+
'preload' => array(),
|
33 |
+
'autoplay' => array(),
|
34 |
+
'width' => array(),
|
35 |
+
'height' => array()
|
36 |
+
);
|
37 |
|
38 |
+
private $allowed_html = array( 'img', 'b', 'i', 'br', 'a', 'audio', 'video', 'source' );
|
39 |
|
40 |
public function __construct() {
|
41 |
|
286 |
|
287 |
if ( $question_type === 'true_false' || $question_type === 'single_choice' ) {
|
288 |
|
289 |
+
if(!is_numeric($answers) || !$answers) {
|
290 |
+
wp_send_json_error();
|
291 |
+
exit;
|
292 |
+
}
|
293 |
+
|
294 |
$given_answer = $answers;
|
295 |
+
$is_answer_was_correct = (bool) $wpdb->get_var( $wpdb->prepare( "SELECT is_correct FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE answer_id = %d ", $answers ) );
|
296 |
|
297 |
} elseif ( $question_type === 'multiple_choice' ) {
|
298 |
|
299 |
+
$given_answer = (array) ( $answers );
|
300 |
+
|
301 |
+
$given_answer = array_filter( $given_answer, function($id) {
|
302 |
+
return is_numeric($id) && $id>0;
|
303 |
+
} );
|
304 |
+
|
305 |
+
$get_original_answers = (array) $wpdb->get_col($wpdb->prepare(
|
306 |
+
"SELECT
|
307 |
+
answer_id
|
308 |
+
FROM
|
309 |
+
{$wpdb->prefix}tutor_quiz_question_answers
|
310 |
+
WHERE
|
311 |
+
belongs_question_id = %d
|
312 |
+
AND belongs_question_type = %s
|
313 |
+
AND is_correct = 1 ;
|
314 |
+
",
|
315 |
+
$question->question_id,
|
316 |
+
$question_type
|
317 |
+
) );
|
318 |
|
319 |
|
320 |
if (count(array_diff($get_original_answers, $given_answer)) === 0 && count($get_original_answers) === count($given_answer)) {
|
327 |
$given_answer = (array) array_map( 'sanitize_text_field', $answers );
|
328 |
$given_answer = maybe_serialize( $given_answer );
|
329 |
|
330 |
+
$get_original_answer = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND belongs_question_type = %s ;", $question->question_id, $question_type ) );
|
331 |
$gap_answer = (array) explode( '|', $get_original_answer->answer_two_gap_match );
|
332 |
|
333 |
$gap_answer = array_map( 'sanitize_text_field', $gap_answer );
|
classes/Students_List.php
CHANGED
@@ -4,13 +4,13 @@ namespace TUTOR;
|
|
4 |
if ( ! defined( 'ABSPATH' ) )
|
5 |
exit;
|
6 |
|
7 |
-
if (! class_exists('Tutor_List_Table')){
|
8 |
include_once tutor()->path.'classes/Tutor_List_Table.php';
|
9 |
}
|
10 |
|
11 |
class Students_List extends \Tutor_List_Table {
|
12 |
|
13 |
-
function __construct(){
|
14 |
global $status, $page;
|
15 |
|
16 |
//Set parent defaults
|
@@ -21,13 +21,13 @@ class Students_List extends \Tutor_List_Table {
|
|
21 |
) );
|
22 |
}
|
23 |
|
24 |
-
function column_default($item, $column_name){
|
25 |
-
switch($column_name){
|
26 |
case 'user_email':
|
27 |
case 'display_name':
|
28 |
return $item->$column_name;
|
29 |
default:
|
30 |
-
return print_r($item,true); //Show the whole array for troubleshooting purposes
|
31 |
}
|
32 |
}
|
33 |
|
@@ -36,34 +36,18 @@ class Students_List extends \Tutor_List_Table {
|
|
36 |
*
|
37 |
* Completed Course by User
|
38 |
*/
|
39 |
-
function column_completed_course($item){
|
40 |
$user_id = $item->ID;
|
41 |
|
42 |
-
$courses = tutor_utils()->get_courses_by_user($user_id);
|
43 |
-
if ($courses && is_array($courses->posts) && count($courses->posts)){
|
44 |
-
foreach ($courses->posts as $course) {
|
45 |
-
echo '<a href="'.get_the_permalink($course->ID).'" target="_blank">'
|
46 |
}
|
47 |
}
|
48 |
}
|
49 |
|
50 |
-
|
51 |
-
function column_display_name($item){
|
52 |
-
//Build row actions
|
53 |
-
$actions = array(
|
54 |
-
'edit' => sprintf('<a href="?page=%s&action=%s&student=%s">Edit</a>',$_REQUEST['page'],'edit',$item->ID),
|
55 |
-
'delete' => sprintf('<a href="?page=%s&action=%s&student=%s">Delete</a>',$_REQUEST['page'],'delete',$item->ID),
|
56 |
-
);
|
57 |
-
|
58 |
-
//Return the title contents
|
59 |
-
return sprintf('%1$s <span style="color:silver">(id:%2$s)</span>%3$s',
|
60 |
-
$item->display_name,
|
61 |
-
$item->ID,
|
62 |
-
$this->row_actions($actions)
|
63 |
-
);
|
64 |
-
}*/
|
65 |
-
|
66 |
-
function column_cb($item){
|
67 |
return sprintf(
|
68 |
'<input type="checkbox" name="%1$s[]" value="%2$s" />',
|
69 |
/*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label ("student")
|
@@ -71,7 +55,7 @@ class Students_List extends \Tutor_List_Table {
|
|
71 |
);
|
72 |
}
|
73 |
|
74 |
-
function get_columns(){
|
75 |
$columns = array(
|
76 |
'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
|
77 |
'display_name' => __('Name', 'tutor'),
|
@@ -97,7 +81,7 @@ class Students_List extends \Tutor_List_Table {
|
|
97 |
|
98 |
function process_bulk_action() {
|
99 |
//Detect when a bulk action is being triggered...
|
100 |
-
if( 'delete'
|
101 |
wp_die('Items deleted (or they would be if we had items to delete)!');
|
102 |
}
|
103 |
}
|
@@ -106,21 +90,21 @@ class Students_List extends \Tutor_List_Table {
|
|
106 |
$per_page = 20;
|
107 |
|
108 |
$search_term = '';
|
109 |
-
if (isset($_REQUEST['s'])){
|
110 |
-
$search_term = sanitize_text_field($_REQUEST['s']);
|
111 |
}
|
112 |
|
113 |
$columns = $this->get_columns();
|
114 |
$hidden = array();
|
115 |
$sortable = $this->get_sortable_columns();
|
116 |
|
117 |
-
$this->_column_headers = array($columns, $hidden, $sortable);
|
118 |
//$this->process_bulk_action();
|
119 |
|
120 |
$current_page = $this->get_pagenum();
|
121 |
|
122 |
-
$total_items = tutor_utils()->get_total_students($search_term);
|
123 |
-
$this->items = tutor_utils()->get_students(($current_page-1)
|
124 |
|
125 |
$this->set_pagination_args( array(
|
126 |
'total_items' => $total_items, //WE have to calculate the total number of items
|
4 |
if ( ! defined( 'ABSPATH' ) )
|
5 |
exit;
|
6 |
|
7 |
+
if ( ! class_exists( 'Tutor_List_Table' ) ) {
|
8 |
include_once tutor()->path.'classes/Tutor_List_Table.php';
|
9 |
}
|
10 |
|
11 |
class Students_List extends \Tutor_List_Table {
|
12 |
|
13 |
+
function __construct() {
|
14 |
global $status, $page;
|
15 |
|
16 |
//Set parent defaults
|
21 |
) );
|
22 |
}
|
23 |
|
24 |
+
function column_default( $item, $column_name ) {
|
25 |
+
switch( $column_name ) {
|
26 |
case 'user_email':
|
27 |
case 'display_name':
|
28 |
return $item->$column_name;
|
29 |
default:
|
30 |
+
return print_r( $item, true ); //Show the whole array for troubleshooting purposes
|
31 |
}
|
32 |
}
|
33 |
|
36 |
*
|
37 |
* Completed Course by User
|
38 |
*/
|
39 |
+
function column_completed_course( $item ) {
|
40 |
$user_id = $item->ID;
|
41 |
|
42 |
+
$courses = tutor_utils()->get_courses_by_user( $user_id );
|
43 |
+
if ( $courses && is_array( $courses->posts ) && count( $courses->posts ) ) {
|
44 |
+
foreach ( $courses->posts as $course ) {
|
45 |
+
echo '<a href="' . get_the_permalink( $course->ID ) . '" target="_blank">' . $course->post_title . '</a> ';
|
46 |
}
|
47 |
}
|
48 |
}
|
49 |
|
50 |
+
function column_cb( $item ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
return sprintf(
|
52 |
'<input type="checkbox" name="%1$s[]" value="%2$s" />',
|
53 |
/*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label ("student")
|
55 |
);
|
56 |
}
|
57 |
|
58 |
+
function get_columns() {
|
59 |
$columns = array(
|
60 |
'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
|
61 |
'display_name' => __('Name', 'tutor'),
|
81 |
|
82 |
function process_bulk_action() {
|
83 |
//Detect when a bulk action is being triggered...
|
84 |
+
if( 'delete' === $this->current_action() ) {
|
85 |
wp_die('Items deleted (or they would be if we had items to delete)!');
|
86 |
}
|
87 |
}
|
90 |
$per_page = 20;
|
91 |
|
92 |
$search_term = '';
|
93 |
+
if ( isset( $_REQUEST['s'] ) ) {
|
94 |
+
$search_term = sanitize_text_field( $_REQUEST['s'] );
|
95 |
}
|
96 |
|
97 |
$columns = $this->get_columns();
|
98 |
$hidden = array();
|
99 |
$sortable = $this->get_sortable_columns();
|
100 |
|
101 |
+
$this->_column_headers = array( $columns, $hidden, $sortable );
|
102 |
//$this->process_bulk_action();
|
103 |
|
104 |
$current_page = $this->get_pagenum();
|
105 |
|
106 |
+
$total_items = tutor_utils()->get_total_students( $search_term );
|
107 |
+
$this->items = tutor_utils()->get_students( ($current_page-1) * $per_page, $per_page, $search_term );
|
108 |
|
109 |
$this->set_pagination_args( array(
|
110 |
'total_items' => $total_items, //WE have to calculate the total number of items
|
classes/Tutor.php
CHANGED
@@ -142,7 +142,6 @@ final class Tutor{
|
|
142 |
$this->setup = new Tutor_Setup();
|
143 |
$this->private_course_access = new Private_Course_Access();
|
144 |
$this->course_filter = new Course_Filter();
|
145 |
-
$this->delete_enrollment = new Delete_Enrollment_With_Order();
|
146 |
|
147 |
//Integrations
|
148 |
$this->woocommerce = new WooCommerce();
|
142 |
$this->setup = new Tutor_Setup();
|
143 |
$this->private_course_access = new Private_Course_Access();
|
144 |
$this->course_filter = new Course_Filter();
|
|
|
145 |
|
146 |
//Integrations
|
147 |
$this->woocommerce = new WooCommerce();
|
classes/Utils.php
CHANGED
@@ -1,10 +1,16 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
namespace TUTOR;
|
3 |
|
4 |
if ( ! defined( 'ABSPATH' ) )
|
5 |
exit;
|
6 |
|
7 |
-
|
8 |
class Utils {
|
9 |
/**
|
10 |
* @param null $key
|
@@ -16,31 +22,31 @@ class Utils {
|
|
16 |
*
|
17 |
* @since v.1.0.0
|
18 |
*/
|
19 |
-
public function get_option($key = null, $default = false){
|
20 |
$option = (array) maybe_unserialize(get_option('tutor_option'));
|
21 |
|
22 |
-
if (empty($option) || ! is_array($option)){
|
23 |
return $default;
|
24 |
}
|
25 |
-
if ( ! $key){
|
26 |
return $option;
|
27 |
}
|
28 |
-
if (array_key_exists($key, $option)){
|
29 |
-
return apply_filters($key, $option[$key]);
|
30 |
}
|
31 |
//Access array value via dot notation, such as option->get('value.subvalue')
|
32 |
-
if (strpos($key, '.')){
|
33 |
-
$option_key_array = explode('.', $key);
|
34 |
|
35 |
$new_option = $option;
|
36 |
-
foreach ($option_key_array as $dotKey){
|
37 |
-
if (isset($new_option[$dotKey])){
|
38 |
$new_option = $new_option[$dotKey];
|
39 |
}else{
|
40 |
return $default;
|
41 |
}
|
42 |
}
|
43 |
-
return apply_filters($key, $new_option);
|
44 |
}
|
45 |
|
46 |
return $default;
|
@@ -54,11 +60,10 @@ class Utils {
|
|
54 |
*
|
55 |
* @since v.1.0.0
|
56 |
*/
|
57 |
-
|
58 |
-
|
59 |
-
$option = (array) maybe_unserialize(get_option('tutor_option'));
|
60 |
$option[$key] = $value;
|
61 |
-
update_option('tutor_option', $option);
|
62 |
}
|
63 |
|
64 |
/**
|
@@ -73,20 +78,19 @@ class Utils {
|
|
73 |
*
|
74 |
* @update v.1.4.1 (Added default parameter)
|
75 |
*/
|
76 |
-
|
77 |
-
public function avalue_dot($key = null, $array = array(), $default = false){
|
78 |
$array = (array) $array;
|
79 |
-
if ( ! $key || ! count($array) ){
|
80 |
return $default;
|
81 |
}
|
82 |
-
$option_key_array = explode('.', $key);
|
83 |
|
84 |
$value = $array;
|
85 |
|
86 |
-
foreach ($option_key_array as $dotKey){
|
87 |
-
if (isset($value[$dotKey])){
|
88 |
$value = $value[$dotKey];
|
89 |
-
}else{
|
90 |
return $default;
|
91 |
}
|
92 |
}
|
@@ -107,8 +111,8 @@ class Utils {
|
|
107 |
*
|
108 |
* @since v.1.3.3
|
109 |
*/
|
110 |
-
public function array_get($key = null, $array = array(), $default = false){
|
111 |
-
return $this->avalue_dot($key, $array, $default);
|
112 |
}
|
113 |
|
114 |
/**
|
@@ -118,11 +122,11 @@ class Utils {
|
|
118 |
*
|
119 |
* @since v.1.0.0
|
120 |
*/
|
121 |
-
public function get_pages(){
|
122 |
$pages = array();
|
123 |
$wp_pages = get_pages();
|
124 |
-
if (is_array($wp_pages) && count($wp_pages)){
|
125 |
-
foreach ($wp_pages as $page){
|
126 |
$pages[$page->ID] = $page->post_title;
|
127 |
}
|
128 |
}
|
@@ -136,15 +140,15 @@ class Utils {
|
|
136 |
*
|
137 |
* @since v.1.0.0
|
138 |
*/
|
139 |
-
public function course_archive_page_url(){
|
140 |
$course_post_type = tutor()->course_post_type;
|
141 |
-
$course_page_url
|
142 |
|
143 |
$course_archive_page = $this->get_option('course_archive_page');
|
144 |
-
if ($course_archive_page && $course_archive_page !== '-1'){
|
145 |
-
$course_page_url = get_permalink($course_archive_page);
|
146 |
}
|
147 |
-
return trailingslashit($course_page_url);
|
148 |
}
|
149 |
|
150 |
/**
|
@@ -156,19 +160,25 @@ class Utils {
|
|
156 |
*
|
157 |
* @since v.1.0.0
|
158 |
*/
|
159 |
-
|
160 |
-
|
161 |
-
$
|
162 |
-
$user_name
|
163 |
-
|
164 |
-
$student_id = $this->get_user_id($student_id);
|
165 |
-
if ($student_id){
|
166 |
global $wpdb;
|
167 |
-
$user = $wpdb->get_row($wpdb->prepare(
|
168 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
$user_name = $user->user_nicename;
|
170 |
}
|
171 |
-
|
|
|
172 |
$user_name = 'user_name';
|
173 |
}
|
174 |
|
@@ -184,10 +194,16 @@ class Utils {
|
|
184 |
*
|
185 |
* @since v.1.0.0
|
186 |
*/
|
187 |
-
public function get_user_by_login($user_nicename = ''){
|
188 |
global $wpdb;
|
189 |
-
$user_nicename
|
190 |
-
$user
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
return $user;
|
192 |
}
|
193 |
|
@@ -199,9 +215,8 @@ class Utils {
|
|
199 |
* @since v.1.0.0
|
200 |
* @updated @1.5.9
|
201 |
*/
|
202 |
-
|
203 |
-
|
204 |
-
return class_exists('WooCommerce');
|
205 |
}
|
206 |
|
207 |
/**
|
@@ -211,13 +226,11 @@ class Utils {
|
|
211 |
*
|
212 |
* @since v.1.0.0
|
213 |
*/
|
214 |
-
public function has_edd(){
|
215 |
-
$activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ));
|
216 |
-
|
217 |
-
$depends
|
218 |
-
|
219 |
-
|
220 |
-
return $has;
|
221 |
}
|
222 |
|
223 |
/**
|
@@ -227,19 +240,20 @@ class Utils {
|
|
227 |
*
|
228 |
* @since v.1.3.6
|
229 |
*/
|
230 |
-
public function has_pmpro(){
|
231 |
-
$activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ));
|
232 |
-
$depends
|
233 |
-
|
|
|
234 |
}
|
235 |
|
236 |
public function has_wcs(){
|
237 |
-
$activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ));
|
238 |
-
$depends
|
239 |
-
|
|
|
240 |
}
|
241 |
|
242 |
-
|
243 |
/**
|
244 |
* @return bool
|
245 |
*
|
@@ -248,9 +262,10 @@ class Utils {
|
|
248 |
* @since v.1.4.8
|
249 |
*/
|
250 |
public function has_bp(){
|
251 |
-
$activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ));
|
252 |
-
$depends
|
253 |
-
|
|
|
254 |
}
|
255 |
|
256 |
/**
|
@@ -258,7 +273,7 @@ class Utils {
|
|
258 |
*
|
259 |
* @since v.1.0.0
|
260 |
*/
|
261 |
-
public function languages(){
|
262 |
$language_codes = array(
|
263 |
'en' => 'English' ,
|
264 |
'aa' => 'Afar' ,
|
@@ -397,10 +412,9 @@ class Utils {
|
|
397 |
'zu' => 'Zulu' ,
|
398 |
);
|
399 |
|
400 |
-
return apply_filters('tutor/utils/languages', $language_codes);
|
401 |
}
|
402 |
|
403 |
-
|
404 |
/**
|
405 |
* @param string $value
|
406 |
*
|
@@ -408,9 +422,9 @@ class Utils {
|
|
408 |
*
|
409 |
* @since v.1.0.0
|
410 |
*/
|
411 |
-
public function print_view($value = ''){
|
412 |
echo '<pre>';
|
413 |
-
print_r($value);
|
414 |
echo '</pre>';
|
415 |
}
|
416 |
|
@@ -423,25 +437,38 @@ class Utils {
|
|
423 |
*
|
424 |
* @since v.1.0.0
|
425 |
*/
|
426 |
-
|
427 |
-
public function get_courses($excludes = array(), $post_status=array('publish')){
|
428 |
global $wpdb;
|
429 |
|
430 |
-
|
431 |
-
$excludes = (array) $excludes;
|
432 |
$exclude_query = '';
|
433 |
-
|
434 |
-
|
|
|
435 |
}
|
436 |
|
437 |
-
$post_status = array_map(function($element){
|
438 |
-
|
|
|
439 |
|
|
|
440 |
$course_post_type = tutor()->course_post_type;
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
445 |
return $query;
|
446 |
}
|
447 |
|
@@ -454,17 +481,28 @@ class Utils {
|
|
454 |
*
|
455 |
* @since v.1.0.0
|
456 |
*/
|
457 |
-
public function get_courses_for_instructors($instructor_id = 0){
|
458 |
global $wpdb;
|
459 |
|
460 |
-
$instructor_id
|
461 |
-
|
462 |
$course_post_type = tutor()->course_post_type;
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
468 |
return $query;
|
469 |
}
|
470 |
|
@@ -477,15 +515,26 @@ class Utils {
|
|
477 |
*
|
478 |
* @since v.1.0.0
|
479 |
*/
|
480 |
-
|
481 |
-
public function get_course_count_by_instructor($instructor_id){
|
482 |
global $wpdb;
|
483 |
|
484 |
$course_post_type = tutor()->course_post_type;
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
489 |
|
490 |
return $count;
|
491 |
}
|
@@ -499,32 +548,36 @@ class Utils {
|
|
499 |
*
|
500 |
* @since v.1.0.0
|
501 |
*/
|
502 |
-
public function get_courses_by_instructor($instructor_id = 0, $post_status = array('publish')){
|
503 |
global $wpdb;
|
504 |
|
505 |
-
$instructor_id
|
506 |
$course_post_type = tutor()->course_post_type;
|
507 |
|
508 |
-
if ($post_status === 'any'){
|
509 |
$where_post_status = "";
|
510 |
-
}else{
|
511 |
-
$post_status
|
512 |
-
$statuses
|
513 |
$where_post_status = "AND $wpdb->posts.post_status IN({$statuses}) ";
|
514 |
}
|
515 |
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
|
|
|
|
|
|
|
|
|
|
526 |
|
527 |
-
$pageposts = $wpdb->get_results($querystr, OBJECT);
|
528 |
return $pageposts;
|
529 |
}
|
530 |
|
@@ -535,7 +588,7 @@ class Utils {
|
|
535 |
*
|
536 |
* @since v.1.0.0
|
537 |
*/
|
538 |
-
public function get_archive_page_course_count(){
|
539 |
global $wp_query;
|
540 |
return $wp_query->post_count;
|
541 |
}
|
@@ -547,11 +600,21 @@ class Utils {
|
|
547 |
*
|
548 |
* @since v.1.0.0
|
549 |
*/
|
550 |
-
public function get_course_count(){
|
551 |
global $wpdb;
|
552 |
|
553 |
$course_post_type = tutor()->course_post_type;
|
554 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
555 |
return $count;
|
556 |
}
|
557 |
|
@@ -562,11 +625,21 @@ class Utils {
|
|
562 |
*
|
563 |
* @since v.1.0.0
|
564 |
*/
|
565 |
-
public function get_lesson_count(){
|
566 |
global $wpdb;
|
567 |
|
568 |
$lesson_post_type = tutor()->lesson_post_type;
|
569 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
570 |
return $count;
|
571 |
}
|
572 |
|
@@ -580,15 +653,15 @@ class Utils {
|
|
580 |
*
|
581 |
* @since v.1.0.0
|
582 |
*/
|
583 |
-
public function get_lesson($course_id = 0, $limit = 10){
|
584 |
-
$course_id
|
585 |
-
|
586 |
$lesson_post_type = tutor()->lesson_post_type;
|
|
|
587 |
$args = array(
|
588 |
-
'post_status'
|
589 |
-
'post_type'
|
590 |
-
'posts_per_page'
|
591 |
-
'meta_query'
|
592 |
array(
|
593 |
'key' => '_tutor_course_id_for_lesson',
|
594 |
'value' => $course_id,
|
@@ -596,7 +669,8 @@ class Utils {
|
|
596 |
),
|
597 |
),
|
598 |
);
|
599 |
-
|
|
|
600 |
|
601 |
return $query;
|
602 |
}
|
@@ -610,19 +684,33 @@ class Utils {
|
|
610 |
*
|
611 |
* @since v.1.0.0
|
612 |
*/
|
613 |
-
public function get_lesson_count_by_course($course_id = 0){
|
614 |
-
$course_id = $this->get_post_id($course_id);
|
615 |
global $wpdb;
|
616 |
|
|
|
617 |
$lesson_post_type = tutor()->lesson_post_type;
|
618 |
|
619 |
-
$
|
620 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
|
622 |
$lesson_count = 0;
|
623 |
-
if ($this->count($topicIDS)){
|
624 |
-
$inIDS = implode(",", $topicIDS);
|
625 |
-
$lesson_count = $wpdb->get_var($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
626 |
}
|
627 |
|
628 |
return (int) $lesson_count;
|
@@ -638,22 +726,38 @@ class Utils {
|
|
638 |
*
|
639 |
* @since v.1.0.0
|
640 |
*/
|
641 |
-
public function get_completed_lesson_count_by_course($course_id = 0, $user_id = 0){
|
642 |
-
$course_id = $this->get_post_id($course_id);
|
643 |
-
$user_id = $this->get_user_id($user_id);
|
644 |
global $wpdb;
|
645 |
|
646 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
647 |
|
648 |
$count = 0;
|
649 |
-
if (is_array($completed_lesson_ids) && count($completed_lesson_ids)){
|
650 |
$completed_lesson_meta_ids = array();
|
651 |
-
foreach ($completed_lesson_ids as $lesson_id){
|
652 |
-
$completed_lesson_meta_ids[] = '_tutor_completed_lesson_id_'
|
653 |
}
|
654 |
-
$in_ids = implode("','", $completed_lesson_meta_ids);
|
655 |
|
656 |
-
$count = (int) $wpdb->get_var($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
657 |
}
|
658 |
|
659 |
return $count;
|
@@ -668,36 +772,33 @@ class Utils {
|
|
668 |
* @since v.1.0.0
|
669 |
* @updated v.1.6.1
|
670 |
*/
|
671 |
-
public function get_course_completed_percent($course_id = 0, $user_id = 0){
|
672 |
-
$course_id
|
673 |
-
$user_id
|
674 |
-
|
675 |
$completed_lesson = $this->get_completed_lesson_count_by_course($course_id, $user_id);
|
676 |
-
$course_contents
|
677 |
-
|
678 |
-
$totalContents
|
679 |
-
$
|
680 |
-
|
681 |
-
$
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
$attempt = $this->get_quiz_attempt($content->ID);
|
687 |
-
if ($attempt){
|
688 |
$completedCount++;
|
689 |
}
|
690 |
-
}elseif ($content->post_type === 'tutor_assignments'){
|
691 |
-
$isSubmitted = $this->is_assignment_submitted($content->ID);
|
692 |
-
if ($isSubmitted){
|
693 |
$completedCount++;
|
694 |
}
|
695 |
}
|
696 |
}
|
697 |
}
|
698 |
|
699 |
-
if ($totalContents > 0 && $completedCount > 0){
|
700 |
-
return number_format(($completedCount * 100) / $totalContents);
|
701 |
}
|
702 |
|
703 |
return 0;
|
@@ -712,18 +813,19 @@ class Utils {
|
|
712 |
*
|
713 |
* @since v.1.0.0
|
714 |
*/
|
715 |
-
public function get_topics($course_id = 0){
|
716 |
-
$course_id = $this->get_post_id($course_id);
|
717 |
|
718 |
$args = array(
|
719 |
-
'post_type'
|
720 |
-
'post_parent'
|
721 |
-
'orderby'
|
722 |
-
'order'
|
723 |
-
'posts_per_page'
|
724 |
);
|
725 |
|
726 |
-
$query = new \WP_Query($args);
|
|
|
727 |
return $query;
|
728 |
}
|
729 |
|
@@ -736,10 +838,18 @@ class Utils {
|
|
736 |
*
|
737 |
* @since v.1.0.0
|
738 |
*/
|
739 |
-
public function get_next_topic_order_id($course_ID){
|
740 |
global $wpdb;
|
741 |
|
742 |
-
$last_order = (int) $wpdb->get_var($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
743 |
|
744 |
return $last_order + 1;
|
745 |
}
|
@@ -753,10 +863,17 @@ class Utils {
|
|
753 |
*
|
754 |
* @since v.1.0.0
|
755 |
*/
|
756 |
-
public function get_next_course_content_order_id($topic_ID){
|
757 |
global $wpdb;
|
758 |
|
759 |
-
$last_order = (int) $wpdb->get_var($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
760 |
return $last_order + 1;
|
761 |
}
|
762 |
|
@@ -770,19 +887,19 @@ class Utils {
|
|
770 |
*
|
771 |
* @since v.1.0.0
|
772 |
*/
|
773 |
-
public function get_lessons_by_topic($topics_id = 0, $limit = 10){
|
774 |
-
$topics_id
|
775 |
-
|
776 |
$lesson_post_type = tutor()->lesson_post_type;
|
|
|
777 |
$args = array(
|
778 |
-
'post_type'
|
779 |
-
'post_parent'
|
780 |
-
'posts_per_page'
|
781 |
-
'orderby'
|
782 |
-
'order'
|
783 |
);
|
784 |
|
785 |
-
$query = new \WP_Query($args);
|
786 |
|
787 |
return $query;
|
788 |
}
|
@@ -797,19 +914,20 @@ class Utils {
|
|
797 |
*
|
798 |
* @since v.1.0.0
|
799 |
*/
|
800 |
-
public function get_course_contents_by_topic($topics_id = 0, $limit = 10){
|
801 |
-
$topics_id
|
802 |
-
|
803 |
$lesson_post_type = tutor()->lesson_post_type;
|
|
|
|
|
804 |
$args = array(
|
805 |
-
'post_type'
|
806 |
-
'post_parent'
|
807 |
-
'posts_per_page'
|
808 |
-
'orderby'
|
809 |
-
'order'
|
810 |
);
|
811 |
|
812 |
-
$query = new \WP_Query($args);
|
813 |
|
814 |
return $query;
|
815 |
}
|
@@ -821,12 +939,12 @@ class Utils {
|
|
821 |
*
|
822 |
* @since v.1.0.0
|
823 |
*/
|
824 |
-
public function checking_nonce($request_method = 'post') {
|
825 |
|
826 |
-
$data
|
827 |
-
$matched = !empty($data[tutor()->nonce]) && wp_verify_nonce($data[tutor()->nonce], tutor()->nonce_action);
|
828 |
|
829 |
-
|
830 |
}
|
831 |
|
832 |
/**
|
@@ -836,17 +954,18 @@ class Utils {
|
|
836 |
*
|
837 |
* @since v.1.0.0
|
838 |
*/
|
839 |
-
public function is_course_purchasable($course_id = 0){
|
840 |
-
$course_id
|
|
|
841 |
|
842 |
-
$price_type
|
843 |
-
|
844 |
-
|
845 |
-
if ( ! $is_paid){
|
846 |
return false;
|
847 |
}
|
848 |
}
|
849 |
-
|
|
|
850 |
}
|
851 |
|
852 |
/**
|
@@ -858,24 +977,22 @@ class Utils {
|
|
858 |
*
|
859 |
* @since v.1.0.0
|
860 |
*/
|
|
|
|
|
|
|
861 |
|
862 |
-
|
863 |
-
$course_id = $this->get_post_id($course_id);
|
864 |
-
|
865 |
-
$price = null;
|
866 |
-
|
867 |
-
if ($this->is_course_purchasable()) {
|
868 |
$monetize_by = $this->get_option('monetize_by');
|
869 |
|
870 |
-
if ($this->has_wc() && $monetize_by === 'wc'){
|
871 |
-
$product_id = tutor_utils()->get_course_product_id($course_id);
|
872 |
$product = wc_get_product( $product_id );
|
873 |
|
874 |
if ( $product ) {
|
875 |
$price = $product->get_price();
|
876 |
}
|
877 |
-
}else{
|
878 |
-
$price = apply_filters('get_tutor_course_price', null, $course_id);
|
879 |
}
|
880 |
}
|
881 |
|
@@ -893,8 +1010,8 @@ class Utils {
|
|
893 |
*
|
894 |
* @since v.1.3.1
|
895 |
*/
|
896 |
-
public function get_raw_course_price($course_id = 0){
|
897 |
-
$course_id = $this->get_post_id($course_id);
|
898 |
|
899 |
$prices = array(
|
900 |
'regular_price' => 0,
|
@@ -903,9 +1020,8 @@ class Utils {
|
|
903 |
|
904 |
$monetize_by = $this->get_option('monetize_by');
|
905 |
|
906 |
-
|
907 |
-
$product_id
|
908 |
-
if ($product_id) {
|
909 |
if ( $monetize_by === 'wc' && $this->has_wc() ) {
|
910 |
$prices['regular_price'] = get_post_meta( $product_id, '_regular_price', true );
|
911 |
$prices['sale_price'] = get_post_meta( $product_id, '_sale_price', true );
|
@@ -914,7 +1030,6 @@ class Utils {
|
|
914 |
$prices['sale_price'] = get_post_meta( $product_id, 'edd_price', true );
|
915 |
}
|
916 |
}
|
917 |
-
//}
|
918 |
|
919 |
return (object) $prices;
|
920 |
}
|
@@ -928,11 +1043,9 @@ class Utils {
|
|
928 |
*
|
929 |
* @since v.1.3.5
|
930 |
*/
|
931 |
-
|
932 |
-
|
933 |
-
$
|
934 |
-
|
935 |
-
$price_type = get_post_meta($course_id, '_tutor_course_price_type', true);
|
936 |
return $price_type;
|
937 |
}
|
938 |
|
@@ -945,22 +1058,38 @@ class Utils {
|
|
945 |
*
|
946 |
* @since v.1.0.0
|
947 |
*/
|
|
|
|
|
|
|
948 |
|
949 |
-
|
950 |
-
$course_id = $this->get_post_id($course_id);
|
951 |
-
$user_id = $this->get_user_id($user_id);
|
952 |
-
|
953 |
-
if (is_user_logged_in()) {
|
954 |
global $wpdb;
|
955 |
|
956 |
-
do_action('tutor_is_enrolled_before', $course_id, $user_id);
|
957 |
-
|
958 |
-
$getEnrolledInfo = $wpdb->get_row(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
959 |
|
960 |
if ( $getEnrolledInfo ) {
|
961 |
-
return apply_filters('tutor_is_enrolled', $getEnrolledInfo, $course_id, $user_id);
|
962 |
}
|
963 |
}
|
|
|
964 |
return false;
|
965 |
}
|
966 |
|
@@ -974,19 +1103,34 @@ class Utils {
|
|
974 |
*
|
975 |
* @since v.1.0.0
|
976 |
*/
|
977 |
-
public function has_any_enrolled($course_id = 0, $user_id = 0){
|
978 |
-
$course_id = $this->get_post_id($course_id);
|
979 |
-
$user_id
|
980 |
|
981 |
-
if (is_user_logged_in()) {
|
982 |
global $wpdb;
|
983 |
|
984 |
-
$getEnrolledInfo = $wpdb->get_row(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
985 |
|
986 |
if ( $getEnrolledInfo ) {
|
987 |
return $getEnrolledInfo;
|
988 |
}
|
989 |
}
|
|
|
990 |
return false;
|
991 |
}
|
992 |
|
@@ -999,18 +1143,25 @@ class Utils {
|
|
999 |
*
|
1000 |
* @since v.1.6.1
|
1001 |
*/
|
1002 |
-
|
1003 |
-
|
1004 |
-
if ( ! $enrol_id){
|
1005 |
return false;
|
1006 |
}
|
1007 |
|
1008 |
global $wpdb;
|
1009 |
|
1010 |
-
$course_id = (int) $wpdb->get_var($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1011 |
|
1012 |
if ( $course_id ) {
|
1013 |
-
return get_post($course_id);
|
1014 |
}
|
1015 |
|
1016 |
return null;
|
@@ -1026,13 +1177,12 @@ class Utils {
|
|
1026 |
*
|
1027 |
* @since v.1.0.0
|
1028 |
*/
|
|
|
|
|
|
|
|
|
1029 |
|
1030 |
-
|
1031 |
-
$lesson_id = $this->get_post_id($lesson_id);
|
1032 |
-
$user_id = $this->get_user_id($user_id);
|
1033 |
-
$course_id = $this->get_course_id_by_lesson($lesson_id);
|
1034 |
-
|
1035 |
-
return $this->is_enrolled($course_id);
|
1036 |
}
|
1037 |
|
1038 |
/**
|
@@ -1047,15 +1197,14 @@ class Utils {
|
|
1047 |
* @updated v.1.4.8
|
1048 |
* Added Legacy Supports
|
1049 |
*/
|
|
|
|
|
|
|
1050 |
|
1051 |
-
|
1052 |
-
|
1053 |
-
$course_id = get_post_meta($lesson_id, '_tutor_course_id_for_lesson', true);
|
1054 |
-
|
1055 |
-
if ( ! $course_id) {
|
1056 |
-
$course_id = $this->get_course_id_by_content($lesson_id);
|
1057 |
}
|
1058 |
-
if ( ! $course_id){
|
1059 |
$course_id = 0;
|
1060 |
}
|
1061 |
|
@@ -1071,33 +1220,43 @@ class Utils {
|
|
1071 |
*
|
1072 |
* @since v.1.0.0
|
1073 |
*/
|
1074 |
-
public function get_course_first_lesson($course_id = 0){
|
1075 |
-
$course_id = $this->get_post_id($course_id);
|
1076 |
global $wpdb;
|
1077 |
|
1078 |
-
$
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1083 |
|
1084 |
$first_lesson = false;
|
1085 |
|
1086 |
-
if (tutils()->count($lessons)){
|
1087 |
-
if (! empty($lessons[0])){
|
1088 |
$first_lesson = $lessons[0];
|
1089 |
}
|
1090 |
|
1091 |
-
foreach ($lessons as $lesson){
|
1092 |
-
$is_complete = get_user_meta($user_id, "_tutor_completed_lesson_id_{$lesson->ID}", true);
|
1093 |
-
if ( ! $is_complete){
|
1094 |
$first_lesson = $lesson;
|
1095 |
break;
|
1096 |
}
|
1097 |
}
|
1098 |
|
1099 |
-
if (! empty($first_lesson->ID)){
|
1100 |
-
return get_permalink($first_lesson->ID);
|
1101 |
}
|
1102 |
}
|
1103 |
|
@@ -1110,12 +1269,13 @@ class Utils {
|
|
1110 |
*
|
1111 |
* @since v.1.0.0
|
1112 |
*/
|
1113 |
-
public function course_sub_pages(){
|
1114 |
$nav_items = array(
|
1115 |
-
'questions'
|
1116 |
'announcements' => __('Announcements', 'tutor'),
|
1117 |
);
|
1118 |
-
|
|
|
1119 |
}
|
1120 |
|
1121 |
/**
|
@@ -1125,11 +1285,11 @@ class Utils {
|
|
1125 |
*
|
1126 |
* @since v.1.0.0
|
1127 |
*/
|
1128 |
-
public function get_video($post_id = 0){
|
1129 |
-
$post_id
|
1130 |
-
$attachments = get_post_meta($post_id, '_video', true);
|
1131 |
-
if ($attachments) {
|
1132 |
-
$attachments = maybe_unserialize($attachments);
|
1133 |
}
|
1134 |
return $attachments;
|
1135 |
}
|
@@ -1142,11 +1302,11 @@ class Utils {
|
|
1142 |
*
|
1143 |
* Update the video Info
|
1144 |
*/
|
1145 |
-
public function update_video($post_id = 0, $video_data = array()){
|
1146 |
-
$post_id = $this->get_post_id($post_id);
|
1147 |
|
1148 |
-
if (is_array($video_data) && count($video_data)){
|
1149 |
-
update_post_meta($post_id, '_video', $video_data);
|
1150 |
}
|
1151 |
}
|
1152 |
|
@@ -1157,12 +1317,12 @@ class Utils {
|
|
1157 |
*
|
1158 |
* @since v.1.0.0
|
1159 |
*/
|
1160 |
-
public function get_attachments($post_id = 0){
|
1161 |
-
$post_id
|
|
|
1162 |
$attachments_arr = array();
|
1163 |
-
$attachments = maybe_unserialize(get_post_meta($post_id, '_tutor_attachments', true));
|
1164 |
|
1165 |
-
$font_icons = apply_filters('tutor_file_types_icon', array(
|
1166 |
'archive',
|
1167 |
'audio',
|
1168 |
'code',
|
@@ -1175,17 +1335,17 @@ class Utils {
|
|
1175 |
'image',
|
1176 |
));
|
1177 |
|
1178 |
-
if ( is_array($attachments) && count($attachments)) {
|
1179 |
foreach ( $attachments as $attachment ) {
|
1180 |
$url = wp_get_attachment_url( $attachment );
|
1181 |
$file_type = wp_check_filetype( $url );
|
1182 |
$ext = $file_type['ext'];
|
1183 |
-
$title
|
1184 |
|
1185 |
-
$file_path
|
1186 |
$size_bytes = file_exists($file_path) ? filesize( $file_path ) : 0;
|
1187 |
$size = size_format( $size_bytes, 2 );
|
1188 |
-
$type
|
1189 |
|
1190 |
$icon = 'default';
|
1191 |
if ( $type && in_array( $type, $font_icons ) ) {
|
@@ -1221,11 +1381,11 @@ class Utils {
|
|
1221 |
*
|
1222 |
* @since v.1.0.0
|
1223 |
*/
|
1224 |
-
public function playtime_string($seconds) {
|
1225 |
-
$sign = (($seconds < 0) ? '-' : '');
|
1226 |
-
$seconds = round(abs($seconds));
|
1227 |
$H = (int) floor( $seconds / 3600);
|
1228 |
-
$M = (int) floor(($seconds - (3600 * $H) ) / 60);
|
1229 |
$S = (int) round( $seconds - (3600 * $H) - (60 * $M) );
|
1230 |
return $sign.($H ? $H.':' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).':'.str_pad($S, 2, 0, STR_PAD_LEFT);
|
1231 |
}
|
@@ -1239,28 +1399,28 @@ class Utils {
|
|
1239 |
*
|
1240 |
* @since v.1.0.0
|
1241 |
*/
|
1242 |
-
public function playtime_array($seconds){
|
1243 |
$run_time_format = array(
|
1244 |
-
'hours'
|
1245 |
'minutes' => '00',
|
1246 |
'seconds' => '00',
|
1247 |
);
|
1248 |
|
1249 |
-
if ($seconds <= 0 ){
|
1250 |
return $run_time_format;
|
1251 |
}
|
1252 |
|
1253 |
-
$playTimeString = $this->playtime_string($seconds);
|
1254 |
-
$timeInArray
|
1255 |
|
1256 |
$run_time_size = count($timeInArray);
|
1257 |
-
if ($run_time_size === 3){
|
1258 |
-
$run_time_format['hours'] = $timeInArray[0];
|
1259 |
-
$run_time_format['minutes'] = $timeInArray[1];
|
1260 |
-
$run_time_format['seconds'] = $timeInArray[2];
|
1261 |
-
}elseif($run_time_size === 2){
|
1262 |
-
$run_time_format['minutes'] = $timeInArray[0];
|
1263 |
-
$run_time_format['seconds'] = $timeInArray[1];
|
1264 |
}
|
1265 |
|
1266 |
return $run_time_format;
|
@@ -1275,12 +1435,12 @@ class Utils {
|
|
1275 |
*
|
1276 |
* @since v.1.0.0
|
1277 |
*/
|
1278 |
-
public function seconds_to_time_context($seconds) {
|
1279 |
-
$sign = (($seconds < 0) ? '-' : '');
|
1280 |
-
$seconds = round(abs($seconds));
|
1281 |
-
$H = (int) floor( $seconds
|
1282 |
-
$M = (int) floor(($seconds - (3600 * $H)
|
1283 |
-
$S = (int) round( $seconds - (3600 * $H) - (60 * $M)
|
1284 |
|
1285 |
return $sign.($H ? $H.'h ' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).'m '.str_pad($S, 2, 0, STR_PAD_LEFT).'s';
|
1286 |
}
|
@@ -1292,12 +1452,11 @@ class Utils {
|
|
1292 |
*
|
1293 |
* @since v.1.0.0
|
1294 |
*/
|
|
|
|
|
|
|
1295 |
|
1296 |
-
|
1297 |
-
$lesson_id = $this->get_post_id($lesson_id);
|
1298 |
-
$video = $this->get_video($lesson_id);
|
1299 |
-
|
1300 |
-
if ( ! $video){
|
1301 |
return false;
|
1302 |
}
|
1303 |
|
@@ -1305,15 +1464,15 @@ class Utils {
|
|
1305 |
'playtime' => '00:00',
|
1306 |
);
|
1307 |
|
1308 |
-
$types = apply_filters('tutor_video_types', array("mp4"=>"video/mp4", "webm"=>"video/webm", "ogg"=>"video/ogg"));
|
1309 |
|
1310 |
$videoSource = $this->avalue_dot('source', $video);
|
1311 |
|
1312 |
-
if ($videoSource === 'html5'){
|
1313 |
-
$sourceVideoID = $this->avalue_dot('source_video_id', $video);
|
1314 |
-
$video_info
|
1315 |
|
1316 |
-
if ( $video_info && in_array($this->array_get('mime_type', $video_info), $types) ) {
|
1317 |
$path = get_attached_file( $sourceVideoID );
|
1318 |
$info['playtime'] = $video_info['length_formatted'];
|
1319 |
$info['path'] = $path;
|
@@ -1323,26 +1482,25 @@ class Utils {
|
|
1323 |
}
|
1324 |
}
|
1325 |
|
1326 |
-
if ($videoSource !== 'html5'){
|
1327 |
-
$video
|
1328 |
-
|
1329 |
-
$
|
1330 |
-
$
|
1331 |
-
$runtimeSeconds = tutor_utils()->avalue_dot('runtime.seconds', $video);
|
1332 |
|
1333 |
-
$runtimeHours
|
1334 |
$runtimeMinutes = $runtimeMinutes ? $runtimeMinutes : '00';
|
1335 |
$runtimeSeconds = $runtimeSeconds ? $runtimeSeconds : '00';
|
1336 |
|
1337 |
$info['playtime'] = "$runtimeHours:$runtimeMinutes:$runtimeSeconds";
|
1338 |
}
|
1339 |
|
1340 |
-
$info = array_merge($info, $video);
|
1341 |
|
1342 |
return (object) $info;
|
1343 |
}
|
1344 |
|
1345 |
-
public function get_optimized_duration($duration){
|
1346 |
/* if(is_string($duration)){
|
1347 |
strpos($duration, '00:')===0 ? $duration=substr($duration, 3) : 0; // Remove Empty hour
|
1348 |
strpos($duration, '00:')===0 ? $duration=substr($duration, 3) : 0; // Remove empty minute
|
@@ -1360,14 +1518,16 @@ class Utils {
|
|
1360 |
*
|
1361 |
* @since v.1.0.0
|
1362 |
*/
|
1363 |
-
public function is_html5_video($post_id = 0){
|
1364 |
-
$post_id = $this->get_post_id($post_id);
|
|
|
1365 |
|
1366 |
-
$video
|
1367 |
-
if ( ! $video){
|
1368 |
return false;
|
1369 |
}
|
1370 |
-
|
|
|
|
|
1371 |
return $videoSource === 'html5';
|
1372 |
}
|
1373 |
|
@@ -1383,23 +1543,22 @@ class Utils {
|
|
1383 |
*
|
1384 |
* @since v.1.0.0
|
1385 |
*/
|
1386 |
-
|
1387 |
-
|
1388 |
-
$
|
1389 |
-
$video = tutor_utils()->get_video_info($post_id);
|
1390 |
|
1391 |
$play_time = false;
|
1392 |
-
if ($video){
|
1393 |
$play_time = $video->playtime;
|
1394 |
}
|
1395 |
|
1396 |
$tutor_lesson_type_icon = $play_time ? 'youtube' : 'document';
|
1397 |
|
1398 |
-
if ($html) {
|
1399 |
$tutor_lesson_type_icon = "<i class='tutor-icon-$tutor_lesson_type_icon'></i> ";
|
1400 |
}
|
1401 |
|
1402 |
-
if ($echo) {
|
1403 |
echo $tutor_lesson_type_icon;
|
1404 |
}
|
1405 |
|
@@ -1414,14 +1573,12 @@ class Utils {
|
|
1414 |
*
|
1415 |
* @since v.1.0.0
|
1416 |
*/
|
|
|
|
|
|
|
|
|
1417 |
|
1418 |
-
|
1419 |
-
$lesson_id = $this->get_post_id($lesson_id);
|
1420 |
-
$user_id = $this->get_user_id($user_id);
|
1421 |
-
|
1422 |
-
$is_completed = get_user_meta($user_id, '_tutor_completed_lesson_id_'.$lesson_id, true);
|
1423 |
-
|
1424 |
-
if ($is_completed){
|
1425 |
return $is_completed;
|
1426 |
}
|
1427 |
|
@@ -1440,32 +1597,38 @@ class Utils {
|
|
1440 |
*
|
1441 |
* @updated v.1.4.9
|
1442 |
*/
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
1446 |
-
return apply_filters('is_completed_course', false, $course_id, $user_id);
|
1447 |
}
|
1448 |
|
1449 |
global $wpdb;
|
1450 |
$course_id = $this->get_post_id($course_id);
|
1451 |
-
$user_id
|
1452 |
|
1453 |
-
$is_completed = $wpdb->get_row($wpdb->prepare(
|
1454 |
-
|
1455 |
-
|
1456 |
-
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1463 |
|
1464 |
-
if ($is_completed){
|
1465 |
-
return apply_filters('is_completed_course', $is_completed, $course_id, $user_id);
|
1466 |
}
|
1467 |
|
1468 |
-
return apply_filters('is_completed_course', false, $course_id, $user_id);
|
1469 |
}
|
1470 |
|
1471 |
/**
|
@@ -1477,16 +1640,16 @@ class Utils {
|
|
1477 |
*
|
1478 |
* @since v.1.0.0
|
1479 |
*/
|
1480 |
-
public function sanitize_array($input = array()){
|
1481 |
$array = array();
|
1482 |
|
1483 |
-
if (is_array($input) && count($input)){
|
1484 |
-
foreach ($input as $key => $value){
|
1485 |
-
if (is_array($value)){
|
1486 |
-
$array[$key] = $this->sanitize_array($value);
|
1487 |
-
}else{
|
1488 |
-
$key
|
1489 |
-
$value
|
1490 |
$array[$key] = $value;
|
1491 |
}
|
1492 |
}
|
@@ -1504,19 +1667,18 @@ class Utils {
|
|
1504 |
*
|
1505 |
* @since v.1.0.0
|
1506 |
*/
|
1507 |
-
|
1508 |
-
|
1509 |
-
|
1510 |
-
$post_id = $this->get_post_id($post_id);
|
1511 |
|
1512 |
$video = $this->get_video( $post_id );
|
1513 |
-
if ( $video && $this->array_get('source', $video) !== '-1') {
|
1514 |
|
1515 |
-
$not_empty =!empty($video['source_video_id']) ||
|
1516 |
-
!empty($video['source_external_url']) ||
|
1517 |
-
!empty($video['source_youtube']) ||
|
1518 |
-
!empty($video['source_vimeo']) ||
|
1519 |
-
!empty($video['source_embedded']);
|
1520 |
|
1521 |
return $not_empty ? $video : false;
|
1522 |
}
|
@@ -1539,21 +1701,25 @@ class Utils {
|
|
1539 |
*
|
1540 |
* @since v.1.0.0
|
1541 |
*/
|
1542 |
-
public function get_students($start = 0, $limit = 10, $search_term = ''){
|
1543 |
-
$meta_key = '_is_tutor_student';
|
1544 |
-
|
1545 |
global $wpdb;
|
1546 |
|
1547 |
-
|
1548 |
-
|
1549 |
-
|
1550 |
-
|
1551 |
-
|
1552 |
-
|
1553 |
-
|
1554 |
-
WHERE
|
1555 |
-
|
1556 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1557 |
|
1558 |
return $students;
|
1559 |
}
|
@@ -1568,16 +1734,23 @@ class Utils {
|
|
1568 |
*
|
1569 |
* @since v.1.0.0
|
1570 |
*/
|
1571 |
-
public function get_total_students($search_term = ''){
|
1572 |
-
$meta_key = '_is_tutor_student';
|
1573 |
-
|
1574 |
global $wpdb;
|
1575 |
|
1576 |
-
|
1577 |
-
|
1578 |
-
|
1579 |
-
|
1580 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1581 |
|
1582 |
return (int) $count;
|
1583 |
}
|
@@ -1591,16 +1764,22 @@ class Utils {
|
|
1591 |
*
|
1592 |
* @since v.1.0.0
|
1593 |
*/
|
1594 |
-
public function get_completed_courses_ids_by_user($user_id = 0){
|
1595 |
global $wpdb;
|
1596 |
|
1597 |
-
$user_id = $this->get_user_id($user_id);
|
1598 |
|
1599 |
-
$course_ids = (array) $wpdb->get_col($wpdb->prepare(
|
1600 |
-
|
1601 |
-
|
1602 |
-
|
1603 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1604 |
|
1605 |
return $course_ids;
|
1606 |
}
|
@@ -1614,20 +1793,20 @@ class Utils {
|
|
1614 |
*
|
1615 |
* @since v.1.0.0
|
1616 |
*/
|
1617 |
-
public function get_courses_by_user($user_id = 0){
|
1618 |
-
$user_id
|
1619 |
-
$course_ids = $this->get_completed_courses_ids_by_user($user_id);
|
1620 |
|
1621 |
-
if (count($course_ids)){
|
1622 |
$course_post_type = tutor()->course_post_type;
|
1623 |
$course_args = array(
|
1624 |
-
'post_type'
|
1625 |
-
'post_status'
|
1626 |
-
'post__in'
|
1627 |
'posts_per_page' => -1
|
1628 |
);
|
1629 |
|
1630 |
-
return new \WP_Query($course_args);
|
1631 |
}
|
1632 |
|
1633 |
return false;
|
@@ -1642,24 +1821,22 @@ class Utils {
|
|
1642 |
*
|
1643 |
* @since v.1.0.0
|
1644 |
*/
|
|
|
|
|
|
|
|
|
|
|
1645 |
|
1646 |
-
|
1647 |
-
$user_id = $this->get_user_id($user_id);
|
1648 |
-
|
1649 |
-
$course_ids = $this->get_completed_courses_ids_by_user($user_id);
|
1650 |
-
$enrolled_course_ids = $this->get_enrolled_courses_ids_by_user($user_id);
|
1651 |
-
$active_courses = array_diff($enrolled_course_ids, $course_ids);
|
1652 |
-
|
1653 |
-
if (count($active_courses)){
|
1654 |
$course_post_type = tutor()->course_post_type;
|
1655 |
$course_args = array(
|
1656 |
-
'post_type'
|
1657 |
-
'post_status'
|
1658 |
-
'post__in'
|
1659 |
'posts_per_page' => -1,
|
1660 |
);
|
1661 |
|
1662 |
-
return new \WP_Query($course_args);
|
1663 |
}
|
1664 |
|
1665 |
return false;
|
@@ -1674,11 +1851,20 @@ class Utils {
|
|
1674 |
*
|
1675 |
* @since v.1.0.0
|
1676 |
*/
|
1677 |
-
|
1678 |
-
public function get_enrolled_courses_ids_by_user($user_id = 0){
|
1679 |
global $wpdb;
|
1680 |
-
$user_id = $this->get_user_id($user_id);
|
1681 |
-
$course_ids = $wpdb->get_col($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1682 |
|
1683 |
return $course_ids;
|
1684 |
}
|
@@ -1690,14 +1876,22 @@ class Utils {
|
|
1690 |
*
|
1691 |
* Get the total enrolled users at course
|
1692 |
*/
|
1693 |
-
public function count_enrolled_users_by_course($course_id = 0){
|
1694 |
global $wpdb;
|
1695 |
-
|
|
|
1696 |
|
1697 |
$course_ids = $wpdb->get_var($wpdb->prepare(
|
1698 |
"SELECT COUNT(ID)
|
1699 |
-
|
1700 |
-
WHERE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1701 |
|
1702 |
return (int) $course_ids;
|
1703 |
}
|
@@ -1709,26 +1903,26 @@ class Utils {
|
|
1709 |
*
|
1710 |
* Get the enrolled courses by user
|
1711 |
*/
|
1712 |
-
public function get_enrolled_courses_by_user($user_id = 0, $post_status='publish'){
|
1713 |
global $wpdb;
|
1714 |
|
1715 |
-
$user_id = $this->get_user_id($user_id);
|
1716 |
-
$course_ids = $this->get_enrolled_courses_ids_by_user($user_id);
|
1717 |
|
1718 |
-
if (count($course_ids)){
|
1719 |
$course_post_type = tutor()->course_post_type;
|
1720 |
$course_args = array(
|
1721 |
-
'post_type'
|
1722 |
-
'post_status'
|
1723 |
-
'post__in'
|
1724 |
'posts_per_page' => -1
|
1725 |
);
|
1726 |
-
return new \WP_Query($course_args);
|
1727 |
}
|
|
|
1728 |
return false;
|
1729 |
}
|
1730 |
|
1731 |
-
|
1732 |
/**
|
1733 |
* @param int $post_id
|
1734 |
*
|
@@ -1736,14 +1930,14 @@ class Utils {
|
|
1736 |
*
|
1737 |
* Get the video streaming URL by post/lesson/course ID
|
1738 |
*/
|
1739 |
-
public function get_video_stream_url($post_id = 0){
|
1740 |
-
$post_id = $this->get_post_id($post_id);
|
1741 |
-
$post
|
1742 |
|
1743 |
-
if ($post->post_type === tutor()->lesson_post_type ){
|
1744 |
-
$video_url = trailingslashit(home_url()).'video-url/'
|
1745 |
-
}else{
|
1746 |
-
$video_info = tutor_utils()->get_video_info($post_id);
|
1747 |
$video_url = $video_info->url;
|
1748 |
}
|
1749 |
|
@@ -1760,12 +1954,12 @@ class Utils {
|
|
1760 |
*
|
1761 |
* @since v.1.0.0
|
1762 |
*/
|
1763 |
-
public function get_lesson_reading_info_full($lesson_id = 0, $user_id = 0){
|
1764 |
-
$lesson_id = $this->get_post_id($lesson_id);
|
1765 |
-
$user_id = $this->get_user_id($user_id);
|
1766 |
|
1767 |
-
$lesson_info = (array) maybe_unserialize(get_user_meta($user_id, '_lesson_reading_info', true));
|
1768 |
-
return $this->avalue_dot($lesson_id, $lesson_info);
|
1769 |
}
|
1770 |
|
1771 |
/**
|
@@ -1777,10 +1971,10 @@ class Utils {
|
|
1777 |
*
|
1778 |
* @since v.1.0.0
|
1779 |
*/
|
1780 |
-
public function get_post_id($post_id = 0){
|
1781 |
-
if ( ! $post_id){
|
1782 |
$post_id = get_the_ID();
|
1783 |
-
if ( ! $post_id){
|
1784 |
return false;
|
1785 |
}
|
1786 |
}
|
@@ -1797,10 +1991,10 @@ class Utils {
|
|
1797 |
*
|
1798 |
* @since v.1.0.0
|
1799 |
*/
|
1800 |
-
public function get_user_id($user_id = 0){
|
1801 |
-
if ( ! $user_id){
|
1802 |
$user_id = get_current_user_id();
|
1803 |
-
if ( ! $user_id){
|
1804 |
return false;
|
1805 |
}
|
1806 |
}
|
@@ -1819,12 +2013,10 @@ class Utils {
|
|
1819 |
*
|
1820 |
* @since v.1.0.0
|
1821 |
*/
|
1822 |
-
|
1823 |
-
|
1824 |
-
$
|
1825 |
-
$
|
1826 |
-
|
1827 |
-
$lesson_info = $this->get_lesson_reading_info_full($lesson_id, $user_id);
|
1828 |
|
1829 |
return $this->avalue_dot($key, $lesson_info);
|
1830 |
}
|
@@ -1840,14 +2032,14 @@ class Utils {
|
|
1840 |
*
|
1841 |
* @since v.1.0.0
|
1842 |
*/
|
1843 |
-
public function update_lesson_reading_info($lesson_id = 0, $user_id = 0, $key = '', $value = ''){
|
1844 |
$lesson_id = $this->get_post_id($lesson_id);
|
1845 |
-
$user_id
|
1846 |
|
1847 |
-
if ($key && $value){
|
1848 |
-
$lesson_info = (array) maybe_unserialize(get_user_meta($user_id, '_lesson_reading_info', true));
|
1849 |
-
$lesson_info[$lesson_id][$key] = $value;
|
1850 |
-
update_user_meta($user_id, '_lesson_reading_info', $lesson_info);
|
1851 |
}
|
1852 |
}
|
1853 |
|
@@ -1860,13 +2052,14 @@ class Utils {
|
|
1860 |
*
|
1861 |
* @since v.1.0.0
|
1862 |
*/
|
1863 |
-
public function get_youtube_video_id($url = ''){
|
1864 |
-
if (
|
1865 |
return false;
|
1866 |
}
|
1867 |
-
preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match);
|
1868 |
|
1869 |
-
|
|
|
|
|
1870 |
$youtube_id = $match[1];
|
1871 |
return $youtube_id;
|
1872 |
}
|
@@ -1883,9 +2076,9 @@ class Utils {
|
|
1883 |
*
|
1884 |
* @since v.1.0.0
|
1885 |
*/
|
1886 |
-
public function get_vimeo_video_id($url = ''){
|
1887 |
-
if (preg_match('%^https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)(?:[?]?.*)$%im', $url, $match)) {
|
1888 |
-
if (isset($match[3])){
|
1889 |
return $match[3];
|
1890 |
}
|
1891 |
}
|
@@ -1899,13 +2092,13 @@ class Utils {
|
|
1899 |
*
|
1900 |
* @since v.1.0.0
|
1901 |
*/
|
1902 |
-
public function mark_lesson_complete($post_id = 0, $user_id = 0){
|
1903 |
-
$post_id = $this->get_post_id($post_id);
|
1904 |
-
$user_id = $this->get_user_id($user_id);
|
1905 |
|
1906 |
-
do_action('tutor_mark_lesson_complete_before', $post_id, $user_id);
|
1907 |
-
update_user_meta($user_id, '_tutor_completed_lesson_id_'.$post_id, tutor_time());
|
1908 |
-
do_action('tutor_mark_lesson_complete_after', $post_id, $user_id);
|
1909 |
}
|
1910 |
|
1911 |
/**
|
@@ -1926,26 +2119,25 @@ class Utils {
|
|
1926 |
*
|
1927 |
* @return bool
|
1928 |
*/
|
1929 |
-
|
1930 |
-
|
1931 |
-
if ( ! $course_id){
|
1932 |
return false;
|
1933 |
}
|
1934 |
|
1935 |
-
do_action('tutor_before_enroll', $course_id);
|
1936 |
-
$user_id = $this->get_user_id($user_id);
|
1937 |
-
$title = __('Course Enrolled', 'tutor')." – ".date(get_option('date_format')) .' @ '.date(get_option('time_format') ) ;
|
1938 |
|
1939 |
$enrolment_status = 'completed';
|
1940 |
|
1941 |
-
if ($this->is_course_purchasable($course_id)) {
|
1942 |
/**
|
1943 |
* We need to verify this enrollment, we will change the status later after payment confirmation
|
1944 |
*/
|
1945 |
$enrolment_status = 'pending';
|
1946 |
}
|
1947 |
|
1948 |
-
$enroll_data = apply_filters('tutor_enroll_data',
|
1949 |
array(
|
1950 |
'post_type' => 'tutor_enrolled',
|
1951 |
'post_title' => $title,
|
@@ -1957,22 +2149,22 @@ class Utils {
|
|
1957 |
|
1958 |
// Insert the post into the database
|
1959 |
$isEnrolled = wp_insert_post( $enroll_data );
|
1960 |
-
if ($isEnrolled) {
|
1961 |
|
1962 |
// Run this hook for both of pending and completed enrollment
|
1963 |
-
do_action('tutor_after_enroll', $course_id, $isEnrolled);
|
1964 |
|
1965 |
// Run this hook for completed enrollment regardless of payment provider and free/paid mode
|
1966 |
-
if($enroll_data['post_status'] == 'completed'){
|
1967 |
do_action('tutor_after_enrolled', $course_id, $user_id, $isEnrolled);
|
1968 |
}
|
1969 |
|
1970 |
//Mark Current User as Students with user meta data
|
1971 |
update_user_meta( $user_id, '_is_tutor_student', tutor_time() );
|
1972 |
|
1973 |
-
if ($order_id) {
|
1974 |
//Mark order for course and user
|
1975 |
-
$product_id = $this->get_course_product_id($course_id);
|
1976 |
update_post_meta( $isEnrolled, '_tutor_enrolled_by_order_id', $order_id );
|
1977 |
update_post_meta( $isEnrolled, '_tutor_enrolled_by_product_id', $product_id );
|
1978 |
update_post_meta( $order_id, '_is_tutor_order_for_course', tutor_time() );
|
@@ -1992,52 +2184,49 @@ class Utils {
|
|
1992 |
*
|
1993 |
* @since v.1.6.1
|
1994 |
*/
|
1995 |
-
|
1996 |
-
|
1997 |
-
if ( ! $enrol_id){
|
1998 |
return;
|
1999 |
}
|
2000 |
|
2001 |
global $wpdb;
|
2002 |
|
2003 |
-
do_action('tutor/course/enrol_status_change/before',$enrol_id, $new_status );
|
2004 |
$wpdb->update( $wpdb->posts, array( 'post_status' => $new_status ), array( 'ID' => $enrol_id ) );
|
2005 |
-
do_action('tutor/course/enrol_status_change/after',$enrol_id, $new_status );
|
2006 |
}
|
2007 |
|
2008 |
-
|
2009 |
/**
|
2010 |
* @param int $course_id
|
2011 |
* @param int $user_id
|
2012 |
* @param string $cancel_status
|
2013 |
*/
|
2014 |
-
public function cancel_course_enrol($course_id = 0, $user_id = 0, $cancel_status = 'canceled'){
|
2015 |
-
$course_id = $this->get_post_id($course_id);
|
2016 |
-
$user_id
|
2017 |
-
|
2018 |
-
$enrolled = $this->is_enrolled($course_id, $user_id);
|
2019 |
|
2020 |
-
if ($enrolled){
|
2021 |
global $wpdb;
|
2022 |
|
2023 |
-
if ($cancel_status === 'delete'){
|
2024 |
-
$wpdb->delete($wpdb->posts, array('post_type' => 'tutor_enrolled', 'post_author' => $user_id, 'post_parent' => $course_id));
|
2025 |
|
2026 |
//Delete Related Meta Data
|
2027 |
-
delete_post_meta($enrolled->ID, '_tutor_enrolled_by_product_id');
|
2028 |
-
$order_id = get_post_meta($enrolled->ID, '_tutor_enrolled_by_order_id', true);
|
2029 |
-
if ($order_id){
|
2030 |
-
delete_post_meta($enrolled->ID, '_tutor_enrolled_by_order_id');
|
2031 |
-
delete_post_meta($order_id, '_is_tutor_order_for_course');
|
2032 |
-
delete_post_meta($order_id, '_tutor_order_for_course_id_'.$course_id);
|
2033 |
|
2034 |
-
do_action('tutor_enrollment/after/delete', $enrolled->ID);
|
2035 |
}
|
2036 |
-
}else{
|
2037 |
-
$wpdb->update($wpdb->posts, array('post_status' => $cancel_status), array('post_type' => 'tutor_enrolled', 'post_author' => $user_id, 'post_parent' => $course_id) );
|
2038 |
|
2039 |
-
if ($cancel_status === 'cancel'){
|
2040 |
-
do_action('tutor_enrollment/after/cancel', $enrolled->ID);
|
2041 |
}
|
2042 |
}
|
2043 |
}
|
@@ -2050,19 +2239,19 @@ class Utils {
|
|
2050 |
*
|
2051 |
* @since v.1.0.0
|
2052 |
*/
|
2053 |
-
public function complete_course_enroll($order_id){
|
2054 |
-
if ( ! tutor_utils()->is_tutor_order($order_id)){
|
2055 |
return;
|
2056 |
}
|
2057 |
|
2058 |
global $wpdb;
|
2059 |
|
2060 |
-
$enrolled_ids_with_course = $this->get_course_enrolled_ids_by_order_id($order_id);
|
2061 |
-
if ($enrolled_ids_with_course){
|
2062 |
-
$enrolled_ids = wp_list_pluck($enrolled_ids_with_course, 'enrolled_id');
|
2063 |
|
2064 |
-
if (is_array($enrolled_ids) && count($enrolled_ids)){
|
2065 |
-
foreach ($enrolled_ids as $enrolled_id){
|
2066 |
$wpdb->update( $wpdb->posts, array( 'post_status' => 'completed' ), array( 'ID' => $enrolled_id ) );
|
2067 |
}
|
2068 |
}
|
@@ -2076,18 +2265,28 @@ class Utils {
|
|
2076 |
*
|
2077 |
* @since v.1.0.0
|
2078 |
*/
|
2079 |
-
public function get_course_enrolled_ids_by_order_id($order_id){
|
2080 |
global $wpdb;
|
2081 |
-
//Getting all of courses ids within this order
|
2082 |
-
|
2083 |
-
$courses_ids = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->postmeta} WHERE post_id = %d AND meta_key LIKE '_tutor_order_for_course_id_%' ", $order_id));
|
2084 |
|
2085 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2086 |
$course_enrolled_by_order = array();
|
2087 |
-
foreach ($courses_ids as $courses_id){
|
2088 |
-
$course_id = str_replace('_tutor_order_for_course_id_', '',$courses_id->meta_key);
|
2089 |
-
|
2090 |
-
|
|
|
|
|
|
|
2091 |
}
|
2092 |
return $course_enrolled_by_order;
|
2093 |
}
|
@@ -2105,9 +2304,18 @@ class Utils {
|
|
2105 |
*
|
2106 |
* WooCommerce specific utils
|
2107 |
*/
|
2108 |
-
public function get_wc_products_db(){
|
2109 |
global $wpdb;
|
2110 |
-
$query = $wpdb->get_results(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2111 |
|
2112 |
return $query;
|
2113 |
}
|
@@ -2117,9 +2325,18 @@ class Utils {
|
|
2117 |
*
|
2118 |
* Get EDD Products
|
2119 |
*/
|
2120 |
-
public function get_edd_products(){
|
2121 |
global $wpdb;
|
2122 |
-
$query = $wpdb->get_results(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2123 |
|
2124 |
return $query;
|
2125 |
}
|
@@ -2133,9 +2350,9 @@ class Utils {
|
|
2133 |
*
|
2134 |
* @since v.1.0.0
|
2135 |
*/
|
2136 |
-
public function get_course_product_id($course_id = 0){
|
2137 |
-
$course_id
|
2138 |
-
$product_id =
|
2139 |
|
2140 |
return $product_id;
|
2141 |
}
|
@@ -2149,11 +2366,19 @@ class Utils {
|
|
2149 |
*
|
2150 |
* @since v.1.0.0
|
2151 |
*/
|
2152 |
-
|
2153 |
-
public function product_belongs_with_course($product_id = 0){
|
2154 |
global $wpdb;
|
2155 |
|
2156 |
-
$query = $wpdb->get_row($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2157 |
|
2158 |
return $query;
|
2159 |
}
|
@@ -2163,8 +2388,7 @@ class Utils {
|
|
2163 |
*
|
2164 |
* @since v.1.0.0
|
2165 |
*/
|
2166 |
-
|
2167 |
-
public function get_enrolled_statuses(){
|
2168 |
return apply_filters(
|
2169 |
'tutor_get_enrolled_statuses',
|
2170 |
array (
|
@@ -2188,8 +2412,8 @@ class Utils {
|
|
2188 |
*
|
2189 |
* @since v.1.0.0
|
2190 |
*/
|
2191 |
-
public function is_tutor_order($order_id){
|
2192 |
-
return get_post_meta($order_id, '_is_tutor_order_for_course', true);
|
2193 |
}
|
2194 |
|
2195 |
/**
|
@@ -2197,8 +2421,8 @@ class Utils {
|
|
2197 |
*
|
2198 |
* @deprecated
|
2199 |
*/
|
2200 |
-
public function tutor_student_dashboard_pages(){
|
2201 |
-
_deprecated_function(__METHOD__, '1.1.2', 'tutor_dashboard_pages');
|
2202 |
return $this->tutor_dashboard_pages();
|
2203 |
}
|
2204 |
|
@@ -2209,54 +2433,53 @@ class Utils {
|
|
2209 |
*
|
2210 |
* @since v.1.0.0
|
2211 |
*/
|
2212 |
-
|
2213 |
-
|
2214 |
-
|
2215 |
-
'
|
2216 |
-
'
|
2217 |
-
'
|
2218 |
-
'
|
2219 |
-
'
|
2220 |
-
'
|
2221 |
-
'purchase_history' => __('Purchase History', 'tutor'),
|
2222 |
));
|
2223 |
|
2224 |
-
$instructor_nav_items = apply_filters('tutor_dashboard/instructor_nav_items', array(
|
2225 |
-
'separator-1' => array('title' => __('Instructor', 'tutor'), 'auth_cap' => tutor()->instructor_role, 'type' => 'separator'),
|
2226 |
-
'create-course' => array('title' => __('Create Course', 'tutor'), 'show_ui' => false, 'auth_cap' => tutor()->instructor_role),
|
2227 |
-
'my-courses' => array('title' => __('My Courses', 'tutor'), 'auth_cap' => tutor()->instructor_role),
|
2228 |
-
'announcements' => array('title' => __('Announcements', 'tutor'), 'auth_cap' => tutor()->instructor_role),
|
2229 |
-
'earning' => array('title' => __('Earnings', 'tutor'), 'auth_cap' => tutor()->instructor_role),
|
2230 |
-
'withdraw' => array('title' => __('Withdrawals', 'tutor'), 'auth_cap' => tutor()->instructor_role),
|
2231 |
-
'quiz-attempts' => array('title' => __('Quiz Attempts', 'tutor'), 'auth_cap' => tutor()->instructor_role),
|
2232 |
-
'question-answer' => array('title' => __('Question & Answer', 'tutor'), 'auth_cap' => tutor()->instructor_role),
|
2233 |
));
|
2234 |
|
2235 |
-
$disable = get_tutor_option('disable_course_review');
|
2236 |
-
if ($disable && isset($nav_items['reviews'])){
|
2237 |
-
unset($nav_items['reviews']);
|
2238 |
}
|
2239 |
|
2240 |
-
$nav_items = array_merge($nav_items, $instructor_nav_items);
|
2241 |
|
2242 |
-
$new_navs = apply_filters('tutor_dashboard/bottom_nav_items', array(
|
2243 |
-
'separator-2' => array('title' => '', 'type' => 'separator'),
|
2244 |
-
'settings' => __('Settings', 'tutor'),
|
2245 |
-
'logout' => __('Logout', 'tutor'),
|
2246 |
));
|
2247 |
-
$all_nav_items = array_merge($nav_items, $new_navs);
|
2248 |
|
2249 |
-
return apply_filters('tutor_dashboard/nav_items_all', $all_nav_items);
|
2250 |
}
|
2251 |
|
2252 |
-
public function tutor_dashboard_permalinks(){
|
2253 |
$dashboard_pages = $this->tutor_dashboard_pages();
|
2254 |
|
2255 |
-
$dashboard_permalinks = apply_filters('tutor_dashboard/permalinks', array(
|
2256 |
-
'retrieve-password' => array('title' => __('Retrieve Password', 'tutor'), 'login_require' => false),
|
2257 |
));
|
2258 |
|
2259 |
-
$dashboard_pages = array_merge($dashboard_pages, $dashboard_permalinks);
|
2260 |
|
2261 |
return $dashboard_pages;
|
2262 |
}
|
@@ -2265,21 +2488,21 @@ class Utils {
|
|
2265 |
* @return mixed
|
2266 |
*
|
2267 |
* Tutor Dashboard UI nav, only for using in the nav, it's handling user permission based
|
2268 |
-
*
|
2269 |
*
|
2270 |
* @since v.1.3.4
|
2271 |
*/
|
2272 |
-
public function tutor_dashboard_nav_ui_items(){
|
2273 |
$nav_items = $this->tutor_dashboard_pages();
|
2274 |
|
2275 |
-
foreach ($nav_items as $key => $nav_item){
|
2276 |
-
if (is_array($nav_item)){
|
2277 |
|
2278 |
-
if ( isset($nav_item['show_ui']) && ! tutor_utils()->array_get('show_ui', $nav_item)){
|
2279 |
-
unset($nav_items[$key]);
|
2280 |
}
|
2281 |
-
if (
|
2282 |
-
unset($nav_items[$key]);
|
2283 |
}
|
2284 |
}
|
2285 |
}
|
@@ -2297,14 +2520,14 @@ class Utils {
|
|
2297 |
*
|
2298 |
* @since v.1.0.0
|
2299 |
*/
|
2300 |
-
public function get_tutor_dashboard_page_permalink($page_key = '', $page_id = 0){
|
2301 |
-
if ($page_key === 'index'){
|
2302 |
$page_key = '';
|
2303 |
}
|
2304 |
-
if ( ! $page_id){
|
2305 |
-
$page_id = (int) tutils()->get_option('tutor_dashboard_page_id');
|
2306 |
}
|
2307 |
-
return trailingslashit(get_permalink($page_id))
|
2308 |
}
|
2309 |
|
2310 |
/**
|
@@ -2317,14 +2540,15 @@ class Utils {
|
|
2317 |
* @since v.1.0.0
|
2318 |
* @updated v.1.4.2
|
2319 |
*/
|
2320 |
-
public function input_old($input = '', $old_data = null){
|
2321 |
-
if ( ! $old_data){
|
2322 |
$old_data = $_REQUEST;
|
2323 |
}
|
2324 |
-
$value = $this->avalue_dot($input, $old_data);
|
2325 |
-
if ($value){
|
2326 |
return $value;
|
2327 |
}
|
|
|
2328 |
return '';
|
2329 |
}
|
2330 |
|
@@ -2337,9 +2561,9 @@ class Utils {
|
|
2337 |
*
|
2338 |
* @since v.1.0.0
|
2339 |
*/
|
2340 |
-
public function is_instructor($user_id = 0){
|
2341 |
-
$user_id = $this->get_user_id($user_id);
|
2342 |
-
return get_user_meta($user_id, '_is_tutor_instructor', true);
|
2343 |
}
|
2344 |
|
2345 |
/**
|
@@ -2352,19 +2576,19 @@ class Utils {
|
|
2352 |
*
|
2353 |
* @since v.1.0.0
|
2354 |
*/
|
2355 |
-
public function instructor_status($user_id = 0, $status_name = true){
|
2356 |
-
$user_id = $this->get_user_id($user_id);
|
2357 |
|
2358 |
-
$instructor_status = apply_filters('tutor_instructor_statuses', array(
|
2359 |
-
'pending'
|
2360 |
-
'approved' => __('Approved', 'tutor'),
|
2361 |
-
'blocked'
|
2362 |
));
|
2363 |
|
2364 |
-
$status = get_user_meta($user_id, '_tutor_instructor_status', true);
|
2365 |
|
2366 |
-
if (isset($instructor_status[$status])){
|
2367 |
-
if ( ! $status_name){
|
2368 |
return $status;
|
2369 |
}
|
2370 |
return $instructor_status[$status];
|
@@ -2381,17 +2605,23 @@ class Utils {
|
|
2381 |
*
|
2382 |
* @since v.1.0.0
|
2383 |
*/
|
2384 |
-
|
2385 |
-
public function get_total_instructors($search_term = ''){
|
2386 |
-
$meta_key = '_is_tutor_instructor';
|
2387 |
-
|
2388 |
global $wpdb;
|
2389 |
|
2390 |
-
|
2391 |
-
|
2392 |
-
|
2393 |
-
|
2394 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2395 |
|
2396 |
return (int) $count;
|
2397 |
}
|
@@ -2407,28 +2637,40 @@ class Utils {
|
|
2407 |
*
|
2408 |
* @since v.1.0.0
|
2409 |
*/
|
2410 |
-
public function get_instructors($start = 0, $limit = 10, $search_term = '', $status=null){
|
2411 |
-
$meta_key = '_is_tutor_instructor';
|
2412 |
global $wpdb;
|
2413 |
|
2414 |
-
|
2415 |
-
$search_term = " AND ( {$wpdb->users}.display_name LIKE '%{$search_term}%' OR {$wpdb->users}.user_email LIKE '%{$search_term}%' ) ";
|
2416 |
-
}
|
2417 |
|
2418 |
-
if($status){
|
2419 |
-
!is_array($status) ? $status=array($status) : 0;
|
2420 |
-
|
2421 |
-
$status =
|
2422 |
-
|
2423 |
-
|
|
|
|
|
2424 |
}
|
2425 |
|
2426 |
-
$instructors = $wpdb->get_results(
|
2427 |
-
|
2428 |
-
|
2429 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2430 |
ORDER BY {$wpdb->usermeta}.meta_value DESC
|
2431 |
-
LIMIT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2432 |
|
2433 |
return $instructors;
|
2434 |
}
|
@@ -2442,23 +2684,40 @@ class Utils {
|
|
2442 |
*
|
2443 |
* @since v.1.0.0
|
2444 |
*/
|
2445 |
-
public function get_instructors_by_course($course_id = 0){
|
2446 |
global $wpdb;
|
2447 |
-
$course_id = $this->get_post_id($course_id);
|
2448 |
-
|
2449 |
-
$instructors = $wpdb->get_results(
|
2450 |
-
|
2451 |
-
|
2452 |
-
|
2453 |
-
|
2454 |
-
|
2455 |
-
|
2456 |
-
|
2457 |
-
|
2458 |
-
|
2459 |
-
|
2460 |
-
|
2461 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2462 |
return $instructors;
|
2463 |
}
|
2464 |
|
@@ -2475,19 +2734,29 @@ class Utils {
|
|
2475 |
*
|
2476 |
* @since v.1.0.0
|
2477 |
*/
|
2478 |
-
|
2479 |
-
public function get_total_students_by_instructor($instructor_id){
|
2480 |
global $wpdb;
|
2481 |
|
2482 |
$course_post_type = tutor()->course_post_type;
|
2483 |
-
|
2484 |
-
|
2485 |
-
|
2486 |
-
|
2487 |
-
|
2488 |
-
|
2489 |
-
|
2490 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2491 |
|
2492 |
return (int) $count;
|
2493 |
}
|
@@ -2501,23 +2770,24 @@ class Utils {
|
|
2501 |
*
|
2502 |
* @since v.1.0.0
|
2503 |
*/
|
2504 |
-
public function get_rating_value($input = 0.00){
|
2505 |
|
2506 |
-
if ( $input > 0){
|
2507 |
-
$input = number_format($input, 2);
|
2508 |
$int_value = (int) $input;
|
2509 |
$fraction = $input - $int_value;
|
2510 |
|
2511 |
-
if ($fraction == 0){
|
2512 |
$fraction = 0.00;
|
2513 |
-
}elseif($fraction > 0.5){
|
2514 |
$fraction = 1;
|
2515 |
-
}else{
|
2516 |
$fraction = 0.5;
|
2517 |
}
|
2518 |
|
2519 |
-
return number_format( ($int_value + $fraction), 2);
|
2520 |
}
|
|
|
2521 |
return 0.00;
|
2522 |
}
|
2523 |
|
@@ -2531,18 +2801,18 @@ class Utils {
|
|
2531 |
*
|
2532 |
* @since v.1.0.0
|
2533 |
*/
|
2534 |
-
public function star_rating_generator($current_rating = 0.00, $echo = true){
|
2535 |
$output = '<div class="tutor-star-rating-group">';
|
2536 |
|
2537 |
-
for ($i = 1; $i <=5 ; $i++){
|
2538 |
$intRating = (int) $current_rating;
|
2539 |
|
2540 |
-
if ($intRating >= $i){
|
2541 |
$output.= '<i class="tutor-icon-star-full" data-rating-value="'.$i.'"></i>';
|
2542 |
-
} else{
|
2543 |
-
if ( ($current_rating - $i) == -0.5){
|
2544 |
$output.= '<i class="tutor-icon-star-half" data-rating-value="'.$i.'"></i>';
|
2545 |
-
}else{
|
2546 |
$output.= '<i class="tutor-icon-star-line" data-rating-value="'.$i.'"></i>';
|
2547 |
}
|
2548 |
}
|
@@ -2552,13 +2822,13 @@ class Utils {
|
|
2552 |
|
2553 |
$output .= "</div>";
|
2554 |
|
2555 |
-
if ($echo){
|
2556 |
echo $output;
|
2557 |
}
|
|
|
2558 |
return $output;
|
2559 |
}
|
2560 |
|
2561 |
-
|
2562 |
/**
|
2563 |
* @param $string
|
2564 |
*
|
@@ -2568,12 +2838,12 @@ class Utils {
|
|
2568 |
*
|
2569 |
*
|
2570 |
*/
|
2571 |
-
public function str_split
|
2572 |
-
$strlen = mb_strlen($string);
|
2573 |
-
while ($strlen) {
|
2574 |
-
$array[] = mb_substr($string,0,1,"UTF-8");
|
2575 |
-
$string = mb_substr($string,1,$strlen,"UTF-8");
|
2576 |
-
$strlen = mb_strlen($string);
|
2577 |
}
|
2578 |
return $array;
|
2579 |
}
|
@@ -2587,26 +2857,26 @@ class Utils {
|
|
2587 |
*
|
2588 |
* @since v.1.0.0
|
2589 |
*/
|
2590 |
-
public function get_tutor_avatar($user_id = null, $size = 'thumbnail'){
|
2591 |
global $wpdb;
|
2592 |
|
2593 |
-
if ( ! $user_id){
|
2594 |
return '';
|
2595 |
}
|
2596 |
|
2597 |
-
$user = $this->get_tutor_user($user_id);
|
2598 |
-
if ($user->tutor_profile_photo){
|
2599 |
-
return '<img src="'.wp_get_attachment_image_url($user->tutor_profile_photo, $size).'" class="tutor-image-avatar" alt="" /> ';
|
2600 |
}
|
2601 |
|
2602 |
$name = $user->display_name;
|
2603 |
-
$arr = explode(' ', trim($name));
|
2604 |
|
2605 |
-
$first_char = !empty($arr[0]) ? $this->str_split($arr[0])[0] : '';
|
2606 |
-
$second_char = !empty($arr[1]) ? $this->str_split($arr[1])[0] : '';
|
2607 |
-
$initial_avatar = strtoupper($first_char.$second_char);
|
2608 |
|
2609 |
-
$bg_color = '#'.substr(md5($initial_avatar), 0, 6);
|
2610 |
$initial_avatar = "<span class='tutor-text-avatar' style='background-color: {$bg_color}; color: #fff8e5'>{$initial_avatar}</span>";
|
2611 |
|
2612 |
return $initial_avatar;
|
@@ -2621,21 +2891,29 @@ class Utils {
|
|
2621 |
*
|
2622 |
* @since v.1.0.0
|
2623 |
*/
|
2624 |
-
|
2625 |
-
public function get_tutor_user($user_id){
|
2626 |
global $wpdb;
|
2627 |
|
2628 |
-
$user = $wpdb->get_row($wpdb->prepare(
|
2629 |
-
|
2630 |
-
|
2631 |
-
|
2632 |
-
|
2633 |
-
|
2634 |
-
|
2635 |
-
|
2636 |
-
|
2637 |
-
|
2638 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2639 |
|
2640 |
return $user;
|
2641 |
}
|
@@ -2651,8 +2929,8 @@ class Utils {
|
|
2651 |
*
|
2652 |
* @since v.1.0.0
|
2653 |
*/
|
2654 |
-
public function get_course_reviews($course_id = 0, $offset = 0, $limit = 150){
|
2655 |
-
$course_id = $this->get_post_id($course_id);
|
2656 |
global $wpdb;
|
2657 |
|
2658 |
$reviews = $wpdb->get_results($wpdb->prepare("select {$wpdb->comments}.comment_ID,
|
@@ -2685,75 +2963,63 @@ class Utils {
|
|
2685 |
*
|
2686 |
* @since v.1.0.0
|
2687 |
*/
|
2688 |
-
public function get_course_rating($course_id = 0){
|
2689 |
-
|
|
|
2690 |
|
2691 |
$ratings = array(
|
2692 |
-
'rating_count'
|
2693 |
-
'rating_sum'
|
2694 |
-
'rating_avg'
|
2695 |
-
'count_by_value'
|
2696 |
);
|
2697 |
|
2698 |
-
|
2699 |
-
|
2700 |
-
|
2701 |
-
|
2702 |
-
|
2703 |
-
|
2704 |
-
WHERE
|
2705 |
-
|
2706 |
-
|
2707 |
-
|
2708 |
-
|
2709 |
-
|
2710 |
-
|
2711 |
-
|
2712 |
-
|
2713 |
-
|
2714 |
-
$
|
2715 |
-
|
2716 |
-
|
2717 |
-
|
2718 |
-
|
2719 |
-
|
2720 |
-
|
2721 |
-
|
2722 |
-
|
2723 |
-
|
2724 |
-
|
2725 |
-
|
2726 |
-
|
2727 |
-
|
2728 |
-
|
2729 |
-
|
2730 |
-
|
2731 |
-
|
2732 |
-
|
2733 |
-
|
2734 |
-
|
2735 |
-
|
2736 |
-
|
2737 |
-
INNER JOIN {$wpdb->commentmeta} ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
2738 |
-
WHERE {$wpdb->comments}.comment_post_ID = {$course_id}
|
2739 |
-
AND {$wpdb->comments}.comment_type = 'tutor_course_rating'
|
2740 |
-
AND meta_key = 'tutor_rating' AND meta_value = 2 ;"
|
2741 |
-
);
|
2742 |
-
$one_stars_count = $wpdb->get_var("SELECT COUNT(meta_value) as rating_count
|
2743 |
-
from {$wpdb->comments}
|
2744 |
-
INNER JOIN {$wpdb->commentmeta} ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
2745 |
-
WHERE {$wpdb->comments}.comment_post_ID = {$course_id}
|
2746 |
-
AND {$wpdb->comments}.comment_type = 'tutor_course_rating'
|
2747 |
-
AND meta_key = 'tutor_rating' AND meta_value = 1 ;"
|
2748 |
-
);
|
2749 |
|
2750 |
$ratings = array(
|
2751 |
-
'rating_count'
|
2752 |
-
'rating_sum'
|
2753 |
-
'rating_avg'
|
2754 |
-
'count_by_value'
|
2755 |
);
|
2756 |
-
|
2757 |
}
|
2758 |
|
2759 |
return (object) $ratings;
|
@@ -2770,27 +3036,38 @@ class Utils {
|
|
2770 |
*
|
2771 |
* @since v.1.0.0
|
2772 |
*/
|
2773 |
-
public function get_reviews_by_user($user_id = 0, $offset = 0, $limit = 150){
|
2774 |
-
$user_id = $this->get_user_id($user_id);
|
2775 |
global $wpdb;
|
2776 |
|
2777 |
-
$reviews = $wpdb->get_results($wpdb->prepare(
|
2778 |
-
{$wpdb->comments}.
|
2779 |
-
|
2780 |
-
|
2781 |
-
|
2782 |
-
|
2783 |
-
|
2784 |
-
|
2785 |
-
|
|
|
2786 |
|
2787 |
-
|
2788 |
-
|
2789 |
-
|
2790 |
-
|
2791 |
-
|
2792 |
-
WHERE
|
2793 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2794 |
|
2795 |
return $reviews;
|
2796 |
}
|
@@ -2806,9 +3083,8 @@ class Utils {
|
|
2806 |
*
|
2807 |
* @since v.1.4.0
|
2808 |
*/
|
2809 |
-
|
2810 |
-
|
2811 |
-
$instructor_id = $this->get_user_id($instructor_id);
|
2812 |
global $wpdb;
|
2813 |
|
2814 |
$results = array(
|
@@ -2816,39 +3092,55 @@ class Utils {
|
|
2816 |
'results' => false,
|
2817 |
);
|
2818 |
|
2819 |
-
$cours_ids = (array) $this->get_assigned_courses_ids_by_instructors($instructor_id);
|
2820 |
|
2821 |
-
if ($this->count($cours_ids)){
|
2822 |
$implode_ids = implode( ',', $cours_ids );
|
2823 |
|
2824 |
//Count
|
2825 |
-
$results['count'] = $wpdb->get_var(
|
2826 |
-
|
2827 |
-
|
2828 |
-
|
2829 |
-
|
2830 |
-
|
2831 |
-
|
2832 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2833 |
|
2834 |
//Results
|
2835 |
-
$results['results'] = $wpdb->get_results(
|
2836 |
-
|
2837 |
-
|
2838 |
-
|
2839 |
-
|
2840 |
-
|
2841 |
-
|
2842 |
-
|
2843 |
-
|
|
|
2844 |
|
2845 |
-
|
2846 |
-
|
2847 |
-
|
2848 |
-
|
2849 |
-
|
2850 |
-
|
2851 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2852 |
}
|
2853 |
|
2854 |
return (object) $results;
|
@@ -2863,7 +3155,7 @@ class Utils {
|
|
2863 |
*
|
2864 |
* @since v.1.0.0
|
2865 |
*/
|
2866 |
-
public function get_instructor_ratings($instructor_id){
|
2867 |
global $wpdb;
|
2868 |
|
2869 |
$ratings = array(
|
@@ -2872,14 +3164,24 @@ class Utils {
|
|
2872 |
'rating_avg' => 0.00,
|
2873 |
);
|
2874 |
|
2875 |
-
$rating = $wpdb->get_row($wpdb->prepare(
|
2876 |
-
|
2877 |
-
|
2878 |
-
|
2879 |
-
|
2880 |
-
|
2881 |
-
|
2882 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2883 |
|
2884 |
$ratings = array(
|
2885 |
'rating_count' => $rating->rating_count,
|
@@ -2901,32 +3203,41 @@ class Utils {
|
|
2901 |
*
|
2902 |
* @since v.1.0.0
|
2903 |
*/
|
2904 |
-
public function get_course_rating_by_user($course_id = 0, $user_id = 0){
|
2905 |
-
|
2906 |
-
|
|
|
|
|
2907 |
|
2908 |
$ratings = array(
|
2909 |
-
'rating'
|
2910 |
-
'review'
|
2911 |
);
|
2912 |
|
2913 |
-
|
2914 |
-
|
2915 |
-
|
2916 |
-
|
2917 |
-
|
2918 |
-
|
2919 |
-
WHERE
|
2920 |
-
|
2921 |
-
|
2922 |
-
|
2923 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
2924 |
|
2925 |
$ratings = array(
|
2926 |
-
'rating'
|
2927 |
-
'review'
|
2928 |
);
|
2929 |
}
|
|
|
2930 |
return (object) $ratings;
|
2931 |
}
|
2932 |
|
@@ -2937,11 +3248,21 @@ class Utils {
|
|
2937 |
*
|
2938 |
* @since v.1.0.0
|
2939 |
*/
|
2940 |
-
public function count_reviews_wrote_by_user($user_id = 0){
|
2941 |
global $wpdb;
|
|
|
2942 |
$user_id = $this->get_user_id($user_id);
|
2943 |
|
2944 |
-
$count_reviews = $wpdb->get_var(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2945 |
return $count_reviews;
|
2946 |
}
|
2947 |
|
@@ -2954,7 +3275,6 @@ class Utils {
|
|
2954 |
*
|
2955 |
* @since v.1.0.0
|
2956 |
*/
|
2957 |
-
|
2958 |
function let_to_num( $size ) {
|
2959 |
$l = substr( $size, -1 );
|
2960 |
$ret = substr( $size, 0, -1 );
|
@@ -3009,7 +3329,7 @@ class Utils {
|
|
3009 |
);
|
3010 |
}
|
3011 |
|
3012 |
-
public function help_tip($tip = ''){
|
3013 |
return '<span class="tutor-help-tip" data-tip="' . $tip . '"></span>';
|
3014 |
}
|
3015 |
|
@@ -3025,39 +3345,40 @@ class Utils {
|
|
3025 |
*
|
3026 |
* @since v.1.0.0
|
3027 |
*/
|
3028 |
-
public function get_top_question($course_id = 0, $user_id = 0, $offset = 0, $limit = 20, $is_author = false ){
|
3029 |
-
$course_id = $this->get_post_id($course_id);
|
3030 |
-
$user_id = $this->get_user_id($user_id);
|
3031 |
-
|
3032 |
global $wpdb;
|
|
|
|
|
|
|
|
|
3033 |
$author_sql = $is_author ? "" : "AND {$wpdb->comments}.user_id = {$user_id}";
|
3034 |
|
3035 |
-
$questions = $wpdb->get_results(
|
3036 |
-
"SELECT
|
3037 |
-
|
3038 |
-
|
3039 |
-
|
3040 |
-
|
3041 |
-
|
3042 |
-
|
3043 |
-
|
3044 |
-
|
3045 |
-
|
3046 |
-
|
3047 |
-
|
3048 |
-
|
3049 |
-
|
3050 |
-
WHERE
|
3051 |
-
|
3052 |
-
|
3053 |
-
|
3054 |
-
|
3055 |
-
|
3056 |
-
|
3057 |
-
|
3058 |
-
|
3059 |
-
|
3060 |
-
);
|
3061 |
|
3062 |
return $questions;
|
3063 |
}
|
@@ -3071,24 +3392,42 @@ class Utils {
|
|
3071 |
*
|
3072 |
* @since v.1.0.0
|
3073 |
*/
|
3074 |
-
public function get_total_qa_question($search_term = ''){
|
3075 |
global $wpdb;
|
3076 |
|
3077 |
-
|
3078 |
-
$search_term = " AND {$wpdb->commentmeta}.meta_value LIKE '%{$search_term}%' ";
|
3079 |
-
}
|
3080 |
-
|
3081 |
-
$user_id = get_current_user_id();
|
3082 |
$course_type = tutor()->course_post_type;
|
|
|
3083 |
|
3084 |
$in_question_id_query = '';
|
3085 |
/**
|
3086 |
* Get only assinged courses questions if current user is a
|
3087 |
*/
|
3088 |
-
if ( ! current_user_can('administrator') && current_user_can(tutor()->instructor_role)) {
|
3089 |
-
|
3090 |
-
$
|
3091 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3092 |
|
3093 |
if ( $this->count( $my_course_ids ) ) {
|
3094 |
$implode_ids = implode( ',', $my_course_ids );
|
@@ -3096,17 +3435,18 @@ class Utils {
|
|
3096 |
}
|
3097 |
}
|
3098 |
|
3099 |
-
$count = $wpdb->get_var(
|
3100 |
-
"SELECT
|
3101 |
-
|
3102 |
-
|
3103 |
-
|
3104 |
-
|
3105 |
-
|
3106 |
-
|
3107 |
-
|
3108 |
-
|
3109 |
-
|
|
|
3110 |
|
3111 |
return (int) $count;
|
3112 |
}
|
@@ -3123,24 +3463,42 @@ class Utils {
|
|
3123 |
*
|
3124 |
* @since v.1.0.0
|
3125 |
*/
|
3126 |
-
public function get_qa_questions($start = 0, $limit = 10, $search_term = '') {
|
3127 |
global $wpdb;
|
3128 |
|
3129 |
-
|
3130 |
-
$search_term = " AND {$wpdb->commentmeta}.meta_value LIKE '%{$search_term}%' ";
|
3131 |
-
}
|
3132 |
-
|
3133 |
-
$user_id = get_current_user_id();
|
3134 |
$course_type = tutor()->course_post_type;
|
|
|
3135 |
|
3136 |
$in_question_id_query = '';
|
3137 |
/**
|
3138 |
* Get only assinged courses questions if current user is a
|
3139 |
*/
|
3140 |
-
if ( ! current_user_can('administrator') && current_user_can(tutor()->instructor_role)) {
|
3141 |
-
|
3142 |
-
$
|
3143 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3144 |
|
3145 |
if ( $this->count( $my_course_ids ) ) {
|
3146 |
$implode_ids = implode( ',', $my_course_ids );
|
@@ -3148,40 +3506,39 @@ class Utils {
|
|
3148 |
}
|
3149 |
}
|
3150 |
|
3151 |
-
$query = $wpdb->get_results(
|
3152 |
-
"SELECT
|
3153 |
-
|
3154 |
-
|
3155 |
-
|
3156 |
-
|
3157 |
-
|
3158 |
-
|
3159 |
-
|
3160 |
-
|
3161 |
-
|
3162 |
-
|
3163 |
-
|
3164 |
-
|
3165 |
-
|
3166 |
-
{$wpdb
|
3167 |
-
|
3168 |
-
|
3169 |
-
|
3170 |
-
|
3171 |
-
|
3172 |
-
|
3173 |
-
|
3174 |
-
|
3175 |
-
|
3176 |
-
|
3177 |
-
|
3178 |
-
|
3179 |
-
|
3180 |
-
|
3181 |
-
|
3182 |
-
|
3183 |
-
|
3184 |
-
);
|
3185 |
|
3186 |
return $query;
|
3187 |
}
|
@@ -3195,30 +3552,32 @@ class Utils {
|
|
3195 |
*
|
3196 |
* @since v.1.0.0
|
3197 |
*/
|
3198 |
-
public function get_qa_question($question_id){
|
3199 |
global $wpdb;
|
3200 |
-
$query = $wpdb->get_row(
|
3201 |
-
"SELECT
|
3202 |
-
|
3203 |
-
|
3204 |
-
|
3205 |
-
|
3206 |
-
|
3207 |
-
|
3208 |
-
|
3209 |
-
|
3210 |
-
|
3211 |
-
|
3212 |
-
|
3213 |
-
|
3214 |
-
|
3215 |
-
|
3216 |
-
|
3217 |
-
|
3218 |
-
|
3219 |
-
|
3220 |
-
"
|
3221 |
-
|
|
|
|
|
3222 |
|
3223 |
return $query;
|
3224 |
}
|
@@ -3230,29 +3589,28 @@ class Utils {
|
|
3230 |
*
|
3231 |
* Get question and asnwer by question
|
3232 |
*/
|
3233 |
-
public function get_qa_answer_by_question($question_id){
|
3234 |
global $wpdb;
|
3235 |
-
$query = $wpdb->get_results(
|
3236 |
-
"SELECT
|
3237 |
-
|
3238 |
-
|
3239 |
-
|
3240 |
-
|
3241 |
-
|
3242 |
-
|
3243 |
-
|
3244 |
-
|
3245 |
-
|
3246 |
-
|
3247 |
-
|
3248 |
-
|
3249 |
-
|
3250 |
-
|
3251 |
-
|
3252 |
-
|
3253 |
-
|
3254 |
-
|
3255 |
-
);
|
3256 |
|
3257 |
return $query;
|
3258 |
}
|
@@ -3266,25 +3624,29 @@ class Utils {
|
|
3266 |
*
|
3267 |
* Get question and asnwer by answer_id
|
3268 |
*/
|
3269 |
-
public function get_qa_answer_by_answer_id($answer_id) {
|
3270 |
global $wpdb;
|
3271 |
-
$answer = $wpdb->get_row($wpdb->prepare(
|
3272 |
"SELECT answer.comment_post_ID,
|
3273 |
answer.comment_content,
|
3274 |
users.display_name,
|
3275 |
question.user_id AS question_by,
|
3276 |
question.comment_content AS question,
|
3277 |
question_meta.meta_value AS question_title
|
3278 |
-
FROM {$wpdb
|
3279 |
-
INNER JOIN {$wpdb
|
3280 |
ON answer.user_id = users.id
|
3281 |
-
INNER JOIN {$wpdb
|
3282 |
ON answer.comment_parent = question.comment_ID
|
3283 |
-
INNER JOIN {$wpdb
|
3284 |
ON answer.comment_parent = question_meta.comment_id
|
3285 |
-
|
3286 |
WHERE answer.comment_ID = %d
|
3287 |
-
AND answer.comment_type =
|
|
|
|
|
|
|
|
|
3288 |
|
3289 |
if ( $answer ) {
|
3290 |
return $answer;
|
@@ -3293,21 +3655,23 @@ class Utils {
|
|
3293 |
return false;
|
3294 |
}
|
3295 |
|
3296 |
-
public function unanswered_question_count(){
|
3297 |
global $wpdb;
|
3298 |
-
$count = $wpdb->get_var(
|
3299 |
-
"SELECT
|
3300 |
-
|
3301 |
-
|
3302 |
-
|
3303 |
-
|
3304 |
-
|
3305 |
-
WHERE
|
3306 |
-
|
3307 |
-
|
3308 |
-
|
3309 |
-
|
3310 |
-
|
|
|
|
|
3311 |
return (int) $count;
|
3312 |
}
|
3313 |
|
@@ -3320,27 +3684,26 @@ class Utils {
|
|
3320 |
*
|
3321 |
* @since v.1.0.0
|
3322 |
*/
|
3323 |
-
public function get_announcements($course_id = 0){
|
3324 |
-
$course_id = $this->get_post_id($course_id);
|
3325 |
global $wpdb;
|
3326 |
-
$query = $wpdb->get_results(
|
3327 |
-
"SELECT
|
3328 |
-
|
3329 |
-
|
3330 |
-
|
3331 |
-
|
3332 |
-
|
3333 |
-
|
3334 |
-
|
3335 |
-
|
3336 |
-
|
3337 |
-
|
3338 |
-
|
3339 |
-
|
3340 |
-
|
3341 |
-
|
3342 |
-
|
3343 |
-
);
|
3344 |
return $query;
|
3345 |
}
|
3346 |
|
@@ -3353,18 +3716,18 @@ class Utils {
|
|
3353 |
*
|
3354 |
* @since v.1.0.0
|
3355 |
*/
|
3356 |
-
|
3357 |
-
|
3358 |
-
$search = array('{user_display_name}');
|
3359 |
|
3360 |
$user_display_name = 'User';
|
3361 |
-
if (is_user_logged_in()){
|
3362 |
$user = wp_get_current_user();
|
3363 |
$user_display_name = $user->display_name;
|
3364 |
}
|
3365 |
-
$replace = array($user_display_name);
|
3366 |
|
3367 |
-
|
|
|
|
|
3368 |
}
|
3369 |
|
3370 |
/**
|
@@ -3376,11 +3739,11 @@ class Utils {
|
|
3376 |
*
|
3377 |
* Get the quiz option from meta
|
3378 |
*/
|
3379 |
-
public function get_quiz_option($post_id = 0, $option_key = '', $default = false){
|
3380 |
-
$post_id = $this->get_post_id($post_id);
|
3381 |
-
$get_option_meta = maybe_unserialize(get_post_meta($post_id, 'tutor_quiz_option', true));
|
3382 |
|
3383 |
-
if ( ! $option_key && ! empty($get_option_meta)) {
|
3384 |
return $get_option_meta;
|
3385 |
}
|
3386 |
|
@@ -3388,10 +3751,10 @@ class Utils {
|
|
3388 |
if ( $value > 0 || $value !== false ) {
|
3389 |
return $value;
|
3390 |
}
|
|
|
3391 |
return $default;
|
3392 |
}
|
3393 |
|
3394 |
-
|
3395 |
/**
|
3396 |
* @param int $quiz_id
|
3397 |
*
|
@@ -3399,15 +3762,23 @@ class Utils {
|
|
3399 |
*
|
3400 |
* Get the questions by quiz ID
|
3401 |
*/
|
3402 |
-
public function get_questions_by_quiz($quiz_id = 0){
|
3403 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
3404 |
global $wpdb;
|
3405 |
|
3406 |
-
$questions = $wpdb->get_results($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3407 |
|
3408 |
-
if (is_array($questions) && count($questions)){
|
3409 |
return $questions;
|
3410 |
}
|
|
|
3411 |
return false;
|
3412 |
}
|
3413 |
|
@@ -3418,11 +3789,19 @@ class Utils {
|
|
3418 |
*
|
3419 |
* Get Quiz question by question id
|
3420 |
*/
|
3421 |
-
public function get_quiz_question_by_id($question_id = 0){
|
3422 |
global $wpdb;
|
3423 |
|
3424 |
-
if ($question_id){
|
3425 |
-
$question = $wpdb->get_row($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3426 |
return $question;
|
3427 |
}
|
3428 |
|
@@ -3438,41 +3817,44 @@ class Utils {
|
|
3438 |
*
|
3439 |
* @since v.1.0.0
|
3440 |
*/
|
3441 |
-
|
3442 |
-
public function get_question_types($type = null){
|
3443 |
$types = array(
|
3444 |
-
'true_false' => array('name' => __('True/False', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="True/False"><i class="tutor-icon-block tutor-icon-yes-no"></i></span>', 'is_pro' => false),
|
3445 |
-
'single_choice' => array('name' => __('Single Choice', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Single Choice"><i class="tutor-icon-block tutor-icon-mark"></i></span>', 'is_pro' => false),
|
3446 |
-
'multiple_choice' => array('name' => __('Multiple Choice', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Multiple Choicee"><i class="tutor-icon-block tutor-icon-multiple-choice"></i></span>', 'is_pro' => false),
|
3447 |
-
'open_ended' => array('name' => __('Open Ended/Essay', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Open/Essay"><i class="tutor-icon-block tutor-icon-open-ended"></i></span>', 'is_pro' => false),
|
3448 |
-
'fill_in_the_blank' => array('name' => __('Fill In The Blanks', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Fill In The Blanks"><i class="tutor-icon-block tutor-icon-fill-gaps"></i></span>', 'is_pro' => false),
|
3449 |
-
'short_answer' => array('name' => __('Short Answer', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Short Answer"><i class="tutor-icon-block tutor-icon-short-ans"></i></span>', 'is_pro' => true),
|
3450 |
-
'matching' => array('name' => __('Matching', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Matching"><i class="tutor-icon-block tutor-icon-matching"></i></span>', 'is_pro' => true),
|
3451 |
-
'image_matching' => array('name' => __('Image Matching', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Image Matching"><i class="tutor-icon-block tutor-icon-image-matching"></i></span>', 'is_pro' => true),
|
3452 |
-
'image_answering' => array('name' => __('Image Answering', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Image Answering"><i class="tutor-icon-block tutor-icon-image-ans"></i></span>', 'is_pro' => true),
|
3453 |
-
'ordering' => array('name' => __('Ordering', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Ordering"><i class="tutor-icon-block tutor-icon-ordering"></i></span>', 'is_pro' => true),
|
3454 |
);
|
3455 |
|
3456 |
-
if (isset($types[$type])){
|
3457 |
-
return $types[$type];
|
3458 |
}
|
|
|
3459 |
return $types;
|
3460 |
}
|
3461 |
|
3462 |
-
public function get_quiz_answer_options_by_question($question_id){
|
3463 |
global $wpdb;
|
3464 |
|
3465 |
-
$answer_options = $wpdb->get_results($wpdb->prepare(
|
3466 |
-
{$wpdb->comments}.comment_ID,
|
3467 |
-
|
3468 |
-
|
3469 |
-
|
3470 |
-
|
3471 |
-
|
3472 |
-
|
3473 |
-
|
3474 |
-
|
3475 |
-
|
|
|
|
|
|
|
3476 |
return $answer_options;
|
3477 |
}
|
3478 |
return false;
|
@@ -3487,11 +3869,17 @@ class Utils {
|
|
3487 |
*
|
3488 |
* @since v.1.0.0
|
3489 |
*/
|
3490 |
-
|
3491 |
-
public function quiz_next_question_order_id($quiz_id){
|
3492 |
global $wpdb;
|
3493 |
|
3494 |
-
$last_order = (int) $wpdb->get_var($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3495 |
return $last_order + 1;
|
3496 |
}
|
3497 |
|
@@ -3503,17 +3891,22 @@ class Utils {
|
|
3503 |
* new design quiz question
|
3504 |
* @since v.1.0.0
|
3505 |
*/
|
3506 |
-
public function quiz_next_question_id(){
|
3507 |
global $wpdb;
|
3508 |
|
3509 |
-
$last_order = (int) $wpdb->get_var("SELECT MAX(question_id) FROM {$wpdb->prefix}tutor_quiz_questions;");
|
3510 |
return $last_order + 1;
|
3511 |
}
|
3512 |
|
3513 |
-
public function get_quiz_id_by_question($question_id){
|
3514 |
global $wpdb;
|
3515 |
-
|
3516 |
-
|
|
|
|
|
|
|
|
|
|
|
3517 |
return $quiz_id;
|
3518 |
}
|
3519 |
|
@@ -3524,16 +3917,30 @@ class Utils {
|
|
3524 |
*
|
3525 |
* @since v.1.0.0
|
3526 |
*/
|
3527 |
-
public function get_attached_quiz($post_id = 0){
|
3528 |
global $wpdb;
|
3529 |
|
3530 |
-
$post_id = $this->get_post_id($post_id);
|
3531 |
-
|
3532 |
-
$questions = $wpdb->get_results($wpdb->prepare(
|
3533 |
-
|
3534 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3535 |
return $questions;
|
3536 |
}
|
|
|
3537 |
return false;
|
3538 |
}
|
3539 |
|
@@ -3546,19 +3953,20 @@ class Utils {
|
|
3546 |
*
|
3547 |
* @since v.1.0.0
|
3548 |
*/
|
3549 |
-
|
3550 |
-
public function get_course_by_quiz($quiz_id){
|
3551 |
global $wpdb;
|
3552 |
|
3553 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
3554 |
-
$post = get_post($quiz_id);
|
3555 |
|
3556 |
-
if ($post) {
|
3557 |
$course_post_type = tutor()->course_post_type;
|
3558 |
-
$
|
3559 |
-
|
|
|
|
|
3560 |
if ( $course->post_type !== $course_post_type ) {
|
3561 |
-
$course = $wpdb->get_row(
|
3562 |
}
|
3563 |
return $course;
|
3564 |
}
|
@@ -3574,12 +3982,18 @@ class Utils {
|
|
3574 |
*
|
3575 |
* @since v.1.0.0
|
3576 |
*/
|
3577 |
-
public function total_questions_for_student_by_quiz($quiz_id){
|
3578 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
3579 |
global $wpdb;
|
3580 |
|
3581 |
-
$max_questions_count = (int) tutor_utils()->get_quiz_option(get_the_ID(), 'max_questions_for_answer');
|
3582 |
-
$total_question = (int) $wpdb->get_var($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
3583 |
|
3584 |
return min($max_questions_count, $total_question);
|
3585 |
}
|
@@ -3593,14 +4007,23 @@ class Utils {
|
|
3593 |
*
|
3594 |
* @since v.1.0.0
|
3595 |
*/
|
3596 |
-
|
3597 |
-
public function is_started_quiz($quiz_id = 0){
|
3598 |
global $wpdb;
|
3599 |
|
3600 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
3601 |
$user_id = get_current_user_id();
|
3602 |
|
3603 |
-
$is_started = $wpdb->get_row($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3604 |
|
3605 |
return $is_started;
|
3606 |
}
|
@@ -3616,15 +4039,21 @@ class Utils {
|
|
3616 |
*
|
3617 |
* @since v.1.0.0
|
3618 |
*/
|
3619 |
-
|
3620 |
-
|
3621 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
3622 |
global $wpdb;
|
3623 |
|
3624 |
-
$max_questions = (int) $wpdb->get_var($wpdb->prepare(
|
3625 |
-
|
|
|
|
|
|
|
|
|
|
|
3626 |
|
3627 |
-
|
|
|
|
|
3628 |
return $max_mentioned;
|
3629 |
}
|
3630 |
|
@@ -3640,12 +4069,20 @@ class Utils {
|
|
3640 |
*
|
3641 |
* @since v.1.0.0
|
3642 |
*/
|
3643 |
-
public function get_attempt($attempt_id = 0){
|
3644 |
global $wpdb;
|
3645 |
-
if ( ! $attempt_id){
|
3646 |
return false;
|
3647 |
}
|
3648 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3649 |
return $attempt;
|
3650 |
}
|
3651 |
|
@@ -3658,9 +4095,8 @@ class Utils {
|
|
3658 |
*
|
3659 |
* @since v.1.0.0
|
3660 |
*/
|
3661 |
-
|
3662 |
-
|
3663 |
-
return maybe_unserialize($attempt_info);
|
3664 |
}
|
3665 |
|
3666 |
/**
|
@@ -3673,14 +4109,14 @@ class Utils {
|
|
3673 |
*
|
3674 |
* @since v.1.0.0
|
3675 |
*/
|
3676 |
-
public function quiz_update_attempt_info($quiz_attempt_id, $attempt_info = array()){
|
3677 |
-
$answers = tutor_utils()->avalue_dot('answers', $attempt_info);
|
3678 |
-
$total_marks = array_sum(wp_list_pluck($answers, 'question_mark'));
|
3679 |
-
$earned_marks = tutor_utils()->avalue_dot('marks_earned', $attempt_info);
|
3680 |
-
$earned_mark_percent = $earned_marks > 0 ? ( number_format(($earned_marks * 100) / $total_marks)) : 0;
|
3681 |
-
update_comment_meta($quiz_attempt_id, 'earned_mark_percent', $earned_mark_percent);
|
3682 |
|
3683 |
-
return update_comment_meta($quiz_attempt_id,'quiz_attempt_info', $attempt_info);
|
3684 |
}
|
3685 |
|
3686 |
/**
|
@@ -3692,15 +4128,23 @@ class Utils {
|
|
3692 |
*
|
3693 |
* @since v.1.0.0
|
3694 |
*/
|
3695 |
-
|
3696 |
-
public function get_random_question_by_quiz($quiz_id = 0){
|
3697 |
global $wpdb;
|
3698 |
|
3699 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
3700 |
-
$is_attempt = $this->is_started_quiz($quiz_id);
|
3701 |
|
3702 |
$tempSql = " AND question_type = 'matching' ";
|
3703 |
-
$questions = $wpdb->get_results($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3704 |
|
3705 |
return $questions;
|
3706 |
}
|
@@ -3712,35 +4156,43 @@ class Utils {
|
|
3712 |
*
|
3713 |
* Get random questions by quiz
|
3714 |
*/
|
3715 |
-
public function get_random_questions_by_quiz($quiz_id = 0){
|
3716 |
global $wpdb;
|
3717 |
|
3718 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
3719 |
-
$attempt = $this->is_started_quiz($quiz_id);
|
3720 |
$total_questions = (int) $attempt->total_questions;
|
3721 |
-
if ( ! $attempt){
|
3722 |
return false;
|
3723 |
}
|
3724 |
|
3725 |
-
$questions_order = tutor_utils()->get_quiz_option(get_the_ID(), 'questions_order', 'rand');
|
3726 |
|
3727 |
$order_by = "";
|
3728 |
-
if ($questions_order === 'rand'){
|
3729 |
$order_by = "ORDER BY RAND()";
|
3730 |
-
}elseif ($questions_order === 'asc'){
|
3731 |
$order_by = "ORDER BY question_id ASC";
|
3732 |
-
}elseif ($questions_order === 'desc'){
|
3733 |
$order_by = "ORDER BY question_id DESC";
|
3734 |
-
}elseif ($questions_order === 'sorting'){
|
3735 |
$order_by = "ORDER BY question_order ASC";
|
3736 |
}
|
3737 |
|
3738 |
$limit = '';
|
3739 |
-
if ($total_questions){
|
3740 |
$limit = "LIMIT {$total_questions} ";
|
3741 |
}
|
3742 |
|
3743 |
-
$questions = $wpdb->get_results($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3744 |
|
3745 |
return $questions;
|
3746 |
}
|
@@ -3755,16 +4207,23 @@ class Utils {
|
|
3755 |
*
|
3756 |
* @since v.1.0.0
|
3757 |
*/
|
3758 |
-
public function get_answers_by_quiz_question($question_id, $rand = false){
|
3759 |
global $wpdb;
|
3760 |
|
3761 |
-
$question = $wpdb->get_row($wpdb->prepare(
|
3762 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3763 |
return false;
|
3764 |
}
|
3765 |
|
3766 |
$order = " answer_order ASC ";
|
3767 |
-
if ($question->question_type === 'ordering'){
|
3768 |
$order = " RAND() ";
|
3769 |
}
|
3770 |
|
@@ -3772,7 +4231,17 @@ class Utils {
|
|
3772 |
$order = " RAND() ";
|
3773 |
}
|
3774 |
|
3775 |
-
$answers = $wpdb->get_results($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3776 |
return $answers;
|
3777 |
}
|
3778 |
|
@@ -3787,15 +4256,23 @@ class Utils {
|
|
3787 |
* @since v.1.0.0
|
3788 |
*/
|
3789 |
|
3790 |
-
public function quiz_attempts($quiz_id = 0, $user_id = 0){
|
3791 |
global $wpdb;
|
3792 |
|
3793 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
3794 |
-
$user_id = $this->get_user_id($user_id);
|
3795 |
|
3796 |
-
$attempts = $wpdb->get_results($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3797 |
|
3798 |
-
if (is_array($attempts) && count($attempts)){
|
3799 |
return $attempts;
|
3800 |
}
|
3801 |
|
@@ -3812,15 +4289,25 @@ class Utils {
|
|
3812 |
*
|
3813 |
* @since v.1.4.1
|
3814 |
*/
|
3815 |
-
public function quiz_ended_attempts($quiz_id = 0, $user_id = 0){
|
3816 |
global $wpdb;
|
3817 |
|
3818 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
3819 |
-
$user_id = $this->get_user_id($user_id);
|
3820 |
-
|
3821 |
-
$attempts = $wpdb->get_results($wpdb->prepare(
|
3822 |
-
|
3823 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3824 |
return $attempts;
|
3825 |
}
|
3826 |
|
@@ -3837,13 +4324,20 @@ class Utils {
|
|
3837 |
*
|
3838 |
* @since v.1.0.0
|
3839 |
*/
|
3840 |
-
public function get_all_quiz_attempts_by_user($user_id = 0){
|
3841 |
global $wpdb;
|
3842 |
|
3843 |
-
$user_id
|
3844 |
-
$attempts = $wpdb->get_results($wpdb->prepare(
|
3845 |
-
|
3846 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3847 |
return $attempts;
|
3848 |
}
|
3849 |
|
@@ -3859,21 +4353,27 @@ class Utils {
|
|
3859 |
*
|
3860 |
* @since v.1.0.0
|
3861 |
*/
|
3862 |
-
|
3863 |
-
public function get_total_quiz_attempts($search_term = ''){
|
3864 |
global $wpdb;
|
3865 |
|
3866 |
-
|
3867 |
-
|
3868 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3869 |
|
3870 |
-
$count = $wpdb->get_var("SELECT COUNT(attempt_id)
|
3871 |
-
FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
|
3872 |
-
INNER JOIN {$wpdb->posts} quiz
|
3873 |
-
ON quiz_attempts.quiz_id = quiz.ID
|
3874 |
-
INNER JOIN {$wpdb->users}
|
3875 |
-
ON quiz_attempts.user_id = {$wpdb->users}.ID
|
3876 |
-
WHERE 1=1 AND attempt_status != 'attempt_started' {$search_term} ");
|
3877 |
return (int) $count;
|
3878 |
}
|
3879 |
|
@@ -3889,66 +4389,95 @@ class Utils {
|
|
3889 |
*
|
3890 |
* @since v.1.0.0
|
3891 |
*/
|
3892 |
-
public function get_quiz_attempts($start = 0, $limit = 10, $search_term = '') {
|
3893 |
global $wpdb;
|
3894 |
|
3895 |
-
|
3896 |
-
|
3897 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3898 |
|
3899 |
-
$query = $wpdb->get_results("SELECT *
|
3900 |
-
FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
|
3901 |
-
INNER JOIN {$wpdb->posts} quiz
|
3902 |
-
ON quiz_attempts.quiz_id = quiz.ID
|
3903 |
-
INNER JOIN {$wpdb->users}
|
3904 |
-
ON quiz_attempts.user_id = {$wpdb->users}.ID
|
3905 |
-
WHERE 1=1 AND attempt_status != 'attempt_started' {$search_term}
|
3906 |
-
ORDER BY quiz_attempts.attempt_id DESC
|
3907 |
-
LIMIT {$start},{$limit}; ");
|
3908 |
return $query;
|
3909 |
}
|
3910 |
|
3911 |
-
public function get_quiz_attempts_by_course_ids($start = 0, $limit = 10, $course_ids = array(), $search_term = '') {
|
3912 |
global $wpdb;
|
3913 |
|
3914 |
-
|
3915 |
-
|
3916 |
-
}
|
3917 |
-
|
3918 |
-
$course_ids_in = implode(',', $course_ids);
|
3919 |
-
$
|
3920 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3921 |
|
3922 |
-
$query = $wpdb->get_results($wpdb->prepare("SELECT *
|
3923 |
-
FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
|
3924 |
-
INNER JOIN {$wpdb->posts} quiz
|
3925 |
-
ON quiz_attempts.quiz_id = quiz.ID
|
3926 |
-
INNER JOIN {$wpdb->users}
|
3927 |
-
ON quiz_attempts.user_id = {$wpdb->users}.ID
|
3928 |
-
WHERE 1=1 AND attempt_status != 'attempt_started' {$search_term}
|
3929 |
-
ORDER BY quiz_attempts.attempt_id DESC
|
3930 |
-
LIMIT %d, %d; ", $start, $limit));
|
3931 |
return $query;
|
3932 |
}
|
3933 |
|
3934 |
-
public function get_total_quiz_attempts_by_course_ids($course_ids = array(), $search_term = ''){
|
3935 |
global $wpdb;
|
3936 |
-
|
3937 |
-
|
3938 |
-
|
3939 |
-
}
|
3940 |
-
|
3941 |
-
$course_ids_in = implode(',', $course_ids);
|
3942 |
-
$
|
3943 |
-
|
3944 |
-
|
3945 |
-
|
3946 |
-
|
3947 |
-
|
3948 |
-
|
3949 |
-
|
3950 |
-
|
3951 |
-
WHERE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3952 |
return (int) $count;
|
3953 |
}
|
3954 |
|
@@ -3961,19 +4490,27 @@ class Utils {
|
|
3961 |
*
|
3962 |
* @since v.1.0.0
|
3963 |
*/
|
3964 |
-
public function get_quiz_answers_by_attempt_id($attempt_id){
|
3965 |
global $wpdb;
|
3966 |
|
3967 |
-
$results = $wpdb->get_results($wpdb->prepare(
|
3968 |
-
|
3969 |
-
|
3970 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3971 |
|
3972 |
return $results;
|
3973 |
}
|
3974 |
|
3975 |
/**
|
3976 |
-
* @param $answer_id
|
3977 |
*
|
3978 |
* @return array|null|object
|
3979 |
*
|
@@ -3981,20 +4518,29 @@ class Utils {
|
|
3981 |
*
|
3982 |
* @since v.1.0.0
|
3983 |
*/
|
3984 |
-
public function get_answer_by_id($answer_id){
|
3985 |
global $wpdb;
|
3986 |
|
3987 |
-
|
3988 |
-
|
3989 |
-
|
3990 |
-
|
3991 |
-
|
3992 |
-
}
|
3993 |
|
3994 |
-
$
|
3995 |
-
|
3996 |
-
|
3997 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3998 |
|
3999 |
return $answer;
|
4000 |
}
|
@@ -4008,24 +4554,28 @@ class Utils {
|
|
4008 |
*
|
4009 |
* @since v.1.0.0
|
4010 |
*/
|
4011 |
-
|
4012 |
-
public function get_quiz_answers_by_ids($ids){
|
4013 |
$ids = (array) $ids;
|
4014 |
|
4015 |
-
if (!count($ids)){
|
4016 |
return false;
|
4017 |
}
|
4018 |
|
4019 |
$in_ids = implode(",", $ids);
|
4020 |
|
4021 |
global $wpdb;
|
4022 |
-
$query = $wpdb->get_results("SELECT
|
4023 |
-
comment_ID,
|
4024 |
-
comment_content
|
4025 |
-
FROM {$wpdb->comments}
|
4026 |
-
WHERE comment_type = 'quiz_answer_option' AND comment_ID IN({$in_ids}) ");
|
4027 |
|
4028 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4029 |
return $query;
|
4030 |
}
|
4031 |
|
@@ -4041,19 +4591,18 @@ class Utils {
|
|
4041 |
*
|
4042 |
* @since v.1.0.0
|
4043 |
*/
|
4044 |
-
|
4045 |
-
|
4046 |
-
|
4047 |
-
'
|
4048 |
-
'
|
4049 |
-
'
|
4050 |
-
'expert' => __('Expert', 'tutor'),
|
4051 |
));
|
4052 |
|
4053 |
-
if ($level){
|
4054 |
-
if (isset($levels[$level])){
|
4055 |
-
return $levels[$level];
|
4056 |
-
}else{
|
4057 |
return '';
|
4058 |
}
|
4059 |
}
|
@@ -4068,23 +4617,23 @@ class Utils {
|
|
4068 |
*
|
4069 |
* @since v.1.0.0
|
4070 |
*/
|
4071 |
-
public function user_profile_permalinks(){
|
4072 |
$permalinks = array(
|
4073 |
-
'courses_taken' => __('Courses Taken', 'tutor'),
|
4074 |
);
|
4075 |
|
4076 |
-
$show_enrolled_course
|
4077 |
-
$enable_show_reviews_wrote = tutor_utils()->get_option('students_own_review_show_at_profile');
|
4078 |
|
4079 |
-
if ($show_enrolled_course){
|
4080 |
-
$permalinks['enrolled_course'] = __('Enrolled Course', 'tutor');
|
4081 |
-
}
|
4082 |
-
if ($enable_show_reviews_wrote){
|
4083 |
-
$permalinks['reviews_wrote'] = __('Reviews Written', 'tutor');
|
4084 |
}
|
4085 |
|
|
|
|
|
|
|
4086 |
|
4087 |
-
return apply_filters('tutor_public_profile/permalinks', $permalinks);
|
4088 |
}
|
4089 |
|
4090 |
/**
|
@@ -4094,14 +4643,16 @@ class Utils {
|
|
4094 |
*
|
4095 |
* @since v.1.0.0
|
4096 |
*/
|
4097 |
-
public function student_register_url(){
|
4098 |
-
$student_register_page = (int) $this->get_option('student_register_page');
|
4099 |
|
4100 |
-
if ($student_register_page){
|
4101 |
-
return get_the_permalink($student_register_page);
|
4102 |
}
|
|
|
4103 |
return false;
|
4104 |
}
|
|
|
4105 |
/**
|
4106 |
* @return bool|false|string
|
4107 |
*
|
@@ -4109,12 +4660,13 @@ class Utils {
|
|
4109 |
*
|
4110 |
* @since v.1.2.13
|
4111 |
*/
|
4112 |
-
public function instructor_register_url(){
|
4113 |
-
$instructor_register_page = (int) $this->get_option('instructor_register_page');
|
4114 |
|
4115 |
-
if ($instructor_register_page){
|
4116 |
-
return get_the_permalink($instructor_register_page);
|
4117 |
}
|
|
|
4118 |
return false;
|
4119 |
}
|
4120 |
|
@@ -4123,10 +4675,10 @@ class Utils {
|
|
4123 |
*
|
4124 |
* Get frontend dashboard URL
|
4125 |
*/
|
4126 |
-
public function tutor_dashboard_url($sub_url = ''){
|
4127 |
-
$page_id = (int) tutor_utils()->get_option('tutor_dashboard_page_id');
|
4128 |
-
$page_id = apply_filters('tutor_dashboard_page_id', $page_id);
|
4129 |
-
return trailingslashit(get_the_permalink($page_id))
|
4130 |
}
|
4131 |
|
4132 |
/**
|
@@ -4135,9 +4687,9 @@ class Utils {
|
|
4135 |
* @return int
|
4136 |
*
|
4137 |
*/
|
4138 |
-
public function dashboard_page_id(){
|
4139 |
-
$page_id = (int) tutor_utils()->get_option('tutor_dashboard_page_id');
|
4140 |
-
$page_id = apply_filters('tutor_dashboard_page_id', $page_id);
|
4141 |
return $page_id;
|
4142 |
}
|
4143 |
|
@@ -4151,15 +4703,24 @@ class Utils {
|
|
4151 |
*
|
4152 |
* @since v.1.0.0
|
4153 |
*/
|
4154 |
-
public function is_wishlisted($course_id = 0, $user_id = 0){
|
4155 |
-
$course_id = $this->get_post_id($course_id);
|
4156 |
-
$user_id = $this->get_user_id($user_id);
|
4157 |
-
if ( ! $user_id){
|
4158 |
return false;
|
4159 |
}
|
4160 |
|
4161 |
global $wpdb;
|
4162 |
-
$if_added_to_list = (bool) $wpdb->get_row(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4163 |
|
4164 |
return $if_added_to_list;
|
4165 |
}
|
@@ -4173,19 +4734,29 @@ class Utils {
|
|
4173 |
*
|
4174 |
* @since v.1.0.0
|
4175 |
*/
|
4176 |
-
public function get_wishlist($user_id = 0){
|
4177 |
-
|
|
|
|
|
4178 |
$course_post_type = tutor()->course_post_type;
|
4179 |
|
4180 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4181 |
|
4182 |
-
$query = "SELECT $wpdb->posts.*
|
4183 |
-
FROM $wpdb->posts
|
4184 |
-
LEFT JOIN $wpdb->usermeta ON ($wpdb->posts.ID = $wpdb->usermeta.meta_value)
|
4185 |
-
WHERE post_type = '{$course_post_type}' AND post_status = 'publish' AND $wpdb->usermeta.meta_key = '_tutor_course_wishlist'
|
4186 |
-
AND $wpdb->usermeta.user_id = {$user_id}
|
4187 |
-
ORDER BY $wpdb->usermeta.umeta_id DESC ";
|
4188 |
-
$pageposts = $wpdb->get_results($query, OBJECT);
|
4189 |
return $pageposts;
|
4190 |
}
|
4191 |
|
@@ -4198,19 +4769,26 @@ class Utils {
|
|
4198 |
*
|
4199 |
* @since v.1.0.0
|
4200 |
*/
|
4201 |
-
public function most_popular_courses($limit = 10){
|
4202 |
global $wpdb;
|
4203 |
|
4204 |
-
$courses = $wpdb->get_results($wpdb->prepare(
|
4205 |
-
|
4206 |
-
|
4207 |
-
|
4208 |
-
|
4209 |
-
|
4210 |
-
|
4211 |
-
|
4212 |
-
|
4213 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4214 |
|
4215 |
return $courses;
|
4216 |
}
|
@@ -4224,23 +4802,32 @@ class Utils {
|
|
4224 |
*
|
4225 |
* @since v.1.0.0
|
4226 |
*/
|
4227 |
-
public function most_rated_courses($limit = 10){
|
4228 |
global $wpdb;
|
4229 |
|
4230 |
-
$result = $wpdb->get_results($wpdb->prepare(
|
4231 |
-
|
4232 |
-
|
4233 |
-
|
4234 |
-
|
4235 |
-
|
4236 |
-
|
4237 |
-
|
4238 |
-
|
4239 |
-
|
4240 |
-
|
4241 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4242 |
return $result;
|
4243 |
}
|
|
|
4244 |
return false;
|
4245 |
}
|
4246 |
|
@@ -4253,15 +4840,15 @@ class Utils {
|
|
4253 |
*
|
4254 |
* @since v.1.0.0
|
4255 |
*/
|
4256 |
-
public function get_addon_config($addon_field = null){
|
4257 |
-
if ( ! $addon_field){
|
4258 |
return false;
|
4259 |
}
|
4260 |
|
4261 |
-
$addonsConfig = maybe_unserialize(get_option('tutor_addons_config'));
|
4262 |
|
4263 |
-
if (isset($addonsConfig[$addon_field])){
|
4264 |
-
return $addonsConfig[$addon_field];
|
4265 |
}
|
4266 |
|
4267 |
return false;
|
@@ -4276,18 +4863,18 @@ class Utils {
|
|
4276 |
*/
|
4277 |
function get_ip() {
|
4278 |
$ipaddress = '';
|
4279 |
-
if (getenv('HTTP_CLIENT_IP'))
|
4280 |
-
$ipaddress = getenv('HTTP_CLIENT_IP');
|
4281 |
-
else if(getenv('HTTP_X_FORWARDED_FOR'))
|
4282 |
-
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
|
4283 |
-
else if(getenv('HTTP_X_FORWARDED'))
|
4284 |
-
$ipaddress = getenv('HTTP_X_FORWARDED');
|
4285 |
-
else if(getenv('HTTP_FORWARDED_FOR'))
|
4286 |
-
$ipaddress = getenv('HTTP_FORWARDED_FOR');
|
4287 |
-
else if(getenv('HTTP_FORWARDED'))
|
4288 |
-
$ipaddress = getenv('HTTP_FORWARDED');
|
4289 |
-
else if(getenv('REMOTE_ADDR'))
|
4290 |
-
$ipaddress = getenv('REMOTE_ADDR');
|
4291 |
else
|
4292 |
$ipaddress = 'UNKNOWN';
|
4293 |
return $ipaddress;
|
@@ -4300,16 +4887,15 @@ class Utils {
|
|
4300 |
*
|
4301 |
* @since v.1.0.4
|
4302 |
*/
|
4303 |
-
|
4304 |
-
public function tutor_social_share_icons(){
|
4305 |
$icons = array(
|
4306 |
-
'facebook' => array('share_class' => 's_facebook', 'icon_html' => '<i class="tutor-icon-facebook"></i>' ),
|
4307 |
-
'twitter'
|
4308 |
-
'linkedin' => array('share_class' => 's_linkedin', 'icon_html' => '<i class="tutor-icon-linkedin"></i>' ),
|
4309 |
-
'tumblr'
|
4310 |
);
|
4311 |
|
4312 |
-
return apply_filters('tutor_social_share_icons', $icons);
|
4313 |
}
|
4314 |
|
4315 |
/**
|
@@ -4319,37 +4905,36 @@ class Utils {
|
|
4319 |
*
|
4320 |
* @since v.1.3.7
|
4321 |
*/
|
4322 |
-
|
4323 |
-
public function tutor_user_social_icons(){
|
4324 |
$icons = array(
|
4325 |
'_tutor_profile_website' => array(
|
4326 |
-
'label'
|
4327 |
-
'placeholder'
|
4328 |
-
'icon_classes'
|
4329 |
),
|
4330 |
'_tutor_profile_github' => array(
|
4331 |
-
'label'
|
4332 |
-
'placeholder'
|
4333 |
-
'icon_classes'
|
4334 |
),
|
4335 |
'_tutor_profile_facebook' => array(
|
4336 |
-
'label'
|
4337 |
-
'placeholder'
|
4338 |
-
'icon_classes'
|
4339 |
),
|
4340 |
'_tutor_profile_twitter' => array(
|
4341 |
-
'label'
|
4342 |
-
'placeholder'
|
4343 |
-
'icon_classes'
|
4344 |
),
|
4345 |
'_tutor_profile_linkedin' => array(
|
4346 |
-
'label'
|
4347 |
-
'placeholder'
|
4348 |
-
'icon_classes'
|
4349 |
),
|
4350 |
);
|
4351 |
|
4352 |
-
return apply_filters('tutor_user_social_icons', $icons);
|
4353 |
}
|
4354 |
|
4355 |
/**
|
@@ -4361,10 +4946,11 @@ class Utils {
|
|
4361 |
*
|
4362 |
* @since v.1.0.4
|
4363 |
*/
|
4364 |
-
public function count($array = array()){
|
4365 |
-
if (is_array($array) && count($array)){
|
4366 |
-
return count($array);
|
4367 |
}
|
|
|
4368 |
return false;
|
4369 |
}
|
4370 |
|
@@ -4375,7 +4961,7 @@ class Utils {
|
|
4375 |
*
|
4376 |
* @since v.1.1.2
|
4377 |
*/
|
4378 |
-
public function tutor_get_screen_ids(){
|
4379 |
$screen_ids = array(
|
4380 |
"edit-course",
|
4381 |
"course",
|
@@ -4392,10 +4978,9 @@ class Utils {
|
|
4392 |
"tutor-lms_page_tutor_emails",
|
4393 |
);
|
4394 |
|
4395 |
-
return apply_filters('tutor_get_screen_ids', $screen_ids);
|
4396 |
}
|
4397 |
|
4398 |
-
|
4399 |
/**
|
4400 |
* @return mixed
|
4401 |
*
|
@@ -4403,7 +4988,7 @@ class Utils {
|
|
4403 |
*
|
4404 |
* @since v.1.1.2
|
4405 |
*/
|
4406 |
-
public function get_earnings_completed_statuses(){
|
4407 |
return apply_filters(
|
4408 |
'tutor_get_earnings_completed_statuses',
|
4409 |
array (
|
@@ -4424,48 +5009,55 @@ class Utils {
|
|
4424 |
*
|
4425 |
* @since v.1.1.2
|
4426 |
*/
|
4427 |
-
|
4428 |
-
public function get_earning_sum($user_id = 0, $date_filter = array()){
|
4429 |
global $wpdb;
|
4430 |
|
4431 |
-
$user_id
|
4432 |
$date_query = '';
|
4433 |
-
if ($this->count($date_filter)){
|
4434 |
-
extract($date_filter);
|
4435 |
|
4436 |
-
|
4437 |
-
|
4438 |
-
|
4439 |
-
|
|
|
|
|
|
|
4440 |
}
|
4441 |
$date_query = "AND YEAR(created_at) = {$year} ";
|
4442 |
}
|
4443 |
-
}else{
|
4444 |
$date_query = " AND (created_at BETWEEN '{$start_date}' AND '{$end_date}') ";
|
4445 |
}
|
4446 |
}
|
4447 |
|
4448 |
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
4449 |
-
$complete_status = "'".implode("','", $complete_status)."'";
|
4450 |
-
|
4451 |
-
$earning_sum = $wpdb->get_row(
|
4452 |
-
|
4453 |
-
SUM(
|
4454 |
-
|
4455 |
-
|
4456 |
-
|
4457 |
-
|
4458 |
-
|
4459 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4460 |
|
4461 |
//TODO: need to check
|
4462 |
// (SUM(instructor_amount) - (SELECT withdraws_amount) ) as balance,
|
4463 |
|
4464 |
-
|
4465 |
-
if ( $earning_sum->course_price_total){
|
4466 |
$earning_sum->balance = $earning_sum->instructor_amount - $earning_sum->withdraws_amount;
|
4467 |
-
}else{
|
4468 |
-
|
4469 |
$earning_sum = (object) array(
|
4470 |
'course_price_total' => 0,
|
4471 |
'course_price_grand_total' => 0,
|
@@ -4490,7 +5082,7 @@ class Utils {
|
|
4490 |
*
|
4491 |
* @since v.1.1.2
|
4492 |
*/
|
4493 |
-
public function get_earning_statements($user_id = 0, $filter_data = array()){
|
4494 |
global $wpdb;
|
4495 |
|
4496 |
$user_sql = "";
|
@@ -4505,29 +5097,28 @@ class Utils {
|
|
4505 |
/**
|
4506 |
* Query by Date Filter
|
4507 |
*/
|
4508 |
-
if ($this->count($filter_data)){
|
4509 |
-
extract($filter_data);
|
4510 |
|
4511 |
-
if ( ! empty($dataFor)){
|
4512 |
-
if ($dataFor === 'yearly'){
|
4513 |
-
if (empty($year)){
|
4514 |
-
$year = date('Y');
|
4515 |
}
|
4516 |
$date_query = "AND YEAR(created_at) = {$year} ";
|
4517 |
}
|
4518 |
-
}else{
|
4519 |
$date_query = " AND (created_at BETWEEN '{$start_date}' AND '{$end_date}') ";
|
4520 |
}
|
4521 |
|
4522 |
/**
|
4523 |
* Query by order status related to this earning transaction
|
4524 |
*/
|
4525 |
-
if ( ! empty($statuses)) {
|
4526 |
if ( $this->count( $statuses ) ) {
|
4527 |
$status = "'" . implode( "','", $statuses ) . "'";
|
4528 |
$query_by_status = "AND order_status IN({$status})";
|
4529 |
} elseif ( $statuses === 'completed' ) {
|
4530 |
-
|
4531 |
$get_earnings_completed_statuses = $this->get_earnings_completed_statuses();
|
4532 |
if ( $this->count( $get_earnings_completed_statuses ) ) {
|
4533 |
$status = "'" . implode( "','", $get_earnings_completed_statuses ) . "'";
|
@@ -4536,28 +5127,35 @@ class Utils {
|
|
4536 |
}
|
4537 |
}
|
4538 |
|
4539 |
-
if ( ! empty($per_page)){
|
4540 |
-
$offset
|
4541 |
-
|
4542 |
$pagination_query = " LIMIT {$offset}, {$per_page} ";
|
4543 |
-
|
4544 |
}
|
4545 |
-
|
4546 |
-
|
4547 |
}
|
4548 |
|
4549 |
-
$query = $wpdb->get_results(
|
4550 |
-
|
4551 |
-
|
4552 |
-
|
4553 |
-
|
4554 |
-
|
4555 |
-
|
4556 |
-
|
4557 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4558 |
|
4559 |
return (object) array(
|
4560 |
-
'count'
|
4561 |
'results' => $query,
|
4562 |
);
|
4563 |
}
|
@@ -4571,14 +5169,13 @@ class Utils {
|
|
4571 |
*
|
4572 |
* @since v.1.1.2
|
4573 |
*/
|
4574 |
-
|
4575 |
-
|
4576 |
-
|
4577 |
-
|
4578 |
-
|
4579 |
-
return edd_currency_filter(edd_format_amount($price));
|
4580 |
}else{
|
4581 |
-
return number_format_i18n($price);
|
4582 |
}
|
4583 |
}
|
4584 |
|
@@ -4589,21 +5186,20 @@ class Utils {
|
|
4589 |
*
|
4590 |
* @since v.1.3.4
|
4591 |
*/
|
4592 |
-
|
4593 |
-
|
4594 |
-
$
|
4595 |
-
$monetize_by = $this->get_option('monetize_by');
|
4596 |
|
4597 |
$symbol = '$';
|
4598 |
-
if ($enable_tutor_edd && function_exists('edd_currency_symbol')){
|
4599 |
$symbol = edd_currency_symbol();
|
4600 |
}
|
4601 |
|
4602 |
-
if ($monetize_by === 'wc' && function_exists('get_woocommerce_currency_symbol') ){
|
4603 |
$symbol = get_woocommerce_currency_symbol();
|
4604 |
}
|
4605 |
|
4606 |
-
return apply_filters('get_tutor_currency_symbol', $symbol);
|
4607 |
}
|
4608 |
|
4609 |
/**
|
@@ -4613,12 +5209,12 @@ class Utils {
|
|
4613 |
*
|
4614 |
* Get withdraw method for a specific
|
4615 |
*/
|
4616 |
-
public function get_user_withdraw_method($user_id = 0){
|
4617 |
-
$user_id = $this->get_user_id($user_id);
|
|
|
4618 |
|
4619 |
-
|
4620 |
-
|
4621 |
-
return maybe_unserialize($account);
|
4622 |
}
|
4623 |
|
4624 |
return false;
|
@@ -4632,59 +5228,73 @@ class Utils {
|
|
4632 |
*
|
4633 |
* @return object
|
4634 |
*/
|
4635 |
-
public function get_withdrawals_history($user_id = 0, $filter = array()){
|
4636 |
global $wpdb;
|
4637 |
|
4638 |
$filter = (array) $filter;
|
4639 |
extract($filter);
|
4640 |
|
4641 |
$query_by_status_sql = "";
|
4642 |
-
$query_by_user_sql
|
4643 |
$query_by_pagination = "";
|
4644 |
|
4645 |
-
if ( ! empty($status)){
|
4646 |
$status = (array) $status;
|
4647 |
-
$status = "'".implode("','", $status)."'";
|
4648 |
|
4649 |
$query_by_status_sql = " AND status IN({$status}) ";
|
4650 |
}
|
4651 |
|
4652 |
-
if ( ! empty($per_page)){
|
4653 |
-
if ( empty($start))
|
4654 |
$start = 0;
|
4655 |
|
4656 |
$query_by_pagination = " LIMIT {$start}, {$per_page} ";
|
4657 |
}
|
4658 |
|
4659 |
-
if ($user_id){
|
4660 |
$query_by_user_sql = " AND user_id = {$user_id} ";
|
4661 |
}
|
4662 |
|
4663 |
-
|
4664 |
-
|
4665 |
-
|
4666 |
-
|
4667 |
-
|
4668 |
-
|
4669 |
-
|
4670 |
-
|
4671 |
-
|
4672 |
-
|
4673 |
-
|
4674 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4675 |
|
4676 |
$withdraw_history = array(
|
4677 |
-
'count'
|
4678 |
'results' => null,
|
4679 |
);
|
4680 |
|
4681 |
-
if ($count){
|
4682 |
$withdraw_history['count'] = $count;
|
4683 |
}
|
4684 |
|
4685 |
-
if (tutor_utils()->count($results)){
|
4686 |
$withdraw_history['results'] = $results;
|
4687 |
}
|
|
|
4688 |
return (object) $withdraw_history;
|
4689 |
|
4690 |
}
|
@@ -4694,20 +5304,20 @@ class Utils {
|
|
4694 |
*
|
4695 |
* Add Instructor role to any user by user iD
|
4696 |
*/
|
4697 |
-
public function add_instructor_role($instructor_id = 0){
|
4698 |
-
if ( ! $instructor_id){
|
4699 |
return;
|
4700 |
}
|
4701 |
-
do_action('tutor_before_approved_instructor', $instructor_id);
|
4702 |
|
4703 |
-
update_user_meta($instructor_id, '_is_tutor_instructor', tutor_time());
|
4704 |
-
update_user_meta($instructor_id, '_tutor_instructor_status', 'approved');
|
4705 |
-
update_user_meta($instructor_id, '_tutor_instructor_approved', tutor_time());
|
4706 |
|
4707 |
-
$instructor = new \WP_User($instructor_id);
|
4708 |
-
$instructor->add_role(tutor()->instructor_role);
|
4709 |
|
4710 |
-
do_action('tutor_after_approved_instructor', $instructor_id);
|
4711 |
}
|
4712 |
|
4713 |
/**
|
@@ -4715,18 +5325,18 @@ class Utils {
|
|
4715 |
*
|
4716 |
* Remove instructor role by instructor id
|
4717 |
*/
|
4718 |
-
public function remove_instructor_role($instructor_id = 0){
|
4719 |
-
if ( ! $instructor_id){
|
4720 |
return;
|
4721 |
}
|
4722 |
|
4723 |
-
do_action('tutor_before_blocked_instructor', $instructor_id);
|
4724 |
-
delete_user_meta($instructor_id, '_is_tutor_instructor');
|
4725 |
-
update_user_meta($instructor_id, '_tutor_instructor_status', 'blocked');
|
4726 |
|
4727 |
-
$instructor = new \WP_User($instructor_id);
|
4728 |
-
$instructor->remove_role(tutor()->instructor_role);
|
4729 |
-
do_action('tutor_after_blocked_instructor', $instructor_id);
|
4730 |
}
|
4731 |
|
4732 |
/**
|
@@ -4735,7 +5345,7 @@ class Utils {
|
|
4735 |
*
|
4736 |
* Set Flash Message to view in next action / route
|
4737 |
*/
|
4738 |
-
public function set_flash_msg($msg = '', $name = 'success'){
|
4739 |
global $wp_filesystem;
|
4740 |
if ( ! $wp_filesystem ) {
|
4741 |
require_once( ABSPATH . 'wp-admin/includes/file.php' );
|
@@ -4743,13 +5353,14 @@ class Utils {
|
|
4743 |
|
4744 |
$filename = "tutor_flash_msg_{$name}.txt";
|
4745 |
$upload_dir = wp_upload_dir();
|
4746 |
-
$dir = trailingslashit($upload_dir['basedir']) . 'tutor/';
|
4747 |
|
4748 |
WP_Filesystem( false, $upload_dir['basedir'], true );
|
4749 |
|
4750 |
-
if( ! $wp_filesystem->is_dir( $dir ) ) {
|
4751 |
$wp_filesystem->mkdir( $dir );
|
4752 |
}
|
|
|
4753 |
$wp_filesystem->put_contents( $dir . $filename, $msg );
|
4754 |
}
|
4755 |
|
@@ -4760,23 +5371,23 @@ class Utils {
|
|
4760 |
*
|
4761 |
* Get Flash Message
|
4762 |
*/
|
4763 |
-
public function get_flash_msg($name = null){
|
4764 |
-
if ( ! $name){
|
4765 |
return '';
|
4766 |
}
|
4767 |
|
4768 |
$upload_dir = wp_get_upload_dir();
|
4769 |
-
$upload_dir = trailingslashit($upload_dir['basedir']);
|
4770 |
-
$msg_name
|
4771 |
|
4772 |
$msg = '';
|
4773 |
$flash_msg_file_name = $upload_dir."tutor/{$msg_name}.txt";
|
4774 |
-
if (file_exists($flash_msg_file_name)){
|
4775 |
-
$msg = file_get_contents($flash_msg_file_name);
|
4776 |
-
unlink($flash_msg_file_name);
|
4777 |
}
|
4778 |
|
4779 |
-
return apply_filters('tutor_get_flash_msg', $msg, $name);
|
4780 |
}
|
4781 |
|
4782 |
/**
|
@@ -4786,38 +5397,39 @@ class Utils {
|
|
4786 |
*
|
4787 |
* Get purchase history by customer id
|
4788 |
*/
|
4789 |
-
|
4790 |
-
public function get_orders_by_user_id($user_id = 0){
|
4791 |
global $wpdb;
|
4792 |
|
4793 |
-
$user_id
|
4794 |
-
$monetize_by = tutils()->get_option('monetize_by');
|
4795 |
|
4796 |
$post_type = "";
|
4797 |
$user_meta = "";
|
4798 |
-
|
|
|
4799 |
$post_type = "shop_order";
|
4800 |
$user_meta = "_customer_user";
|
4801 |
-
} else if ($monetize_by === 'edd') {
|
4802 |
$post_type = "edd_payment";
|
4803 |
$user_meta = "_edd_payment_user_id";
|
4804 |
}
|
4805 |
|
4806 |
-
$orders = $wpdb->get_results(
|
4807 |
-
"
|
4808 |
-
|
4809 |
-
|
4810 |
-
|
4811 |
-
|
4812 |
-
|
4813 |
-
|
4814 |
-
|
4815 |
-
|
4816 |
-
|
4817 |
-
|
4818 |
-
|
4819 |
-
|
4820 |
-
|
|
|
4821 |
|
4822 |
return $orders;
|
4823 |
}
|
@@ -4831,16 +5443,16 @@ class Utils {
|
|
4831 |
*
|
4832 |
* @since v.1.3.1
|
4833 |
*/
|
4834 |
-
public function order_status_context($status = null){
|
4835 |
-
$status
|
4836 |
-
$status_name = ucwords(str_replace('-', ' ', $status));
|
4837 |
|
4838 |
return "<span class='label-order-status label-status-{$status}'>$status_name</span>";
|
4839 |
}
|
4840 |
|
4841 |
-
public function get_course_id_by_assignment($assignment_id = 0){
|
4842 |
-
$assignment_id = $this->get_post_id($assignment_id);
|
4843 |
-
return get_post_meta($assignment_id, '_tutor_course_id_for_assignments', true);
|
4844 |
}
|
4845 |
|
4846 |
/**
|
@@ -4854,18 +5466,20 @@ class Utils {
|
|
4854 |
*
|
4855 |
* @since v.1.3.3
|
4856 |
*/
|
4857 |
-
public function get_assignment_option($assignment_id = 0, $option_key = '', $default = false){
|
4858 |
-
$assignment_id
|
4859 |
-
$get_option_meta = maybe_unserialize(get_post_meta($assignment_id, 'assignment_option', true));
|
4860 |
|
4861 |
-
if ( ! $option_key && ! empty($get_option_meta)) {
|
4862 |
return $get_option_meta;
|
4863 |
}
|
4864 |
|
4865 |
$value = $this->avalue_dot( $option_key, $get_option_meta );
|
|
|
4866 |
if ( $value ) {
|
4867 |
return $value;
|
4868 |
}
|
|
|
4869 |
return $default;
|
4870 |
}
|
4871 |
|
@@ -4879,17 +5493,25 @@ class Utils {
|
|
4879 |
*
|
4880 |
* @since v.1.3.3
|
4881 |
*/
|
4882 |
-
public function is_assignment_submitting($assignment_id = 0, $user_id = 0){
|
4883 |
global $wpdb;
|
4884 |
|
4885 |
-
$assignment_id = $this->get_post_id($assignment_id);
|
4886 |
-
$user_id = $this->get_user_id($user_id);
|
4887 |
-
|
4888 |
-
$is_running_submit = (int) $wpdb->get_var($wpdb->prepare(
|
4889 |
-
|
4890 |
-
|
4891 |
-
|
4892 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4893 |
|
4894 |
return $is_running_submit;
|
4895 |
}
|
@@ -4904,39 +5526,77 @@ class Utils {
|
|
4904 |
*
|
4905 |
* @since v.1.3.3
|
4906 |
*/
|
4907 |
-
|
4908 |
-
public function is_assignment_submitted($assignment_id = 0, $user_id = 0){
|
4909 |
global $wpdb;
|
4910 |
|
4911 |
-
$assignment_id = $this->get_post_id($assignment_id);
|
4912 |
-
$user_id
|
4913 |
-
|
4914 |
-
$has_submitted = $wpdb->get_row($wpdb->prepare(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4915 |
|
4916 |
return $has_submitted;
|
4917 |
}
|
4918 |
|
4919 |
-
public function get_assignment_submit_info($assignment_submitted_id = 0){
|
4920 |
global $wpdb;
|
4921 |
|
4922 |
-
$assignment_submitted_id = $this->get_post_id($assignment_submitted_id);
|
4923 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4924 |
|
4925 |
return $submitted_info;
|
4926 |
}
|
4927 |
|
4928 |
-
public function get_total_assignments(){
|
4929 |
global $wpdb;
|
4930 |
|
4931 |
-
$count = $wpdb->get_var(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4932 |
|
4933 |
return (int) $count;
|
4934 |
}
|
4935 |
|
4936 |
-
public function get_assignments(){
|
4937 |
global $wpdb;
|
4938 |
|
4939 |
-
$results = $wpdb->get_results(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4940 |
|
4941 |
return $results;
|
4942 |
}
|
@@ -4950,18 +5610,21 @@ class Utils {
|
|
4950 |
*
|
4951 |
* @since v.1.3.3
|
4952 |
*/
|
4953 |
-
public function get_assigned_courses_ids_by_instructors($user_id = 0){
|
4954 |
global $wpdb;
|
4955 |
-
$user_id
|
4956 |
-
|
4957 |
$course_post_type = tutor()->course_post_type;
|
4958 |
-
$get_assigned_courses_ids = $wpdb->get_col($wpdb->prepare("SELECT meta_value from {$wpdb->usermeta} WHERE meta_key = '_tutor_instructor_course_id' AND user_id = %d GROUP BY meta_value ; ", $user_id));
|
4959 |
|
4960 |
-
|
4961 |
-
|
4962 |
-
$
|
4963 |
-
|
4964 |
-
|
|
|
|
|
|
|
|
|
|
|
4965 |
|
4966 |
return $get_assigned_courses_ids;
|
4967 |
}
|
@@ -4975,18 +5638,17 @@ class Utils {
|
|
4975 |
*
|
4976 |
* @since v.1.3.4
|
4977 |
*/
|
4978 |
-
|
4979 |
-
|
4980 |
-
|
4981 |
-
'
|
4982 |
-
'
|
4983 |
-
'parent' => $parent,
|
4984 |
));
|
4985 |
|
4986 |
-
$terms = get_terms($args);
|
4987 |
|
4988 |
$children = array();
|
4989 |
-
foreach ( $terms as $term ){
|
4990 |
$term->children = $this->get_course_categories( $term->term_id );
|
4991 |
$children[ $term->term_id ] = $term;
|
4992 |
}
|
@@ -5003,14 +5665,14 @@ class Utils {
|
|
5003 |
*
|
5004 |
* @since v.1.3.5
|
5005 |
*/
|
5006 |
-
public function get_course_categories_term($parent_id = 0){
|
5007 |
-
$args = apply_filters('tutor_get_course_categories_terms_args', array(
|
5008 |
-
'taxonomy'
|
5009 |
-
'parent'
|
5010 |
'hide_empty' => false,
|
5011 |
));
|
5012 |
|
5013 |
-
$terms = get_terms($args);
|
5014 |
|
5015 |
return $terms;
|
5016 |
}
|
@@ -5021,9 +5683,9 @@ class Utils {
|
|
5021 |
* Get back url from the request
|
5022 |
* @since v.1.3.4
|
5023 |
*/
|
5024 |
-
public function referer(){
|
5025 |
-
$url = $this->array_get('_wp_http_referer', $_REQUEST);
|
5026 |
-
return apply_filters('tutor_referer_url', $url);
|
5027 |
}
|
5028 |
|
5029 |
/**
|
@@ -5035,28 +5697,29 @@ class Utils {
|
|
5035 |
*
|
5036 |
* @since v.1.3.4
|
5037 |
*/
|
5038 |
-
public function course_edit_link($course_id = 0){
|
5039 |
-
$course_id = $this->get_post_id($course_id);
|
5040 |
|
5041 |
$url = admin_url("post.php?post={$course_id}&action=edit");
|
5042 |
-
if (tutor()->has_pro){
|
5043 |
-
$url = $this->tutor_dashboard_url("create-course/?course_ID="
|
5044 |
}
|
5045 |
|
5046 |
return $url;
|
5047 |
}
|
5048 |
|
5049 |
-
public function get_assignments_by_instructor($instructor_id = 0, $filter_data = array()){
|
5050 |
global $wpdb;
|
5051 |
|
5052 |
-
$instructor_id
|
5053 |
-
$course_ids
|
|
|
5054 |
|
5055 |
-
$in_course_ids = implode("','", $course_ids);
|
5056 |
|
5057 |
$pagination_query = $date_query = '';
|
5058 |
$sort_query = 'ORDER BY ID DESC';
|
5059 |
-
if ($this->count($filter_data)) {
|
5060 |
extract( $filter_data );
|
5061 |
|
5062 |
if ( ! empty( $course_id ) ) {
|
@@ -5074,37 +5737,35 @@ class Utils {
|
|
5074 |
}
|
5075 |
}
|
5076 |
|
5077 |
-
$count = (int) $wpdb->get_var(
|
5078 |
-
"SELECT
|
5079 |
-
|
5080 |
-
|
5081 |
-
|
5082 |
-
|
5083 |
-
|
5084 |
-
|
5085 |
-
|
5086 |
-
|
5087 |
-
|
5088 |
-
|
5089 |
-
|
5090 |
-
|
5091 |
-
|
5092 |
-
|
5093 |
-
|
5094 |
-
|
5095 |
-
|
5096 |
-
|
5097 |
-
|
5098 |
-
|
5099 |
-
|
5100 |
-
|
5101 |
-
|
5102 |
-
|
5103 |
-
|
5104 |
-
|
5105 |
-
);
|
5106 |
-
|
5107 |
-
return (object) array('count' => $count, 'results' => $query);
|
5108 |
}
|
5109 |
|
5110 |
/**
|
@@ -5114,21 +5775,43 @@ class Utils {
|
|
5114 |
*
|
5115 |
* Get assignments by course id
|
5116 |
*/
|
5117 |
-
public function get_assignments_by_course($course_id = 0){
|
5118 |
-
if ( ! $course_id){
|
5119 |
return false;
|
5120 |
}
|
5121 |
global $wpdb;
|
5122 |
|
5123 |
-
$
|
5124 |
-
|
5125 |
-
|
5126 |
-
|
5127 |
-
|
5128 |
-
|
5129 |
-
|
5130 |
-
|
5131 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5132 |
}
|
5133 |
|
5134 |
/**
|
@@ -5138,7 +5821,7 @@ class Utils {
|
|
5138 |
*
|
5139 |
* @since v.1.3.4
|
5140 |
*/
|
5141 |
-
public function is_script_debug(){
|
5142 |
return ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG );
|
5143 |
}
|
5144 |
|
@@ -5147,16 +5830,15 @@ class Utils {
|
|
5147 |
*
|
5148 |
* @since v.1.4.0
|
5149 |
*/
|
|
|
|
|
|
|
5150 |
|
5151 |
-
|
5152 |
-
$lesson_id = $this->get_post_id($lesson_id);
|
5153 |
-
$instructor_id = $this->get_user_id($instructor_id);
|
5154 |
-
|
5155 |
-
if (user_can($instructor_id, tutor()->instructor_role)){
|
5156 |
$permitted_course_ids = tutils()->get_assigned_courses_ids_by_instructors();
|
5157 |
-
$course_id
|
5158 |
|
5159 |
-
if (in_array($course_id, $permitted_course_ids)){
|
5160 |
return true;
|
5161 |
}
|
5162 |
}
|
@@ -5169,53 +5851,65 @@ class Utils {
|
|
5169 |
* Get total Enrolments
|
5170 |
* @since v.1.4.0
|
5171 |
*/
|
5172 |
-
|
5173 |
-
public function get_total_enrolments($search_term = ''){
|
5174 |
global $wpdb;
|
5175 |
|
5176 |
-
$
|
5177 |
-
|
5178 |
-
|
5179 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5180 |
|
5181 |
-
$count = $wpdb->get_var("SELECT COUNT(enrol.ID)
|
5182 |
-
FROM {$wpdb->posts} enrol
|
5183 |
-
INNER JOIN {$wpdb->posts} course ON enrol.post_parent = course.ID
|
5184 |
-
INNER JOIN {$wpdb->users} student ON enrol.post_author = student.ID
|
5185 |
-
WHERE enrol.post_type = 'tutor_enrolled' {$search_sql} ");
|
5186 |
return (int) $count;
|
5187 |
}
|
5188 |
|
5189 |
-
public function get_enrolments($start = 0, $limit = 10, $search_term = ''){
|
5190 |
global $wpdb;
|
5191 |
|
5192 |
-
$
|
5193 |
-
if ($search_term){
|
5194 |
-
$search_sql = " AND ( enrol.ID = '{$search_term}' OR student.display_name LIKE '%{$search_term}%' OR student.user_email LIKE '%{$search_term}%' OR course.post_title LIKE '%{$search_term}%' ) ";
|
5195 |
-
}
|
5196 |
|
5197 |
-
$enrolments = $wpdb->get_results(
|
5198 |
-
enrol.ID
|
5199 |
-
|
5200 |
-
|
5201 |
-
|
5202 |
-
|
5203 |
-
|
5204 |
-
|
5205 |
-
|
5206 |
-
|
5207 |
-
|
5208 |
-
|
5209 |
-
|
5210 |
-
|
5211 |
-
|
5212 |
-
|
5213 |
-
|
5214 |
-
|
5215 |
-
|
5216 |
-
WHERE enrol.post_type = 'tutor_enrolled' {$search_sql}
|
5217 |
ORDER BY enrol_id DESC
|
5218 |
-
LIMIT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5219 |
|
5220 |
return $enrolments;
|
5221 |
}
|
@@ -5227,21 +5921,18 @@ class Utils {
|
|
5227 |
*
|
5228 |
* @since v.1.4.0
|
5229 |
*/
|
|
|
|
|
5230 |
|
5231 |
-
|
5232 |
-
|
5233 |
-
|
5234 |
-
if ($page_id){
|
5235 |
-
return get_the_permalink($page_id);
|
5236 |
-
}else{
|
5237 |
global $wp;
|
5238 |
$current_url = home_url( $wp->request );
|
5239 |
-
|
5240 |
return $current_url;
|
5241 |
}
|
5242 |
}
|
5243 |
|
5244 |
-
|
5245 |
/**
|
5246 |
* @param int $rating_id
|
5247 |
*
|
@@ -5252,21 +5943,27 @@ class Utils {
|
|
5252 |
* @since v.1.4.0
|
5253 |
*/
|
5254 |
|
5255 |
-
public function get_rating_by_id($rating_id = 0){
|
|
|
|
|
5256 |
$ratings = array(
|
5257 |
-
'rating'
|
5258 |
-
'review'
|
5259 |
);
|
5260 |
|
5261 |
-
|
5262 |
-
|
5263 |
-
|
5264 |
-
|
5265 |
-
|
5266 |
-
|
|
|
|
|
|
|
|
|
5267 |
|
5268 |
-
if ($rating){
|
5269 |
-
$rating_format = number_format($rating->rating, 2);
|
5270 |
|
5271 |
$ratings = array(
|
5272 |
'rating' => $rating_format,
|
@@ -5285,12 +5982,12 @@ class Utils {
|
|
5285 |
*
|
5286 |
* Get course settings by course ID
|
5287 |
*/
|
5288 |
-
public function get_course_settings($course_id = 0, $key = null, $default = false){
|
5289 |
-
$course_id
|
5290 |
-
$settings_meta = get_post_meta($course_id, '_tutor_course_settings', true);
|
5291 |
-
$settings
|
5292 |
|
5293 |
-
return $this->array_get($key, $settings, $default);
|
5294 |
}
|
5295 |
|
5296 |
/**
|
@@ -5304,15 +6001,14 @@ class Utils {
|
|
5304 |
*
|
5305 |
* @since v.1.4.0
|
5306 |
*/
|
5307 |
-
public function get_item_content_drip_settings($lesson_id = 0, $key = null, $default = false){
|
5308 |
-
$lesson_id
|
5309 |
-
$settings_meta = get_post_meta($lesson_id, '_content_drip_settings', true);
|
5310 |
-
$settings
|
5311 |
|
5312 |
-
return $this->array_get($key, $settings, $default);
|
5313 |
}
|
5314 |
|
5315 |
-
|
5316 |
/**
|
5317 |
* @param null $post
|
5318 |
*
|
@@ -5320,19 +6016,18 @@ class Utils {
|
|
5320 |
*
|
5321 |
* Get previous ID
|
5322 |
*/
|
5323 |
-
public function get_course_previous_content_id($post = null){
|
5324 |
-
$current_item = get_post($post);
|
5325 |
-
$course_id
|
5326 |
-
|
5327 |
-
$topics = tutor_utils()->get_topics($course_id);
|
5328 |
|
5329 |
$contents = array();
|
5330 |
-
if ($topics->have_posts()) {
|
5331 |
while ( $topics->have_posts() ) {
|
5332 |
$topics->the_post();
|
5333 |
$topic_id = get_the_ID();
|
5334 |
-
$lessons = tutor_utils()->get_course_contents_by_topic($topic_id, -1);
|
5335 |
-
if ($lessons->have_posts()) {
|
5336 |
while ( $lessons->have_posts() ) {
|
5337 |
$lessons->the_post();
|
5338 |
global $post;
|
@@ -5343,11 +6038,11 @@ class Utils {
|
|
5343 |
}
|
5344 |
}
|
5345 |
|
5346 |
-
if (tutils()->count($contents)){
|
5347 |
-
foreach ($contents as $key => $content){
|
5348 |
-
if ($current_item->ID == $content->ID){
|
5349 |
-
if ( ! empty($contents[$key-1]->ID)){
|
5350 |
-
return $contents[$key-1]->ID;
|
5351 |
}
|
5352 |
}
|
5353 |
}
|
@@ -5363,10 +6058,19 @@ class Utils {
|
|
5363 |
*
|
5364 |
* Get Course iD by any course content
|
5365 |
*/
|
5366 |
-
public function get_course_id_by_content($post = null){
|
5367 |
global $wpdb;
|
5368 |
-
$post = get_post($post);
|
5369 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5370 |
|
5371 |
return (int) $course_id;
|
5372 |
}
|
@@ -5380,14 +6084,24 @@ class Utils {
|
|
5380 |
*
|
5381 |
* @since v.1.4.1
|
5382 |
*/
|
5383 |
-
public function get_course_contents_by_id($course_id = 0){
|
5384 |
global $wpdb;
|
5385 |
|
5386 |
-
$course_id = $this->get_post_id($course_id);
|
5387 |
-
|
5388 |
-
$contents = $wpdb->get_results($wpdb->prepare(
|
5389 |
-
|
5390 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5391 |
|
5392 |
return $contents;
|
5393 |
}
|
@@ -5401,7 +6115,7 @@ class Utils {
|
|
5401 |
*
|
5402 |
* @since v.1.4.2
|
5403 |
*/
|
5404 |
-
public function get_gradebooks(){
|
5405 |
global $wpdb;
|
5406 |
$results = $wpdb->get_results("SELECT * FROM {$wpdb->tutor_gradebooks} ORDER BY grade_point DESC ");
|
5407 |
return $results;
|
@@ -5418,42 +6132,40 @@ class Utils {
|
|
5418 |
*
|
5419 |
* @since v.1.4.2
|
5420 |
*/
|
5421 |
-
public function get_quiz_attempt($quiz_id = 0, $user_id = 0){
|
5422 |
global $wpdb;
|
5423 |
|
5424 |
-
$quiz_id = $this->get_post_id($quiz_id);
|
5425 |
-
$user_id = $this->get_user_id($user_id);
|
5426 |
|
5427 |
$attempt = false;
|
5428 |
|
5429 |
-
$quiz_grade_method = get_tutor_option('quiz_grade_method', 'highest_grade');
|
5430 |
-
|
5431 |
-
if ($quiz_grade_method === 'highest_grade'){
|
5432 |
|
5433 |
-
|
5434 |
-
FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = {$quiz_id} AND user_id = {$user_id} AND attempt_status != 'attempt_started'
|
5435 |
-
ORDER BY earned_marks DESC LIMIT 1; ");
|
5436 |
|
5437 |
-
|
5438 |
|
5439 |
-
|
5440 |
-
COUNT(attempt_id) as attempt_count,
|
5441 |
-
AVG(total_marks) as total_marks,
|
5442 |
-
AVG(earned_marks) as earned_marks
|
5443 |
-
FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = {$quiz_id} AND user_id = {$user_id} AND attempt_status != 'attempt_started' ");
|
5444 |
|
5445 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5446 |
|
5447 |
-
|
5448 |
-
FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = {$quiz_id} AND user_id = {$user_id} AND attempt_status != 'attempt_started'
|
5449 |
-
ORDER BY attempt_id ASC LIMIT 1; ");
|
5450 |
|
5451 |
-
|
5452 |
|
5453 |
-
|
5454 |
-
FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = {$quiz_id} AND user_id = {$user_id} AND attempt_status != 'attempt_started'
|
5455 |
-
ORDER BY attempt_id DESC LIMIT 1; ");
|
5456 |
|
|
|
5457 |
}
|
5458 |
|
5459 |
return $attempt;
|
@@ -5469,19 +6181,19 @@ class Utils {
|
|
5469 |
*
|
5470 |
* @since v.1.4.2
|
5471 |
*/
|
5472 |
-
public function course_progress_status_context($course_id = 0, $user_id = 0){
|
5473 |
-
$course_id
|
5474 |
-
$user_id
|
|
|
5475 |
|
5476 |
-
$is_completed = tutils()->is_completed_course($course_id, $user_id);
|
5477 |
$html = '';
|
5478 |
-
if ($is_completed){
|
5479 |
$html = '<span class="course-completion-status course-completed"><i class="tutor-icon-mark"></i> '.__('Completed', 'tutor').' </span>';
|
5480 |
-
}else{
|
5481 |
-
$is_in_progress = tutor_utils()->get_completed_lesson_count_by_course($course_id, $user_id);
|
5482 |
-
if($is_in_progress){
|
5483 |
$html = '<span class="course-completion-status course-inprogress"><i class="tutor-icon-refresh-button-1"></i> '.__('In Progress', 'tutor').' </span>';
|
5484 |
-
}else{
|
5485 |
$html = '<span class="course-completion-status course-not-taken"><i class="tutor-icon-spinner"></i> '.__('Not Taken', 'tutor').' </span>';
|
5486 |
}
|
5487 |
}
|
@@ -5515,23 +6227,23 @@ class Utils {
|
|
5515 |
*
|
5516 |
* @since v.1.4.3
|
5517 |
*/
|
5518 |
-
public function tutor_pages(){
|
5519 |
-
$pages = apply_filters('tutor_pages', array(
|
5520 |
-
'tutor_dashboard_page_id' => __('Dashboard Page', 'tutor'),
|
5521 |
-
'instructor_register_page' => __('Instructor Registration Page', 'tutor'),
|
5522 |
-
'student_register_page' => __('Student Registration Page', 'tutor'),
|
5523 |
));
|
5524 |
|
5525 |
$new_pages = array();
|
5526 |
-
foreach ($pages as $key => $page){
|
5527 |
-
$page_id = (int) get_tutor_option($key);
|
5528 |
|
5529 |
$wp_page_name = '';
|
5530 |
-
$wp_page
|
5531 |
-
$page_exists
|
5532 |
$page_visible = false;
|
5533 |
|
5534 |
-
if ($wp_page){
|
5535 |
$wp_page_name = $wp_page->post_title;
|
5536 |
$page_visible = $wp_page->post_status === 'publish';
|
5537 |
}
|
@@ -5544,7 +6256,6 @@ class Utils {
|
|
5544 |
'page_exists' => $page_exists,
|
5545 |
'page_visible' => $page_visible,
|
5546 |
);
|
5547 |
-
|
5548 |
}
|
5549 |
|
5550 |
return $new_pages;
|
@@ -5559,36 +6270,36 @@ class Utils {
|
|
5559 |
*
|
5560 |
* @since v.1.4.9
|
5561 |
*/
|
5562 |
-
public function get_course_prev_next_contents_by_id($content_id = 0){
|
5563 |
|
5564 |
-
$course_id
|
5565 |
$course_contents = $this->get_course_contents_by_id($course_id);
|
5566 |
-
$previous_id
|
5567 |
-
$next_id
|
5568 |
-
|
5569 |
-
|
|
|
5570 |
|
5571 |
$i=0;
|
5572 |
-
foreach ($ids as $key => $id){
|
5573 |
$previous_i = $key - 1;
|
5574 |
-
$next_i
|
5575 |
|
5576 |
-
if ($id == $content_id){
|
5577 |
-
if (isset($ids[$previous_i])){
|
5578 |
-
$previous_id = $ids[$previous_i];
|
5579 |
}
|
5580 |
-
if (isset($ids[$next_i])){
|
5581 |
-
$next_id = $ids[$next_i];
|
5582 |
}
|
5583 |
}
|
5584 |
$i++;
|
5585 |
}
|
5586 |
}
|
5587 |
|
5588 |
-
return (object) ['previous_id'
|
5589 |
}
|
5590 |
|
5591 |
-
|
5592 |
/**
|
5593 |
* Get a subset of the items from the given array.
|
5594 |
*
|
@@ -5599,16 +6310,14 @@ class Utils {
|
|
5599 |
*
|
5600 |
* @since v.1.5.2
|
5601 |
*/
|
5602 |
-
|
5603 |
-
|
5604 |
-
if ( ! $this->count($array) || ! $keys){
|
5605 |
return false;
|
5606 |
}
|
5607 |
|
5608 |
-
return array_intersect_key($array, array_flip((array) $keys));
|
5609 |
}
|
5610 |
|
5611 |
-
|
5612 |
/**
|
5613 |
* @param int $instructor_id
|
5614 |
* @param int $course_id
|
@@ -5619,22 +6328,26 @@ class Utils {
|
|
5619 |
*
|
5620 |
* @since v.1.6.4
|
5621 |
*/
|
5622 |
-
public function is_instructor_of_this_course($instructor_id=0, $course_id=0) {
|
5623 |
global $wpdb;
|
5624 |
|
5625 |
-
$instructor_id = $this->get_user_id($instructor_id);
|
5626 |
-
$course_id = $this->get_post_id($course_id);
|
5627 |
|
5628 |
-
if (
|
5629 |
return false;
|
5630 |
}
|
5631 |
|
5632 |
-
$instructor = $wpdb->get_col($wpdb->prepare(
|
5633 |
"SELECT umeta_id
|
5634 |
FROM {$wpdb->usermeta}
|
5635 |
WHERE user_id = %d
|
5636 |
AND meta_key = '_tutor_instructor_course_id'
|
5637 |
-
AND meta_value = %d
|
|
|
|
|
|
|
|
|
5638 |
|
5639 |
if (is_array($instructor) && count($instructor)) {
|
5640 |
return $instructor;
|
@@ -5652,44 +6365,44 @@ class Utils {
|
|
5652 |
*
|
5653 |
* @since v.1.6.6
|
5654 |
*/
|
5655 |
-
public function user_profile_completion($user_id=0) {
|
5656 |
-
$user_id
|
5657 |
-
$instructor = $this->is_instructor($user_id);
|
5658 |
|
5659 |
-
$required_fields = apply_filters('tutor_profile_required_fields', array(
|
5660 |
-
'first_name'
|
5661 |
-
'last_name'
|
5662 |
-
'_tutor_profile_photo'
|
5663 |
-
'_tutor_withdraw_method_data'
|
5664 |
));
|
5665 |
|
5666 |
-
if (
|
5667 |
-
unset($required_fields['_tutor_withdraw_method_data']);
|
5668 |
}
|
5669 |
|
5670 |
$empty_fields = array();
|
5671 |
-
foreach ($required_fields as $key => $field) {
|
5672 |
-
$value = get_user_meta($user_id, $key, true);
|
5673 |
-
if (!$value) {
|
5674 |
-
array_push($empty_fields, $field);
|
5675 |
}
|
5676 |
}
|
5677 |
|
5678 |
-
$total_empty_fields
|
5679 |
-
$total_required_fields = count($required_fields);
|
5680 |
-
$signup_point
|
5681 |
|
5682 |
-
if ($total_empty_fields == 0) {
|
5683 |
$progress = 100;
|
5684 |
} else {
|
5685 |
$completed_field = $total_required_fields-$total_empty_fields;
|
5686 |
$per_field_point = $signup_point / $total_required_fields;
|
5687 |
-
$progress
|
5688 |
}
|
5689 |
|
5690 |
$return = array(
|
5691 |
'empty_fields' => $empty_fields,
|
5692 |
-
'progress'
|
5693 |
);
|
5694 |
|
5695 |
return (object) $return;
|
@@ -5704,10 +6417,10 @@ class Utils {
|
|
5704 |
*
|
5705 |
* @since v1.6.9
|
5706 |
*/
|
5707 |
-
public function get_enrolment_by_enrol_id($enrol_id = 0){
|
5708 |
global $wpdb;
|
5709 |
|
5710 |
-
$enrolment = $wpdb->get_row($wpdb->prepare(
|
5711 |
"SELECT enrol.id AS enrol_id,
|
5712 |
enrol.post_author AS student_id,
|
5713 |
enrol.post_date AS enrol_date,
|
@@ -5742,21 +6455,25 @@ class Utils {
|
|
5742 |
*
|
5743 |
* Get students email by course id
|
5744 |
*/
|
5745 |
-
public function get_student_emails_by_course_id($course_id = 0){
|
5746 |
global $wpdb;
|
5747 |
-
$course_id = $this->get_post_id($course_id);
|
5748 |
|
5749 |
-
$student_emails = $wpdb->get_results($wpdb->prepare(
|
5750 |
-
SELECT
|
5751 |
FROM {$wpdb->posts} enrol
|
5752 |
INNER JOIN {$wpdb->users} student
|
5753 |
-
|
5754 |
-
WHERE enrol.post_type =
|
5755 |
AND enrol.post_parent = %d
|
5756 |
-
AND enrol.post_status =
|
5757 |
-
|
|
|
|
|
|
|
|
|
5758 |
|
5759 |
-
$email_array = array_column($student_emails,'user_email');
|
5760 |
|
5761 |
return $email_array;
|
5762 |
}
|
@@ -5765,12 +6482,19 @@ class Utils {
|
|
5765 |
*requie post id & user id
|
5766 |
*return single comment post
|
5767 |
*/
|
5768 |
-
public function get_single_comment_user_post_id($post_id,$user_id){
|
5769 |
global $wpdb;
|
5770 |
-
$table = $wpdb->prefix."comments";
|
5771 |
-
$query = $wpdb->get_row(
|
5772 |
-
|
5773 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5774 |
return $query ? $query : false;
|
5775 |
}
|
5776 |
|
@@ -5783,16 +6507,16 @@ class Utils {
|
|
5783 |
*
|
5784 |
* Check if course is in wc cart
|
5785 |
*/
|
5786 |
-
public function is_course_added_to_cart($course_or_product_id = 0, $is_product_id=false){
|
5787 |
|
5788 |
-
switch($this->get_option('monetize_by')){
|
5789 |
case 'wc':
|
5790 |
global $woocommerce;
|
5791 |
-
$product_id = $is_product_id ? $course_or_product_id : $this->get_course_product_id($course_or_product_id);
|
5792 |
|
5793 |
-
if($woocommerce->cart) {
|
5794 |
-
foreach($woocommerce->cart->get_cart() as $key => $val ) {
|
5795 |
-
if($product_id == $val['product_id']) {
|
5796 |
return true;
|
5797 |
}
|
5798 |
}
|
@@ -5810,12 +6534,12 @@ class Utils {
|
|
5810 |
*
|
5811 |
* Get profile pic url
|
5812 |
*/
|
5813 |
-
public function get_cover_photo_url($user_id){
|
5814 |
-
$cover_photo_src = tutor()->url.'assets/images/cover-photo.jpg';
|
5815 |
-
$cover_photo_id
|
5816 |
-
if ($cover_photo_id){
|
5817 |
-
$url = wp_get_attachment_image_url($cover_photo_id, 'full');
|
5818 |
-
!empty($url) ? $cover_photo_src = $url : 0;
|
5819 |
}
|
5820 |
|
5821 |
return $cover_photo_src;
|
@@ -5828,71 +6552,99 @@ class Utils {
|
|
5828 |
*
|
5829 |
* Return the course ID by lession, quiz, answer etc.
|
5830 |
*/
|
5831 |
-
public function get_course_id_by($content, $object_id) {
|
5832 |
-
|
5833 |
global $wpdb;
|
5834 |
$course_id = null;
|
5835 |
|
5836 |
-
switch ($content) {
|
5837 |
-
|
5838 |
case 'course' :
|
5839 |
$course_id = $object_id;
|
5840 |
break;
|
5841 |
|
5842 |
case 'topic' :
|
5843 |
case 'announcement' :
|
5844 |
-
$course_id = $wpdb->get_var($wpdb->prepare(
|
5845 |
"SELECT post_parent
|
5846 |
FROM {$wpdb->posts}
|
5847 |
-
WHERE ID=%d
|
|
|
|
|
5848 |
break;
|
5849 |
|
5850 |
case 'lesson' :
|
5851 |
case 'quiz' :
|
5852 |
case 'assignment' :
|
5853 |
-
$course_id = $wpdb->get_var($wpdb->prepare(
|
5854 |
-
"SELECT post_parent
|
5855 |
-
|
|
|
|
|
|
|
|
|
5856 |
break;
|
5857 |
|
5858 |
case 'question' :
|
5859 |
-
$course_id = $wpdb->get_var($wpdb->prepare(
|
5860 |
"SELECT topic.post_parent
|
5861 |
-
FROM
|
5862 |
-
|
5863 |
-
|
5864 |
-
|
|
|
|
|
|
|
|
|
|
|
5865 |
break;
|
5866 |
|
5867 |
case 'quiz_answer' :
|
5868 |
-
$course_id = $wpdb->get_var($wpdb->prepare(
|
5869 |
"SELECT topic.post_parent
|
5870 |
-
FROM
|
5871 |
-
|
5872 |
-
|
5873 |
-
|
5874 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
5875 |
break;
|
5876 |
|
5877 |
case 'attempt' :
|
5878 |
-
$course_id = $wpdb->get_var($wpdb->prepare(
|
5879 |
-
"SELECT course_id
|
|
|
|
|
|
|
|
|
|
|
5880 |
break;
|
5881 |
|
5882 |
case 'attempt_answer' :
|
5883 |
-
$course_id = $wpdb->get_var($wpdb->prepare(
|
5884 |
-
"SELECT course_id
|
5885 |
-
|
|
|
|
|
|
|
|
|
5886 |
break;
|
5887 |
case 'review' :
|
5888 |
-
$course_id = $wpdb->get_var($wpdb->prepare(
|
5889 |
-
"SELECT comment_post_ID
|
|
|
|
|
|
|
|
|
|
|
5890 |
}
|
5891 |
|
5892 |
return $course_id;
|
5893 |
}
|
5894 |
|
5895 |
-
|
5896 |
/**
|
5897 |
* @return bool
|
5898 |
*
|
@@ -5900,22 +6652,24 @@ class Utils {
|
|
5900 |
*
|
5901 |
* Check if user can create, edit, delete various tutor contents such as lesson, quiz, answer etc.
|
5902 |
*/
|
5903 |
-
public function can_user_manage($content, $object_id, $user_id=0, $allow_current_admin=true) {
|
5904 |
|
5905 |
-
if($allow_current_admin && current_user_can( 'administrator' )){
|
5906 |
// Admin has access to everything
|
5907 |
return true;
|
5908 |
}
|
5909 |
|
5910 |
-
$course_id = $this->get_course_id_by($content, $object_id);
|
5911 |
|
5912 |
-
if($course_id) {
|
5913 |
|
5914 |
-
$instructors
|
5915 |
-
$instructor_ids = is_array($instructors) ? array_map(function($instructor){
|
|
|
|
|
5916 |
|
5917 |
-
$user_id
|
5918 |
-
$is_listed = in_array($user_id, $instructor_ids);
|
5919 |
|
5920 |
return $is_listed;
|
5921 |
}
|
@@ -5930,29 +6684,28 @@ class Utils {
|
|
5930 |
*
|
5931 |
* Check if user has access for content like lesson, quiz, assignment etc.
|
5932 |
*/
|
5933 |
-
public function has_enrolled_content_access($content, $object_id=0, $user_id=0) {
|
5934 |
-
$user_id
|
5935 |
-
$object_id = $this->get_post_id($object_id);
|
5936 |
-
$course_id = $this->get_course_id_by($content, $object_id);
|
5937 |
-
$course_content_access = (bool) get_tutor_option('course_content_access_for_ia');
|
5938 |
|
5939 |
do_action( 'tutor_before_enrolment_check', $course_id, $user_id );
|
5940 |
|
5941 |
-
if ($this->is_enrolled($course_id, $user_id)) {
|
5942 |
return true;
|
5943 |
}
|
5944 |
-
if ($course_content_access && (current_user_can('administrator') || current_user_can(tutor()->instructor_role))) {
|
5945 |
return true;
|
5946 |
}
|
5947 |
//Check Lesson edit access to support page builders (eg: Oxygen)
|
5948 |
-
if (current_user_can(tutor()->instructor_role) && tutils()->has_lesson_edit_access()) {
|
5949 |
return true;
|
5950 |
}
|
5951 |
|
5952 |
return false;
|
5953 |
}
|
5954 |
|
5955 |
-
|
5956 |
/**
|
5957 |
* @return date
|
5958 |
*
|
@@ -5960,23 +6713,143 @@ class Utils {
|
|
5960 |
*
|
5961 |
* Return the assignment deadline date based on duration and assignment creation date
|
5962 |
*/
|
5963 |
-
|
5964 |
-
public function get_assignment_deadline_date($assignment_id, $format=null, $fallback=null) {
|
5965 |
|
5966 |
-
|
5967 |
|
5968 |
-
$value = $this->get_assignment_option($assignment_id, 'time_duration.value');
|
5969 |
-
$time
|
5970 |
|
5971 |
-
if(!$value) {
|
5972 |
return $fallback;
|
5973 |
}
|
5974 |
|
5975 |
$publish_date = get_post_field( 'post_date', $assignment_id );
|
5976 |
|
5977 |
$date = date_create( $publish_date );
|
5978 |
-
date_add( $date, date_interval_create_from_date_string($value . ' ' . $time) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5979 |
|
5980 |
-
return
|
|
|
|
|
|
|
|
|
5981 |
}
|
5982 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Tutor Utils Helper functions
|
4 |
+
* @package TUTOR
|
5 |
+
*
|
6 |
+
* @since v.1.0.0
|
7 |
+
*/
|
8 |
+
|
9 |
namespace TUTOR;
|
10 |
|
11 |
if ( ! defined( 'ABSPATH' ) )
|
12 |
exit;
|
13 |
|
|
|
14 |
class Utils {
|
15 |
/**
|
16 |
* @param null $key
|
22 |
*
|
23 |
* @since v.1.0.0
|
24 |
*/
|
25 |
+
public function get_option( $key = null, $default = false ) {
|
26 |
$option = (array) maybe_unserialize(get_option('tutor_option'));
|
27 |
|
28 |
+
if ( empty( $option ) || ! is_array( $option ) ) {
|
29 |
return $default;
|
30 |
}
|
31 |
+
if ( ! $key ) {
|
32 |
return $option;
|
33 |
}
|
34 |
+
if ( array_key_exists( $key, $option ) ) {
|
35 |
+
return apply_filters( $key, $option[$key] );
|
36 |
}
|
37 |
//Access array value via dot notation, such as option->get('value.subvalue')
|
38 |
+
if ( strpos($key, '.') ) {
|
39 |
+
$option_key_array = explode( '.', $key );
|
40 |
|
41 |
$new_option = $option;
|
42 |
+
foreach ( $option_key_array as $dotKey ) {
|
43 |
+
if ( isset( $new_option[$dotKey] ) ) {
|
44 |
$new_option = $new_option[$dotKey];
|
45 |
}else{
|
46 |
return $default;
|
47 |
}
|
48 |
}
|
49 |
+
return apply_filters( $key, $new_option );
|
50 |
}
|
51 |
|
52 |
return $default;
|
60 |
*
|
61 |
* @since v.1.0.0
|
62 |
*/
|
63 |
+
public function update_option( $key = null, $value = false ) {
|
64 |
+
$option = (array) maybe_unserialize( get_option('tutor_option') );
|
|
|
65 |
$option[$key] = $value;
|
66 |
+
update_option( 'tutor_option', $option );
|
67 |
}
|
68 |
|
69 |
/**
|
78 |
*
|
79 |
* @update v.1.4.1 (Added default parameter)
|
80 |
*/
|
81 |
+
public function avalue_dot( $key = null, $array = array(), $default = false ) {
|
|
|
82 |
$array = (array) $array;
|
83 |
+
if ( ! $key || ! count($array) ) {
|
84 |
return $default;
|
85 |
}
|
86 |
+
$option_key_array = explode( '.', $key );
|
87 |
|
88 |
$value = $array;
|
89 |
|
90 |
+
foreach ( $option_key_array as $dotKey ) {
|
91 |
+
if ( isset( $value[$dotKey] ) ) {
|
92 |
$value = $value[$dotKey];
|
93 |
+
} else {
|
94 |
return $default;
|
95 |
}
|
96 |
}
|
111 |
*
|
112 |
* @since v.1.3.3
|
113 |
*/
|
114 |
+
public function array_get( $key = null, $array = array(), $default = false ) {
|
115 |
+
return $this->avalue_dot( $key, $array, $default );
|
116 |
}
|
117 |
|
118 |
/**
|
122 |
*
|
123 |
* @since v.1.0.0
|
124 |
*/
|
125 |
+
public function get_pages() {
|
126 |
$pages = array();
|
127 |
$wp_pages = get_pages();
|
128 |
+
if ( is_array( $wp_pages ) && count( $wp_pages ) ) {
|
129 |
+
foreach ( $wp_pages as $page ) {
|
130 |
$pages[$page->ID] = $page->post_title;
|
131 |
}
|
132 |
}
|
140 |
*
|
141 |
* @since v.1.0.0
|
142 |
*/
|
143 |
+
public function course_archive_page_url() {
|
144 |
$course_post_type = tutor()->course_post_type;
|
145 |
+
$course_page_url = trailingslashit( home_url() ) . $course_post_type;
|
146 |
|
147 |
$course_archive_page = $this->get_option('course_archive_page');
|
148 |
+
if ( $course_archive_page && $course_archive_page !== '-1' ) {
|
149 |
+
$course_page_url = get_permalink( $course_archive_page );
|
150 |
}
|
151 |
+
return trailingslashit( $course_page_url );
|
152 |
}
|
153 |
|
154 |
/**
|
160 |
*
|
161 |
* @since v.1.0.0
|
162 |
*/
|
163 |
+
public function profile_url( $student_id = 0 ) {
|
164 |
+
$site_url = trailingslashit( home_url() ) . 'profile/';
|
165 |
+
$student_id = $this->get_user_id( $student_id );
|
166 |
+
$user_name = '';
|
167 |
+
if ( $student_id ) {
|
|
|
|
|
168 |
global $wpdb;
|
169 |
+
$user = $wpdb->get_row( $wpdb->prepare(
|
170 |
+
"SELECT user_nicename
|
171 |
+
FROM {$wpdb->users}
|
172 |
+
WHERE ID = %d;
|
173 |
+
",
|
174 |
+
$student_id
|
175 |
+
) );
|
176 |
+
|
177 |
+
if ($user) {
|
178 |
$user_name = $user->user_nicename;
|
179 |
}
|
180 |
+
|
181 |
+
} else {
|
182 |
$user_name = 'user_name';
|
183 |
}
|
184 |
|
194 |
*
|
195 |
* @since v.1.0.0
|
196 |
*/
|
197 |
+
public function get_user_by_login( $user_nicename = '' ) {
|
198 |
global $wpdb;
|
199 |
+
$user_nicename = sanitize_text_field( $user_nicename );
|
200 |
+
$user = $wpdb->get_row( $wpdb->prepare(
|
201 |
+
"SELECT *
|
202 |
+
FROM {$wpdb->users}
|
203 |
+
WHERE user_nicename = %s;
|
204 |
+
",
|
205 |
+
$user_nicename
|
206 |
+
) );
|
207 |
return $user;
|
208 |
}
|
209 |
|
215 |
* @since v.1.0.0
|
216 |
* @updated @1.5.9
|
217 |
*/
|
218 |
+
public function has_wc() {
|
219 |
+
return class_exists( 'WooCommerce' );
|
|
|
220 |
}
|
221 |
|
222 |
/**
|
226 |
*
|
227 |
* @since v.1.0.0
|
228 |
*/
|
229 |
+
public function has_edd() {
|
230 |
+
$activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
|
231 |
+
$depends = array( 'easy-digital-downloads/easy-digital-downloads.php' );
|
232 |
+
$has_edd = count( array_intersect( $depends, $activated_plugins ) ) == count( $depends );
|
233 |
+
return $has_edd;
|
|
|
|
|
234 |
}
|
235 |
|
236 |
/**
|
240 |
*
|
241 |
* @since v.1.3.6
|
242 |
*/
|
243 |
+
public function has_pmpro() {
|
244 |
+
$activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
|
245 |
+
$depends = array( 'paid-memberships-pro/paid-memberships-pro.php' );
|
246 |
+
$has_pmpro = count( array_intersect( $depends, $activated_plugins ) ) == count( $depends );
|
247 |
+
return $has_pmpro;
|
248 |
}
|
249 |
|
250 |
public function has_wcs(){
|
251 |
+
$activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
|
252 |
+
$depends = array( 'woocommerce-subscriptions/woocommerce-subscriptions.php' );
|
253 |
+
$has_wcs = count( array_intersect( $depends, $activated_plugins ) ) == count( $depends );
|
254 |
+
return $has_wcs;
|
255 |
}
|
256 |
|
|
|
257 |
/**
|
258 |
* @return bool
|
259 |
*
|
262 |
* @since v.1.4.8
|
263 |
*/
|
264 |
public function has_bp(){
|
265 |
+
$activated_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );
|
266 |
+
$depends = array( 'buddypress/bp-loader.php' );
|
267 |
+
$has_bp = count( array_intersect( $depends, $activated_plugins ) ) == count( $depends );
|
268 |
+
return $has_bp;
|
269 |
}
|
270 |
|
271 |
/**
|
273 |
*
|
274 |
* @since v.1.0.0
|
275 |
*/
|
276 |
+
public function languages() {
|
277 |
$language_codes = array(
|
278 |
'en' => 'English' ,
|
279 |
'aa' => 'Afar' ,
|
412 |
'zu' => 'Zulu' ,
|
413 |
);
|
414 |
|
415 |
+
return apply_filters( 'tutor/utils/languages', $language_codes );
|
416 |
}
|
417 |
|
|
|
418 |
/**
|
419 |
* @param string $value
|
420 |
*
|
422 |
*
|
423 |
* @since v.1.0.0
|
424 |
*/
|
425 |
+
public function print_view( $value = '' ) {
|
426 |
echo '<pre>';
|
427 |
+
print_r( $value );
|
428 |
echo '</pre>';
|
429 |
}
|
430 |
|
437 |
*
|
438 |
* @since v.1.0.0
|
439 |
*/
|
440 |
+
public function get_courses( $excludes = array(), $post_status = array( 'publish' ) ) {
|
|
|
441 |
global $wpdb;
|
442 |
|
443 |
+
$excludes = (array) $excludes;
|
|
|
444 |
$exclude_query = '';
|
445 |
+
|
446 |
+
if ( count( $excludes ) ) {
|
447 |
+
$exclude_query = implode( "','", $excludes );
|
448 |
}
|
449 |
|
450 |
+
$post_status = array_map( function($element) {
|
451 |
+
return "'" . $element . "'";
|
452 |
+
}, $post_status );
|
453 |
|
454 |
+
$post_status = implode( ',', $post_status );
|
455 |
$course_post_type = tutor()->course_post_type;
|
456 |
+
|
457 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
458 |
+
"SELECT ID,
|
459 |
+
post_author,
|
460 |
+
post_title,
|
461 |
+
post_name,
|
462 |
+
post_status,
|
463 |
+
menu_order
|
464 |
+
FROM {$wpdb->posts}
|
465 |
+
WHERE post_status IN ({$post_status})
|
466 |
+
AND ID NOT IN('$exclude_query')
|
467 |
+
AND post_type = %s;
|
468 |
+
",
|
469 |
+
$course_post_type
|
470 |
+
) );
|
471 |
+
|
472 |
return $query;
|
473 |
}
|
474 |
|
481 |
*
|
482 |
* @since v.1.0.0
|
483 |
*/
|
484 |
+
public function get_courses_for_instructors( $instructor_id = 0 ) {
|
485 |
global $wpdb;
|
486 |
|
487 |
+
$instructor_id = $this->get_user_id( $instructor_id );
|
|
|
488 |
$course_post_type = tutor()->course_post_type;
|
489 |
+
|
490 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
491 |
+
"SELECT ID,
|
492 |
+
post_author,
|
493 |
+
post_title,
|
494 |
+
post_name,
|
495 |
+
post_status,
|
496 |
+
menu_order
|
497 |
+
FROM {$wpdb->posts}
|
498 |
+
WHERE post_author = %d
|
499 |
+
AND post_status IN ('publish', 'pending')
|
500 |
+
AND post_type = %s;
|
501 |
+
",
|
502 |
+
$instructor_id,
|
503 |
+
$course_post_type
|
504 |
+
) );
|
505 |
+
|
506 |
return $query;
|
507 |
}
|
508 |
|
515 |
*
|
516 |
* @since v.1.0.0
|
517 |
*/
|
518 |
+
public function get_course_count_by_instructor( $instructor_id ) {
|
|
|
519 |
global $wpdb;
|
520 |
|
521 |
$course_post_type = tutor()->course_post_type;
|
522 |
+
|
523 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
524 |
+
"SELECT COUNT(ID)
|
525 |
+
FROM {$wpdb->posts}
|
526 |
+
INNER JOIN {$wpdb->usermeta}
|
527 |
+
ON user_id = %d
|
528 |
+
AND meta_key = %s
|
529 |
+
AND meta_value = ID
|
530 |
+
WHERE post_status = %s
|
531 |
+
AND post_type = %s;
|
532 |
+
",
|
533 |
+
$instructor_id,
|
534 |
+
'_tutor_instructor_course_id',
|
535 |
+
'publish',
|
536 |
+
$course_post_type
|
537 |
+
) );
|
538 |
|
539 |
return $count;
|
540 |
}
|
548 |
*
|
549 |
* @since v.1.0.0
|
550 |
*/
|
551 |
+
public function get_courses_by_instructor( $instructor_id = 0, $post_status = array( 'publish' ) ) {
|
552 |
global $wpdb;
|
553 |
|
554 |
+
$instructor_id = $this->get_user_id($instructor_id);
|
555 |
$course_post_type = tutor()->course_post_type;
|
556 |
|
557 |
+
if ( $post_status === 'any' ) {
|
558 |
$where_post_status = "";
|
559 |
+
} else {
|
560 |
+
$post_status = (array) $post_status;
|
561 |
+
$statuses = "'" . implode( "','", $post_status ) . "'";
|
562 |
$where_post_status = "AND $wpdb->posts.post_status IN({$statuses}) ";
|
563 |
}
|
564 |
|
565 |
+
$pageposts = $wpdb->get_results( $wpdb->prepare(
|
566 |
+
"SELECT $wpdb->posts.*
|
567 |
+
FROM $wpdb->posts
|
568 |
+
INNER JOIN {$wpdb->usermeta}
|
569 |
+
ON $wpdb->usermeta.user_id = %d
|
570 |
+
AND $wpdb->usermeta.meta_key = %s
|
571 |
+
AND $wpdb->usermeta.meta_value = $wpdb->posts.ID
|
572 |
+
WHERE 1 = 1 {$where_post_status}
|
573 |
+
AND $wpdb->posts.post_type = %s
|
574 |
+
ORDER BY $wpdb->posts.post_date DESC;
|
575 |
+
",
|
576 |
+
$instructor_id,
|
577 |
+
'_tutor_instructor_course_id',
|
578 |
+
$course_post_type
|
579 |
+
), OBJECT);
|
580 |
|
|
|
581 |
return $pageposts;
|
582 |
}
|
583 |
|
588 |
*
|
589 |
* @since v.1.0.0
|
590 |
*/
|
591 |
+
public function get_archive_page_course_count() {
|
592 |
global $wp_query;
|
593 |
return $wp_query->post_count;
|
594 |
}
|
600 |
*
|
601 |
* @since v.1.0.0
|
602 |
*/
|
603 |
+
public function get_course_count() {
|
604 |
global $wpdb;
|
605 |
|
606 |
$course_post_type = tutor()->course_post_type;
|
607 |
+
|
608 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
609 |
+
"SELECT COUNT(ID)
|
610 |
+
FROM {$wpdb->posts}
|
611 |
+
WHERE post_status = %s
|
612 |
+
AND post_type = %s;
|
613 |
+
",
|
614 |
+
'publish',
|
615 |
+
$course_post_type
|
616 |
+
) );
|
617 |
+
|
618 |
return $count;
|
619 |
}
|
620 |
|
625 |
*
|
626 |
* @since v.1.0.0
|
627 |
*/
|
628 |
+
public function get_lesson_count() {
|
629 |
global $wpdb;
|
630 |
|
631 |
$lesson_post_type = tutor()->lesson_post_type;
|
632 |
+
|
633 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
634 |
+
"SELECT COUNT(ID)
|
635 |
+
FROM {$wpdb->posts}
|
636 |
+
WHERE post_status = %s
|
637 |
+
AND post_type = %s;
|
638 |
+
",
|
639 |
+
'publish',
|
640 |
+
$lesson_post_type
|
641 |
+
) );
|
642 |
+
|
643 |
return $count;
|
644 |
}
|
645 |
|
653 |
*
|
654 |
* @since v.1.0.0
|
655 |
*/
|
656 |
+
public function get_lesson( $course_id = 0, $limit = 10 ) {
|
657 |
+
$course_id = $this->get_post_id( $course_id );
|
|
|
658 |
$lesson_post_type = tutor()->lesson_post_type;
|
659 |
+
|
660 |
$args = array(
|
661 |
+
'post_status' => 'publish',
|
662 |
+
'post_type' => $lesson_post_type,
|
663 |
+
'posts_per_page' => $limit,
|
664 |
+
'meta_query' => array(
|
665 |
array(
|
666 |
'key' => '_tutor_course_id_for_lesson',
|
667 |
'value' => $course_id,
|
669 |
),
|
670 |
),
|
671 |
);
|
672 |
+
|
673 |
+
$query = new \WP_Query( $args );
|
674 |
|
675 |
return $query;
|
676 |
}
|
684 |
*
|
685 |
* @since v.1.0.0
|
686 |
*/
|
687 |
+
public function get_lesson_count_by_course( $course_id = 0 ) {
|
|
|
688 |
global $wpdb;
|
689 |
|
690 |
+
$course_id = $this->get_post_id($course_id);
|
691 |
$lesson_post_type = tutor()->lesson_post_type;
|
692 |
|
693 |
+
$topicIDS = $wpdb->get_col( $wpdb->prepare(
|
694 |
+
"SELECT ID
|
695 |
+
FROM {$wpdb->posts}
|
696 |
+
WHERE post_type = %s
|
697 |
+
AND post_parent = %d;
|
698 |
+
",
|
699 |
+
'topics',
|
700 |
+
$course_id
|
701 |
+
) );
|
702 |
|
703 |
$lesson_count = 0;
|
704 |
+
if ( $this->count( $topicIDS ) ) {
|
705 |
+
$inIDS = implode( ",", $topicIDS );
|
706 |
+
$lesson_count = $wpdb->get_var( $wpdb->prepare(
|
707 |
+
"SELECT COUNT(ID)
|
708 |
+
FROM {$wpdb->posts}
|
709 |
+
WHERE post_parent IN({$inIDS})
|
710 |
+
AND post_type = %s;
|
711 |
+
",
|
712 |
+
$lesson_post_type
|
713 |
+
) );
|
714 |
}
|
715 |
|
716 |
return (int) $lesson_count;
|
726 |
*
|
727 |
* @since v.1.0.0
|
728 |
*/
|
729 |
+
public function get_completed_lesson_count_by_course( $course_id = 0, $user_id = 0 ) {
|
|
|
|
|
730 |
global $wpdb;
|
731 |
|
732 |
+
$course_id = $this->get_post_id( $course_id );
|
733 |
+
$user_id = $this->get_user_id( $user_id );
|
734 |
+
|
735 |
+
$completed_lesson_ids = $wpdb->get_col( $wpdb->prepare(
|
736 |
+
"SELECT post_id
|
737 |
+
FROM {$wpdb->postmeta}
|
738 |
+
WHERE meta_key = %s
|
739 |
+
AND meta_value = %d;
|
740 |
+
",
|
741 |
+
'_tutor_course_id_for_lesson',
|
742 |
+
$course_id
|
743 |
+
) );
|
744 |
|
745 |
$count = 0;
|
746 |
+
if ( is_array( $completed_lesson_ids ) && count( $completed_lesson_ids) ) {
|
747 |
$completed_lesson_meta_ids = array();
|
748 |
+
foreach ( $completed_lesson_ids as $lesson_id ) {
|
749 |
+
$completed_lesson_meta_ids[] = '_tutor_completed_lesson_id_' . $lesson_id;
|
750 |
}
|
751 |
+
$in_ids = implode( "','", $completed_lesson_meta_ids );
|
752 |
|
753 |
+
$count = (int) $wpdb->get_var( $wpdb->prepare(
|
754 |
+
"SELECT count(umeta_id)
|
755 |
+
FROM {$wpdb->usermeta}
|
756 |
+
WHERE user_id = %d
|
757 |
+
AND meta_key IN ('{$in_ids}')
|
758 |
+
",
|
759 |
+
$user_id
|
760 |
+
) );
|
761 |
}
|
762 |
|
763 |
return $count;
|
772 |
* @since v.1.0.0
|
773 |
* @updated v.1.6.1
|
774 |
*/
|
775 |
+
public function get_course_completed_percent( $course_id = 0, $user_id = 0 ) {
|
776 |
+
$course_id = $this->get_post_id($course_id);
|
777 |
+
$user_id = $this->get_user_id($user_id);
|
|
|
778 |
$completed_lesson = $this->get_completed_lesson_count_by_course($course_id, $user_id);
|
779 |
+
$course_contents = tutils()->get_course_contents_by_id($course_id);
|
780 |
+
$totalContents = $this->count($course_contents);
|
781 |
+
$totalContents = $totalContents ? $totalContents : 0;
|
782 |
+
$completedCount = $completed_lesson;
|
783 |
+
|
784 |
+
if ( tutils()->count( $course_contents ) ) {
|
785 |
+
foreach ( $course_contents as $content ) {
|
786 |
+
if ( $content->post_type === 'tutor_quiz' ) {
|
787 |
+
$attempt = $this->get_quiz_attempt( $content->ID );
|
788 |
+
if ( $attempt) {
|
|
|
|
|
789 |
$completedCount++;
|
790 |
}
|
791 |
+
} elseif ( $content->post_type === 'tutor_assignments' ) {
|
792 |
+
$isSubmitted = $this->is_assignment_submitted( $content->ID );
|
793 |
+
if ( $isSubmitted ) {
|
794 |
$completedCount++;
|
795 |
}
|
796 |
}
|
797 |
}
|
798 |
}
|
799 |
|
800 |
+
if ( $totalContents > 0 && $completedCount > 0 ) {
|
801 |
+
return number_format( ( $completedCount * 100 ) / $totalContents );
|
802 |
}
|
803 |
|
804 |
return 0;
|
813 |
*
|
814 |
* @since v.1.0.0
|
815 |
*/
|
816 |
+
public function get_topics( $course_id = 0 ) {
|
817 |
+
$course_id = $this->get_post_id( $course_id );
|
818 |
|
819 |
$args = array(
|
820 |
+
'post_type' => 'topics',
|
821 |
+
'post_parent' => $course_id,
|
822 |
+
'orderby' => 'menu_order',
|
823 |
+
'order' => 'ASC',
|
824 |
+
'posts_per_page' => -1,
|
825 |
);
|
826 |
|
827 |
+
$query = new \WP_Query( $args );
|
828 |
+
|
829 |
return $query;
|
830 |
}
|
831 |
|
838 |
*
|
839 |
* @since v.1.0.0
|
840 |
*/
|
841 |
+
public function get_next_topic_order_id( $course_ID ) {
|
842 |
global $wpdb;
|
843 |
|
844 |
+
$last_order = (int) $wpdb->get_var( $wpdb->prepare(
|
845 |
+
"SELECT MAX(menu_order)
|
846 |
+
FROM {$wpdb->posts}
|
847 |
+
WHERE post_parent = %d
|
848 |
+
AND post_type = %s;
|
849 |
+
",
|
850 |
+
$course_ID,
|
851 |
+
'topics'
|
852 |
+
) );
|
853 |
|
854 |
return $last_order + 1;
|
855 |
}
|
863 |
*
|
864 |
* @since v.1.0.0
|
865 |
*/
|
866 |
+
public function get_next_course_content_order_id( $topic_ID ) {
|
867 |
global $wpdb;
|
868 |
|
869 |
+
$last_order = (int) $wpdb->get_var( $wpdb->prepare(
|
870 |
+
"SELECT MAX(menu_order)
|
871 |
+
FROM {$wpdb->posts}
|
872 |
+
WHERE post_parent = %d;
|
873 |
+
",
|
874 |
+
$topic_ID
|
875 |
+
) );
|
876 |
+
|
877 |
return $last_order + 1;
|
878 |
}
|
879 |
|
887 |
*
|
888 |
* @since v.1.0.0
|
889 |
*/
|
890 |
+
public function get_lessons_by_topic( $topics_id = 0, $limit = 10 ) {
|
891 |
+
$topics_id = $this->get_post_id( $topics_id );
|
|
|
892 |
$lesson_post_type = tutor()->lesson_post_type;
|
893 |
+
|
894 |
$args = array(
|
895 |
+
'post_type' => $lesson_post_type,
|
896 |
+
'post_parent' => $topics_id,
|
897 |
+
'posts_per_page' => $limit,
|
898 |
+
'orderby' => 'menu_order',
|
899 |
+
'order' => 'ASC',
|
900 |
);
|
901 |
|
902 |
+
$query = new \WP_Query( $args );
|
903 |
|
904 |
return $query;
|
905 |
}
|
914 |
*
|
915 |
* @since v.1.0.0
|
916 |
*/
|
917 |
+
public function get_course_contents_by_topic( $topics_id = 0, $limit = 10 ) {
|
918 |
+
$topics_id = $this->get_post_id($topics_id);
|
|
|
919 |
$lesson_post_type = tutor()->lesson_post_type;
|
920 |
+
$post_type = apply_filters( 'tutor_course_contents_post_types', array( $lesson_post_type, 'tutor_quiz' ) );
|
921 |
+
|
922 |
$args = array(
|
923 |
+
'post_type' => $post_type,
|
924 |
+
'post_parent' => $topics_id,
|
925 |
+
'posts_per_page' => $limit,
|
926 |
+
'orderby' => 'menu_order',
|
927 |
+
'order' => 'ASC',
|
928 |
);
|
929 |
|
930 |
+
$query = new \WP_Query( $args );
|
931 |
|
932 |
return $query;
|
933 |
}
|
939 |
*
|
940 |
* @since v.1.0.0
|
941 |
*/
|
942 |
+
public function checking_nonce( $request_method = 'post' ) {
|
943 |
|
944 |
+
$data = $request_method === 'post' ? $_POST : $_GET;
|
945 |
+
$matched = ! empty( $data[tutor()->nonce] ) && wp_verify_nonce( $data[tutor()->nonce], tutor()->nonce_action );
|
946 |
|
947 |
+
! $matched ? exit( __('Nonce not matched', 'tutor') ) : 0;
|
948 |
}
|
949 |
|
950 |
/**
|
954 |
*
|
955 |
* @since v.1.0.0
|
956 |
*/
|
957 |
+
public function is_course_purchasable( $course_id = 0 ) {
|
958 |
+
$course_id = $this->get_post_id( $course_id );
|
959 |
+
$price_type = $this->price_type( $course_id );
|
960 |
|
961 |
+
if ( $price_type === 'free' ) {
|
962 |
+
$is_paid = apply_filters( 'is_course_paid', false, $course_id );
|
963 |
+
if ( ! $is_paid ) {
|
|
|
964 |
return false;
|
965 |
}
|
966 |
}
|
967 |
+
|
968 |
+
return apply_filters( 'is_course_purchasable', false, $course_id );
|
969 |
}
|
970 |
|
971 |
/**
|
977 |
*
|
978 |
* @since v.1.0.0
|
979 |
*/
|
980 |
+
public function get_course_price( $course_id = 0 ) {
|
981 |
+
$price = null;
|
982 |
+
$course_id = $this->get_post_id( $course_id );
|
983 |
|
984 |
+
if ( $this->is_course_purchasable() ) {
|
|
|
|
|
|
|
|
|
|
|
985 |
$monetize_by = $this->get_option('monetize_by');
|
986 |
|
987 |
+
if ( $this->has_wc() && $monetize_by === 'wc' ) {
|
988 |
+
$product_id = tutor_utils()->get_course_product_id( $course_id );
|
989 |
$product = wc_get_product( $product_id );
|
990 |
|
991 |
if ( $product ) {
|
992 |
$price = $product->get_price();
|
993 |
}
|
994 |
+
} else {
|
995 |
+
$price = apply_filters( 'get_tutor_course_price', null, $course_id );
|
996 |
}
|
997 |
}
|
998 |
|
1010 |
*
|
1011 |
* @since v.1.3.1
|
1012 |
*/
|
1013 |
+
public function get_raw_course_price( $course_id = 0 ) {
|
1014 |
+
$course_id = $this->get_post_id( $course_id );
|
1015 |
|
1016 |
$prices = array(
|
1017 |
'regular_price' => 0,
|
1020 |
|
1021 |
$monetize_by = $this->get_option('monetize_by');
|
1022 |
|
1023 |
+
$product_id = $this->get_course_product_id( $course_id );
|
1024 |
+
if ( $product_id ) {
|
|
|
1025 |
if ( $monetize_by === 'wc' && $this->has_wc() ) {
|
1026 |
$prices['regular_price'] = get_post_meta( $product_id, '_regular_price', true );
|
1027 |
$prices['sale_price'] = get_post_meta( $product_id, '_sale_price', true );
|
1030 |
$prices['sale_price'] = get_post_meta( $product_id, 'edd_price', true );
|
1031 |
}
|
1032 |
}
|
|
|
1033 |
|
1034 |
return (object) $prices;
|
1035 |
}
|
1043 |
*
|
1044 |
* @since v.1.3.5
|
1045 |
*/
|
1046 |
+
public function price_type( $course_id = 0 ) {
|
1047 |
+
$course_id = $this->get_post_id( $course_id );
|
1048 |
+
$price_type = get_post_meta( $course_id, '_tutor_course_price_type', true );
|
|
|
|
|
1049 |
return $price_type;
|
1050 |
}
|
1051 |
|
1058 |
*
|
1059 |
* @since v.1.0.0
|
1060 |
*/
|
1061 |
+
public function is_enrolled( $course_id = 0, $user_id = 0 ) {
|
1062 |
+
$course_id = $this->get_post_id( $course_id );
|
1063 |
+
$user_id = $this->get_user_id( $user_id );
|
1064 |
|
1065 |
+
if ( is_user_logged_in() ) {
|
|
|
|
|
|
|
|
|
1066 |
global $wpdb;
|
1067 |
|
1068 |
+
do_action( 'tutor_is_enrolled_before', $course_id, $user_id );
|
1069 |
+
|
1070 |
+
$getEnrolledInfo = $wpdb->get_row( $wpdb->prepare(
|
1071 |
+
"SELECT ID,
|
1072 |
+
post_author,
|
1073 |
+
post_date,
|
1074 |
+
post_date_gmt,
|
1075 |
+
post_title
|
1076 |
+
FROM {$wpdb->posts}
|
1077 |
+
WHERE post_type = %s
|
1078 |
+
AND post_parent = %d
|
1079 |
+
AND post_author = %d
|
1080 |
+
AND post_status = %s;
|
1081 |
+
",
|
1082 |
+
'tutor_enrolled',
|
1083 |
+
$course_id,
|
1084 |
+
$user_id,
|
1085 |
+
'completed'
|
1086 |
+
) );
|
1087 |
|
1088 |
if ( $getEnrolledInfo ) {
|
1089 |
+
return apply_filters( 'tutor_is_enrolled', $getEnrolledInfo, $course_id, $user_id );
|
1090 |
}
|
1091 |
}
|
1092 |
+
|
1093 |
return false;
|
1094 |
}
|
1095 |
|
1103 |
*
|
1104 |
* @since v.1.0.0
|
1105 |
*/
|
1106 |
+
public function has_any_enrolled( $course_id = 0, $user_id = 0 ) {
|
1107 |
+
$course_id = $this->get_post_id( $course_id );
|
1108 |
+
$user_id = $this->get_user_id( $user_id );
|
1109 |
|
1110 |
+
if ( is_user_logged_in() ) {
|
1111 |
global $wpdb;
|
1112 |
|
1113 |
+
$getEnrolledInfo = $wpdb->get_row( $wpdb->prepare(
|
1114 |
+
"SELECT ID,
|
1115 |
+
post_author,
|
1116 |
+
post_date,
|
1117 |
+
post_date_gmt,
|
1118 |
+
post_title
|
1119 |
+
FROM {$wpdb->posts}
|
1120 |
+
WHERE post_type = %s
|
1121 |
+
AND post_parent = %d
|
1122 |
+
AND post_author = %d;
|
1123 |
+
",
|
1124 |
+
'tutor_enrolled',
|
1125 |
+
$course_id,
|
1126 |
+
$user_id
|
1127 |
+
) );
|
1128 |
|
1129 |
if ( $getEnrolledInfo ) {
|
1130 |
return $getEnrolledInfo;
|
1131 |
}
|
1132 |
}
|
1133 |
+
|
1134 |
return false;
|
1135 |
}
|
1136 |
|
1143 |
*
|
1144 |
* @since v.1.6.1
|
1145 |
*/
|
1146 |
+
public function get_course_by_enrol_id( $enrol_id = 0 ) {
|
1147 |
+
if ( ! $enrol_id ) {
|
|
|
1148 |
return false;
|
1149 |
}
|
1150 |
|
1151 |
global $wpdb;
|
1152 |
|
1153 |
+
$course_id = (int) $wpdb->get_var( $wpdb->prepare(
|
1154 |
+
"SELECT post_parent
|
1155 |
+
FROM {$wpdb->posts}
|
1156 |
+
WHERE post_type = %s
|
1157 |
+
AND ID = %d
|
1158 |
+
",
|
1159 |
+
'tutor_enrolled',
|
1160 |
+
$enrol_id
|
1161 |
+
) );
|
1162 |
|
1163 |
if ( $course_id ) {
|
1164 |
+
return get_post( $course_id );
|
1165 |
}
|
1166 |
|
1167 |
return null;
|
1177 |
*
|
1178 |
* @since v.1.0.0
|
1179 |
*/
|
1180 |
+
public function is_course_enrolled_by_lesson( $lesson_id = 0, $user_id = 0 ) {
|
1181 |
+
$lesson_id = $this->get_post_id( $lesson_id );
|
1182 |
+
$user_id = $this->get_user_id( $user_id );
|
1183 |
+
$course_id = $this->get_course_id_by_lesson( $lesson_id );
|
1184 |
|
1185 |
+
return $this->is_enrolled( $course_id );
|
|
|
|
|
|
|
|
|
|
|
1186 |
}
|
1187 |
|
1188 |
/**
|
1197 |
* @updated v.1.4.8
|
1198 |
* Added Legacy Supports
|
1199 |
*/
|
1200 |
+
public function get_course_id_by_lesson( $lesson_id = 0 ) {
|
1201 |
+
$lesson_id = $this->get_post_id( $lesson_id );
|
1202 |
+
$course_id = get_post_meta( $lesson_id, '_tutor_course_id_for_lesson', true );
|
1203 |
|
1204 |
+
if ( ! $course_id ) {
|
1205 |
+
$course_id = $this->get_course_id_by_content( $lesson_id );
|
|
|
|
|
|
|
|
|
1206 |
}
|
1207 |
+
if ( ! $course_id ) {
|
1208 |
$course_id = 0;
|
1209 |
}
|
1210 |
|
1220 |
*
|
1221 |
* @since v.1.0.0
|
1222 |
*/
|
1223 |
+
public function get_course_first_lesson( $course_id = 0 ) {
|
|
|
1224 |
global $wpdb;
|
1225 |
|
1226 |
+
$course_id = $this->get_post_id( $course_id );
|
1227 |
+
$user_id = get_current_user_id();
|
1228 |
+
|
1229 |
+
$lessons = $wpdb->get_results( $wpdb->prepare(
|
1230 |
+
"SELECT items.ID
|
1231 |
+
FROM {$wpdb->posts} topic
|
1232 |
+
INNER JOIN {$wpdb->posts} items
|
1233 |
+
ON topic.ID = items.post_parent
|
1234 |
+
WHERE topic.post_parent = %d
|
1235 |
+
AND items.post_status = %s
|
1236 |
+
ORDER BY topic.menu_order ASC,
|
1237 |
+
items.menu_order ASC;
|
1238 |
+
",
|
1239 |
+
$course_id,
|
1240 |
+
'publish'
|
1241 |
+
) );
|
1242 |
|
1243 |
$first_lesson = false;
|
1244 |
|
1245 |
+
if ( tutils()->count( $lessons ) ) {
|
1246 |
+
if ( ! empty( $lessons[0] ) ) {
|
1247 |
$first_lesson = $lessons[0];
|
1248 |
}
|
1249 |
|
1250 |
+
foreach ( $lessons as $lesson ) {
|
1251 |
+
$is_complete = get_user_meta( $user_id, "_tutor_completed_lesson_id_{$lesson->ID}", true );
|
1252 |
+
if ( ! $is_complete ) {
|
1253 |
$first_lesson = $lesson;
|
1254 |
break;
|
1255 |
}
|
1256 |
}
|
1257 |
|
1258 |
+
if ( ! empty($first_lesson->ID) ) {
|
1259 |
+
return get_permalink( $first_lesson->ID );
|
1260 |
}
|
1261 |
}
|
1262 |
|
1269 |
*
|
1270 |
* @since v.1.0.0
|
1271 |
*/
|
1272 |
+
public function course_sub_pages() {
|
1273 |
$nav_items = array(
|
1274 |
+
'questions' => __('Q&A', 'tutor'),
|
1275 |
'announcements' => __('Announcements', 'tutor'),
|
1276 |
);
|
1277 |
+
|
1278 |
+
return apply_filters( 'tutor_course/single/enrolled/nav_items', $nav_items );
|
1279 |
}
|
1280 |
|
1281 |
/**
|
1285 |
*
|
1286 |
* @since v.1.0.0
|
1287 |
*/
|
1288 |
+
public function get_video( $post_id = 0 ) {
|
1289 |
+
$post_id = $this->get_post_id( $post_id );
|
1290 |
+
$attachments = get_post_meta( $post_id, '_video', true );
|
1291 |
+
if ( $attachments ) {
|
1292 |
+
$attachments = maybe_unserialize( $attachments );
|
1293 |
}
|
1294 |
return $attachments;
|
1295 |
}
|
1302 |
*
|
1303 |
* Update the video Info
|
1304 |
*/
|
1305 |
+
public function update_video( $post_id = 0, $video_data = array() ) {
|
1306 |
+
$post_id = $this->get_post_id( $post_id );
|
1307 |
|
1308 |
+
if ( is_array( $video_data ) && count( $video_data ) ) {
|
1309 |
+
update_post_meta( $post_id, '_video', $video_data );
|
1310 |
}
|
1311 |
}
|
1312 |
|
1317 |
*
|
1318 |
* @since v.1.0.0
|
1319 |
*/
|
1320 |
+
public function get_attachments( $post_id = 0 ) {
|
1321 |
+
$post_id = $this->get_post_id( $post_id );
|
1322 |
+
$attachments = maybe_unserialize( get_post_meta( $post_id, '_tutor_attachments', true ) );
|
1323 |
$attachments_arr = array();
|
|
|
1324 |
|
1325 |
+
$font_icons = apply_filters( 'tutor_file_types_icon', array(
|
1326 |
'archive',
|
1327 |
'audio',
|
1328 |
'code',
|
1335 |
'image',
|
1336 |
));
|
1337 |
|
1338 |
+
if ( is_array( $attachments ) && count( $attachments ) ) {
|
1339 |
foreach ( $attachments as $attachment ) {
|
1340 |
$url = wp_get_attachment_url( $attachment );
|
1341 |
$file_type = wp_check_filetype( $url );
|
1342 |
$ext = $file_type['ext'];
|
1343 |
+
$title = get_the_title($attachment);
|
1344 |
|
1345 |
+
$file_path = get_attached_file( $attachment );
|
1346 |
$size_bytes = file_exists($file_path) ? filesize( $file_path ) : 0;
|
1347 |
$size = size_format( $size_bytes, 2 );
|
1348 |
+
$type = wp_ext2type( $ext );
|
1349 |
|
1350 |
$icon = 'default';
|
1351 |
if ( $type && in_array( $type, $font_icons ) ) {
|
1381 |
*
|
1382 |
* @since v.1.0.0
|
1383 |
*/
|
1384 |
+
public function playtime_string( $seconds ) {
|
1385 |
+
$sign = ( ( $seconds < 0 ) ? '-' : '' );
|
1386 |
+
$seconds = round( abs( $seconds ) );
|
1387 |
$H = (int) floor( $seconds / 3600);
|
1388 |
+
$M = (int) floor( ($seconds - (3600 * $H) ) / 60 );
|
1389 |
$S = (int) round( $seconds - (3600 * $H) - (60 * $M) );
|
1390 |
return $sign.($H ? $H.':' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).':'.str_pad($S, 2, 0, STR_PAD_LEFT);
|
1391 |
}
|
1399 |
*
|
1400 |
* @since v.1.0.0
|
1401 |
*/
|
1402 |
+
public function playtime_array( $seconds ) {
|
1403 |
$run_time_format = array(
|
1404 |
+
'hours' => '00',
|
1405 |
'minutes' => '00',
|
1406 |
'seconds' => '00',
|
1407 |
);
|
1408 |
|
1409 |
+
if ($seconds <= 0 ) {
|
1410 |
return $run_time_format;
|
1411 |
}
|
1412 |
|
1413 |
+
$playTimeString = $this->playtime_string( $seconds );
|
1414 |
+
$timeInArray = explode( ':', $playTimeString );
|
1415 |
|
1416 |
$run_time_size = count($timeInArray);
|
1417 |
+
if ( $run_time_size === 3 ) {
|
1418 |
+
$run_time_format[ 'hours' ] = $timeInArray[0];
|
1419 |
+
$run_time_format[ 'minutes' ] = $timeInArray[1];
|
1420 |
+
$run_time_format[ 'seconds' ] = $timeInArray[2];
|
1421 |
+
} elseif ( $run_time_size === 2 ) {
|
1422 |
+
$run_time_format[ 'minutes' ] = $timeInArray[0];
|
1423 |
+
$run_time_format[ 'seconds' ] = $timeInArray[1];
|
1424 |
}
|
1425 |
|
1426 |
return $run_time_format;
|
1435 |
*
|
1436 |
* @since v.1.0.0
|
1437 |
*/
|
1438 |
+
public function seconds_to_time_context( $seconds ) {
|
1439 |
+
$sign = ( ($seconds < 0) ? '-' : '');
|
1440 |
+
$seconds = round( abs( $seconds ) );
|
1441 |
+
$H = (int) floor( $seconds / 3600);
|
1442 |
+
$M = (int) floor( ($seconds - (3600 * $H) ) / 60 );
|
1443 |
+
$S = (int) round( $seconds - (3600 * $H) - (60 * $M) );
|
1444 |
|
1445 |
return $sign.($H ? $H.'h ' : '').($H ? str_pad($M, 2, '0', STR_PAD_LEFT) : intval($M)).'m '.str_pad($S, 2, 0, STR_PAD_LEFT).'s';
|
1446 |
}
|
1452 |
*
|
1453 |
* @since v.1.0.0
|
1454 |
*/
|
1455 |
+
public function get_video_info( $lesson_id = 0 ) {
|
1456 |
+
$lesson_id = $this->get_post_id( $lesson_id );
|
1457 |
+
$video = $this->get_video( $lesson_id );
|
1458 |
|
1459 |
+
if ( ! $video ) {
|
|
|
|
|
|
|
|
|
1460 |
return false;
|
1461 |
}
|
1462 |
|
1464 |
'playtime' => '00:00',
|
1465 |
);
|
1466 |
|
1467 |
+
$types = apply_filters( 'tutor_video_types', array( "mp4" => "video/mp4", "webm" => "video/webm", "ogg" => "video/ogg" ) );
|
1468 |
|
1469 |
$videoSource = $this->avalue_dot('source', $video);
|
1470 |
|
1471 |
+
if ( $videoSource === 'html5' ) {
|
1472 |
+
$sourceVideoID = $this->avalue_dot( 'source_video_id', $video );
|
1473 |
+
$video_info = get_post_meta( $sourceVideoID, '_wp_attachment_metadata', true );
|
1474 |
|
1475 |
+
if ( $video_info && in_array( $this->array_get('mime_type', $video_info), $types ) ) {
|
1476 |
$path = get_attached_file( $sourceVideoID );
|
1477 |
$info['playtime'] = $video_info['length_formatted'];
|
1478 |
$info['path'] = $path;
|
1482 |
}
|
1483 |
}
|
1484 |
|
1485 |
+
if ( $videoSource !== 'html5' ) {
|
1486 |
+
$video = maybe_unserialize( get_post_meta( $lesson_id, '_video', true ) );
|
1487 |
+
$runtimeHours = tutor_utils()->avalue_dot( 'runtime.hours', $video );
|
1488 |
+
$runtimeMinutes = tutor_utils()->avalue_dot( 'runtime.minutes', $video );
|
1489 |
+
$runtimeSeconds = tutor_utils()->avalue_dot( 'runtime.seconds', $video );
|
|
|
1490 |
|
1491 |
+
$runtimeHours = $runtimeHours ? $runtimeHours : '00';
|
1492 |
$runtimeMinutes = $runtimeMinutes ? $runtimeMinutes : '00';
|
1493 |
$runtimeSeconds = $runtimeSeconds ? $runtimeSeconds : '00';
|
1494 |
|
1495 |
$info['playtime'] = "$runtimeHours:$runtimeMinutes:$runtimeSeconds";
|
1496 |
}
|
1497 |
|
1498 |
+
$info = array_merge( $info, $video );
|
1499 |
|
1500 |
return (object) $info;
|
1501 |
}
|
1502 |
|
1503 |
+
public function get_optimized_duration( $duration ) {
|
1504 |
/* if(is_string($duration)){
|
1505 |
strpos($duration, '00:')===0 ? $duration=substr($duration, 3) : 0; // Remove Empty hour
|
1506 |
strpos($duration, '00:')===0 ? $duration=substr($duration, 3) : 0; // Remove empty minute
|
1518 |
*
|
1519 |
* @since v.1.0.0
|
1520 |
*/
|
1521 |
+
public function is_html5_video( $post_id = 0 ) {
|
1522 |
+
$post_id = $this->get_post_id( $post_id );
|
1523 |
+
$video = $this->get_video( $post_id );
|
1524 |
|
1525 |
+
if ( ! $video ) {
|
|
|
1526 |
return false;
|
1527 |
}
|
1528 |
+
|
1529 |
+
$videoSource = $this->avalue_dot( 'source', $video );
|
1530 |
+
|
1531 |
return $videoSource === 'html5';
|
1532 |
}
|
1533 |
|
1543 |
*
|
1544 |
* @since v.1.0.0
|
1545 |
*/
|
1546 |
+
public function get_lesson_type_icon( $lesson_id = 0, $html = false, $echo = false ) {
|
1547 |
+
$post_id = $this->get_post_id( $lesson_id );
|
1548 |
+
$video = tutor_utils()->get_video_info( $post_id );
|
|
|
1549 |
|
1550 |
$play_time = false;
|
1551 |
+
if ( $video ) {
|
1552 |
$play_time = $video->playtime;
|
1553 |
}
|
1554 |
|
1555 |
$tutor_lesson_type_icon = $play_time ? 'youtube' : 'document';
|
1556 |
|
1557 |
+
if ( $html ) {
|
1558 |
$tutor_lesson_type_icon = "<i class='tutor-icon-$tutor_lesson_type_icon'></i> ";
|
1559 |
}
|
1560 |
|
1561 |
+
if ( $echo ) {
|
1562 |
echo $tutor_lesson_type_icon;
|
1563 |
}
|
1564 |
|
1573 |
*
|
1574 |
* @since v.1.0.0
|
1575 |
*/
|
1576 |
+
public function is_completed_lesson( $lesson_id = 0, $user_id = 0 ) {
|
1577 |
+
$lesson_id = $this->get_post_id( $lesson_id );
|
1578 |
+
$user_id = $this->get_user_id( $user_id );
|
1579 |
+
$is_completed = get_user_meta( $user_id, '_tutor_completed_lesson_id_'.$lesson_id, true );
|
1580 |
|
1581 |
+
if ( $is_completed ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
1582 |
return $is_completed;
|
1583 |
}
|
1584 |
|
1597 |
*
|
1598 |
* @updated v.1.4.9
|
1599 |
*/
|
1600 |
+
public function is_completed_course( $course_id = 0, $user_id = 0 ) {
|
1601 |
+
if ( ! is_user_logged_in() ) {
|
1602 |
+
return apply_filters( 'is_completed_course', false, $course_id, $user_id );
|
|
|
1603 |
}
|
1604 |
|
1605 |
global $wpdb;
|
1606 |
$course_id = $this->get_post_id($course_id);
|
1607 |
+
$user_id = $this->get_user_id($user_id);
|
1608 |
|
1609 |
+
$is_completed = $wpdb->get_row( $wpdb->prepare(
|
1610 |
+
"SELECT comment_ID,
|
1611 |
+
comment_post_ID AS course_id,
|
1612 |
+
comment_author AS completed_user_id,
|
1613 |
+
comment_date AS completion_date,
|
1614 |
+
comment_content AS completed_hash
|
1615 |
+
FROM {$wpdb->comments}
|
1616 |
+
WHERE comment_agent = %s
|
1617 |
+
AND comment_type = %s
|
1618 |
+
AND comment_post_ID = %d
|
1619 |
+
AND user_id = %d;
|
1620 |
+
",
|
1621 |
+
'TutorLMSPlugin',
|
1622 |
+
'course_completed',
|
1623 |
+
$course_id,
|
1624 |
+
$user_id
|
1625 |
+
) );
|
1626 |
|
1627 |
+
if ( $is_completed ) {
|
1628 |
+
return apply_filters( 'is_completed_course', $is_completed, $course_id, $user_id );
|
1629 |
}
|
1630 |
|
1631 |
+
return apply_filters( 'is_completed_course', false, $course_id, $user_id );
|
1632 |
}
|
1633 |
|
1634 |
/**
|
1640 |
*
|
1641 |
* @since v.1.0.0
|
1642 |
*/
|
1643 |
+
public function sanitize_array( $input = array() ) {
|
1644 |
$array = array();
|
1645 |
|
1646 |
+
if ( is_array( $input ) && count( $input ) ) {
|
1647 |
+
foreach ( $input as $key => $value ) {
|
1648 |
+
if ( is_array( $value )) {
|
1649 |
+
$array[$key] = $this->sanitize_array( $value );
|
1650 |
+
} else {
|
1651 |
+
$key = sanitize_text_field( $key );
|
1652 |
+
$value = sanitize_text_field( $value );
|
1653 |
$array[$key] = $value;
|
1654 |
}
|
1655 |
}
|
1667 |
*
|
1668 |
* @since v.1.0.0
|
1669 |
*/
|
1670 |
+
public function has_video_in_single( $post_id = 0 ) {
|
1671 |
+
if ( is_single() ) {
|
1672 |
+
$post_id = $this->get_post_id( $post_id );
|
|
|
1673 |
|
1674 |
$video = $this->get_video( $post_id );
|
1675 |
+
if ( $video && $this->array_get( 'source', $video ) !== '-1' ) {
|
1676 |
|
1677 |
+
$not_empty =!empty( $video[ 'source_video_id' ] ) ||
|
1678 |
+
!empty( $video[ 'source_external_url' ] ) ||
|
1679 |
+
!empty( $video[ 'source_youtube' ] ) ||
|
1680 |
+
!empty( $video[ 'source_vimeo' ] ) ||
|
1681 |
+
!empty( $video[ 'source_embedded' ] );
|
1682 |
|
1683 |
return $not_empty ? $video : false;
|
1684 |
}
|
1701 |
*
|
1702 |
* @since v.1.0.0
|
1703 |
*/
|
1704 |
+
public function get_students( $start = 0, $limit = 10, $search_term = '' ) {
|
|
|
|
|
1705 |
global $wpdb;
|
1706 |
|
1707 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
1708 |
+
|
1709 |
+
$students = $wpdb->get_results( $wpdb->prepare(
|
1710 |
+
"SELECT SQL_CALC_FOUND_ROWS {$wpdb->users}.*
|
1711 |
+
FROM {$wpdb->users}
|
1712 |
+
INNER JOIN {$wpdb->usermeta}
|
1713 |
+
ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
|
1714 |
+
WHERE {$wpdb->usermeta}.meta_key = %s
|
1715 |
+
AND ( {$wpdb->users}.display_name LIKE %s OR {$wpdb->users}.user_email LIKE %s )
|
1716 |
+
ORDER BY {$wpdb->usermeta}.meta_value DESC
|
1717 |
+
LIMIT {$start}, {$limit};
|
1718 |
+
",
|
1719 |
+
'_is_tutor_student',
|
1720 |
+
$search_term,
|
1721 |
+
$search_term,
|
1722 |
+
) );
|
1723 |
|
1724 |
return $students;
|
1725 |
}
|
1734 |
*
|
1735 |
* @since v.1.0.0
|
1736 |
*/
|
1737 |
+
public function get_total_students( $search_term = '' ) {
|
|
|
|
|
1738 |
global $wpdb;
|
1739 |
|
1740 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
1741 |
+
|
1742 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
1743 |
+
"SELECT COUNT({$wpdb->users}.ID)
|
1744 |
+
FROM {$wpdb->users}
|
1745 |
+
INNER JOIN {$wpdb->usermeta}
|
1746 |
+
ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
|
1747 |
+
WHERE {$wpdb->usermeta}.meta_key = %s
|
1748 |
+
AND ( {$wpdb->users}.display_name LIKE %s OR {$wpdb->users}.user_email LIKE %s );
|
1749 |
+
",
|
1750 |
+
'_is_tutor_student',
|
1751 |
+
$search_term,
|
1752 |
+
$search_term,
|
1753 |
+
) );
|
1754 |
|
1755 |
return (int) $count;
|
1756 |
}
|
1764 |
*
|
1765 |
* @since v.1.0.0
|
1766 |
*/
|
1767 |
+
public function get_completed_courses_ids_by_user( $user_id = 0 ) {
|
1768 |
global $wpdb;
|
1769 |
|
1770 |
+
$user_id = $this->get_user_id( $user_id );
|
1771 |
|
1772 |
+
$course_ids = (array) $wpdb->get_col( $wpdb->prepare(
|
1773 |
+
"SELECT comment_post_ID AS course_id
|
1774 |
+
FROM {$wpdb->comments}
|
1775 |
+
WHERE comment_agent = %s
|
1776 |
+
AND comment_type = %s
|
1777 |
+
AND user_id = %d
|
1778 |
+
",
|
1779 |
+
'TutorLMSPlugin',
|
1780 |
+
'course_completed',
|
1781 |
+
$user_id
|
1782 |
+
) );
|
1783 |
|
1784 |
return $course_ids;
|
1785 |
}
|
1793 |
*
|
1794 |
* @since v.1.0.0
|
1795 |
*/
|
1796 |
+
public function get_courses_by_user( $user_id = 0 ) {
|
1797 |
+
$user_id = $this->get_user_id( $user_id );
|
1798 |
+
$course_ids = $this->get_completed_courses_ids_by_user( $user_id );
|
1799 |
|
1800 |
+
if ( count($course_ids) ) {
|
1801 |
$course_post_type = tutor()->course_post_type;
|
1802 |
$course_args = array(
|
1803 |
+
'post_type' => $course_post_type,
|
1804 |
+
'post_status' => 'publish',
|
1805 |
+
'post__in' => $course_ids,
|
1806 |
'posts_per_page' => -1
|
1807 |
);
|
1808 |
|
1809 |
+
return new \WP_Query( $course_args );
|
1810 |
}
|
1811 |
|
1812 |
return false;
|
1821 |
*
|
1822 |
* @since v.1.0.0
|
1823 |
*/
|
1824 |
+
public function get_active_courses_by_user( $user_id = 0 ) {
|
1825 |
+
$user_id = $this->get_user_id( $user_id );
|
1826 |
+
$course_ids = $this->get_completed_courses_ids_by_user( $user_id );
|
1827 |
+
$enrolled_course_ids = $this->get_enrolled_courses_ids_by_user( $user_id );
|
1828 |
+
$active_courses = array_diff( $enrolled_course_ids, $course_ids );
|
1829 |
|
1830 |
+
if ( count( $active_courses ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1831 |
$course_post_type = tutor()->course_post_type;
|
1832 |
$course_args = array(
|
1833 |
+
'post_type' => $course_post_type,
|
1834 |
+
'post_status' => 'publish',
|
1835 |
+
'post__in' => $active_courses,
|
1836 |
'posts_per_page' => -1,
|
1837 |
);
|
1838 |
|
1839 |
+
return new \WP_Query( $course_args );
|
1840 |
}
|
1841 |
|
1842 |
return false;
|
1851 |
*
|
1852 |
* @since v.1.0.0
|
1853 |
*/
|
1854 |
+
public function get_enrolled_courses_ids_by_user( $user_id = 0 ) {
|
|
|
1855 |
global $wpdb;
|
1856 |
+
$user_id = $this->get_user_id( $user_id );
|
1857 |
+
$course_ids = $wpdb->get_col( $wpdb->prepare(
|
1858 |
+
"SELECT post_parent
|
1859 |
+
FROM {$wpdb->posts}
|
1860 |
+
WHERE post_type = %s
|
1861 |
+
AND post_status = %s
|
1862 |
+
AND post_author = %d;
|
1863 |
+
",
|
1864 |
+
'tutor_enrolled',
|
1865 |
+
'completed',
|
1866 |
+
$user_id
|
1867 |
+
) );
|
1868 |
|
1869 |
return $course_ids;
|
1870 |
}
|
1876 |
*
|
1877 |
* Get the total enrolled users at course
|
1878 |
*/
|
1879 |
+
public function count_enrolled_users_by_course( $course_id = 0 ) {
|
1880 |
global $wpdb;
|
1881 |
+
|
1882 |
+
$course_id = $this->get_post_id( $course_id );
|
1883 |
|
1884 |
$course_ids = $wpdb->get_var($wpdb->prepare(
|
1885 |
"SELECT COUNT(ID)
|
1886 |
+
FROM {$wpdb->posts}
|
1887 |
+
WHERE post_type = %s
|
1888 |
+
AND post_status = %s
|
1889 |
+
AND post_parent = %d;
|
1890 |
+
",
|
1891 |
+
'tutor_enrolled',
|
1892 |
+
'completed',
|
1893 |
+
$course_id
|
1894 |
+
) );
|
1895 |
|
1896 |
return (int) $course_ids;
|
1897 |
}
|
1903 |
*
|
1904 |
* Get the enrolled courses by user
|
1905 |
*/
|
1906 |
+
public function get_enrolled_courses_by_user( $user_id = 0, $post_status='publish' ) {
|
1907 |
global $wpdb;
|
1908 |
|
1909 |
+
$user_id = $this->get_user_id( $user_id );
|
1910 |
+
$course_ids = $this->get_enrolled_courses_ids_by_user( $user_id );
|
1911 |
|
1912 |
+
if ( count( $course_ids ) ) {
|
1913 |
$course_post_type = tutor()->course_post_type;
|
1914 |
$course_args = array(
|
1915 |
+
'post_type' => $course_post_type,
|
1916 |
+
'post_status' => $post_status,
|
1917 |
+
'post__in' => $course_ids,
|
1918 |
'posts_per_page' => -1
|
1919 |
);
|
1920 |
+
return new \WP_Query( $course_args );
|
1921 |
}
|
1922 |
+
|
1923 |
return false;
|
1924 |
}
|
1925 |
|
|
|
1926 |
/**
|
1927 |
* @param int $post_id
|
1928 |
*
|
1930 |
*
|
1931 |
* Get the video streaming URL by post/lesson/course ID
|
1932 |
*/
|
1933 |
+
public function get_video_stream_url( $post_id = 0 ) {
|
1934 |
+
$post_id = $this->get_post_id( $post_id );
|
1935 |
+
$post = get_post( $post_id );
|
1936 |
|
1937 |
+
if ( $post->post_type === tutor()->lesson_post_type ) {
|
1938 |
+
$video_url = trailingslashit( home_url() ) . 'video-url/' . $post->post_name;
|
1939 |
+
} else {
|
1940 |
+
$video_info = tutor_utils()->get_video_info( $post_id );
|
1941 |
$video_url = $video_info->url;
|
1942 |
}
|
1943 |
|
1954 |
*
|
1955 |
* @since v.1.0.0
|
1956 |
*/
|
1957 |
+
public function get_lesson_reading_info_full( $lesson_id = 0, $user_id = 0 ) {
|
1958 |
+
$lesson_id = $this->get_post_id( $lesson_id );
|
1959 |
+
$user_id = $this->get_user_id( $user_id );
|
1960 |
|
1961 |
+
$lesson_info = (array) maybe_unserialize( get_user_meta( $user_id, '_lesson_reading_info', true ) );
|
1962 |
+
return $this->avalue_dot( $lesson_id, $lesson_info );
|
1963 |
}
|
1964 |
|
1965 |
/**
|
1971 |
*
|
1972 |
* @since v.1.0.0
|
1973 |
*/
|
1974 |
+
public function get_post_id( $post_id = 0) {
|
1975 |
+
if ( ! $post_id ) {
|
1976 |
$post_id = get_the_ID();
|
1977 |
+
if ( ! $post_id ) {
|
1978 |
return false;
|
1979 |
}
|
1980 |
}
|
1991 |
*
|
1992 |
* @since v.1.0.0
|
1993 |
*/
|
1994 |
+
public function get_user_id( $user_id = 0 ) {
|
1995 |
+
if ( ! $user_id) {
|
1996 |
$user_id = get_current_user_id();
|
1997 |
+
if ( ! $user_id ) {
|
1998 |
return false;
|
1999 |
}
|
2000 |
}
|
2013 |
*
|
2014 |
* @since v.1.0.0
|
2015 |
*/
|
2016 |
+
public function get_lesson_reading_info( $lesson_id = 0, $user_id = 0, $key = '' ) {
|
2017 |
+
$lesson_id = $this->get_post_id( $lesson_id );
|
2018 |
+
$user_id = $this->get_user_id( $user_id );
|
2019 |
+
$lesson_info = $this->get_lesson_reading_info_full( $lesson_id, $user_id );
|
|
|
|
|
2020 |
|
2021 |
return $this->avalue_dot($key, $lesson_info);
|
2022 |
}
|
2032 |
*
|
2033 |
* @since v.1.0.0
|
2034 |
*/
|
2035 |
+
public function update_lesson_reading_info( $lesson_id = 0, $user_id = 0, $key = '', $value = '' ) {
|
2036 |
$lesson_id = $this->get_post_id($lesson_id);
|
2037 |
+
$user_id = $this->get_user_id($user_id);
|
2038 |
|
2039 |
+
if ( $key && $value ) {
|
2040 |
+
$lesson_info = (array) maybe_unserialize( get_user_meta( $user_id, '_lesson_reading_info', true ) );
|
2041 |
+
$lesson_info[ $lesson_id ][ $key ] = $value;
|
2042 |
+
update_user_meta( $user_id, '_lesson_reading_info', $lesson_info );
|
2043 |
}
|
2044 |
}
|
2045 |
|
2052 |
*
|
2053 |
* @since v.1.0.0
|
2054 |
*/
|
2055 |
+
public function get_youtube_video_id( $url = '') {
|
2056 |
+
if ( ! $url ) {
|
2057 |
return false;
|
2058 |
}
|
|
|
2059 |
|
2060 |
+
preg_match( '%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match );
|
2061 |
+
|
2062 |
+
if ( isset( $match[1] ) ) {
|
2063 |
$youtube_id = $match[1];
|
2064 |
return $youtube_id;
|
2065 |
}
|
2076 |
*
|
2077 |
* @since v.1.0.0
|
2078 |
*/
|
2079 |
+
public function get_vimeo_video_id( $url = '' ) {
|
2080 |
+
if ( preg_match('%^https?:\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|video\/|)(\d+)(?:$|\/|\?)(?:[?]?.*)$%im', $url, $match ) ) {
|
2081 |
+
if ( isset( $match[3] ) ) {
|
2082 |
return $match[3];
|
2083 |
}
|
2084 |
}
|
2092 |
*
|
2093 |
* @since v.1.0.0
|
2094 |
*/
|
2095 |
+
public function mark_lesson_complete( $post_id = 0, $user_id = 0 ) {
|
2096 |
+
$post_id = $this->get_post_id( $post_id );
|
2097 |
+
$user_id = $this->get_user_id( $user_id );
|
2098 |
|
2099 |
+
do_action( 'tutor_mark_lesson_complete_before', $post_id, $user_id );
|
2100 |
+
update_user_meta( $user_id, '_tutor_completed_lesson_id_'.$post_id, tutor_time() );
|
2101 |
+
do_action( 'tutor_mark_lesson_complete_after', $post_id, $user_id );
|
2102 |
}
|
2103 |
|
2104 |
/**
|
2119 |
*
|
2120 |
* @return bool
|
2121 |
*/
|
2122 |
+
public function do_enroll( $course_id = 0, $order_id = 0, $user_id = 0 ) {
|
2123 |
+
if ( ! $course_id ) {
|
|
|
2124 |
return false;
|
2125 |
}
|
2126 |
|
2127 |
+
do_action( 'tutor_before_enroll', $course_id );
|
2128 |
+
$user_id = $this->get_user_id( $user_id );
|
2129 |
+
$title = __( 'Course Enrolled', 'tutor')." – ".date( get_option('date_format') ) .' @ '.date(get_option('time_format') ) ;
|
2130 |
|
2131 |
$enrolment_status = 'completed';
|
2132 |
|
2133 |
+
if ( $this->is_course_purchasable( $course_id ) ) {
|
2134 |
/**
|
2135 |
* We need to verify this enrollment, we will change the status later after payment confirmation
|
2136 |
*/
|
2137 |
$enrolment_status = 'pending';
|
2138 |
}
|
2139 |
|
2140 |
+
$enroll_data = apply_filters( 'tutor_enroll_data',
|
2141 |
array(
|
2142 |
'post_type' => 'tutor_enrolled',
|
2143 |
'post_title' => $title,
|
2149 |
|
2150 |
// Insert the post into the database
|
2151 |
$isEnrolled = wp_insert_post( $enroll_data );
|
2152 |
+
if ( $isEnrolled ) {
|
2153 |
|
2154 |
// Run this hook for both of pending and completed enrollment
|
2155 |
+
do_action( 'tutor_after_enroll', $course_id, $isEnrolled );
|
2156 |
|
2157 |
// Run this hook for completed enrollment regardless of payment provider and free/paid mode
|
2158 |
+
if( $enroll_data['post_status'] == 'completed' ) {
|
2159 |
do_action('tutor_after_enrolled', $course_id, $user_id, $isEnrolled);
|
2160 |
}
|
2161 |
|
2162 |
//Mark Current User as Students with user meta data
|
2163 |
update_user_meta( $user_id, '_is_tutor_student', tutor_time() );
|
2164 |
|
2165 |
+
if ( $order_id ) {
|
2166 |
//Mark order for course and user
|
2167 |
+
$product_id = $this->get_course_product_id( $course_id );
|
2168 |
update_post_meta( $isEnrolled, '_tutor_enrolled_by_order_id', $order_id );
|
2169 |
update_post_meta( $isEnrolled, '_tutor_enrolled_by_product_id', $product_id );
|
2170 |
update_post_meta( $order_id, '_is_tutor_order_for_course', tutor_time() );
|
2184 |
*
|
2185 |
* @since v.1.6.1
|
2186 |
*/
|
2187 |
+
public function course_enrol_status_change( $enrol_id = false, $new_status = '' ) {
|
2188 |
+
if ( ! $enrol_id ) {
|
|
|
2189 |
return;
|
2190 |
}
|
2191 |
|
2192 |
global $wpdb;
|
2193 |
|
2194 |
+
do_action( 'tutor/course/enrol_status_change/before',$enrol_id, $new_status );
|
2195 |
$wpdb->update( $wpdb->posts, array( 'post_status' => $new_status ), array( 'ID' => $enrol_id ) );
|
2196 |
+
do_action( 'tutor/course/enrol_status_change/after',$enrol_id, $new_status );
|
2197 |
}
|
2198 |
|
|
|
2199 |
/**
|
2200 |
* @param int $course_id
|
2201 |
* @param int $user_id
|
2202 |
* @param string $cancel_status
|
2203 |
*/
|
2204 |
+
public function cancel_course_enrol( $course_id = 0, $user_id = 0, $cancel_status = 'canceled' ) {
|
2205 |
+
$course_id = $this->get_post_id( $course_id );
|
2206 |
+
$user_id = $this->get_user_id( $user_id );
|
2207 |
+
$enrolled = $this->is_enrolled($course_id, $user_id);
|
|
|
2208 |
|
2209 |
+
if ( $enrolled ) {
|
2210 |
global $wpdb;
|
2211 |
|
2212 |
+
if ( $cancel_status === 'delete') {
|
2213 |
+
$wpdb->delete( $wpdb->posts, array( 'post_type' => 'tutor_enrolled', 'post_author' => $user_id, 'post_parent' => $course_id ) );
|
2214 |
|
2215 |
//Delete Related Meta Data
|
2216 |
+
delete_post_meta( $enrolled->ID, '_tutor_enrolled_by_product_id' );
|
2217 |
+
$order_id = get_post_meta( $enrolled->ID, '_tutor_enrolled_by_order_id', true );
|
2218 |
+
if ( $order_id ) {
|
2219 |
+
delete_post_meta( $enrolled->ID, '_tutor_enrolled_by_order_id' );
|
2220 |
+
delete_post_meta( $order_id, '_is_tutor_order_for_course' );
|
2221 |
+
delete_post_meta( $order_id, '_tutor_order_for_course_id_'.$course_id );
|
2222 |
|
2223 |
+
do_action( 'tutor_enrollment/after/delete', $enrolled->ID );
|
2224 |
}
|
2225 |
+
} else {
|
2226 |
+
$wpdb->update( $wpdb->posts, array( 'post_status' => $cancel_status), array('post_type' => 'tutor_enrolled', 'post_author' => $user_id, 'post_parent' => $course_id ) );
|
2227 |
|
2228 |
+
if ( $cancel_status === 'cancel' ) {
|
2229 |
+
do_action( 'tutor_enrollment/after/cancel', $enrolled->ID );
|
2230 |
}
|
2231 |
}
|
2232 |
}
|
2239 |
*
|
2240 |
* @since v.1.0.0
|
2241 |
*/
|
2242 |
+
public function complete_course_enroll( $order_id ) {
|
2243 |
+
if ( ! tutor_utils()->is_tutor_order( $order_id ) ) {
|
2244 |
return;
|
2245 |
}
|
2246 |
|
2247 |
global $wpdb;
|
2248 |
|
2249 |
+
$enrolled_ids_with_course = $this->get_course_enrolled_ids_by_order_id( $order_id );
|
2250 |
+
if ( $enrolled_ids_with_course ) {
|
2251 |
+
$enrolled_ids = wp_list_pluck( $enrolled_ids_with_course, 'enrolled_id' );
|
2252 |
|
2253 |
+
if ( is_array( $enrolled_ids ) && count( $enrolled_ids ) ) {
|
2254 |
+
foreach ( $enrolled_ids as $enrolled_id ) {
|
2255 |
$wpdb->update( $wpdb->posts, array( 'post_status' => 'completed' ), array( 'ID' => $enrolled_id ) );
|
2256 |
}
|
2257 |
}
|
2265 |
*
|
2266 |
* @since v.1.0.0
|
2267 |
*/
|
2268 |
+
public function get_course_enrolled_ids_by_order_id( $order_id ) {
|
2269 |
global $wpdb;
|
|
|
|
|
|
|
2270 |
|
2271 |
+
//Getting all of courses ids within this order
|
2272 |
+
$courses_ids = $wpdb->get_results( $wpdb->prepare(
|
2273 |
+
"SELECT *
|
2274 |
+
FROM {$wpdb->postmeta}
|
2275 |
+
WHERE post_id = %d
|
2276 |
+
AND meta_key LIKE '_tutor_order_for_course_id_%'
|
2277 |
+
",
|
2278 |
+
$order_id
|
2279 |
+
) );
|
2280 |
+
|
2281 |
+
if ( is_array( $courses_ids ) && count( $courses_ids ) ) {
|
2282 |
$course_enrolled_by_order = array();
|
2283 |
+
foreach ( $courses_ids as $courses_id ) {
|
2284 |
+
$course_id = str_replace( '_tutor_order_for_course_id_', '',$courses_id->meta_key );
|
2285 |
+
$course_enrolled_by_order[] = array(
|
2286 |
+
'course_id' => $course_id,
|
2287 |
+
'enrolled_id' => $courses_id->meta_value,
|
2288 |
+
'order_id' => $courses_id->post_id
|
2289 |
+
);
|
2290 |
}
|
2291 |
return $course_enrolled_by_order;
|
2292 |
}
|
2304 |
*
|
2305 |
* WooCommerce specific utils
|
2306 |
*/
|
2307 |
+
public function get_wc_products_db() {
|
2308 |
global $wpdb;
|
2309 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
2310 |
+
"SELECT ID,
|
2311 |
+
post_title
|
2312 |
+
FROM {$wpdb->posts}
|
2313 |
+
WHERE post_status = %s
|
2314 |
+
AND post_type = %s;
|
2315 |
+
",
|
2316 |
+
'publish',
|
2317 |
+
'product',
|
2318 |
+
) );
|
2319 |
|
2320 |
return $query;
|
2321 |
}
|
2325 |
*
|
2326 |
* Get EDD Products
|
2327 |
*/
|
2328 |
+
public function get_edd_products() {
|
2329 |
global $wpdb;
|
2330 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
2331 |
+
"SELECT ID,
|
2332 |
+
post_title
|
2333 |
+
FROM {$wpdb->posts}
|
2334 |
+
WHERE post_status = %s
|
2335 |
+
AND post_type = %s;
|
2336 |
+
",
|
2337 |
+
'publish',
|
2338 |
+
'download',
|
2339 |
+
) );
|
2340 |
|
2341 |
return $query;
|
2342 |
}
|
2350 |
*
|
2351 |
* @since v.1.0.0
|
2352 |
*/
|
2353 |
+
public function get_course_product_id( $course_id = 0 ) {
|
2354 |
+
$course_id = $this->get_post_id( $course_id );
|
2355 |
+
$product_id = (int) get_post_meta( $course_id, '_tutor_course_product_id', true );
|
2356 |
|
2357 |
return $product_id;
|
2358 |
}
|
2366 |
*
|
2367 |
* @since v.1.0.0
|
2368 |
*/
|
2369 |
+
public function product_belongs_with_course( $product_id = 0 ) {
|
|
|
2370 |
global $wpdb;
|
2371 |
|
2372 |
+
$query = $wpdb->get_row( $wpdb->prepare(
|
2373 |
+
"SELECT *
|
2374 |
+
FROM {$wpdb->postmeta}
|
2375 |
+
WHERE meta_key = %s
|
2376 |
+
AND meta_value = %d
|
2377 |
+
limit 1
|
2378 |
+
",
|
2379 |
+
'_tutor_course_product_id',
|
2380 |
+
$product_id
|
2381 |
+
) );
|
2382 |
|
2383 |
return $query;
|
2384 |
}
|
2388 |
*
|
2389 |
* @since v.1.0.0
|
2390 |
*/
|
2391 |
+
public function get_enrolled_statuses() {
|
|
|
2392 |
return apply_filters(
|
2393 |
'tutor_get_enrolled_statuses',
|
2394 |
array (
|
2412 |
*
|
2413 |
* @since v.1.0.0
|
2414 |
*/
|
2415 |
+
public function is_tutor_order( $order_id ) {
|
2416 |
+
return get_post_meta( $order_id, '_is_tutor_order_for_course', true );
|
2417 |
}
|
2418 |
|
2419 |
/**
|
2421 |
*
|
2422 |
* @deprecated
|
2423 |
*/
|
2424 |
+
public function tutor_student_dashboard_pages() {
|
2425 |
+
_deprecated_function( __METHOD__, '1.1.2', 'tutor_dashboard_pages' );
|
2426 |
return $this->tutor_dashboard_pages();
|
2427 |
}
|
2428 |
|
2433 |
*
|
2434 |
* @since v.1.0.0
|
2435 |
*/
|
2436 |
+
public function tutor_dashboard_pages() {
|
2437 |
+
$nav_items = apply_filters( 'tutor_dashboard/nav_items', array(
|
2438 |
+
'index' => __( 'Dashboard', 'tutor' ),
|
2439 |
+
'my-profile' => __( 'My Profile', 'tutor' ),
|
2440 |
+
'enrolled-courses' => __( 'Enrolled Courses', 'tutor' ),
|
2441 |
+
'wishlist' => __( 'Wishlist', 'tutor' ),
|
2442 |
+
'reviews' => __( 'Reviews', 'tutor' ),
|
2443 |
+
'my-quiz-attempts' => __( 'My Quiz Attempts', 'tutor' ),
|
2444 |
+
'purchase_history' => __( 'Purchase History', 'tutor' ),
|
|
|
2445 |
));
|
2446 |
|
2447 |
+
$instructor_nav_items = apply_filters( 'tutor_dashboard/instructor_nav_items', array(
|
2448 |
+
'separator-1' => array( 'title' => __( 'Instructor', 'tutor'), 'auth_cap' => tutor()->instructor_role, 'type' => 'separator' ),
|
2449 |
+
'create-course' => array( 'title' => __( 'Create Course', 'tutor'), 'show_ui' => false, 'auth_cap' => tutor()->instructor_role ),
|
2450 |
+
'my-courses' => array( 'title' => __( 'My Courses', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
|
2451 |
+
'announcements' => array( 'title' => __( 'Announcements', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
|
2452 |
+
'earning' => array( 'title' => __( 'Earnings', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
|
2453 |
+
'withdraw' => array( 'title' => __( 'Withdrawals', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
|
2454 |
+
'quiz-attempts' => array( 'title' => __( 'Quiz Attempts', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
|
2455 |
+
'question-answer' => array( 'title' => __( 'Question & Answer', 'tutor'), 'auth_cap' => tutor()->instructor_role ),
|
2456 |
));
|
2457 |
|
2458 |
+
$disable = get_tutor_option( 'disable_course_review' );
|
2459 |
+
if ( $disable && isset( $nav_items['reviews'] ) ) {
|
2460 |
+
unset( $nav_items['reviews'] );
|
2461 |
}
|
2462 |
|
2463 |
+
$nav_items = array_merge( $nav_items, $instructor_nav_items );
|
2464 |
|
2465 |
+
$new_navs = apply_filters( 'tutor_dashboard/bottom_nav_items', array(
|
2466 |
+
'separator-2' => array( 'title' => '', 'type' => 'separator' ),
|
2467 |
+
'settings' => __( 'Settings', 'tutor' ),
|
2468 |
+
'logout' => __( 'Logout', 'tutor' ),
|
2469 |
));
|
2470 |
+
$all_nav_items = array_merge( $nav_items, $new_navs );
|
2471 |
|
2472 |
+
return apply_filters( 'tutor_dashboard/nav_items_all', $all_nav_items );
|
2473 |
}
|
2474 |
|
2475 |
+
public function tutor_dashboard_permalinks() {
|
2476 |
$dashboard_pages = $this->tutor_dashboard_pages();
|
2477 |
|
2478 |
+
$dashboard_permalinks = apply_filters( 'tutor_dashboard/permalinks', array(
|
2479 |
+
'retrieve-password' => array( 'title' => __( 'Retrieve Password', 'tutor' ), 'login_require' => false ),
|
2480 |
));
|
2481 |
|
2482 |
+
$dashboard_pages = array_merge( $dashboard_pages, $dashboard_permalinks );
|
2483 |
|
2484 |
return $dashboard_pages;
|
2485 |
}
|
2488 |
* @return mixed
|
2489 |
*
|
2490 |
* Tutor Dashboard UI nav, only for using in the nav, it's handling user permission based
|
2491 |
+
* Dashboard nav items
|
2492 |
*
|
2493 |
* @since v.1.3.4
|
2494 |
*/
|
2495 |
+
public function tutor_dashboard_nav_ui_items() {
|
2496 |
$nav_items = $this->tutor_dashboard_pages();
|
2497 |
|
2498 |
+
foreach ( $nav_items as $key => $nav_item ) {
|
2499 |
+
if ( is_array($nav_item) ) {
|
2500 |
|
2501 |
+
if ( isset( $nav_item['show_ui'] ) && ! tutor_utils()->array_get( 'show_ui', $nav_item ) ) {
|
2502 |
+
unset( $nav_items[ $key ] );
|
2503 |
}
|
2504 |
+
if ( isset($nav_item['auth_cap'] ) && ! current_user_can( $nav_item['auth_cap'] ) ) {
|
2505 |
+
unset( $nav_items[ $key ] );
|
2506 |
}
|
2507 |
}
|
2508 |
}
|
2520 |
*
|
2521 |
* @since v.1.0.0
|
2522 |
*/
|
2523 |
+
public function get_tutor_dashboard_page_permalink( $page_key = '', $page_id = 0 ) {
|
2524 |
+
if ( $page_key === 'index' ) {
|
2525 |
$page_key = '';
|
2526 |
}
|
2527 |
+
if ( ! $page_id ) {
|
2528 |
+
$page_id = (int) tutils()->get_option( 'tutor_dashboard_page_id' );
|
2529 |
}
|
2530 |
+
return trailingslashit( get_permalink( $page_id ) ) . $page_key;
|
2531 |
}
|
2532 |
|
2533 |
/**
|
2540 |
* @since v.1.0.0
|
2541 |
* @updated v.1.4.2
|
2542 |
*/
|
2543 |
+
public function input_old( $input = '', $old_data = null ) {
|
2544 |
+
if ( ! $old_data ) {
|
2545 |
$old_data = $_REQUEST;
|
2546 |
}
|
2547 |
+
$value = $this->avalue_dot( $input, $old_data );
|
2548 |
+
if ( $value ) {
|
2549 |
return $value;
|
2550 |
}
|
2551 |
+
|
2552 |
return '';
|
2553 |
}
|
2554 |
|
2561 |
*
|
2562 |
* @since v.1.0.0
|
2563 |
*/
|
2564 |
+
public function is_instructor( $user_id = 0 ) {
|
2565 |
+
$user_id = $this->get_user_id( $user_id );
|
2566 |
+
return get_user_meta( $user_id, '_is_tutor_instructor', true );
|
2567 |
}
|
2568 |
|
2569 |
/**
|
2576 |
*
|
2577 |
* @since v.1.0.0
|
2578 |
*/
|
2579 |
+
public function instructor_status( $user_id = 0, $status_name = true ) {
|
2580 |
+
$user_id = $this->get_user_id( $user_id );
|
2581 |
|
2582 |
+
$instructor_status = apply_filters( 'tutor_instructor_statuses', array(
|
2583 |
+
'pending' => __( 'Pending', 'tutor' ),
|
2584 |
+
'approved' => __( 'Approved', 'tutor' ),
|
2585 |
+
'blocked' => __( 'Blocked', 'tutor' ),
|
2586 |
));
|
2587 |
|
2588 |
+
$status = get_user_meta( $user_id, '_tutor_instructor_status', true );
|
2589 |
|
2590 |
+
if ( isset( $instructor_status[$status] ) ) {
|
2591 |
+
if ( ! $status_name ) {
|
2592 |
return $status;
|
2593 |
}
|
2594 |
return $instructor_status[$status];
|
2605 |
*
|
2606 |
* @since v.1.0.0
|
2607 |
*/
|
2608 |
+
public function get_total_instructors( $search_term = '' ) {
|
|
|
|
|
|
|
2609 |
global $wpdb;
|
2610 |
|
2611 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
2612 |
+
|
2613 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
2614 |
+
"SELECT COUNT({$wpdb->users}.ID)
|
2615 |
+
FROM {$wpdb->users}
|
2616 |
+
INNER JOIN {$wpdb->usermeta}
|
2617 |
+
ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
|
2618 |
+
WHERE {$wpdb->usermeta}.meta_key = %s
|
2619 |
+
AND ( {$wpdb->users}.display_name LIKE %s OR {$wpdb->users}.user_email LIKE %s );
|
2620 |
+
",
|
2621 |
+
'_is_tutor_instructor',
|
2622 |
+
$search_term,
|
2623 |
+
$search_term
|
2624 |
+
) );
|
2625 |
|
2626 |
return (int) $count;
|
2627 |
}
|
2637 |
*
|
2638 |
* @since v.1.0.0
|
2639 |
*/
|
2640 |
+
public function get_instructors( $start = 0, $limit = 10, $search_term = '', $status = null ) {
|
|
|
2641 |
global $wpdb;
|
2642 |
|
2643 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
|
|
|
|
2644 |
|
2645 |
+
if ( $status ) {
|
2646 |
+
!is_array( $status ) ? $status = array( $status ) : 0;
|
2647 |
+
|
2648 |
+
$status = array_map( function($str) {
|
2649 |
+
return "'{$str}'";
|
2650 |
+
}, $status);
|
2651 |
+
|
2652 |
+
$status = " AND inst_status.meta_value IN (".implode( ',', $status ).")";
|
2653 |
}
|
2654 |
|
2655 |
+
$instructors = $wpdb->get_results( $wpdb->prepare(
|
2656 |
+
"SELECT DISTINCT SQL_CALC_FOUND_ROWS {$wpdb->users}.*
|
2657 |
+
FROM {$wpdb->users}
|
2658 |
+
INNER JOIN {$wpdb->usermeta}
|
2659 |
+
ON ( {$wpdb->users}.ID = {$wpdb->usermeta}.user_id )
|
2660 |
+
INNER JOIN {$wpdb->usermeta} inst_status
|
2661 |
+
ON ( {$wpdb->users}.ID = inst_status.user_id )
|
2662 |
+
WHERE {$wpdb->usermeta}.meta_key = %s
|
2663 |
+
AND ( {$wpdb->users}.display_name LIKE %s OR {$wpdb->users}.user_email LIKE %s )
|
2664 |
+
{$status}
|
2665 |
ORDER BY {$wpdb->usermeta}.meta_value DESC
|
2666 |
+
LIMIT %d, %d;
|
2667 |
+
",
|
2668 |
+
'_is_tutor_instructor',
|
2669 |
+
$search_term,
|
2670 |
+
$search_term,
|
2671 |
+
$start,
|
2672 |
+
$limit
|
2673 |
+
) );
|
2674 |
|
2675 |
return $instructors;
|
2676 |
}
|
2684 |
*
|
2685 |
* @since v.1.0.0
|
2686 |
*/
|
2687 |
+
public function get_instructors_by_course( $course_id = 0 ) {
|
2688 |
global $wpdb;
|
2689 |
+
$course_id = $this->get_post_id( $course_id );
|
2690 |
+
|
2691 |
+
$instructors = $wpdb->get_results( $wpdb->prepare(
|
2692 |
+
"SELECT ID,
|
2693 |
+
display_name,
|
2694 |
+
get_course.meta_value AS taught_course_id,
|
2695 |
+
tutor_job_title.meta_value AS tutor_profile_job_title,
|
2696 |
+
tutor_bio.meta_value AS tutor_profile_bio,
|
2697 |
+
tutor_photo.meta_value AS tutor_profile_photo
|
2698 |
+
FROM {$wpdb->users}
|
2699 |
+
INNER JOIN {$wpdb->usermeta} get_course
|
2700 |
+
ON ID = get_course.user_id
|
2701 |
+
AND get_course.meta_key = %s
|
2702 |
+
AND get_course.meta_value = %d
|
2703 |
+
LEFT JOIN {$wpdb->usermeta} tutor_job_title
|
2704 |
+
ON ID = tutor_job_title.user_id
|
2705 |
+
AND tutor_job_title.meta_key = %s
|
2706 |
+
LEFT JOIN {$wpdb->usermeta} tutor_bio
|
2707 |
+
ON ID = tutor_bio.user_id
|
2708 |
+
AND tutor_bio.meta_key = %s
|
2709 |
+
LEFT JOIN {$wpdb->usermeta} tutor_photo
|
2710 |
+
ON ID = tutor_photo.user_id
|
2711 |
+
AND tutor_photo.meta_key = %s
|
2712 |
+
",
|
2713 |
+
'_tutor_instructor_course_id',
|
2714 |
+
$course_id,
|
2715 |
+
'_tutor_profile_job_title',
|
2716 |
+
'_tutor_profile_bio',
|
2717 |
+
'_tutor_profile_photo',
|
2718 |
+
) );
|
2719 |
+
|
2720 |
+
if ( is_array( $instructors ) && count( $instructors ) ) {
|
2721 |
return $instructors;
|
2722 |
}
|
2723 |
|
2734 |
*
|
2735 |
* @since v.1.0.0
|
2736 |
*/
|
2737 |
+
public function get_total_students_by_instructor( $instructor_id ) {
|
|
|
2738 |
global $wpdb;
|
2739 |
|
2740 |
$course_post_type = tutor()->course_post_type;
|
2741 |
+
|
2742 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
2743 |
+
"SELECT COUNT(enrollment.ID)
|
2744 |
+
FROM {$wpdb->posts} enrollment
|
2745 |
+
LEFT JOIN {$wpdb->posts} course
|
2746 |
+
ON enrollment.post_parent=course.ID
|
2747 |
+
WHERE course.post_author = %d
|
2748 |
+
AND course.post_type = %s
|
2749 |
+
AND course.post_status = %s
|
2750 |
+
AND enrollment.post_type = %s
|
2751 |
+
AND enrollment.post_status = %s;
|
2752 |
+
",
|
2753 |
+
$instructor_id,
|
2754 |
+
$course_post_type,
|
2755 |
+
'publish',
|
2756 |
+
'tutor_enrolled',
|
2757 |
+
'completed',
|
2758 |
+
|
2759 |
+
) );
|
2760 |
|
2761 |
return (int) $count;
|
2762 |
}
|
2770 |
*
|
2771 |
* @since v.1.0.0
|
2772 |
*/
|
2773 |
+
public function get_rating_value( $input = 0.00 ) {
|
2774 |
|
2775 |
+
if ( $input > 0) {
|
2776 |
+
$input = number_format( $input, 2 );
|
2777 |
$int_value = (int) $input;
|
2778 |
$fraction = $input - $int_value;
|
2779 |
|
2780 |
+
if ( $fraction == 0 ) {
|
2781 |
$fraction = 0.00;
|
2782 |
+
} elseif ( $fraction > 0.5 ) {
|
2783 |
$fraction = 1;
|
2784 |
+
} else {
|
2785 |
$fraction = 0.5;
|
2786 |
}
|
2787 |
|
2788 |
+
return number_format( ( $int_value + $fraction ), 2 );
|
2789 |
}
|
2790 |
+
|
2791 |
return 0.00;
|
2792 |
}
|
2793 |
|
2801 |
*
|
2802 |
* @since v.1.0.0
|
2803 |
*/
|
2804 |
+
public function star_rating_generator( $current_rating = 0.00, $echo = true ) {
|
2805 |
$output = '<div class="tutor-star-rating-group">';
|
2806 |
|
2807 |
+
for ( $i = 1; $i <=5 ; $i++ ) {
|
2808 |
$intRating = (int) $current_rating;
|
2809 |
|
2810 |
+
if ( $intRating >= $i ) {
|
2811 |
$output.= '<i class="tutor-icon-star-full" data-rating-value="'.$i.'"></i>';
|
2812 |
+
} else {
|
2813 |
+
if ( ( $current_rating - $i) == -0.5 ) {
|
2814 |
$output.= '<i class="tutor-icon-star-half" data-rating-value="'.$i.'"></i>';
|
2815 |
+
} else {
|
2816 |
$output.= '<i class="tutor-icon-star-line" data-rating-value="'.$i.'"></i>';
|
2817 |
}
|
2818 |
}
|
2822 |
|
2823 |
$output .= "</div>";
|
2824 |
|
2825 |
+
if ( $echo ) {
|
2826 |
echo $output;
|
2827 |
}
|
2828 |
+
|
2829 |
return $output;
|
2830 |
}
|
2831 |
|
|
|
2832 |
/**
|
2833 |
* @param $string
|
2834 |
*
|
2838 |
*
|
2839 |
*
|
2840 |
*/
|
2841 |
+
public function str_split( $string ) {
|
2842 |
+
$strlen = mb_strlen( $string );
|
2843 |
+
while ( $strlen ) {
|
2844 |
+
$array[] = mb_substr( $string,0,1,"UTF-8" );
|
2845 |
+
$string = mb_substr( $string,1,$strlen,"UTF-8" );
|
2846 |
+
$strlen = mb_strlen( $string );
|
2847 |
}
|
2848 |
return $array;
|
2849 |
}
|
2857 |
*
|
2858 |
* @since v.1.0.0
|
2859 |
*/
|
2860 |
+
public function get_tutor_avatar( $user_id = null, $size = 'thumbnail' ) {
|
2861 |
global $wpdb;
|
2862 |
|
2863 |
+
if ( ! $user_id ) {
|
2864 |
return '';
|
2865 |
}
|
2866 |
|
2867 |
+
$user = $this->get_tutor_user( $user_id );
|
2868 |
+
if ( $user->tutor_profile_photo ) {
|
2869 |
+
return '<img src="'.wp_get_attachment_image_url( $user->tutor_profile_photo, $size ).'" class="tutor-image-avatar" alt="" /> ';
|
2870 |
}
|
2871 |
|
2872 |
$name = $user->display_name;
|
2873 |
+
$arr = explode( ' ', trim( $name ) );
|
2874 |
|
2875 |
+
$first_char = ! empty( $arr[0] ) ? $this->str_split( $arr[0] )[0] : '';
|
2876 |
+
$second_char = ! empty( $arr[1] ) ? $this->str_split( $arr[1] )[0] : '';
|
2877 |
+
$initial_avatar = strtoupper( $first_char.$second_char );
|
2878 |
|
2879 |
+
$bg_color = '#'.substr( md5( $initial_avatar ), 0, 6);
|
2880 |
$initial_avatar = "<span class='tutor-text-avatar' style='background-color: {$bg_color}; color: #fff8e5'>{$initial_avatar}</span>";
|
2881 |
|
2882 |
return $initial_avatar;
|
2891 |
*
|
2892 |
* @since v.1.0.0
|
2893 |
*/
|
2894 |
+
public function get_tutor_user( $user_id ) {
|
|
|
2895 |
global $wpdb;
|
2896 |
|
2897 |
+
$user = $wpdb->get_row( $wpdb->prepare(
|
2898 |
+
"SELECT ID,
|
2899 |
+
display_name,
|
2900 |
+
tutor_job_title.meta_value AS tutor_profile_job_title,
|
2901 |
+
tutor_bio.meta_value AS tutor_profile_bio,
|
2902 |
+
tutor_photo.meta_value AS tutor_profile_photo
|
2903 |
+
FROM {$wpdb->users}
|
2904 |
+
LEFT JOIN {$wpdb->usermeta} tutor_job_title
|
2905 |
+
ON ID = tutor_job_title.user_id
|
2906 |
+
AND tutor_job_title.meta_key = '_tutor_profile_job_title'
|
2907 |
+
LEFT JOIN {$wpdb->usermeta} tutor_bio
|
2908 |
+
ON ID = tutor_bio.user_id
|
2909 |
+
AND tutor_bio.meta_key = '_tutor_profile_bio'
|
2910 |
+
LEFT JOIN {$wpdb->usermeta} tutor_photo
|
2911 |
+
ON ID = tutor_photo.user_id
|
2912 |
+
AND tutor_photo.meta_key = '_tutor_profile_photo'
|
2913 |
+
WHERE ID = %d
|
2914 |
+
",
|
2915 |
+
$user_id
|
2916 |
+
) );
|
2917 |
|
2918 |
return $user;
|
2919 |
}
|
2929 |
*
|
2930 |
* @since v.1.0.0
|
2931 |
*/
|
2932 |
+
public function get_course_reviews( $course_id = 0, $offset = 0, $limit = 150 ) {
|
2933 |
+
$course_id = $this->get_post_id( $course_id );
|
2934 |
global $wpdb;
|
2935 |
|
2936 |
$reviews = $wpdb->get_results($wpdb->prepare("select {$wpdb->comments}.comment_ID,
|
2963 |
*
|
2964 |
* @since v.1.0.0
|
2965 |
*/
|
2966 |
+
public function get_course_rating( $course_id = 0 ) {
|
2967 |
+
global $wpdb;
|
2968 |
+
$course_id = $this->get_post_id( $course_id );
|
2969 |
|
2970 |
$ratings = array(
|
2971 |
+
'rating_count' => 0,
|
2972 |
+
'rating_sum' => 0,
|
2973 |
+
'rating_avg' => 0.00,
|
2974 |
+
'count_by_value' => array( 5 => 0, 4 => 0, 3 => 0, 2 => 0, 1 => 0 )
|
2975 |
);
|
2976 |
|
2977 |
+
$rating = $wpdb->get_row( $wpdb->prepare(
|
2978 |
+
"SELECT COUNT(meta_value) AS rating_count,
|
2979 |
+
SUM(meta_value) AS rating_sum
|
2980 |
+
FROM {$wpdb->comments}
|
2981 |
+
INNER JOIN {$wpdb->commentmeta}
|
2982 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
2983 |
+
WHERE {$wpdb->comments}.comment_post_ID = %d
|
2984 |
+
AND {$wpdb->comments}.comment_type = %s
|
2985 |
+
AND meta_key = %s;
|
2986 |
+
",
|
2987 |
+
$course_id,
|
2988 |
+
'tutor_course_rating',
|
2989 |
+
'tutor_rating',
|
2990 |
+
) );
|
2991 |
+
|
2992 |
+
if ( $rating->rating_count ) {
|
2993 |
+
$avg_rating = number_format( ( $rating->rating_sum / $rating->rating_count ), 2 );
|
2994 |
+
|
2995 |
+
$stars = $wpdb->get_results( $wpdb->prepare(
|
2996 |
+
"SELECT commentmeta.meta_value AS rating,
|
2997 |
+
COUNT(commentmeta.meta_value) as rating_count
|
2998 |
+
FROM {$wpdb->comments} comments
|
2999 |
+
INNER JOIN {$wpdb->commentmeta} commentmeta
|
3000 |
+
ON comments.comment_ID = commentmeta.comment_id
|
3001 |
+
WHERE comments.comment_post_ID = %d
|
3002 |
+
AND comments.comment_type = %s
|
3003 |
+
AND commentmeta.meta_key = %s
|
3004 |
+
GROUP BY commentmeta.meta_value;
|
3005 |
+
",
|
3006 |
+
$course_id,
|
3007 |
+
'tutor_course_rating',
|
3008 |
+
'tutor_rating',
|
3009 |
+
) );
|
3010 |
+
|
3011 |
+
$ratings = array( 5 => 0, 4 => 0, 3 => 0, 2 => 0, 1 => 0 );
|
3012 |
+
foreach ( $stars as $star ) {
|
3013 |
+
$index = (int) $star->rating;
|
3014 |
+
array_key_exists($index, $ratings) ? $ratings[ $index ] = $star->rating_count : 0;
|
3015 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3016 |
|
3017 |
$ratings = array(
|
3018 |
+
'rating_count' => $rating->rating_count,
|
3019 |
+
'rating_sum' => $rating->rating_sum,
|
3020 |
+
'rating_avg' => $avg_rating,
|
3021 |
+
'count_by_value' => $ratings
|
3022 |
);
|
|
|
3023 |
}
|
3024 |
|
3025 |
return (object) $ratings;
|
3036 |
*
|
3037 |
* @since v.1.0.0
|
3038 |
*/
|
3039 |
+
public function get_reviews_by_user( $user_id = 0, $offset = 0, $limit = 150 ) {
|
3040 |
+
$user_id = $this->get_user_id( $user_id );
|
3041 |
global $wpdb;
|
3042 |
|
3043 |
+
$reviews = $wpdb->get_results( $wpdb->prepare(
|
3044 |
+
"SELECT {$wpdb->comments}.comment_ID,
|
3045 |
+
{$wpdb->comments}.comment_post_ID,
|
3046 |
+
{$wpdb->comments}.comment_author,
|
3047 |
+
{$wpdb->comments}.comment_author_email,
|
3048 |
+
{$wpdb->comments}.comment_date,
|
3049 |
+
{$wpdb->comments}.comment_content,
|
3050 |
+
{$wpdb->comments}.user_id,
|
3051 |
+
{$wpdb->commentmeta}.meta_value as rating,
|
3052 |
+
{$wpdb->users}.display_name
|
3053 |
|
3054 |
+
FROM {$wpdb->comments}
|
3055 |
+
INNER JOIN {$wpdb->commentmeta}
|
3056 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
3057 |
+
INNER JOIN {$wpdb->users}
|
3058 |
+
ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
|
3059 |
+
WHERE {$wpdb->comments}.user_id = %d
|
3060 |
+
AND comment_type = %s
|
3061 |
+
AND meta_key = %s
|
3062 |
+
ORDER BY comment_ID DESC
|
3063 |
+
LIMIT %d, %d;
|
3064 |
+
",
|
3065 |
+
$user_id,
|
3066 |
+
'tutor_course_rating',
|
3067 |
+
'tutor_rating',
|
3068 |
+
$offset,
|
3069 |
+
$limit
|
3070 |
+
) );
|
3071 |
|
3072 |
return $reviews;
|
3073 |
}
|
3083 |
*
|
3084 |
* @since v.1.4.0
|
3085 |
*/
|
3086 |
+
public function get_reviews_by_instructor( $instructor_id = 0, $offset = 0, $limit = 150 ) {
|
3087 |
+
$instructor_id = $this->get_user_id( $instructor_id );
|
|
|
3088 |
global $wpdb;
|
3089 |
|
3090 |
$results = array(
|
3092 |
'results' => false,
|
3093 |
);
|
3094 |
|
3095 |
+
$cours_ids = (array) $this->get_assigned_courses_ids_by_instructors( $instructor_id );
|
3096 |
|
3097 |
+
if ( $this->count( $cours_ids ) ) {
|
3098 |
$implode_ids = implode( ',', $cours_ids );
|
3099 |
|
3100 |
//Count
|
3101 |
+
$results['count'] = $wpdb->get_var( $wpdb->prepare(
|
3102 |
+
"SELECT COUNT({$wpdb->comments}.comment_ID)
|
3103 |
+
FROM {$wpdb->comments}
|
3104 |
+
INNER JOIN {$wpdb->commentmeta}
|
3105 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
3106 |
+
INNER JOIN {$wpdb->users}
|
3107 |
+
ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
|
3108 |
+
WHERE {$wpdb->comments}.comment_post_ID IN({$implode_ids})
|
3109 |
+
AND comment_type = %s
|
3110 |
+
AND meta_key = %s;
|
3111 |
+
",
|
3112 |
+
'tutor_course_rating',
|
3113 |
+
'tutor_rating'
|
3114 |
+
) );
|
3115 |
|
3116 |
//Results
|
3117 |
+
$results['results'] = $wpdb->get_results( $wpdb->prepare(
|
3118 |
+
"SELECT {$wpdb->comments}.comment_ID,
|
3119 |
+
{$wpdb->comments}.comment_post_ID,
|
3120 |
+
{$wpdb->comments}.comment_author,
|
3121 |
+
{$wpdb->comments}.comment_author_email,
|
3122 |
+
{$wpdb->comments}.comment_date,
|
3123 |
+
{$wpdb->comments}.comment_content,
|
3124 |
+
{$wpdb->comments}.user_id,
|
3125 |
+
{$wpdb->commentmeta}.meta_value AS rating,
|
3126 |
+
{$wpdb->users}.display_name
|
3127 |
|
3128 |
+
FROM {$wpdb->comments}
|
3129 |
+
INNER JOIN {$wpdb->commentmeta}
|
3130 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
3131 |
+
INNER JOIN {$wpdb->users}
|
3132 |
+
ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
|
3133 |
+
WHERE {$wpdb->comments}.comment_post_ID IN({$implode_ids})
|
3134 |
+
AND comment_type = %s
|
3135 |
+
AND meta_key = %s
|
3136 |
+
ORDER BY comment_ID DESC
|
3137 |
+
LIMIT %d, %d;
|
3138 |
+
",
|
3139 |
+
'tutor_course_rating',
|
3140 |
+
'tutor_rating',
|
3141 |
+
$offset,
|
3142 |
+
$limit,
|
3143 |
+
) );
|
3144 |
}
|
3145 |
|
3146 |
return (object) $results;
|
3155 |
*
|
3156 |
* @since v.1.0.0
|
3157 |
*/
|
3158 |
+
public function get_instructor_ratings( $instructor_id ) {
|
3159 |
global $wpdb;
|
3160 |
|
3161 |
$ratings = array(
|
3164 |
'rating_avg' => 0.00,
|
3165 |
);
|
3166 |
|
3167 |
+
$rating = $wpdb->get_row( $wpdb->prepare(
|
3168 |
+
"SELECT COUNT(rating.meta_value) as rating_count, SUM(rating.meta_value) as rating_sum
|
3169 |
+
FROM {$wpdb->usermeta} courses
|
3170 |
+
INNER JOIN {$wpdb->comments} reviews
|
3171 |
+
ON courses.meta_value = reviews.comment_post_ID
|
3172 |
+
AND reviews.comment_type = 'tutor_course_rating'
|
3173 |
+
INNER JOIN {$wpdb->commentmeta} rating
|
3174 |
+
ON reviews.comment_ID = rating.comment_id
|
3175 |
+
AND rating.meta_key = 'tutor_rating'
|
3176 |
+
WHERE courses.user_id = %d
|
3177 |
+
AND courses.meta_key = %s
|
3178 |
+
",
|
3179 |
+
$instructor_id,
|
3180 |
+
'_tutor_instructor_course_id'
|
3181 |
+
) );
|
3182 |
+
|
3183 |
+
if ( $rating->rating_count ) {
|
3184 |
+
$avg_rating = number_format( ( $rating->rating_sum / $rating->rating_count ), 2 );
|
3185 |
|
3186 |
$ratings = array(
|
3187 |
'rating_count' => $rating->rating_count,
|
3203 |
*
|
3204 |
* @since v.1.0.0
|
3205 |
*/
|
3206 |
+
public function get_course_rating_by_user( $course_id = 0, $user_id = 0 ) {
|
3207 |
+
global $wpdb;
|
3208 |
+
|
3209 |
+
$course_id = $this->get_post_id( $course_id );
|
3210 |
+
$user_id = $this->get_user_id( $user_id );
|
3211 |
|
3212 |
$ratings = array(
|
3213 |
+
'rating' => 0,
|
3214 |
+
'review' => '',
|
3215 |
);
|
3216 |
|
3217 |
+
$rating = $wpdb->get_row( $wpdb->prepare(
|
3218 |
+
"SELECT meta_value AS rating,
|
3219 |
+
comment_content AS review
|
3220 |
+
FROM {$wpdb->comments}
|
3221 |
+
INNER JOIN {$wpdb->commentmeta}
|
3222 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
3223 |
+
WHERE {$wpdb->comments}.comment_post_ID = %d
|
3224 |
+
AND user_id = %d
|
3225 |
+
AND meta_key = %s;
|
3226 |
+
",
|
3227 |
+
$course_id,
|
3228 |
+
$user_id,
|
3229 |
+
'tutor_rating'
|
3230 |
+
) );
|
3231 |
+
|
3232 |
+
if ( $rating ) {
|
3233 |
+
$rating_format = number_format( $rating->rating, 2 );
|
3234 |
|
3235 |
$ratings = array(
|
3236 |
+
'rating' => $rating_format,
|
3237 |
+
'review' => $rating->review,
|
3238 |
);
|
3239 |
}
|
3240 |
+
|
3241 |
return (object) $ratings;
|
3242 |
}
|
3243 |
|
3248 |
*
|
3249 |
* @since v.1.0.0
|
3250 |
*/
|
3251 |
+
public function count_reviews_wrote_by_user( $user_id = 0 ) {
|
3252 |
global $wpdb;
|
3253 |
+
|
3254 |
$user_id = $this->get_user_id($user_id);
|
3255 |
|
3256 |
+
$count_reviews = $wpdb->get_var( $wpdb->prepare(
|
3257 |
+
"SELECT COUNT(comment_ID)
|
3258 |
+
FROM {$wpdb->comments}
|
3259 |
+
WHERE user_id = %d
|
3260 |
+
AND comment_type = %s
|
3261 |
+
",
|
3262 |
+
$user_id,
|
3263 |
+
'tutor_course_rating'
|
3264 |
+
) );
|
3265 |
+
|
3266 |
return $count_reviews;
|
3267 |
}
|
3268 |
|
3275 |
*
|
3276 |
* @since v.1.0.0
|
3277 |
*/
|
|
|
3278 |
function let_to_num( $size ) {
|
3279 |
$l = substr( $size, -1 );
|
3280 |
$ret = substr( $size, 0, -1 );
|
3329 |
);
|
3330 |
}
|
3331 |
|
3332 |
+
public function help_tip( $tip = '' ) {
|
3333 |
return '<span class="tutor-help-tip" data-tip="' . $tip . '"></span>';
|
3334 |
}
|
3335 |
|
3345 |
*
|
3346 |
* @since v.1.0.0
|
3347 |
*/
|
3348 |
+
public function get_top_question( $course_id = 0, $user_id = 0, $offset = 0, $limit = 20, $is_author = false ) {
|
|
|
|
|
|
|
3349 |
global $wpdb;
|
3350 |
+
|
3351 |
+
$course_id = $this->get_post_id( $course_id );
|
3352 |
+
$user_id = $this->get_user_id( $user_id );
|
3353 |
+
|
3354 |
$author_sql = $is_author ? "" : "AND {$wpdb->comments}.user_id = {$user_id}";
|
3355 |
|
3356 |
+
$questions = $wpdb->get_results( $wpdb->prepare(
|
3357 |
+
"SELECT {$wpdb->comments}.comment_ID,
|
3358 |
+
{$wpdb->comments}.comment_post_ID,
|
3359 |
+
{$wpdb->comments}.comment_author,
|
3360 |
+
{$wpdb->comments}.comment_date,
|
3361 |
+
{$wpdb->comments}.comment_date_gmt,
|
3362 |
+
{$wpdb->comments}.comment_content,
|
3363 |
+
{$wpdb->comments}.user_id,
|
3364 |
+
{$wpdb->commentmeta}.meta_value as question_title,
|
3365 |
+
{$wpdb->users}.display_name
|
3366 |
+
FROM {$wpdb->comments}
|
3367 |
+
INNER JOIN {$wpdb->commentmeta}
|
3368 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
3369 |
+
INNER JOIN {$wpdb->users}
|
3370 |
+
ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
|
3371 |
+
WHERE {$wpdb->comments}.comment_post_ID = {$course_id} {$author_sql}
|
3372 |
+
AND {$wpdb->comments}.comment_type = %s
|
3373 |
+
AND meta_key = %s
|
3374 |
+
ORDER BY comment_ID DESC
|
3375 |
+
LIMIT %d, %d;
|
3376 |
+
",
|
3377 |
+
'tutor_q_and_a',
|
3378 |
+
'tutor_question_title',
|
3379 |
+
$offset,
|
3380 |
+
$limit,
|
3381 |
+
) );
|
3382 |
|
3383 |
return $questions;
|
3384 |
}
|
3392 |
*
|
3393 |
* @since v.1.0.0
|
3394 |
*/
|
3395 |
+
public function get_total_qa_question( $search_term = '' ) {
|
3396 |
global $wpdb;
|
3397 |
|
3398 |
+
$user_id = get_current_user_id();
|
|
|
|
|
|
|
|
|
3399 |
$course_type = tutor()->course_post_type;
|
3400 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
3401 |
|
3402 |
$in_question_id_query = '';
|
3403 |
/**
|
3404 |
* Get only assinged courses questions if current user is a
|
3405 |
*/
|
3406 |
+
if ( ! current_user_can( 'administrator' ) && current_user_can( tutor()->instructor_role ) ) {
|
3407 |
+
|
3408 |
+
$get_course_ids = $wpdb->get_col( $wpdb->prepare(
|
3409 |
+
"SELECT ID
|
3410 |
+
FROM {$wpdb->posts}
|
3411 |
+
WHERE post_author = %d
|
3412 |
+
AND post_type = %s
|
3413 |
+
AND post_status = %s
|
3414 |
+
",
|
3415 |
+
$user_id,
|
3416 |
+
$course_type,
|
3417 |
+
'publish'
|
3418 |
+
) );
|
3419 |
+
|
3420 |
+
$get_assigned_courses_ids = $wpdb->get_col( $wpdb->prepare(
|
3421 |
+
"SELECT meta_value
|
3422 |
+
FROM {$wpdb->usermeta}
|
3423 |
+
WHERE meta_key = %s
|
3424 |
+
AND user_id = %d
|
3425 |
+
",
|
3426 |
+
'_tutor_instructor_course_id',
|
3427 |
+
$user_id
|
3428 |
+
) );
|
3429 |
+
|
3430 |
+
$my_course_ids = array_unique( array_merge( $get_course_ids, $get_assigned_courses_ids ) );
|
3431 |
|
3432 |
if ( $this->count( $my_course_ids ) ) {
|
3433 |
$implode_ids = implode( ',', $my_course_ids );
|
3435 |
}
|
3436 |
}
|
3437 |
|
3438 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
3439 |
+
"SELECT COUNT({$wpdb->comments}.comment_ID)
|
3440 |
+
FROM {$wpdb->comments}
|
3441 |
+
INNER JOIN {$wpdb->commentmeta}
|
3442 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
3443 |
+
WHERE comment_type = %s
|
3444 |
+
AND comment_parent = 0 {$in_question_id_query}
|
3445 |
+
AND {$wpdb->commentmeta}.meta_value LIKE %s;
|
3446 |
+
",
|
3447 |
+
'tutor_q_and_a',
|
3448 |
+
$search_term
|
3449 |
+
) );
|
3450 |
|
3451 |
return (int) $count;
|
3452 |
}
|
3463 |
*
|
3464 |
* @since v.1.0.0
|
3465 |
*/
|
3466 |
+
public function get_qa_questions( $start = 0, $limit = 10, $search_term = '' ) {
|
3467 |
global $wpdb;
|
3468 |
|
3469 |
+
$user_id = get_current_user_id();
|
|
|
|
|
|
|
|
|
3470 |
$course_type = tutor()->course_post_type;
|
3471 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
3472 |
|
3473 |
$in_question_id_query = '';
|
3474 |
/**
|
3475 |
* Get only assinged courses questions if current user is a
|
3476 |
*/
|
3477 |
+
if ( ! current_user_can( 'administrator' ) && current_user_can( tutor()->instructor_role ) ) {
|
3478 |
+
|
3479 |
+
$get_course_ids = $wpdb->get_col( $wpdb->prepare(
|
3480 |
+
"SELECT ID
|
3481 |
+
FROM {$wpdb->posts}
|
3482 |
+
WHERE post_author = %d
|
3483 |
+
AND post_type = %s
|
3484 |
+
AND post_status = %s
|
3485 |
+
",
|
3486 |
+
$user_id,
|
3487 |
+
$course_type,
|
3488 |
+
'publish'
|
3489 |
+
) );
|
3490 |
+
|
3491 |
+
$get_assigned_courses_ids = $wpdb->get_col( $wpdb->prepare(
|
3492 |
+
"SELECT meta_value
|
3493 |
+
FROM {$wpdb->usermeta}
|
3494 |
+
WHERE meta_key = %s
|
3495 |
+
AND user_id = %d
|
3496 |
+
",
|
3497 |
+
'_tutor_instructor_course_id',
|
3498 |
+
$user_id
|
3499 |
+
) );
|
3500 |
+
|
3501 |
+
$my_course_ids = array_unique( array_merge( $get_course_ids, $get_assigned_courses_ids ) );
|
3502 |
|
3503 |
if ( $this->count( $my_course_ids ) ) {
|
3504 |
$implode_ids = implode( ',', $my_course_ids );
|
3506 |
}
|
3507 |
}
|
3508 |
|
3509 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
3510 |
+
"SELECT {$wpdb->comments}.comment_ID,
|
3511 |
+
{$wpdb->comments}.comment_post_ID,
|
3512 |
+
{$wpdb->comments}.comment_author,
|
3513 |
+
{$wpdb->comments}.comment_date,
|
3514 |
+
{$wpdb->comments}.comment_content,
|
3515 |
+
{$wpdb->comments}.user_id,
|
3516 |
+
{$wpdb->commentmeta}.meta_value as question_title,
|
3517 |
+
{$wpdb->users}.display_name,
|
3518 |
+
{$wpdb->posts}.post_title,
|
3519 |
+
( SELECT COUNT(answers_t.comment_ID)
|
3520 |
+
FROM {$wpdb->comments} answers_t
|
3521 |
+
WHERE answers_t.comment_parent = {$wpdb->comments}.comment_ID
|
3522 |
+
) AS answer_count
|
3523 |
+
FROM {$wpdb->comments}
|
3524 |
+
INNER JOIN {$wpdb->commentmeta}
|
3525 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
3526 |
+
INNER JOIN {$wpdb->posts}
|
3527 |
+
ON {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID
|
3528 |
+
INNER JOIN {$wpdb->users}
|
3529 |
+
ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
|
3530 |
+
WHERE {$wpdb->comments}.comment_type = %s
|
3531 |
+
AND {$wpdb->comments}.comment_parent = 0
|
3532 |
+
AND {$wpdb->commentmeta}.meta_value LIKE %s
|
3533 |
+
{$in_question_id_query}
|
3534 |
+
ORDER BY {$wpdb->comments}.comment_ID DESC
|
3535 |
+
LIMIT %d, %d;
|
3536 |
+
",
|
3537 |
+
'tutor_q_and_a',
|
3538 |
+
$search_term,
|
3539 |
+
$start,
|
3540 |
+
$limit,
|
3541 |
+
) );
|
|
|
3542 |
|
3543 |
return $query;
|
3544 |
}
|
3552 |
*
|
3553 |
* @since v.1.0.0
|
3554 |
*/
|
3555 |
+
public function get_qa_question( $question_id ) {
|
3556 |
global $wpdb;
|
3557 |
+
$query = $wpdb->get_row( $wpdb->prepare(
|
3558 |
+
"SELECT {$wpdb->comments}.comment_ID,
|
3559 |
+
{$wpdb->comments}.comment_post_ID,
|
3560 |
+
{$wpdb->comments}.comment_author,
|
3561 |
+
{$wpdb->comments}.comment_date,
|
3562 |
+
{$wpdb->comments}.comment_date_gmt,
|
3563 |
+
{$wpdb->comments}.comment_content,
|
3564 |
+
{$wpdb->comments}.user_id,
|
3565 |
+
{$wpdb->commentmeta}.meta_value as question_title,
|
3566 |
+
{$wpdb->users}.display_name,
|
3567 |
+
{$wpdb->posts}.post_title
|
3568 |
+
FROM {$wpdb->comments}
|
3569 |
+
INNER JOIN {$wpdb->commentmeta}
|
3570 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
3571 |
+
INNER JOIN {$wpdb->posts}
|
3572 |
+
ON {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID
|
3573 |
+
INNER JOIN {$wpdb->users}
|
3574 |
+
ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
|
3575 |
+
WHERE comment_type = %s
|
3576 |
+
AND {$wpdb->comments}.comment_ID = %d;
|
3577 |
+
",
|
3578 |
+
'tutor_q_and_a',
|
3579 |
+
$question_id,
|
3580 |
+
) );
|
3581 |
|
3582 |
return $query;
|
3583 |
}
|
3589 |
*
|
3590 |
* Get question and asnwer by question
|
3591 |
*/
|
3592 |
+
public function get_qa_answer_by_question( $question_id ) {
|
3593 |
global $wpdb;
|
3594 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
3595 |
+
"SELECT {$wpdb->comments}.comment_ID,
|
3596 |
+
{$wpdb->comments}.comment_post_ID,
|
3597 |
+
{$wpdb->comments}.comment_author,
|
3598 |
+
{$wpdb->comments}.comment_date,
|
3599 |
+
{$wpdb->comments}.comment_date_gmt,
|
3600 |
+
{$wpdb->comments}.comment_content,
|
3601 |
+
{$wpdb->comments}.comment_parent,
|
3602 |
+
{$wpdb->comments}.user_id,
|
3603 |
+
{$wpdb->users}.display_name
|
3604 |
+
FROM {$wpdb->comments}
|
3605 |
+
INNER JOIN {$wpdb->users}
|
3606 |
+
ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
|
3607 |
+
WHERE comment_type = %s
|
3608 |
+
AND {$wpdb->comments}.comment_parent = %d
|
3609 |
+
ORDER BY {$wpdb->comments}.comment_ID ASC;
|
3610 |
+
",
|
3611 |
+
'tutor_q_and_a',
|
3612 |
+
$question_id,
|
3613 |
+
) );
|
|
|
3614 |
|
3615 |
return $query;
|
3616 |
}
|
3624 |
*
|
3625 |
* Get question and asnwer by answer_id
|
3626 |
*/
|
3627 |
+
public function get_qa_answer_by_answer_id( $answer_id ) {
|
3628 |
global $wpdb;
|
3629 |
+
$answer = $wpdb->get_row( $wpdb->prepare(
|
3630 |
"SELECT answer.comment_post_ID,
|
3631 |
answer.comment_content,
|
3632 |
users.display_name,
|
3633 |
question.user_id AS question_by,
|
3634 |
question.comment_content AS question,
|
3635 |
question_meta.meta_value AS question_title
|
3636 |
+
FROM {$wpdb->comments} answer
|
3637 |
+
INNER JOIN {$wpdb->users} users
|
3638 |
ON answer.user_id = users.id
|
3639 |
+
INNER JOIN {$wpdb->comments} question
|
3640 |
ON answer.comment_parent = question.comment_ID
|
3641 |
+
INNER JOIN {$wpdb->commentmeta} question_meta
|
3642 |
ON answer.comment_parent = question_meta.comment_id
|
3643 |
+
AND question_meta.meta_key = 'tutor_question_title'
|
3644 |
WHERE answer.comment_ID = %d
|
3645 |
+
AND answer.comment_type = %s;
|
3646 |
+
",
|
3647 |
+
$answer_id,
|
3648 |
+
'tutor_q_and_a'
|
3649 |
+
) );
|
3650 |
|
3651 |
if ( $answer ) {
|
3652 |
return $answer;
|
3655 |
return false;
|
3656 |
}
|
3657 |
|
3658 |
+
public function unanswered_question_count() {
|
3659 |
global $wpdb;
|
3660 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
3661 |
+
"SELECT COUNT({$wpdb->comments}.comment_ID)
|
3662 |
+
FROM {$wpdb->comments}
|
3663 |
+
INNER JOIN {$wpdb->posts}
|
3664 |
+
ON {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID
|
3665 |
+
INNER JOIN {$wpdb->users}
|
3666 |
+
ON {$wpdb->comments}.user_id = {$wpdb->users}.ID
|
3667 |
+
WHERE {$wpdb->comments}.comment_type = %s
|
3668 |
+
AND {$wpdb->comments}.comment_approved = %s
|
3669 |
+
AND {$wpdb->comments}.comment_parent = %d;
|
3670 |
+
",
|
3671 |
+
'tutor_q_and_a',
|
3672 |
+
'waiting_for_answer',
|
3673 |
+
0
|
3674 |
+
) );
|
3675 |
return (int) $count;
|
3676 |
}
|
3677 |
|
3684 |
*
|
3685 |
* @since v.1.0.0
|
3686 |
*/
|
3687 |
+
public function get_announcements( $course_id = 0 ) {
|
3688 |
+
$course_id = $this->get_post_id( $course_id );
|
3689 |
global $wpdb;
|
3690 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
3691 |
+
"SELECT {$wpdb->posts}.ID,
|
3692 |
+
post_author,
|
3693 |
+
post_date,
|
3694 |
+
post_content,
|
3695 |
+
post_title,
|
3696 |
+
display_name
|
3697 |
+
FROM {$wpdb->posts}
|
3698 |
+
INNER JOIN {$wpdb->users}
|
3699 |
+
ON post_author = {$wpdb->users}.ID
|
3700 |
+
WHERE post_type = %s
|
3701 |
+
AND post_parent = %d
|
3702 |
+
ORDER BY {$wpdb->posts}.ID DESC;
|
3703 |
+
",
|
3704 |
+
'tutor_announcements',
|
3705 |
+
$course_id
|
3706 |
+
) );
|
|
|
3707 |
return $query;
|
3708 |
}
|
3709 |
|
3716 |
*
|
3717 |
* @since v.1.0.0
|
3718 |
*/
|
3719 |
+
public function announcement_content( $content = '' ) {
|
3720 |
+
$search = array( '{user_display_name}' );
|
|
|
3721 |
|
3722 |
$user_display_name = 'User';
|
3723 |
+
if ( is_user_logged_in() ) {
|
3724 |
$user = wp_get_current_user();
|
3725 |
$user_display_name = $user->display_name;
|
3726 |
}
|
|
|
3727 |
|
3728 |
+
$replace = array( $user_display_name );
|
3729 |
+
|
3730 |
+
return str_replace( $search, $replace, $content );
|
3731 |
}
|
3732 |
|
3733 |
/**
|
3739 |
*
|
3740 |
* Get the quiz option from meta
|
3741 |
*/
|
3742 |
+
public function get_quiz_option( $post_id = 0, $option_key = '', $default = false ) {
|
3743 |
+
$post_id = $this->get_post_id( $post_id );
|
3744 |
+
$get_option_meta = maybe_unserialize(get_post_meta( $post_id, 'tutor_quiz_option', true ) );
|
3745 |
|
3746 |
+
if ( ! $option_key && ! empty( $get_option_meta ) ) {
|
3747 |
return $get_option_meta;
|
3748 |
}
|
3749 |
|
3751 |
if ( $value > 0 || $value !== false ) {
|
3752 |
return $value;
|
3753 |
}
|
3754 |
+
|
3755 |
return $default;
|
3756 |
}
|
3757 |
|
|
|
3758 |
/**
|
3759 |
* @param int $quiz_id
|
3760 |
*
|
3762 |
*
|
3763 |
* Get the questions by quiz ID
|
3764 |
*/
|
3765 |
+
public function get_questions_by_quiz( $quiz_id = 0 ) {
|
3766 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
3767 |
global $wpdb;
|
3768 |
|
3769 |
+
$questions = $wpdb->get_results( $wpdb->prepare(
|
3770 |
+
"SELECT *
|
3771 |
+
FROM {$wpdb->prefix}tutor_quiz_questions
|
3772 |
+
WHERE quiz_id = %d
|
3773 |
+
ORDER BY question_order ASC
|
3774 |
+
",
|
3775 |
+
$quiz_id
|
3776 |
+
) );
|
3777 |
|
3778 |
+
if ( is_array( $questions ) && count( $questions ) ) {
|
3779 |
return $questions;
|
3780 |
}
|
3781 |
+
|
3782 |
return false;
|
3783 |
}
|
3784 |
|
3789 |
*
|
3790 |
* Get Quiz question by question id
|
3791 |
*/
|
3792 |
+
public function get_quiz_question_by_id( $question_id = 0 ) {
|
3793 |
global $wpdb;
|
3794 |
|
3795 |
+
if ( $question_id ) {
|
3796 |
+
$question = $wpdb->get_row( $wpdb->prepare(
|
3797 |
+
"SELECT *
|
3798 |
+
FROM {$wpdb->prefix}tutor_quiz_questions
|
3799 |
+
WHERE question_id = %d
|
3800 |
+
LIMIT 0, 1;
|
3801 |
+
",
|
3802 |
+
$question_id
|
3803 |
+
) );
|
3804 |
+
|
3805 |
return $question;
|
3806 |
}
|
3807 |
|
3817 |
*
|
3818 |
* @since v.1.0.0
|
3819 |
*/
|
3820 |
+
public function get_question_types( $type = null ) {
|
|
|
3821 |
$types = array(
|
3822 |
+
'true_false' => array( 'name' => __('True/False', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="True/False"><i class="tutor-icon-block tutor-icon-yes-no"></i></span>', 'is_pro' => false ),
|
3823 |
+
'single_choice' => array( 'name' => __('Single Choice', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Single Choice"><i class="tutor-icon-block tutor-icon-mark"></i></span>', 'is_pro' => false ),
|
3824 |
+
'multiple_choice' => array( 'name' => __('Multiple Choice', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Multiple Choicee"><i class="tutor-icon-block tutor-icon-multiple-choice"></i></span>', 'is_pro' => false ),
|
3825 |
+
'open_ended' => array( 'name' => __('Open Ended/Essay', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Open/Essay"><i class="tutor-icon-block tutor-icon-open-ended"></i></span>', 'is_pro' => false ),
|
3826 |
+
'fill_in_the_blank' => array( 'name' => __('Fill In The Blanks', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Fill In The Blanks"><i class="tutor-icon-block tutor-icon-fill-gaps"></i></span>', 'is_pro' => false ),
|
3827 |
+
'short_answer' => array( 'name' => __('Short Answer', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Short Answer"><i class="tutor-icon-block tutor-icon-short-ans"></i></span>', 'is_pro' => true ),
|
3828 |
+
'matching' => array( 'name' => __('Matching', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Matching"><i class="tutor-icon-block tutor-icon-matching"></i></span>', 'is_pro' => true ),
|
3829 |
+
'image_matching' => array( 'name' => __('Image Matching', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Image Matching"><i class="tutor-icon-block tutor-icon-image-matching"></i></span>', 'is_pro' => true ),
|
3830 |
+
'image_answering' => array( 'name' => __('Image Answering', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Image Answering"><i class="tutor-icon-block tutor-icon-image-ans"></i></span>', 'is_pro' => true ),
|
3831 |
+
'ordering' => array( 'name' => __('Ordering', 'tutor'), 'icon' => '<span class="tooltip-btn" data-tooltip="Ordering"><i class="tutor-icon-block tutor-icon-ordering"></i></span>', 'is_pro' => true ),
|
3832 |
);
|
3833 |
|
3834 |
+
if ( isset( $types[ $type ] ) ) {
|
3835 |
+
return $types[ $type ];
|
3836 |
}
|
3837 |
+
|
3838 |
return $types;
|
3839 |
}
|
3840 |
|
3841 |
+
public function get_quiz_answer_options_by_question( $question_id ) {
|
3842 |
global $wpdb;
|
3843 |
|
3844 |
+
$answer_options = $wpdb->get_results( $wpdb->prepare(
|
3845 |
+
"SELECT {$wpdb->comments}.comment_ID,
|
3846 |
+
{$wpdb->comments}.comment_post_ID,
|
3847 |
+
{$wpdb->comments}.comment_content
|
3848 |
+
FROM {$wpdb->comments}
|
3849 |
+
WHERE {$wpdb->comments}.comment_post_ID = %d
|
3850 |
+
AND {$wpdb->comments}.comment_type = %s
|
3851 |
+
ORDER BY {$wpdb->comments}.comment_karma ASC;
|
3852 |
+
",
|
3853 |
+
$question_id,
|
3854 |
+
'quiz_answer_option'
|
3855 |
+
) );
|
3856 |
+
|
3857 |
+
if ( is_array( $answer_options ) && count( $answer_options ) ) {
|
3858 |
return $answer_options;
|
3859 |
}
|
3860 |
return false;
|
3869 |
*
|
3870 |
* @since v.1.0.0
|
3871 |
*/
|
3872 |
+
public function quiz_next_question_order_id( $quiz_id ) {
|
|
|
3873 |
global $wpdb;
|
3874 |
|
3875 |
+
$last_order = (int) $wpdb->get_var( $wpdb->prepare(
|
3876 |
+
"SELECT MAX(question_order)
|
3877 |
+
FROM {$wpdb->prefix}tutor_quiz_questions
|
3878 |
+
WHERE quiz_id = %d ;
|
3879 |
+
",
|
3880 |
+
$quiz_id
|
3881 |
+
) );
|
3882 |
+
|
3883 |
return $last_order + 1;
|
3884 |
}
|
3885 |
|
3891 |
* new design quiz question
|
3892 |
* @since v.1.0.0
|
3893 |
*/
|
3894 |
+
public function quiz_next_question_id() {
|
3895 |
global $wpdb;
|
3896 |
|
3897 |
+
$last_order = (int) $wpdb->get_var( "SELECT MAX(question_id) FROM {$wpdb->prefix}tutor_quiz_questions;" );
|
3898 |
return $last_order + 1;
|
3899 |
}
|
3900 |
|
3901 |
+
public function get_quiz_id_by_question( $question_id ) {
|
3902 |
global $wpdb;
|
3903 |
+
$quiz_id = $wpdb->get_var( $wpdb->prepare(
|
3904 |
+
"SELECT quiz_id
|
3905 |
+
FROM {$wpdb->tutor_quiz_questions}
|
3906 |
+
WHERE question_id = %d;
|
3907 |
+
",
|
3908 |
+
$question_id
|
3909 |
+
) );
|
3910 |
return $quiz_id;
|
3911 |
}
|
3912 |
|
3917 |
*
|
3918 |
* @since v.1.0.0
|
3919 |
*/
|
3920 |
+
public function get_attached_quiz( $post_id = 0 ) {
|
3921 |
global $wpdb;
|
3922 |
|
3923 |
+
$post_id = $this->get_post_id( $post_id );
|
3924 |
+
|
3925 |
+
$questions = $wpdb->get_results( $wpdb->prepare(
|
3926 |
+
"SELECT ID,
|
3927 |
+
post_content,
|
3928 |
+
post_title,
|
3929 |
+
post_parent
|
3930 |
+
FROM {$wpdb->posts}
|
3931 |
+
WHERE post_type = %s
|
3932 |
+
AND post_status = %s
|
3933 |
+
AND post_parent = %d;
|
3934 |
+
",
|
3935 |
+
'tutor_quiz',
|
3936 |
+
'publish',
|
3937 |
+
$post_id
|
3938 |
+
) );
|
3939 |
+
|
3940 |
+
if ( is_array( $questions ) && count( $questions ) ) {
|
3941 |
return $questions;
|
3942 |
}
|
3943 |
+
|
3944 |
return false;
|
3945 |
}
|
3946 |
|
3953 |
*
|
3954 |
* @since v.1.0.0
|
3955 |
*/
|
3956 |
+
public function get_course_by_quiz( $quiz_id ) {
|
|
|
3957 |
global $wpdb;
|
3958 |
|
3959 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
3960 |
+
$post = get_post( $quiz_id );
|
3961 |
|
3962 |
+
if ( $post ) {
|
3963 |
$course_post_type = tutor()->course_post_type;
|
3964 |
+
$query_string = "SELECT ID, post_author, post_name, post_type, post_parent FROM {$wpdb->posts} where ID = %d";
|
3965 |
+
$course = $wpdb->get_row( $wpdb->prepare( $query_string, $post->post_parent ) );
|
3966 |
+
|
3967 |
+
if ( $course ) {
|
3968 |
if ( $course->post_type !== $course_post_type ) {
|
3969 |
+
$course = $wpdb->get_row( $wpdb->prepare( $query_string, $course->post_parent ) );
|
3970 |
}
|
3971 |
return $course;
|
3972 |
}
|
3982 |
*
|
3983 |
* @since v.1.0.0
|
3984 |
*/
|
3985 |
+
public function total_questions_for_student_by_quiz( $quiz_id ) {
|
3986 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
3987 |
global $wpdb;
|
3988 |
|
3989 |
+
$max_questions_count = (int) tutor_utils()->get_quiz_option( get_the_ID(), 'max_questions_for_answer' );
|
3990 |
+
$total_question = (int) $wpdb->get_var( $wpdb->prepare(
|
3991 |
+
"SELECT count(question_id)
|
3992 |
+
FROM {$wpdb->tutor_quiz_questions}
|
3993 |
+
WHERE quiz_id = %d;
|
3994 |
+
",
|
3995 |
+
$quiz_id
|
3996 |
+
) );
|
3997 |
|
3998 |
return min($max_questions_count, $total_question);
|
3999 |
}
|
4007 |
*
|
4008 |
* @since v.1.0.0
|
4009 |
*/
|
4010 |
+
public function is_started_quiz( $quiz_id = 0 ) {
|
|
|
4011 |
global $wpdb;
|
4012 |
|
4013 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
4014 |
$user_id = get_current_user_id();
|
4015 |
|
4016 |
+
$is_started = $wpdb->get_row( $wpdb->prepare(
|
4017 |
+
"SELECT *
|
4018 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts
|
4019 |
+
WHERE user_id = %d
|
4020 |
+
AND quiz_id = %d
|
4021 |
+
AND attempt_status = %s;
|
4022 |
+
",
|
4023 |
+
$user_id,
|
4024 |
+
$quiz_id,
|
4025 |
+
'attempt_started'
|
4026 |
+
) );
|
4027 |
|
4028 |
return $is_started;
|
4029 |
}
|
4039 |
*
|
4040 |
* @since v.1.0.0
|
4041 |
*/
|
4042 |
+
public function max_questions_for_take_quiz( $quiz_id ) {
|
4043 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
|
|
4044 |
global $wpdb;
|
4045 |
|
4046 |
+
$max_questions = (int) $wpdb->get_var( $wpdb->prepare(
|
4047 |
+
"SELECT count(question_id)
|
4048 |
+
FROM {$wpdb->prefix}tutor_quiz_questions
|
4049 |
+
WHERE quiz_id = %d;
|
4050 |
+
",
|
4051 |
+
$quiz_id
|
4052 |
+
) );
|
4053 |
|
4054 |
+
$max_mentioned = (int) $this->get_quiz_option( $quiz_id, 'max_questions_for_answer', 10 );
|
4055 |
+
|
4056 |
+
if ( $max_mentioned < $max_questions ) {
|
4057 |
return $max_mentioned;
|
4058 |
}
|
4059 |
|
4069 |
*
|
4070 |
* @since v.1.0.0
|
4071 |
*/
|
4072 |
+
public function get_attempt( $attempt_id = 0 ) {
|
4073 |
global $wpdb;
|
4074 |
+
if ( ! $attempt_id ) {
|
4075 |
return false;
|
4076 |
}
|
4077 |
+
|
4078 |
+
$attempt = $wpdb->get_row( $wpdb->prepare(
|
4079 |
+
"SELECT *
|
4080 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts
|
4081 |
+
WHERE attempt_id = %d;
|
4082 |
+
",
|
4083 |
+
$attempt_id
|
4084 |
+
) );
|
4085 |
+
|
4086 |
return $attempt;
|
4087 |
}
|
4088 |
|
4095 |
*
|
4096 |
* @since v.1.0.0
|
4097 |
*/
|
4098 |
+
public function quiz_attempt_info( $attempt_info ) {
|
4099 |
+
return maybe_unserialize( $attempt_info );
|
|
|
4100 |
}
|
4101 |
|
4102 |
/**
|
4109 |
*
|
4110 |
* @since v.1.0.0
|
4111 |
*/
|
4112 |
+
public function quiz_update_attempt_info( $quiz_attempt_id, $attempt_info = array() ) {
|
4113 |
+
$answers = tutor_utils()->avalue_dot( 'answers', $attempt_info );
|
4114 |
+
$total_marks = array_sum( wp_list_pluck( $answers, 'question_mark' ) );
|
4115 |
+
$earned_marks = tutor_utils()->avalue_dot( 'marks_earned', $attempt_info );
|
4116 |
+
$earned_mark_percent = $earned_marks > 0 ? ( number_format( ($earned_marks * 100) / $total_marks) ) : 0;
|
4117 |
+
update_comment_meta( $quiz_attempt_id, 'earned_mark_percent', $earned_mark_percent );
|
4118 |
|
4119 |
+
return update_comment_meta( $quiz_attempt_id,'quiz_attempt_info', $attempt_info );
|
4120 |
}
|
4121 |
|
4122 |
/**
|
4128 |
*
|
4129 |
* @since v.1.0.0
|
4130 |
*/
|
4131 |
+
public function get_random_question_by_quiz( $quiz_id = 0 ) {
|
|
|
4132 |
global $wpdb;
|
4133 |
|
4134 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
4135 |
+
$is_attempt = $this->is_started_quiz( $quiz_id );
|
4136 |
|
4137 |
$tempSql = " AND question_type = 'matching' ";
|
4138 |
+
$questions = $wpdb->get_results( $wpdb->prepare(
|
4139 |
+
"SELECT *
|
4140 |
+
FROM {$wpdb->prefix}tutor_quiz_questions
|
4141 |
+
WHERE quiz_id = %d
|
4142 |
+
{$tempSql}
|
4143 |
+
ORDER BY RAND()
|
4144 |
+
LIMIT 0, 1
|
4145 |
+
",
|
4146 |
+
$quiz_id
|
4147 |
+
) );
|
4148 |
|
4149 |
return $questions;
|
4150 |
}
|
4156 |
*
|
4157 |
* Get random questions by quiz
|
4158 |
*/
|
4159 |
+
public function get_random_questions_by_quiz( $quiz_id = 0 ) {
|
4160 |
global $wpdb;
|
4161 |
|
4162 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
4163 |
+
$attempt = $this->is_started_quiz( $quiz_id );
|
4164 |
$total_questions = (int) $attempt->total_questions;
|
4165 |
+
if ( ! $attempt ) {
|
4166 |
return false;
|
4167 |
}
|
4168 |
|
4169 |
+
$questions_order = tutor_utils()->get_quiz_option( get_the_ID(), 'questions_order', 'rand' );
|
4170 |
|
4171 |
$order_by = "";
|
4172 |
+
if ( $questions_order === 'rand' ) {
|
4173 |
$order_by = "ORDER BY RAND()";
|
4174 |
+
} elseif ( $questions_order === 'asc' ) {
|
4175 |
$order_by = "ORDER BY question_id ASC";
|
4176 |
+
} elseif ( $questions_order === 'desc' ) {
|
4177 |
$order_by = "ORDER BY question_id DESC";
|
4178 |
+
} elseif ( $questions_order === 'sorting' ) {
|
4179 |
$order_by = "ORDER BY question_order ASC";
|
4180 |
}
|
4181 |
|
4182 |
$limit = '';
|
4183 |
+
if ( $total_questions ) {
|
4184 |
$limit = "LIMIT {$total_questions} ";
|
4185 |
}
|
4186 |
|
4187 |
+
$questions = $wpdb->get_results( $wpdb->prepare(
|
4188 |
+
"SELECT *
|
4189 |
+
FROM {$wpdb->prefix}tutor_quiz_questions
|
4190 |
+
WHERE quiz_id = %d
|
4191 |
+
{$order_by}
|
4192 |
+
{$limit}
|
4193 |
+
",
|
4194 |
+
$quiz_id
|
4195 |
+
) );
|
4196 |
|
4197 |
return $questions;
|
4198 |
}
|
4207 |
*
|
4208 |
* @since v.1.0.0
|
4209 |
*/
|
4210 |
+
public function get_answers_by_quiz_question( $question_id, $rand = false ) {
|
4211 |
global $wpdb;
|
4212 |
|
4213 |
+
$question = $wpdb->get_row( $wpdb->prepare(
|
4214 |
+
"SELECT *
|
4215 |
+
FROM {$wpdb->prefix}tutor_quiz_questions
|
4216 |
+
WHERE question_id = %d;
|
4217 |
+
",
|
4218 |
+
$question_id
|
4219 |
+
) );
|
4220 |
+
|
4221 |
+
if ( ! $question ) {
|
4222 |
return false;
|
4223 |
}
|
4224 |
|
4225 |
$order = " answer_order ASC ";
|
4226 |
+
if ( $question->question_type === 'ordering' ) {
|
4227 |
$order = " RAND() ";
|
4228 |
}
|
4229 |
|
4231 |
$order = " RAND() ";
|
4232 |
}
|
4233 |
|
4234 |
+
$answers = $wpdb->get_results( $wpdb->prepare(
|
4235 |
+
"SELECT *
|
4236 |
+
FROM {$wpdb->prefix}tutor_quiz_question_answers
|
4237 |
+
WHERE belongs_question_id = %d
|
4238 |
+
AND belongs_question_type = %s
|
4239 |
+
ORDER BY {$order}
|
4240 |
+
",
|
4241 |
+
$question_id,
|
4242 |
+
$question->question_type
|
4243 |
+
) );
|
4244 |
+
|
4245 |
return $answers;
|
4246 |
}
|
4247 |
|
4256 |
* @since v.1.0.0
|
4257 |
*/
|
4258 |
|
4259 |
+
public function quiz_attempts( $quiz_id = 0, $user_id = 0 ) {
|
4260 |
global $wpdb;
|
4261 |
|
4262 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
4263 |
+
$user_id = $this->get_user_id( $user_id );
|
4264 |
|
4265 |
+
$attempts = $wpdb->get_results( $wpdb->prepare(
|
4266 |
+
"SELECT *
|
4267 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts
|
4268 |
+
WHERE quiz_id = %d
|
4269 |
+
AND user_id = %d;
|
4270 |
+
",
|
4271 |
+
$quiz_id,
|
4272 |
+
$user_id
|
4273 |
+
) );
|
4274 |
|
4275 |
+
if ( is_array( $attempts ) && count( $attempts ) ) {
|
4276 |
return $attempts;
|
4277 |
}
|
4278 |
|
4289 |
*
|
4290 |
* @since v.1.4.1
|
4291 |
*/
|
4292 |
+
public function quiz_ended_attempts( $quiz_id = 0, $user_id = 0 ) {
|
4293 |
global $wpdb;
|
4294 |
|
4295 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
4296 |
+
$user_id = $this->get_user_id( $user_id );
|
4297 |
+
|
4298 |
+
$attempts = $wpdb->get_results( $wpdb->prepare(
|
4299 |
+
"SELECT *
|
4300 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts
|
4301 |
+
WHERE quiz_id = %d
|
4302 |
+
AND user_id = %d
|
4303 |
+
AND attempt_status != %s
|
4304 |
+
",
|
4305 |
+
$quiz_id,
|
4306 |
+
$user_id,
|
4307 |
+
'attempt_started'
|
4308 |
+
) );
|
4309 |
+
|
4310 |
+
if ( is_array( $attempts ) && count( $attempts ) ) {
|
4311 |
return $attempts;
|
4312 |
}
|
4313 |
|
4324 |
*
|
4325 |
* @since v.1.0.0
|
4326 |
*/
|
4327 |
+
public function get_all_quiz_attempts_by_user( $user_id = 0 ) {
|
4328 |
global $wpdb;
|
4329 |
|
4330 |
+
$user_id = $this->get_user_id( $user_id );
|
4331 |
+
$attempts = $wpdb->get_results( $wpdb->prepare(
|
4332 |
+
"SELECT *
|
4333 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts
|
4334 |
+
WHERE user_id = %d
|
4335 |
+
ORDER BY attempt_id DESC
|
4336 |
+
",
|
4337 |
+
$user_id
|
4338 |
+
) );
|
4339 |
+
|
4340 |
+
if ( is_array( $attempts ) && count( $attempts ) ) {
|
4341 |
return $attempts;
|
4342 |
}
|
4343 |
|
4353 |
*
|
4354 |
* @since v.1.0.0
|
4355 |
*/
|
4356 |
+
public function get_total_quiz_attempts( $search_term = '' ) {
|
|
|
4357 |
global $wpdb;
|
4358 |
|
4359 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
4360 |
+
|
4361 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
4362 |
+
"SELECT COUNT(attempt_id)
|
4363 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
|
4364 |
+
INNER JOIN {$wpdb->posts} quiz
|
4365 |
+
ON quiz_attempts.quiz_id = quiz.ID
|
4366 |
+
INNER JOIN {$wpdb->users}
|
4367 |
+
ON quiz_attempts.user_id = {$wpdb->users}.ID
|
4368 |
+
WHERE attempt_status != %s
|
4369 |
+
AND ( user_email LIKE %s OR display_name LIKE %s OR post_title LIKE %s )
|
4370 |
+
",
|
4371 |
+
'attempt_started',
|
4372 |
+
$search_term,
|
4373 |
+
$search_term,
|
4374 |
+
$search_term
|
4375 |
+
) );
|
4376 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4377 |
return (int) $count;
|
4378 |
}
|
4379 |
|
4389 |
*
|
4390 |
* @since v.1.0.0
|
4391 |
*/
|
4392 |
+
public function get_quiz_attempts( $start = 0, $limit = 10, $search_term = '' ) {
|
4393 |
global $wpdb;
|
4394 |
|
4395 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
4396 |
+
|
4397 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
4398 |
+
"SELECT *
|
4399 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
|
4400 |
+
INNER JOIN {$wpdb->posts} quiz
|
4401 |
+
ON quiz_attempts.quiz_id = quiz.ID
|
4402 |
+
INNER JOIN {$wpdb->users}
|
4403 |
+
ON quiz_attempts.user_id = {$wpdb->users}.ID
|
4404 |
+
WHERE attempt_status != %s
|
4405 |
+
AND ( user_email LIKE %s OR display_name LIKE %s OR post_title LIKE %s )
|
4406 |
+
ORDER BY quiz_attempts.attempt_id DESC
|
4407 |
+
LIMIT %d, %d;
|
4408 |
+
",
|
4409 |
+
'attempt_started',
|
4410 |
+
$search_term,
|
4411 |
+
$search_term,
|
4412 |
+
$search_term,
|
4413 |
+
$start,
|
4414 |
+
$limit,
|
4415 |
+
) );
|
4416 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4417 |
return $query;
|
4418 |
}
|
4419 |
|
4420 |
+
public function get_quiz_attempts_by_course_ids( $start = 0, $limit = 10, $course_ids = array(), $search_term = '' ) {
|
4421 |
global $wpdb;
|
4422 |
|
4423 |
+
$course_ids = array_map( function( $id ) {
|
4424 |
+
return "'" . esc_sql( $id ) . "'";
|
4425 |
+
}, $course_ids );
|
4426 |
+
|
4427 |
+
$course_ids_in = implode( ', ', $course_ids );
|
4428 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
4429 |
+
|
4430 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
4431 |
+
"SELECT *
|
4432 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
|
4433 |
+
INNER JOIN {$wpdb->posts} quiz
|
4434 |
+
ON quiz_attempts.quiz_id = quiz.ID
|
4435 |
+
INNER JOIN {$wpdb->users}
|
4436 |
+
ON quiz_attempts.user_id = {$wpdb->users}.ID
|
4437 |
+
WHERE quiz_attempts.course_id IN (" . $course_ids_in . ")
|
4438 |
+
AND attempt_status != %s
|
4439 |
+
AND ( user_email LIKE %s OR display_name LIKE %s OR post_title LIKE %s )
|
4440 |
+
ORDER BY quiz_attempts.attempt_id DESC
|
4441 |
+
LIMIT %d, %d;
|
4442 |
+
",
|
4443 |
+
'attempt_started',
|
4444 |
+
$search_term,
|
4445 |
+
$search_term,
|
4446 |
+
$search_term,
|
4447 |
+
$start,
|
4448 |
+
$limit
|
4449 |
+
) );
|
4450 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4451 |
return $query;
|
4452 |
}
|
4453 |
|
4454 |
+
public function get_total_quiz_attempts_by_course_ids( $course_ids = array(), $search_term = '' ) {
|
4455 |
global $wpdb;
|
4456 |
+
|
4457 |
+
$course_ids = array_map( function( $id ) {
|
4458 |
+
return "'" . esc_sql( $id ) . "'";
|
4459 |
+
}, $course_ids );
|
4460 |
+
|
4461 |
+
$course_ids_in = implode( ', ', $course_ids );
|
4462 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
4463 |
+
|
4464 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
4465 |
+
"SELECT COUNT(attempt_id)
|
4466 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts quiz_attempts
|
4467 |
+
INNER JOIN {$wpdb->posts} quiz
|
4468 |
+
ON quiz_attempts.quiz_id = quiz.ID
|
4469 |
+
INNER JOIN {$wpdb->users}
|
4470 |
+
ON quiz_attempts.user_id = {$wpdb->users}.ID
|
4471 |
+
WHERE quiz_attempts.course_id IN (" . $course_ids_in . ")
|
4472 |
+
AND attempt_status != %s
|
4473 |
+
AND ( user_email LIKE %s OR display_name LIKE %s OR post_title LIKE %s )
|
4474 |
+
",
|
4475 |
+
'attempt_started',
|
4476 |
+
$search_term,
|
4477 |
+
$search_term,
|
4478 |
+
$search_term
|
4479 |
+
) );
|
4480 |
+
|
4481 |
return (int) $count;
|
4482 |
}
|
4483 |
|
4490 |
*
|
4491 |
* @since v.1.0.0
|
4492 |
*/
|
4493 |
+
public function get_quiz_answers_by_attempt_id( $attempt_id ) {
|
4494 |
global $wpdb;
|
4495 |
|
4496 |
+
$results = $wpdb->get_results( $wpdb->prepare(
|
4497 |
+
"SELECT answers.*,
|
4498 |
+
question.question_title,
|
4499 |
+
question.question_type
|
4500 |
+
FROM {$wpdb->prefix}tutor_quiz_attempt_answers answers
|
4501 |
+
LEFT JOIN {$wpdb->prefix}tutor_quiz_questions question
|
4502 |
+
ON answers.question_id = question.question_id
|
4503 |
+
WHERE answers.quiz_attempt_id = %d
|
4504 |
+
ORDER BY attempt_answer_id ASC;
|
4505 |
+
",
|
4506 |
+
$attempt_id
|
4507 |
+
) );
|
4508 |
|
4509 |
return $results;
|
4510 |
}
|
4511 |
|
4512 |
/**
|
4513 |
+
* @param $answer_id array|init
|
4514 |
*
|
4515 |
* @return array|null|object
|
4516 |
*
|
4518 |
*
|
4519 |
* @since v.1.0.0
|
4520 |
*/
|
4521 |
+
public function get_answer_by_id( $answer_id ) {
|
4522 |
global $wpdb;
|
4523 |
|
4524 |
+
! is_array( $answer_id ) ? $answer_id = array( $answer_id ) : 0;
|
4525 |
+
|
4526 |
+
$answer_id = array_map( function( $id ) {
|
4527 |
+
return "'" . esc_sql( $id ) . "'";
|
4528 |
+
}, $answer_id );
|
|
|
4529 |
|
4530 |
+
$in_ids_string = implode( ', ', $answer_id );
|
4531 |
+
|
4532 |
+
$answer = $wpdb->get_results( $wpdb->prepare(
|
4533 |
+
"SELECT answer.*,
|
4534 |
+
question.question_title,
|
4535 |
+
question.question_type
|
4536 |
+
FROM {$wpdb->prefix}tutor_quiz_question_answers answer
|
4537 |
+
LEFT JOIN {$wpdb->prefix}tutor_quiz_questions question
|
4538 |
+
ON answer.belongs_question_id = question.question_id
|
4539 |
+
WHERE answer.answer_id IN (" . $in_ids_string . ")
|
4540 |
+
AND 1 = %d;
|
4541 |
+
",
|
4542 |
+
1
|
4543 |
+
) );
|
4544 |
|
4545 |
return $answer;
|
4546 |
}
|
4554 |
*
|
4555 |
* @since v.1.0.0
|
4556 |
*/
|
4557 |
+
public function get_quiz_answers_by_ids( $ids ) {
|
|
|
4558 |
$ids = (array) $ids;
|
4559 |
|
4560 |
+
if ( ! count( $ids ) ) {
|
4561 |
return false;
|
4562 |
}
|
4563 |
|
4564 |
$in_ids = implode(",", $ids);
|
4565 |
|
4566 |
global $wpdb;
|
|
|
|
|
|
|
|
|
|
|
4567 |
|
4568 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
4569 |
+
"SELECT comment_ID,
|
4570 |
+
comment_content
|
4571 |
+
FROM {$wpdb->comments}
|
4572 |
+
WHERE comment_type = %s
|
4573 |
+
AND comment_ID IN({$in_ids})
|
4574 |
+
",
|
4575 |
+
'quiz_answer_option'
|
4576 |
+
) );
|
4577 |
+
|
4578 |
+
if ( is_array( $query ) && count( $query ) ) {
|
4579 |
return $query;
|
4580 |
}
|
4581 |
|
4591 |
*
|
4592 |
* @since v.1.0.0
|
4593 |
*/
|
4594 |
+
public function course_levels( $level = null ) {
|
4595 |
+
$levels = apply_filters( 'tutor_course_level', array(
|
4596 |
+
'all_levels' => __( 'All Levels', 'tutor' ),
|
4597 |
+
'beginner' => __( 'Beginner', 'tutor' ),
|
4598 |
+
'intermediate' => __( 'Intermediate', 'tutor' ),
|
4599 |
+
'expert' => __( 'Expert', 'tutor' ),
|
|
|
4600 |
));
|
4601 |
|
4602 |
+
if ( $level ) {
|
4603 |
+
if ( isset( $levels[ $level ] ) ) {
|
4604 |
+
return $levels[ $level ];
|
4605 |
+
} else {
|
4606 |
return '';
|
4607 |
}
|
4608 |
}
|
4617 |
*
|
4618 |
* @since v.1.0.0
|
4619 |
*/
|
4620 |
+
public function user_profile_permalinks() {
|
4621 |
$permalinks = array(
|
4622 |
+
'courses_taken' => __( 'Courses Taken', 'tutor' ),
|
4623 |
);
|
4624 |
|
4625 |
+
$show_enrolled_course = tutor_utils()->get_option( 'show_courses_completed_by_student' );
|
4626 |
+
$enable_show_reviews_wrote = tutor_utils()->get_option( 'students_own_review_show_at_profile' );
|
4627 |
|
4628 |
+
if ( $show_enrolled_course ) {
|
4629 |
+
$permalinks['enrolled_course'] = __( 'Enrolled Course', 'tutor' );
|
|
|
|
|
|
|
4630 |
}
|
4631 |
|
4632 |
+
if ( $enable_show_reviews_wrote ) {
|
4633 |
+
$permalinks['reviews_wrote'] = __( 'Reviews Written', 'tutor' );
|
4634 |
+
}
|
4635 |
|
4636 |
+
return apply_filters( 'tutor_public_profile/permalinks', $permalinks );
|
4637 |
}
|
4638 |
|
4639 |
/**
|
4643 |
*
|
4644 |
* @since v.1.0.0
|
4645 |
*/
|
4646 |
+
public function student_register_url() {
|
4647 |
+
$student_register_page = (int) $this->get_option( 'student_register_page' );
|
4648 |
|
4649 |
+
if ( $student_register_page ) {
|
4650 |
+
return get_the_permalink( $student_register_page );
|
4651 |
}
|
4652 |
+
|
4653 |
return false;
|
4654 |
}
|
4655 |
+
|
4656 |
/**
|
4657 |
* @return bool|false|string
|
4658 |
*
|
4660 |
*
|
4661 |
* @since v.1.2.13
|
4662 |
*/
|
4663 |
+
public function instructor_register_url() {
|
4664 |
+
$instructor_register_page = (int) $this->get_option( 'instructor_register_page' );
|
4665 |
|
4666 |
+
if ( $instructor_register_page ) {
|
4667 |
+
return get_the_permalink( $instructor_register_page );
|
4668 |
}
|
4669 |
+
|
4670 |
return false;
|
4671 |
}
|
4672 |
|
4675 |
*
|
4676 |
* Get frontend dashboard URL
|
4677 |
*/
|
4678 |
+
public function tutor_dashboard_url($sub_url = '') {
|
4679 |
+
$page_id = (int) tutor_utils()->get_option( 'tutor_dashboard_page_id' );
|
4680 |
+
$page_id = apply_filters( 'tutor_dashboard_page_id', $page_id );
|
4681 |
+
return trailingslashit( get_the_permalink( $page_id ) ) . $sub_url;
|
4682 |
}
|
4683 |
|
4684 |
/**
|
4687 |
* @return int
|
4688 |
*
|
4689 |
*/
|
4690 |
+
public function dashboard_page_id() {
|
4691 |
+
$page_id = (int) tutor_utils()->get_option( 'tutor_dashboard_page_id' );
|
4692 |
+
$page_id = apply_filters( 'tutor_dashboard_page_id', $page_id );
|
4693 |
return $page_id;
|
4694 |
}
|
4695 |
|
4703 |
*
|
4704 |
* @since v.1.0.0
|
4705 |
*/
|
4706 |
+
public function is_wishlisted( $course_id = 0, $user_id = 0 ) {
|
4707 |
+
$course_id = $this->get_post_id( $course_id );
|
4708 |
+
$user_id = $this->get_user_id( $user_id );
|
4709 |
+
if ( ! $user_id ) {
|
4710 |
return false;
|
4711 |
}
|
4712 |
|
4713 |
global $wpdb;
|
4714 |
+
$if_added_to_list = (bool) $wpdb->get_row( $wpdb->prepare(
|
4715 |
+
"SELECT *
|
4716 |
+
FROM {$wpdb->usermeta}
|
4717 |
+
WHERE user_id = %d
|
4718 |
+
AND meta_key = '_tutor_course_wishlist'
|
4719 |
+
AND meta_value = %d;
|
4720 |
+
",
|
4721 |
+
$user_id,
|
4722 |
+
$course_id
|
4723 |
+
) );
|
4724 |
|
4725 |
return $if_added_to_list;
|
4726 |
}
|
4734 |
*
|
4735 |
* @since v.1.0.0
|
4736 |
*/
|
4737 |
+
public function get_wishlist( $user_id = 0 ) {
|
4738 |
+
global $wpdb;
|
4739 |
+
|
4740 |
+
$user_id = $this->get_user_id( $user_id );
|
4741 |
$course_post_type = tutor()->course_post_type;
|
4742 |
|
4743 |
+
$pageposts = $wpdb->get_results( $wpdb->prepare(
|
4744 |
+
"SELECT $wpdb->posts.*
|
4745 |
+
FROM $wpdb->posts
|
4746 |
+
LEFT JOIN $wpdb->usermeta
|
4747 |
+
ON ($wpdb->posts.ID = $wpdb->usermeta.meta_value)
|
4748 |
+
WHERE post_type = %s
|
4749 |
+
AND post_status = %s
|
4750 |
+
AND $wpdb->usermeta.meta_key = %s
|
4751 |
+
AND $wpdb->usermeta.user_id = %d
|
4752 |
+
ORDER BY $wpdb->usermeta.umeta_id DESC;
|
4753 |
+
",
|
4754 |
+
$course_post_type,
|
4755 |
+
'publish',
|
4756 |
+
'_tutor_course_wishlist',
|
4757 |
+
$user_id
|
4758 |
+
), OBJECT );
|
4759 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4760 |
return $pageposts;
|
4761 |
}
|
4762 |
|
4769 |
*
|
4770 |
* @since v.1.0.0
|
4771 |
*/
|
4772 |
+
public function most_popular_courses( $limit = 10 ) {
|
4773 |
global $wpdb;
|
4774 |
|
4775 |
+
$courses = $wpdb->get_results( $wpdb->prepare(
|
4776 |
+
"SELECT COUNT(enrolled.ID) AS total_enrolled,
|
4777 |
+
enrolled.post_parent as course_id,
|
4778 |
+
course.*
|
4779 |
+
FROM {$wpdb->posts} enrolled
|
4780 |
+
INNER JOIN {$wpdb->posts} course
|
4781 |
+
ON enrolled.post_parent = course.ID
|
4782 |
+
WHERE enrolled.post_type = %s
|
4783 |
+
AND enrolled.post_status = %s
|
4784 |
+
GROUP BY course_id
|
4785 |
+
ORDER BY total_enrolled DESC
|
4786 |
+
LIMIT 0, %d;
|
4787 |
+
",
|
4788 |
+
'tutor_enrolled',
|
4789 |
+
'completed',
|
4790 |
+
$limit
|
4791 |
+
) );
|
4792 |
|
4793 |
return $courses;
|
4794 |
}
|
4802 |
*
|
4803 |
* @since v.1.0.0
|
4804 |
*/
|
4805 |
+
public function most_rated_courses( $limit = 10 ) {
|
4806 |
global $wpdb;
|
4807 |
|
4808 |
+
$result = $wpdb->get_results( $wpdb->prepare(
|
4809 |
+
"SELECT COUNT(comment_ID) AS total_rating,
|
4810 |
+
comment_ID,
|
4811 |
+
comment_post_ID,
|
4812 |
+
course.*
|
4813 |
+
FROM {$wpdb->comments}
|
4814 |
+
INNER JOIN {$wpdb->posts} course
|
4815 |
+
ON comment_post_ID = course.ID
|
4816 |
+
WHERE {$wpdb->comments}.comment_type = %s
|
4817 |
+
AND {$wpdb->comments}.comment_approved = %s
|
4818 |
+
GROUP BY comment_post_ID
|
4819 |
+
ORDER BY total_rating DESC
|
4820 |
+
LIMIT 0, %d
|
4821 |
+
;",
|
4822 |
+
'tutor_course_rating',
|
4823 |
+
'approved',
|
4824 |
+
$limit
|
4825 |
+
) );
|
4826 |
+
|
4827 |
+
if ( is_array( $result ) && count( $result ) ) {
|
4828 |
return $result;
|
4829 |
}
|
4830 |
+
|
4831 |
return false;
|
4832 |
}
|
4833 |
|
4840 |
*
|
4841 |
* @since v.1.0.0
|
4842 |
*/
|
4843 |
+
public function get_addon_config( $addon_field = null ) {
|
4844 |
+
if ( ! $addon_field ) {
|
4845 |
return false;
|
4846 |
}
|
4847 |
|
4848 |
+
$addonsConfig = maybe_unserialize( get_option( 'tutor_addons_config' ) );
|
4849 |
|
4850 |
+
if ( isset( $addonsConfig[ $addon_field ] ) ) {
|
4851 |
+
return $addonsConfig[ $addon_field ];
|
4852 |
}
|
4853 |
|
4854 |
return false;
|
4863 |
*/
|
4864 |
function get_ip() {
|
4865 |
$ipaddress = '';
|
4866 |
+
if ( getenv( 'HTTP_CLIENT_IP') )
|
4867 |
+
$ipaddress = getenv( 'HTTP_CLIENT_IP' );
|
4868 |
+
else if( getenv( 'HTTP_X_FORWARDED_FOR' ) )
|
4869 |
+
$ipaddress = getenv( 'HTTP_X_FORWARDED_FOR' );
|
4870 |
+
else if( getenv( 'HTTP_X_FORWARDED' ) )
|
4871 |
+
$ipaddress = getenv( 'HTTP_X_FORWARDED' );
|
4872 |
+
else if( getenv( 'HTTP_FORWARDED_FOR' ) )
|
4873 |
+
$ipaddress = getenv( 'HTTP_FORWARDED_FOR' );
|
4874 |
+
else if( getenv( 'HTTP_FORWARDED' ) )
|
4875 |
+
$ipaddress = getenv( 'HTTP_FORWARDED' );
|
4876 |
+
else if( getenv( 'REMOTE_ADDR' ) )
|
4877 |
+
$ipaddress = getenv( 'REMOTE_ADDR' );
|
4878 |
else
|
4879 |
$ipaddress = 'UNKNOWN';
|
4880 |
return $ipaddress;
|
4887 |
*
|
4888 |
* @since v.1.0.4
|
4889 |
*/
|
4890 |
+
public function tutor_social_share_icons() {
|
|
|
4891 |
$icons = array(
|
4892 |
+
'facebook' => array( 'share_class' => 's_facebook', 'icon_html' => '<i class="tutor-icon-facebook"></i>' ),
|
4893 |
+
'twitter' => array( 'share_class' => 's_twitter', 'icon_html' => '<i class="tutor-icon-twitter"></i>' ),
|
4894 |
+
'linkedin' => array( 'share_class' => 's_linkedin', 'icon_html' => '<i class="tutor-icon-linkedin"></i>' ),
|
4895 |
+
'tumblr' => array( 'share_class' => 's_tumblr', 'icon_html' => '<i class="tutor-icon-tumblr"></i>' ),
|
4896 |
);
|
4897 |
|
4898 |
+
return apply_filters( 'tutor_social_share_icons', $icons );
|
4899 |
}
|
4900 |
|
4901 |
/**
|
4905 |
*
|
4906 |
* @since v.1.3.7
|
4907 |
*/
|
4908 |
+
public function tutor_user_social_icons() {
|
|
|
4909 |
$icons = array(
|
4910 |
'_tutor_profile_website' => array(
|
4911 |
+
'label' => __('Website URL', 'tutor'),
|
4912 |
+
'placeholder' => 'https://example.com/',
|
4913 |
+
'icon_classes' => 'tutor-icon-earth'
|
4914 |
),
|
4915 |
'_tutor_profile_github' => array(
|
4916 |
+
'label' => __('Github URL', 'tutor'),
|
4917 |
+
'placeholder' => 'https://github.com/username',
|
4918 |
+
'icon_classes' => 'tutor-icon-github-logo'
|
4919 |
),
|
4920 |
'_tutor_profile_facebook' => array(
|
4921 |
+
'label' => __('Facebook URL', 'tutor'),
|
4922 |
+
'placeholder' => 'https://facebook.com/username',
|
4923 |
+
'icon_classes' => 'tutor-icon-facebook'
|
4924 |
),
|
4925 |
'_tutor_profile_twitter' => array(
|
4926 |
+
'label' => __('Twitter URL', 'tutor'),
|
4927 |
+
'placeholder' => 'https://twitter.com/username',
|
4928 |
+
'icon_classes' => 'tutor-icon-twitter'
|
4929 |
),
|
4930 |
'_tutor_profile_linkedin' => array(
|
4931 |
+
'label' => __('Linkedin URL', 'tutor'),
|
4932 |
+
'placeholder' => 'https://linkedin.com/username',
|
4933 |
+
'icon_classes' => 'tutor-icon-linkedin'
|
4934 |
),
|
4935 |
);
|
4936 |
|
4937 |
+
return apply_filters( 'tutor_user_social_icons', $icons );
|
4938 |
}
|
4939 |
|
4940 |
/**
|
4946 |
*
|
4947 |
* @since v.1.0.4
|
4948 |
*/
|
4949 |
+
public function count( $array = array() ) {
|
4950 |
+
if ( is_array( $array ) && count( $array ) ) {
|
4951 |
+
return count( $array );
|
4952 |
}
|
4953 |
+
|
4954 |
return false;
|
4955 |
}
|
4956 |
|
4961 |
*
|
4962 |
* @since v.1.1.2
|
4963 |
*/
|
4964 |
+
public function tutor_get_screen_ids() {
|
4965 |
$screen_ids = array(
|
4966 |
"edit-course",
|
4967 |
"course",
|
4978 |
"tutor-lms_page_tutor_emails",
|
4979 |
);
|
4980 |
|
4981 |
+
return apply_filters( 'tutor_get_screen_ids', $screen_ids );
|
4982 |
}
|
4983 |
|
|
|
4984 |
/**
|
4985 |
* @return mixed
|
4986 |
*
|
4988 |
*
|
4989 |
* @since v.1.1.2
|
4990 |
*/
|
4991 |
+
public function get_earnings_completed_statuses() {
|
4992 |
return apply_filters(
|
4993 |
'tutor_get_earnings_completed_statuses',
|
4994 |
array (
|
5009 |
*
|
5010 |
* @since v.1.1.2
|
5011 |
*/
|
5012 |
+
public function get_earning_sum( $user_id = 0, $date_filter = array() ) {
|
|
|
5013 |
global $wpdb;
|
5014 |
|
5015 |
+
$user_id = $this->get_user_id( $user_id );
|
5016 |
$date_query = '';
|
|
|
|
|
5017 |
|
5018 |
+
if ( $this->count( $date_filter ) ) {
|
5019 |
+
extract( $date_filter );
|
5020 |
+
|
5021 |
+
if ( ! empty( $dataFor ) ) {
|
5022 |
+
if ( $dataFor === 'yearly' ) {
|
5023 |
+
if ( empty( $year ) ) {
|
5024 |
+
$year = date( 'Y' );
|
5025 |
}
|
5026 |
$date_query = "AND YEAR(created_at) = {$year} ";
|
5027 |
}
|
5028 |
+
} else {
|
5029 |
$date_query = " AND (created_at BETWEEN '{$start_date}' AND '{$end_date}') ";
|
5030 |
}
|
5031 |
}
|
5032 |
|
5033 |
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
5034 |
+
$complete_status = "'" . implode( "','", $complete_status ) . "'";
|
5035 |
+
|
5036 |
+
$earning_sum = $wpdb->get_row( $wpdb->prepare(
|
5037 |
+
"SELECT SUM(course_price_total) AS course_price_total,
|
5038 |
+
SUM(course_price_grand_total) AS course_price_grand_total,
|
5039 |
+
SUM(instructor_amount) AS instructor_amount,
|
5040 |
+
(SELECT SUM(amount)
|
5041 |
+
FROM {$wpdb->prefix}tutor_withdraws
|
5042 |
+
WHERE user_id = {$user_id}
|
5043 |
+
AND status != 'rejected'
|
5044 |
+
) AS withdraws_amount,
|
5045 |
+
SUM(admin_amount) AS admin_amount,
|
5046 |
+
SUM(deduct_fees_amount) AS deduct_fees_amount
|
5047 |
+
FROM {$wpdb->prefix}tutor_earnings
|
5048 |
+
WHERE user_id = %d
|
5049 |
+
AND order_status IN({$complete_status})
|
5050 |
+
{$date_query}
|
5051 |
+
",
|
5052 |
+
$user_id
|
5053 |
+
) );
|
5054 |
|
5055 |
//TODO: need to check
|
5056 |
// (SUM(instructor_amount) - (SELECT withdraws_amount) ) as balance,
|
5057 |
|
5058 |
+
if ( $earning_sum->course_price_total ) {
|
|
|
5059 |
$earning_sum->balance = $earning_sum->instructor_amount - $earning_sum->withdraws_amount;
|
5060 |
+
} else {
|
|
|
5061 |
$earning_sum = (object) array(
|
5062 |
'course_price_total' => 0,
|
5063 |
'course_price_grand_total' => 0,
|
5082 |
*
|
5083 |
* @since v.1.1.2
|
5084 |
*/
|
5085 |
+
public function get_earning_statements( $user_id = 0, $filter_data = array() ) {
|
5086 |
global $wpdb;
|
5087 |
|
5088 |
$user_sql = "";
|
5097 |
/**
|
5098 |
* Query by Date Filter
|
5099 |
*/
|
5100 |
+
if ( $this->count( $filter_data ) ) {
|
5101 |
+
extract( $filter_data );
|
5102 |
|
5103 |
+
if ( ! empty( $dataFor ) ) {
|
5104 |
+
if ( $dataFor === 'yearly' ) {
|
5105 |
+
if ( empty( $year ) ) {
|
5106 |
+
$year = date( 'Y' );
|
5107 |
}
|
5108 |
$date_query = "AND YEAR(created_at) = {$year} ";
|
5109 |
}
|
5110 |
+
} else {
|
5111 |
$date_query = " AND (created_at BETWEEN '{$start_date}' AND '{$end_date}') ";
|
5112 |
}
|
5113 |
|
5114 |
/**
|
5115 |
* Query by order status related to this earning transaction
|
5116 |
*/
|
5117 |
+
if ( ! empty( $statuses ) ) {
|
5118 |
if ( $this->count( $statuses ) ) {
|
5119 |
$status = "'" . implode( "','", $statuses ) . "'";
|
5120 |
$query_by_status = "AND order_status IN({$status})";
|
5121 |
} elseif ( $statuses === 'completed' ) {
|
|
|
5122 |
$get_earnings_completed_statuses = $this->get_earnings_completed_statuses();
|
5123 |
if ( $this->count( $get_earnings_completed_statuses ) ) {
|
5124 |
$status = "'" . implode( "','", $get_earnings_completed_statuses ) . "'";
|
5127 |
}
|
5128 |
}
|
5129 |
|
5130 |
+
if ( ! empty( $per_page ) ) {
|
5131 |
+
$offset = (int) ! empty($offset) ? $offset : 0;
|
|
|
5132 |
$pagination_query = " LIMIT {$offset}, {$per_page} ";
|
|
|
5133 |
}
|
|
|
|
|
5134 |
}
|
5135 |
|
5136 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
5137 |
+
"SELECT earning_tbl.*,
|
5138 |
+
course.post_title AS course_title
|
5139 |
+
FROM {$wpdb->prefix}tutor_earnings earning_tbl
|
5140 |
+
LEFT JOIN {$wpdb->posts} course
|
5141 |
+
ON earning_tbl.course_id = course.ID
|
5142 |
+
WHERE 1 = %d {$user_sql} {$date_query} {$query_by_status}
|
5143 |
+
ORDER BY created_at DESC {$pagination_query}
|
5144 |
+
",
|
5145 |
+
1
|
5146 |
+
) );
|
5147 |
+
|
5148 |
+
$query_count = (int) $wpdb->get_var( $wpdb->prepare(
|
5149 |
+
"SELECT COUNT(earning_tbl.earning_id)
|
5150 |
+
FROM {$wpdb->prefix}tutor_earnings earning_tbl
|
5151 |
+
WHERE 1 = %d {$user_sql} {$date_query} {$query_by_status}
|
5152 |
+
ORDER BY created_at DESC
|
5153 |
+
",
|
5154 |
+
1
|
5155 |
+
) );
|
5156 |
|
5157 |
return (object) array(
|
5158 |
+
'count' => $query_count,
|
5159 |
'results' => $query,
|
5160 |
);
|
5161 |
}
|
5169 |
*
|
5170 |
* @since v.1.1.2
|
5171 |
*/
|
5172 |
+
public function tutor_price( $price = 0 ) {
|
5173 |
+
if ( function_exists( 'wc_price') ) {
|
5174 |
+
return wc_price( $price );
|
5175 |
+
} elseif ( function_exists( 'edd_currency_filter' ) ) {
|
5176 |
+
return edd_currency_filter( edd_format_amount( $price ) );
|
|
|
5177 |
}else{
|
5178 |
+
return number_format_i18n( $price );
|
5179 |
}
|
5180 |
}
|
5181 |
|
5186 |
*
|
5187 |
* @since v.1.3.4
|
5188 |
*/
|
5189 |
+
public function currency_symbol() {
|
5190 |
+
$enable_tutor_edd = tutor_utils()->get_option( 'enable_tutor_edd' );
|
5191 |
+
$monetize_by = $this->get_option('monetize_by');
|
|
|
5192 |
|
5193 |
$symbol = '$';
|
5194 |
+
if ( $enable_tutor_edd && function_exists( 'edd_currency_symbol' ) ) {
|
5195 |
$symbol = edd_currency_symbol();
|
5196 |
}
|
5197 |
|
5198 |
+
if ( $monetize_by === 'wc' && function_exists( 'get_woocommerce_currency_symbol' ) ) {
|
5199 |
$symbol = get_woocommerce_currency_symbol();
|
5200 |
}
|
5201 |
|
5202 |
+
return apply_filters( 'get_tutor_currency_symbol', $symbol );
|
5203 |
}
|
5204 |
|
5205 |
/**
|
5209 |
*
|
5210 |
* Get withdraw method for a specific
|
5211 |
*/
|
5212 |
+
public function get_user_withdraw_method( $user_id = 0 ) {
|
5213 |
+
$user_id = $this->get_user_id( $user_id );
|
5214 |
+
$account = get_user_meta( $user_id, '_tutor_withdraw_method_data', true );
|
5215 |
|
5216 |
+
if ( $account ) {
|
5217 |
+
return maybe_unserialize( $account );
|
|
|
5218 |
}
|
5219 |
|
5220 |
return false;
|
5228 |
*
|
5229 |
* @return object
|
5230 |
*/
|
5231 |
+
public function get_withdrawals_history( $user_id = 0, $filter = array() ) {
|
5232 |
global $wpdb;
|
5233 |
|
5234 |
$filter = (array) $filter;
|
5235 |
extract($filter);
|
5236 |
|
5237 |
$query_by_status_sql = "";
|
5238 |
+
$query_by_user_sql = "";
|
5239 |
$query_by_pagination = "";
|
5240 |
|
5241 |
+
if ( ! empty( $status ) ) {
|
5242 |
$status = (array) $status;
|
5243 |
+
$status = "'" . implode( "','", $status ) . "'";
|
5244 |
|
5245 |
$query_by_status_sql = " AND status IN({$status}) ";
|
5246 |
}
|
5247 |
|
5248 |
+
if ( ! empty( $per_page ) ) {
|
5249 |
+
if ( empty( $start ) )
|
5250 |
$start = 0;
|
5251 |
|
5252 |
$query_by_pagination = " LIMIT {$start}, {$per_page} ";
|
5253 |
}
|
5254 |
|
5255 |
+
if ( $user_id ) {
|
5256 |
$query_by_user_sql = " AND user_id = {$user_id} ";
|
5257 |
}
|
5258 |
|
5259 |
+
$count = (int) $wpdb->get_var( $wpdb->prepare(
|
5260 |
+
"SELECT COUNT(withdraw_id)
|
5261 |
+
FROM {$wpdb->prefix}tutor_withdraws
|
5262 |
+
WHERE 1 = %d
|
5263 |
+
{$query_by_user_sql}
|
5264 |
+
{$query_by_status_sql}
|
5265 |
+
",
|
5266 |
+
1
|
5267 |
+
) );
|
5268 |
+
|
5269 |
+
$results = $wpdb->get_results( $wpdb->prepare(
|
5270 |
+
"SELECT withdraw_tbl.*,
|
5271 |
+
user_tbl.display_name AS user_name,
|
5272 |
+
user_tbl.user_email
|
5273 |
+
FROM {$wpdb->prefix}tutor_withdraws withdraw_tbl
|
5274 |
+
INNER JOIN {$wpdb->users} user_tbl
|
5275 |
+
ON withdraw_tbl.user_id = user_tbl.ID
|
5276 |
+
WHERE 1 = %d
|
5277 |
+
{$query_by_user_sql}
|
5278 |
+
{$query_by_status_sql}
|
5279 |
+
ORDER BY created_at DESC
|
5280 |
+
{$query_by_pagination}
|
5281 |
+
",
|
5282 |
+
1
|
5283 |
+
) );
|
5284 |
|
5285 |
$withdraw_history = array(
|
5286 |
+
'count' => 0,
|
5287 |
'results' => null,
|
5288 |
);
|
5289 |
|
5290 |
+
if ( $count ) {
|
5291 |
$withdraw_history['count'] = $count;
|
5292 |
}
|
5293 |
|
5294 |
+
if ( tutor_utils()->count( $results ) ) {
|
5295 |
$withdraw_history['results'] = $results;
|
5296 |
}
|
5297 |
+
|
5298 |
return (object) $withdraw_history;
|
5299 |
|
5300 |
}
|
5304 |
*
|
5305 |
* Add Instructor role to any user by user iD
|
5306 |
*/
|
5307 |
+
public function add_instructor_role( $instructor_id = 0 ) {
|
5308 |
+
if ( ! $instructor_id ) {
|
5309 |
return;
|
5310 |
}
|
5311 |
+
do_action( 'tutor_before_approved_instructor', $instructor_id );
|
5312 |
|
5313 |
+
update_user_meta( $instructor_id, '_is_tutor_instructor', tutor_time() );
|
5314 |
+
update_user_meta( $instructor_id, '_tutor_instructor_status', 'approved' );
|
5315 |
+
update_user_meta( $instructor_id, '_tutor_instructor_approved', tutor_time() );
|
5316 |
|
5317 |
+
$instructor = new \WP_User( $instructor_id );
|
5318 |
+
$instructor->add_role( tutor()->instructor_role );
|
5319 |
|
5320 |
+
do_action( 'tutor_after_approved_instructor', $instructor_id );
|
5321 |
}
|
5322 |
|
5323 |
/**
|
5325 |
*
|
5326 |
* Remove instructor role by instructor id
|
5327 |
*/
|
5328 |
+
public function remove_instructor_role( $instructor_id = 0 ) {
|
5329 |
+
if ( ! $instructor_id ) {
|
5330 |
return;
|
5331 |
}
|
5332 |
|
5333 |
+
do_action( 'tutor_before_blocked_instructor', $instructor_id );
|
5334 |
+
delete_user_meta( $instructor_id, '_is_tutor_instructor' );
|
5335 |
+
update_user_meta( $instructor_id, '_tutor_instructor_status', 'blocked' );
|
5336 |
|
5337 |
+
$instructor = new \WP_User( $instructor_id );
|
5338 |
+
$instructor->remove_role( tutor()->instructor_role );
|
5339 |
+
do_action( 'tutor_after_blocked_instructor', $instructor_id );
|
5340 |
}
|
5341 |
|
5342 |
/**
|
5345 |
*
|
5346 |
* Set Flash Message to view in next action / route
|
5347 |
*/
|
5348 |
+
public function set_flash_msg( $msg = '', $name = 'success' ) {
|
5349 |
global $wp_filesystem;
|
5350 |
if ( ! $wp_filesystem ) {
|
5351 |
require_once( ABSPATH . 'wp-admin/includes/file.php' );
|
5353 |
|
5354 |
$filename = "tutor_flash_msg_{$name}.txt";
|
5355 |
$upload_dir = wp_upload_dir();
|
5356 |
+
$dir = trailingslashit( $upload_dir['basedir'] ) . 'tutor/';
|
5357 |
|
5358 |
WP_Filesystem( false, $upload_dir['basedir'], true );
|
5359 |
|
5360 |
+
if ( ! $wp_filesystem->is_dir( $dir ) ) {
|
5361 |
$wp_filesystem->mkdir( $dir );
|
5362 |
}
|
5363 |
+
|
5364 |
$wp_filesystem->put_contents( $dir . $filename, $msg );
|
5365 |
}
|
5366 |
|
5371 |
*
|
5372 |
* Get Flash Message
|
5373 |
*/
|
5374 |
+
public function get_flash_msg( $name = null ) {
|
5375 |
+
if ( ! $name ) {
|
5376 |
return '';
|
5377 |
}
|
5378 |
|
5379 |
$upload_dir = wp_get_upload_dir();
|
5380 |
+
$upload_dir = trailingslashit( $upload_dir['basedir'] );
|
5381 |
+
$msg_name = 'tutor_flash_msg_'.$name;
|
5382 |
|
5383 |
$msg = '';
|
5384 |
$flash_msg_file_name = $upload_dir."tutor/{$msg_name}.txt";
|
5385 |
+
if ( file_exists( $flash_msg_file_name ) ) {
|
5386 |
+
$msg = file_get_contents( $flash_msg_file_name );
|
5387 |
+
unlink( $flash_msg_file_name );
|
5388 |
}
|
5389 |
|
5390 |
+
return apply_filters( 'tutor_get_flash_msg', $msg, $name );
|
5391 |
}
|
5392 |
|
5393 |
/**
|
5397 |
*
|
5398 |
* Get purchase history by customer id
|
5399 |
*/
|
5400 |
+
public function get_orders_by_user_id( $user_id = 0 ) {
|
|
|
5401 |
global $wpdb;
|
5402 |
|
5403 |
+
$user_id = $this->get_user_id();
|
5404 |
+
$monetize_by = tutils()->get_option( 'monetize_by' );
|
5405 |
|
5406 |
$post_type = "";
|
5407 |
$user_meta = "";
|
5408 |
+
|
5409 |
+
if ( $monetize_by === 'wc' ) {
|
5410 |
$post_type = "shop_order";
|
5411 |
$user_meta = "_customer_user";
|
5412 |
+
} else if ( $monetize_by === 'edd' ) {
|
5413 |
$post_type = "edd_payment";
|
5414 |
$user_meta = "_edd_payment_user_id";
|
5415 |
}
|
5416 |
|
5417 |
+
$orders = $wpdb->get_results( $wpdb->prepare(
|
5418 |
+
"SELECT {$wpdb->posts}.*
|
5419 |
+
FROM {$wpdb->posts}
|
5420 |
+
INNER JOIN {$wpdb->postmeta} customer
|
5421 |
+
ON id = customer.post_id
|
5422 |
+
AND customer.meta_key = '{$user_meta}'
|
5423 |
+
INNER JOIN {$wpdb->postmeta} tutor_order
|
5424 |
+
ON id = tutor_order.post_id
|
5425 |
+
AND tutor_order.meta_key = '_is_tutor_order_for_course'
|
5426 |
+
WHERE post_type = %s
|
5427 |
+
AND customer.meta_value = %d
|
5428 |
+
ORDER BY {$wpdb->posts}.id DESC
|
5429 |
+
",
|
5430 |
+
$post_type,
|
5431 |
+
$user_id,
|
5432 |
+
) );
|
5433 |
|
5434 |
return $orders;
|
5435 |
}
|
5443 |
*
|
5444 |
* @since v.1.3.1
|
5445 |
*/
|
5446 |
+
public function order_status_context( $status = null ) {
|
5447 |
+
$status = str_replace( 'wc-', '', $status );
|
5448 |
+
$status_name = ucwords( str_replace( '-', ' ', $status ) );
|
5449 |
|
5450 |
return "<span class='label-order-status label-status-{$status}'>$status_name</span>";
|
5451 |
}
|
5452 |
|
5453 |
+
public function get_course_id_by_assignment( $assignment_id = 0 ) {
|
5454 |
+
$assignment_id = $this->get_post_id( $assignment_id );
|
5455 |
+
return get_post_meta( $assignment_id, '_tutor_course_id_for_assignments', true );
|
5456 |
}
|
5457 |
|
5458 |
/**
|
5466 |
*
|
5467 |
* @since v.1.3.3
|
5468 |
*/
|
5469 |
+
public function get_assignment_option( $assignment_id = 0, $option_key = '', $default = false ) {
|
5470 |
+
$assignment_id = $this->get_post_id( $assignment_id );
|
5471 |
+
$get_option_meta = maybe_unserialize( get_post_meta($assignment_id, 'assignment_option', true ) );
|
5472 |
|
5473 |
+
if ( ! $option_key && ! empty( $get_option_meta ) ) {
|
5474 |
return $get_option_meta;
|
5475 |
}
|
5476 |
|
5477 |
$value = $this->avalue_dot( $option_key, $get_option_meta );
|
5478 |
+
|
5479 |
if ( $value ) {
|
5480 |
return $value;
|
5481 |
}
|
5482 |
+
|
5483 |
return $default;
|
5484 |
}
|
5485 |
|
5493 |
*
|
5494 |
* @since v.1.3.3
|
5495 |
*/
|
5496 |
+
public function is_assignment_submitting( $assignment_id = 0, $user_id = 0 ) {
|
5497 |
global $wpdb;
|
5498 |
|
5499 |
+
$assignment_id = $this->get_post_id( $assignment_id );
|
5500 |
+
$user_id = $this->get_user_id( $user_id );
|
5501 |
+
|
5502 |
+
$is_running_submit = (int) $wpdb->get_var( $wpdb->prepare(
|
5503 |
+
"SELECT comment_ID
|
5504 |
+
FROM {$wpdb->comments}
|
5505 |
+
WHERE comment_type = %s
|
5506 |
+
AND comment_approved = %s
|
5507 |
+
AND user_id = %d
|
5508 |
+
AND comment_post_ID = %d;
|
5509 |
+
",
|
5510 |
+
'tutor_assignment',
|
5511 |
+
'submitting',
|
5512 |
+
$user_id,
|
5513 |
+
$assignment_id
|
5514 |
+
) );
|
5515 |
|
5516 |
return $is_running_submit;
|
5517 |
}
|
5526 |
*
|
5527 |
* @since v.1.3.3
|
5528 |
*/
|
5529 |
+
public function is_assignment_submitted( $assignment_id = 0, $user_id = 0 ) {
|
|
|
5530 |
global $wpdb;
|
5531 |
|
5532 |
+
$assignment_id = $this->get_post_id( $assignment_id );
|
5533 |
+
$user_id = $this->get_user_id( $user_id );
|
5534 |
+
|
5535 |
+
$has_submitted = $wpdb->get_row( $wpdb->prepare(
|
5536 |
+
"SELECT *
|
5537 |
+
FROM {$wpdb->comments}
|
5538 |
+
WHERE comment_type = %s
|
5539 |
+
AND comment_approved = %s
|
5540 |
+
AND user_id = %d
|
5541 |
+
AND comment_post_ID = %d;
|
5542 |
+
",
|
5543 |
+
'tutor_assignment',
|
5544 |
+
'submitted',
|
5545 |
+
$user_id,
|
5546 |
+
$assignment_id
|
5547 |
+
) );
|
5548 |
|
5549 |
return $has_submitted;
|
5550 |
}
|
5551 |
|
5552 |
+
public function get_assignment_submit_info( $assignment_submitted_id = 0 ) {
|
5553 |
global $wpdb;
|
5554 |
|
5555 |
+
$assignment_submitted_id = $this->get_post_id( $assignment_submitted_id );
|
5556 |
+
|
5557 |
+
$submitted_info = $wpdb->get_row( $wpdb->prepare(
|
5558 |
+
"SELECT *
|
5559 |
+
FROM {$wpdb->comments}
|
5560 |
+
WHERE comment_ID = %d
|
5561 |
+
AND comment_type = %s
|
5562 |
+
AND comment_approved = %s;
|
5563 |
+
",
|
5564 |
+
$assignment_submitted_id,
|
5565 |
+
'tutor_assignment',
|
5566 |
+
'submitted',
|
5567 |
+
) );
|
5568 |
|
5569 |
return $submitted_info;
|
5570 |
}
|
5571 |
|
5572 |
+
public function get_total_assignments() {
|
5573 |
global $wpdb;
|
5574 |
|
5575 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
5576 |
+
"SELECT COUNT(comment_ID)
|
5577 |
+
FROM {$wpdb->comments}
|
5578 |
+
WHERE comment_type = %s
|
5579 |
+
AND comment_approved = %s;
|
5580 |
+
",
|
5581 |
+
'tutor_assignment',
|
5582 |
+
'submitted'
|
5583 |
+
) );
|
5584 |
|
5585 |
return (int) $count;
|
5586 |
}
|
5587 |
|
5588 |
+
public function get_assignments() {
|
5589 |
global $wpdb;
|
5590 |
|
5591 |
+
$results = $wpdb->get_results( $wpdb->prepare(
|
5592 |
+
"SELECT *
|
5593 |
+
FROM {$wpdb->comments}
|
5594 |
+
WHERE comment_type = %s
|
5595 |
+
AND comment_approved = %s;
|
5596 |
+
",
|
5597 |
+
'tutor_assignment',
|
5598 |
+
'submitted',
|
5599 |
+
) );
|
5600 |
|
5601 |
return $results;
|
5602 |
}
|
5610 |
*
|
5611 |
* @since v.1.3.3
|
5612 |
*/
|
5613 |
+
public function get_assigned_courses_ids_by_instructors( $user_id = 0 ) {
|
5614 |
global $wpdb;
|
5615 |
+
$user_id = $this->get_user_id( $user_id );
|
|
|
5616 |
$course_post_type = tutor()->course_post_type;
|
|
|
5617 |
|
5618 |
+
$get_assigned_courses_ids = $wpdb->get_col( $wpdb->prepare(
|
5619 |
+
"SELECT meta_value
|
5620 |
+
FROM {$wpdb->usermeta}
|
5621 |
+
WHERE meta_key = %s
|
5622 |
+
AND user_id = %d
|
5623 |
+
GROUP BY meta_value;
|
5624 |
+
",
|
5625 |
+
'_tutor_instructor_course_id',
|
5626 |
+
$user_id
|
5627 |
+
) );
|
5628 |
|
5629 |
return $get_assigned_courses_ids;
|
5630 |
}
|
5638 |
*
|
5639 |
* @since v.1.3.4
|
5640 |
*/
|
5641 |
+
public function get_course_categories( $parent = 0 ) {
|
5642 |
+
$args = apply_filters( 'tutor_get_course_categories_args', array(
|
5643 |
+
'taxonomy' => 'course-category',
|
5644 |
+
'hide_empty' => false,
|
5645 |
+
'parent' => $parent,
|
|
|
5646 |
));
|
5647 |
|
5648 |
+
$terms = get_terms( $args );
|
5649 |
|
5650 |
$children = array();
|
5651 |
+
foreach ( $terms as $term ) {
|
5652 |
$term->children = $this->get_course_categories( $term->term_id );
|
5653 |
$children[ $term->term_id ] = $term;
|
5654 |
}
|
5665 |
*
|
5666 |
* @since v.1.3.5
|
5667 |
*/
|
5668 |
+
public function get_course_categories_term( $parent_id = 0 ) {
|
5669 |
+
$args = apply_filters( 'tutor_get_course_categories_terms_args', array(
|
5670 |
+
'taxonomy' => 'course-category',
|
5671 |
+
'parent' => $parent_id,
|
5672 |
'hide_empty' => false,
|
5673 |
));
|
5674 |
|
5675 |
+
$terms = get_terms( $args );
|
5676 |
|
5677 |
return $terms;
|
5678 |
}
|
5683 |
* Get back url from the request
|
5684 |
* @since v.1.3.4
|
5685 |
*/
|
5686 |
+
public function referer() {
|
5687 |
+
$url = $this->array_get( '_wp_http_referer', $_REQUEST );
|
5688 |
+
return apply_filters( 'tutor_referer_url', $url );
|
5689 |
}
|
5690 |
|
5691 |
/**
|
5697 |
*
|
5698 |
* @since v.1.3.4
|
5699 |
*/
|
5700 |
+
public function course_edit_link( $course_id = 0 ) {
|
5701 |
+
$course_id = $this->get_post_id( $course_id );
|
5702 |
|
5703 |
$url = admin_url("post.php?post={$course_id}&action=edit");
|
5704 |
+
if ( tutor()->has_pro ) {
|
5705 |
+
$url = $this->tutor_dashboard_url( "create-course/?course_ID=" . $course_id );
|
5706 |
}
|
5707 |
|
5708 |
return $url;
|
5709 |
}
|
5710 |
|
5711 |
+
public function get_assignments_by_instructor( $instructor_id = 0, $filter_data = array() ) {
|
5712 |
global $wpdb;
|
5713 |
|
5714 |
+
$instructor_id = $this->get_user_id( $instructor_id );
|
5715 |
+
$course_ids = tutor_utils()->get_assigned_courses_ids_by_instructors( $instructor_id );
|
5716 |
+
$assignment_post_type = 'tutor_assignments';
|
5717 |
|
5718 |
+
$in_course_ids = implode( "','", $course_ids );
|
5719 |
|
5720 |
$pagination_query = $date_query = '';
|
5721 |
$sort_query = 'ORDER BY ID DESC';
|
5722 |
+
if ( $this->count( $filter_data ) ) {
|
5723 |
extract( $filter_data );
|
5724 |
|
5725 |
if ( ! empty( $course_id ) ) {
|
5737 |
}
|
5738 |
}
|
5739 |
|
5740 |
+
$count = (int) $wpdb->get_var( $wpdb->prepare(
|
5741 |
+
"SELECT COUNT(ID)
|
5742 |
+
FROM {$wpdb->postmeta} post_meta
|
5743 |
+
INNER JOIN {$wpdb->posts} assignment
|
5744 |
+
ON post_meta.post_id = assignment.ID
|
5745 |
+
AND post_meta.meta_key = '_tutor_course_id_for_assignments'
|
5746 |
+
WHERE post_type = %s
|
5747 |
+
AND post_meta.meta_value IN('$in_course_ids')
|
5748 |
+
{$date_query}
|
5749 |
+
",
|
5750 |
+
$assignment_post_type
|
5751 |
+
) );
|
5752 |
+
|
5753 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
5754 |
+
"SELECT *
|
5755 |
+
FROM {$wpdb->postmeta} post_meta
|
5756 |
+
INNER JOIN {$wpdb->posts} assignment
|
5757 |
+
ON post_meta.post_id = assignment.ID
|
5758 |
+
AND post_meta.meta_key = '_tutor_course_id_for_assignments'
|
5759 |
+
WHERE post_type = %s
|
5760 |
+
AND post_meta.meta_value IN('$in_course_ids')
|
5761 |
+
{$date_query}
|
5762 |
+
{$sort_query}
|
5763 |
+
{$pagination_query}
|
5764 |
+
",
|
5765 |
+
$assignment_post_type
|
5766 |
+
) );
|
5767 |
+
|
5768 |
+
return (object) array( 'count' => $count, 'results' => $query );
|
|
|
|
|
5769 |
}
|
5770 |
|
5771 |
/**
|
5775 |
*
|
5776 |
* Get assignments by course id
|
5777 |
*/
|
5778 |
+
public function get_assignments_by_course( $course_id = 0 ) {
|
5779 |
+
if ( ! $course_id ) {
|
5780 |
return false;
|
5781 |
}
|
5782 |
global $wpdb;
|
5783 |
|
5784 |
+
$assignment_post_type = 'tutor_assignments';
|
5785 |
+
|
5786 |
+
$count = (int) $wpdb->get_var( $wpdb->prepare(
|
5787 |
+
"SELECT COUNT(ID)
|
5788 |
+
FROM {$wpdb->postmeta} post_meta
|
5789 |
+
INNER JOIN {$wpdb->posts} assignment
|
5790 |
+
ON post_meta.post_id = assignment.ID
|
5791 |
+
AND post_meta.meta_key = '_tutor_course_id_for_assignments'
|
5792 |
+
WHERE post_type = %s
|
5793 |
+
AND post_meta.meta_value = %d
|
5794 |
+
ORDER BY ID DESC;
|
5795 |
+
",
|
5796 |
+
$assignment_post_type,
|
5797 |
+
$course_id
|
5798 |
+
) );
|
5799 |
+
|
5800 |
+
$query = $wpdb->get_results( $wpdb->prepare(
|
5801 |
+
"SELECT *
|
5802 |
+
FROM {$wpdb->postmeta} post_meta
|
5803 |
+
INNER JOIN {$wpdb->posts} assignment
|
5804 |
+
ON post_meta.post_id = assignment.ID
|
5805 |
+
AND post_meta.meta_key = '_tutor_course_id_for_assignments'
|
5806 |
+
WHERE post_type = %s
|
5807 |
+
AND post_meta.meta_value = %d
|
5808 |
+
ORDER BY ID DESC;
|
5809 |
+
",
|
5810 |
+
$assignment_post_type,
|
5811 |
+
$course_id
|
5812 |
+
) );
|
5813 |
+
|
5814 |
+
return (object) array( 'count' => $count, 'results' => $query );
|
5815 |
}
|
5816 |
|
5817 |
/**
|
5821 |
*
|
5822 |
* @since v.1.3.4
|
5823 |
*/
|
5824 |
+
public function is_script_debug() {
|
5825 |
return ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG );
|
5826 |
}
|
5827 |
|
5830 |
*
|
5831 |
* @since v.1.4.0
|
5832 |
*/
|
5833 |
+
public function has_lesson_edit_access( $lesson_id = 0, $instructor_id = 0 ) {
|
5834 |
+
$lesson_id = $this->get_post_id( $lesson_id );
|
5835 |
+
$instructor_id = $this->get_user_id( $instructor_id );
|
5836 |
|
5837 |
+
if ( user_can( $instructor_id, tutor()->instructor_role ) ) {
|
|
|
|
|
|
|
|
|
5838 |
$permitted_course_ids = tutils()->get_assigned_courses_ids_by_instructors();
|
5839 |
+
$course_id = tutils()->get_course_id_by_lesson( $lesson_id );
|
5840 |
|
5841 |
+
if ( in_array( $course_id, $permitted_course_ids ) ) {
|
5842 |
return true;
|
5843 |
}
|
5844 |
}
|
5851 |
* Get total Enrolments
|
5852 |
* @since v.1.4.0
|
5853 |
*/
|
5854 |
+
public function get_total_enrolments( $search_term = '' ) {
|
|
|
5855 |
global $wpdb;
|
5856 |
|
5857 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
5858 |
+
|
5859 |
+
$count = $wpdb->get_var( $wpdb->prepare(
|
5860 |
+
"SELECT COUNT(enrol.ID)
|
5861 |
+
FROM {$wpdb->posts} enrol
|
5862 |
+
INNER JOIN {$wpdb->posts} course
|
5863 |
+
ON enrol.post_parent = course.ID
|
5864 |
+
INNER JOIN {$wpdb->users} student
|
5865 |
+
ON enrol.post_author = student.ID
|
5866 |
+
WHERE enrol.post_type = %s
|
5867 |
+
AND ( enrol.ID LIKE %s OR student.display_name LIKE %s OR student.user_email LIKE %s OR course.post_title LIKE %s );
|
5868 |
+
",
|
5869 |
+
'tutor_enrolled',
|
5870 |
+
$search_term,
|
5871 |
+
$search_term,
|
5872 |
+
$search_term,
|
5873 |
+
$search_term
|
5874 |
+
) );
|
5875 |
|
|
|
|
|
|
|
|
|
|
|
5876 |
return (int) $count;
|
5877 |
}
|
5878 |
|
5879 |
+
public function get_enrolments( $start = 0, $limit = 10, $search_term = '' ) {
|
5880 |
global $wpdb;
|
5881 |
|
5882 |
+
$search_term = '%' . $wpdb->esc_like( $search_term ) . '%';
|
|
|
|
|
|
|
5883 |
|
5884 |
+
$enrolments = $wpdb->get_results( $wpdb->prepare(
|
5885 |
+
"SELECT enrol.ID AS enrol_id,
|
5886 |
+
enrol.post_author AS student_id,
|
5887 |
+
enrol.post_date AS enrol_date,
|
5888 |
+
enrol.post_title AS enrol_title,
|
5889 |
+
enrol.post_status AS status,
|
5890 |
+
enrol.post_parent AS course_id,
|
5891 |
+
course.post_title AS course_title,
|
5892 |
+
student.user_nicename,
|
5893 |
+
student.user_email,
|
5894 |
+
student.display_name
|
5895 |
+
FROM {$wpdb->posts} enrol
|
5896 |
+
INNER JOIN {$wpdb->posts} course
|
5897 |
+
ON enrol.post_parent = course.ID
|
5898 |
+
INNER JOIN {$wpdb->users} student
|
5899 |
+
ON enrol.post_author = student.ID
|
5900 |
+
WHERE enrol.post_type = %s
|
5901 |
+
AND ( enrol.ID LIKE %s OR student.display_name LIKE %s OR student.user_email LIKE %s OR course.post_title LIKE %s )
|
|
|
|
|
5902 |
ORDER BY enrol_id DESC
|
5903 |
+
LIMIT %d, %d;
|
5904 |
+
",
|
5905 |
+
'tutor_enrolled',
|
5906 |
+
$search_term,
|
5907 |
+
$search_term,
|
5908 |
+
$search_term,
|
5909 |
+
$search_term,
|
5910 |
+
$start,
|
5911 |
+
$limit
|
5912 |
+
) );
|
5913 |
|
5914 |
return $enrolments;
|
5915 |
}
|
5921 |
*
|
5922 |
* @since v.1.4.0
|
5923 |
*/
|
5924 |
+
public function get_current_url( $post_id = 0 ) {
|
5925 |
+
$page_id = $this->get_post_id( $post_id );
|
5926 |
|
5927 |
+
if ( $page_id ) {
|
5928 |
+
return get_the_permalink( $page_id );
|
5929 |
+
} else {
|
|
|
|
|
|
|
5930 |
global $wp;
|
5931 |
$current_url = home_url( $wp->request );
|
|
|
5932 |
return $current_url;
|
5933 |
}
|
5934 |
}
|
5935 |
|
|
|
5936 |
/**
|
5937 |
* @param int $rating_id
|
5938 |
*
|
5943 |
* @since v.1.4.0
|
5944 |
*/
|
5945 |
|
5946 |
+
public function get_rating_by_id( $rating_id = 0 ) {
|
5947 |
+
global $wpdb;
|
5948 |
+
|
5949 |
$ratings = array(
|
5950 |
+
'rating' => 0,
|
5951 |
+
'review' => '',
|
5952 |
);
|
5953 |
|
5954 |
+
$rating = $wpdb->get_row( $wpdb->prepare(
|
5955 |
+
"SELECT meta_value AS rating,
|
5956 |
+
comment_content AS review
|
5957 |
+
FROM {$wpdb->comments}
|
5958 |
+
INNER JOIN {$wpdb->commentmeta}
|
5959 |
+
ON {$wpdb->comments}.comment_ID = {$wpdb->commentmeta}.comment_id
|
5960 |
+
WHERE {$wpdb->comments}.comment_ID = %d;
|
5961 |
+
",
|
5962 |
+
$rating_id
|
5963 |
+
) );
|
5964 |
|
5965 |
+
if ( $rating ) {
|
5966 |
+
$rating_format = number_format( $rating->rating, 2 );
|
5967 |
|
5968 |
$ratings = array(
|
5969 |
'rating' => $rating_format,
|
5982 |
*
|
5983 |
* Get course settings by course ID
|
5984 |
*/
|
5985 |
+
public function get_course_settings( $course_id = 0, $key = null, $default = false ) {
|
5986 |
+
$course_id = $this->get_post_id( $course_id );
|
5987 |
+
$settings_meta = get_post_meta( $course_id, '_tutor_course_settings', true );
|
5988 |
+
$settings = (array) maybe_unserialize( $settings_meta );
|
5989 |
|
5990 |
+
return $this->array_get( $key, $settings, $default );
|
5991 |
}
|
5992 |
|
5993 |
/**
|
6001 |
*
|
6002 |
* @since v.1.4.0
|
6003 |
*/
|
6004 |
+
public function get_item_content_drip_settings( $lesson_id = 0, $key = null, $default = false ) {
|
6005 |
+
$lesson_id = $this->get_post_id( $lesson_id );
|
6006 |
+
$settings_meta = get_post_meta( $lesson_id, '_content_drip_settings', true );
|
6007 |
+
$settings = (array) maybe_unserialize( $settings_meta );
|
6008 |
|
6009 |
+
return $this->array_get( $key, $settings, $default );
|
6010 |
}
|
6011 |
|
|
|
6012 |
/**
|
6013 |
* @param null $post
|
6014 |
*
|
6016 |
*
|
6017 |
* Get previous ID
|
6018 |
*/
|
6019 |
+
public function get_course_previous_content_id( $post = null ) {
|
6020 |
+
$current_item = get_post( $post );
|
6021 |
+
$course_id = $this->get_course_id_by_content( $current_item );
|
6022 |
+
$topics = tutor_utils()->get_topics( $course_id );
|
|
|
6023 |
|
6024 |
$contents = array();
|
6025 |
+
if ( $topics->have_posts() ) {
|
6026 |
while ( $topics->have_posts() ) {
|
6027 |
$topics->the_post();
|
6028 |
$topic_id = get_the_ID();
|
6029 |
+
$lessons = tutor_utils()->get_course_contents_by_topic( $topic_id, -1 );
|
6030 |
+
if ( $lessons->have_posts() ) {
|
6031 |
while ( $lessons->have_posts() ) {
|
6032 |
$lessons->the_post();
|
6033 |
global $post;
|
6038 |
}
|
6039 |
}
|
6040 |
|
6041 |
+
if ( tutils()->count( $contents) ) {
|
6042 |
+
foreach ( $contents as $key => $content ) {
|
6043 |
+
if ( $current_item->ID == $content->ID ) {
|
6044 |
+
if ( ! empty( $contents[ $key-1 ]->ID ) ) {
|
6045 |
+
return $contents[ $key-1 ]->ID;
|
6046 |
}
|
6047 |
}
|
6048 |
}
|
6058 |
*
|
6059 |
* Get Course iD by any course content
|
6060 |
*/
|
6061 |
+
public function get_course_id_by_content( $post = null ) {
|
6062 |
global $wpdb;
|
6063 |
+
$post = get_post( $post );
|
6064 |
+
|
6065 |
+
$course_id = $wpdb->get_var( $wpdb->prepare(
|
6066 |
+
"SELECT post_parent
|
6067 |
+
FROM {$wpdb->posts}
|
6068 |
+
WHERE ID = %d
|
6069 |
+
AND post_type = %s
|
6070 |
+
",
|
6071 |
+
$post->post_parent,
|
6072 |
+
'topics'
|
6073 |
+
) );
|
6074 |
|
6075 |
return (int) $course_id;
|
6076 |
}
|
6084 |
*
|
6085 |
* @since v.1.4.1
|
6086 |
*/
|
6087 |
+
public function get_course_contents_by_id( $course_id = 0 ) {
|
6088 |
global $wpdb;
|
6089 |
|
6090 |
+
$course_id = $this->get_post_id( $course_id );
|
6091 |
+
|
6092 |
+
$contents = $wpdb->get_results( $wpdb->prepare(
|
6093 |
+
"SELECT items.*
|
6094 |
+
FROM {$wpdb->posts} topic
|
6095 |
+
INNER JOIN {$wpdb->posts} items
|
6096 |
+
ON topic.ID = items.post_parent
|
6097 |
+
WHERE topic.post_parent = %d
|
6098 |
+
AND items.post_status = %s
|
6099 |
+
ORDER BY topic.menu_order ASC,
|
6100 |
+
items.menu_order ASC;
|
6101 |
+
",
|
6102 |
+
$course_id,
|
6103 |
+
'publish'
|
6104 |
+
) );
|
6105 |
|
6106 |
return $contents;
|
6107 |
}
|
6115 |
*
|
6116 |
* @since v.1.4.2
|
6117 |
*/
|
6118 |
+
public function get_gradebooks() {
|
6119 |
global $wpdb;
|
6120 |
$results = $wpdb->get_results("SELECT * FROM {$wpdb->tutor_gradebooks} ORDER BY grade_point DESC ");
|
6121 |
return $results;
|
6132 |
*
|
6133 |
* @since v.1.4.2
|
6134 |
*/
|
6135 |
+
public function get_quiz_attempt( $quiz_id = 0, $user_id = 0 ) {
|
6136 |
global $wpdb;
|
6137 |
|
6138 |
+
$quiz_id = $this->get_post_id( $quiz_id );
|
6139 |
+
$user_id = $this->get_user_id( $user_id );
|
6140 |
|
6141 |
$attempt = false;
|
6142 |
|
6143 |
+
$quiz_grade_method = get_tutor_option( 'quiz_grade_method', 'highest_grade' );
|
6144 |
+
$from_string = "FROM {$wpdb->tutor_quiz_attempts} WHERE quiz_id = %d AND user_id = %d AND attempt_status != 'attempt_started' ";
|
|
|
6145 |
|
6146 |
+
if ( $quiz_grade_method === 'highest_grade') {
|
|
|
|
|
6147 |
|
6148 |
+
$attempt = $wpdb->get_row( $wpdb->prepare( "SELECT * {$from_string} ORDER BY earned_marks DESC LIMIT 1; ", $quiz_id, $user_id ) );
|
6149 |
|
6150 |
+
} elseif ($quiz_grade_method === 'average_grade' ) {
|
|
|
|
|
|
|
|
|
6151 |
|
6152 |
+
$attempt = $wpdb->get_row( $wpdb->prepare(
|
6153 |
+
"SELECT {$wpdb->tutor_quiz_attempts}.*,
|
6154 |
+
COUNT(attempt_id) AS attempt_count,
|
6155 |
+
AVG(total_marks) AS total_marks,
|
6156 |
+
AVG(earned_marks) AS earned_marks {$from_string}
|
6157 |
+
",
|
6158 |
+
$quiz_id,
|
6159 |
+
$user_id
|
6160 |
+
) );
|
6161 |
|
6162 |
+
} elseif ( $quiz_grade_method === 'first_attempt' ) {
|
|
|
|
|
6163 |
|
6164 |
+
$attempt = $wpdb->get_row( $wpdb->prepare( "SELECT * {$from_string} ORDER BY attempt_id ASC LIMIT 1; ", $quiz_id, $user_id ) );
|
6165 |
|
6166 |
+
} elseif ( $quiz_grade_method === 'last_attempt' ) {
|
|
|
|
|
6167 |
|
6168 |
+
$attempt = $wpdb->get_row( $wpdb->prepare( "SELECT * {$from_string} ORDER BY attempt_id DESC LIMIT 1; ", $quiz_id, $user_id ) );
|
6169 |
}
|
6170 |
|
6171 |
return $attempt;
|
6181 |
*
|
6182 |
* @since v.1.4.2
|
6183 |
*/
|
6184 |
+
public function course_progress_status_context( $course_id = 0, $user_id = 0 ) {
|
6185 |
+
$course_id = $this->get_post_id( $course_id );
|
6186 |
+
$user_id = $this->get_user_id( $user_id );
|
6187 |
+
$is_completed = tutils()->is_completed_course( $course_id, $user_id );
|
6188 |
|
|
|
6189 |
$html = '';
|
6190 |
+
if ( $is_completed ) {
|
6191 |
$html = '<span class="course-completion-status course-completed"><i class="tutor-icon-mark"></i> '.__('Completed', 'tutor').' </span>';
|
6192 |
+
} else {
|
6193 |
+
$is_in_progress = tutor_utils()->get_completed_lesson_count_by_course( $course_id, $user_id );
|
6194 |
+
if ( $is_in_progress ) {
|
6195 |
$html = '<span class="course-completion-status course-inprogress"><i class="tutor-icon-refresh-button-1"></i> '.__('In Progress', 'tutor').' </span>';
|
6196 |
+
} else {
|
6197 |
$html = '<span class="course-completion-status course-not-taken"><i class="tutor-icon-spinner"></i> '.__('Not Taken', 'tutor').' </span>';
|
6198 |
}
|
6199 |
}
|
6227 |
*
|
6228 |
* @since v.1.4.3
|
6229 |
*/
|
6230 |
+
public function tutor_pages() {
|
6231 |
+
$pages = apply_filters( 'tutor_pages', array(
|
6232 |
+
'tutor_dashboard_page_id' => __( 'Dashboard Page', 'tutor' ),
|
6233 |
+
'instructor_register_page' => __( 'Instructor Registration Page', 'tutor' ),
|
6234 |
+
'student_register_page' => __( 'Student Registration Page', 'tutor' ),
|
6235 |
));
|
6236 |
|
6237 |
$new_pages = array();
|
6238 |
+
foreach ( $pages as $key => $page ) {
|
6239 |
+
$page_id = (int) get_tutor_option( $key );
|
6240 |
|
6241 |
$wp_page_name = '';
|
6242 |
+
$wp_page = get_post( $page_id );
|
6243 |
+
$page_exists = (bool) $wp_page;
|
6244 |
$page_visible = false;
|
6245 |
|
6246 |
+
if ( $wp_page ) {
|
6247 |
$wp_page_name = $wp_page->post_title;
|
6248 |
$page_visible = $wp_page->post_status === 'publish';
|
6249 |
}
|
6256 |
'page_exists' => $page_exists,
|
6257 |
'page_visible' => $page_visible,
|
6258 |
);
|
|
|
6259 |
}
|
6260 |
|
6261 |
return $new_pages;
|
6270 |
*
|
6271 |
* @since v.1.4.9
|
6272 |
*/
|
6273 |
+
public function get_course_prev_next_contents_by_id( $content_id = 0 ) {
|
6274 |
|
6275 |
+
$course_id = $this->get_course_id_by_content($content_id);
|
6276 |
$course_contents = $this->get_course_contents_by_id($course_id);
|
6277 |
+
$previous_id = 0;
|
6278 |
+
$next_id = 0;
|
6279 |
+
|
6280 |
+
if ( $this->count( $course_contents ) ) {
|
6281 |
+
$ids = wp_list_pluck( $course_contents, 'ID' );
|
6282 |
|
6283 |
$i=0;
|
6284 |
+
foreach ( $ids as $key => $id ) {
|
6285 |
$previous_i = $key - 1;
|
6286 |
+
$next_i = $key + 1;
|
6287 |
|
6288 |
+
if ( $id == $content_id ) {
|
6289 |
+
if ( isset( $ids[ $previous_i ] ) ) {
|
6290 |
+
$previous_id = $ids[ $previous_i ];
|
6291 |
}
|
6292 |
+
if ( isset( $ids[ $next_i ] ) ) {
|
6293 |
+
$next_id = $ids[ $next_i ];
|
6294 |
}
|
6295 |
}
|
6296 |
$i++;
|
6297 |
}
|
6298 |
}
|
6299 |
|
6300 |
+
return (object) [ 'previous_id' => $previous_id, 'next_id' => $next_id ];
|
6301 |
}
|
6302 |
|
|
|
6303 |
/**
|
6304 |
* Get a subset of the items from the given array.
|
6305 |
*
|
6310 |
*
|
6311 |
* @since v.1.5.2
|
6312 |
*/
|
6313 |
+
public function array_only( $array = array(), $keys = null ) {
|
6314 |
+
if ( ! $this->count( $array ) || ! $keys ) {
|
|
|
6315 |
return false;
|
6316 |
}
|
6317 |
|
6318 |
+
return array_intersect_key( $array, array_flip( (array) $keys ) );
|
6319 |
}
|
6320 |
|
|
|
6321 |
/**
|
6322 |
* @param int $instructor_id
|
6323 |
* @param int $course_id
|
6328 |
*
|
6329 |
* @since v.1.6.4
|
6330 |
*/
|
6331 |
+
public function is_instructor_of_this_course( $instructor_id=0, $course_id=0 ) {
|
6332 |
global $wpdb;
|
6333 |
|
6334 |
+
$instructor_id = $this->get_user_id( $instructor_id );
|
6335 |
+
$course_id = $this->get_post_id( $course_id );
|
6336 |
|
6337 |
+
if ( ! $instructor_id || ! $course_id ) {
|
6338 |
return false;
|
6339 |
}
|
6340 |
|
6341 |
+
$instructor = $wpdb->get_col( $wpdb->prepare(
|
6342 |
"SELECT umeta_id
|
6343 |
FROM {$wpdb->usermeta}
|
6344 |
WHERE user_id = %d
|
6345 |
AND meta_key = '_tutor_instructor_course_id'
|
6346 |
+
AND meta_value = %d
|
6347 |
+
",
|
6348 |
+
$instructor_id,
|
6349 |
+
$course_id
|
6350 |
+
) );
|
6351 |
|
6352 |
if (is_array($instructor) && count($instructor)) {
|
6353 |
return $instructor;
|
6365 |
*
|
6366 |
* @since v.1.6.6
|
6367 |
*/
|
6368 |
+
public function user_profile_completion( $user_id = 0 ) {
|
6369 |
+
$user_id = $this->get_user_id( $user_id );
|
6370 |
+
$instructor = $this->is_instructor( $user_id );
|
6371 |
|
6372 |
+
$required_fields = apply_filters( 'tutor_profile_required_fields', array(
|
6373 |
+
'first_name' => __( 'First Name', 'tutor' ),
|
6374 |
+
'last_name' => __( 'Last Name', 'tutor' ),
|
6375 |
+
'_tutor_profile_photo' => __( 'Profile Photo', 'tutor' ),
|
6376 |
+
'_tutor_withdraw_method_data' => __( 'Withdraw Method', 'tutor' ),
|
6377 |
));
|
6378 |
|
6379 |
+
if ( ! $instructor && array_key_exists( "_tutor_withdraw_method_data", $required_fields ) ) {
|
6380 |
+
unset( $required_fields[ '_tutor_withdraw_method_data' ] );
|
6381 |
}
|
6382 |
|
6383 |
$empty_fields = array();
|
6384 |
+
foreach ( $required_fields as $key => $field ) {
|
6385 |
+
$value = get_user_meta( $user_id, $key, true );
|
6386 |
+
if ( !$value ) {
|
6387 |
+
array_push( $empty_fields, $field );
|
6388 |
}
|
6389 |
}
|
6390 |
|
6391 |
+
$total_empty_fields = count( $empty_fields );
|
6392 |
+
$total_required_fields = count( $required_fields );
|
6393 |
+
$signup_point = apply_filters( 'tutor_profile_completion_signup_point', 50 );
|
6394 |
|
6395 |
+
if ( $total_empty_fields == 0 ) {
|
6396 |
$progress = 100;
|
6397 |
} else {
|
6398 |
$completed_field = $total_required_fields-$total_empty_fields;
|
6399 |
$per_field_point = $signup_point / $total_required_fields;
|
6400 |
+
$progress = $signup_point + ceil($per_field_point * $completed_field);
|
6401 |
}
|
6402 |
|
6403 |
$return = array(
|
6404 |
'empty_fields' => $empty_fields,
|
6405 |
+
'progress' => $progress,
|
6406 |
);
|
6407 |
|
6408 |
return (object) $return;
|
6417 |
*
|
6418 |
* @since v1.6.9
|
6419 |
*/
|
6420 |
+
public function get_enrolment_by_enrol_id( $enrol_id = 0 ) {
|
6421 |
global $wpdb;
|
6422 |
|
6423 |
+
$enrolment = $wpdb->get_row( $wpdb->prepare(
|
6424 |
"SELECT enrol.id AS enrol_id,
|
6425 |
enrol.post_author AS student_id,
|
6426 |
enrol.post_date AS enrol_date,
|
6455 |
*
|
6456 |
* Get students email by course id
|
6457 |
*/
|
6458 |
+
public function get_student_emails_by_course_id( $course_id = 0 ) {
|
6459 |
global $wpdb;
|
6460 |
+
$course_id = $this->get_post_id( $course_id );
|
6461 |
|
6462 |
+
$student_emails = $wpdb->get_results( $wpdb->prepare(
|
6463 |
+
"SELECT student.user_email
|
6464 |
FROM {$wpdb->posts} enrol
|
6465 |
INNER JOIN {$wpdb->users} student
|
6466 |
+
ON enrol.post_author = student.id
|
6467 |
+
WHERE enrol.post_type = %s
|
6468 |
AND enrol.post_parent = %d
|
6469 |
+
AND enrol.post_status = %s;
|
6470 |
+
",
|
6471 |
+
'tutor_enrolled',
|
6472 |
+
$course_id,
|
6473 |
+
'completed'
|
6474 |
+
) );
|
6475 |
|
6476 |
+
$email_array = array_column( $student_emails, 'user_email' );
|
6477 |
|
6478 |
return $email_array;
|
6479 |
}
|
6482 |
*requie post id & user id
|
6483 |
*return single comment post
|
6484 |
*/
|
6485 |
+
public function get_single_comment_user_post_id( $post_id,$user_id ) {
|
6486 |
global $wpdb;
|
6487 |
+
$table = $wpdb->prefix . "comments";
|
6488 |
+
$query = $wpdb->get_row( $wpdb->prepare(
|
6489 |
+
"SELECT *
|
6490 |
+
FROM $table
|
6491 |
+
WHERE comment_post_ID = %d
|
6492 |
+
AND user_id = %d
|
6493 |
+
LIMIT 1
|
6494 |
+
",
|
6495 |
+
$post_id,
|
6496 |
+
$user_id
|
6497 |
+
) );
|
6498 |
return $query ? $query : false;
|
6499 |
}
|
6500 |
|
6507 |
*
|
6508 |
* Check if course is in wc cart
|
6509 |
*/
|
6510 |
+
public function is_course_added_to_cart( $course_or_product_id = 0, $is_product_id=false ) {
|
6511 |
|
6512 |
+
switch( $this->get_option( 'monetize_by' ) ) {
|
6513 |
case 'wc':
|
6514 |
global $woocommerce;
|
6515 |
+
$product_id = $is_product_id ? $course_or_product_id : $this->get_course_product_id( $course_or_product_id );
|
6516 |
|
6517 |
+
if ( $woocommerce->cart ) {
|
6518 |
+
foreach ( $woocommerce->cart->get_cart() as $key => $val ) {
|
6519 |
+
if ( $product_id == $val['product_id'] ) {
|
6520 |
return true;
|
6521 |
}
|
6522 |
}
|
6534 |
*
|
6535 |
* Get profile pic url
|
6536 |
*/
|
6537 |
+
public function get_cover_photo_url( $user_id ) {
|
6538 |
+
$cover_photo_src = tutor()->url . 'assets/images/cover-photo.jpg';
|
6539 |
+
$cover_photo_id = get_user_meta( $user_id, '_tutor_cover_photo', true );
|
6540 |
+
if ( $cover_photo_id ) {
|
6541 |
+
$url = wp_get_attachment_image_url( $cover_photo_id, 'full' );
|
6542 |
+
! empty( $url ) ? $cover_photo_src = $url : 0;
|
6543 |
}
|
6544 |
|
6545 |
return $cover_photo_src;
|
6552 |
*
|
6553 |
* Return the course ID by lession, quiz, answer etc.
|
6554 |
*/
|
6555 |
+
public function get_course_id_by( $content, $object_id ) {
|
|
|
6556 |
global $wpdb;
|
6557 |
$course_id = null;
|
6558 |
|
6559 |
+
switch ( $content ) {
|
|
|
6560 |
case 'course' :
|
6561 |
$course_id = $object_id;
|
6562 |
break;
|
6563 |
|
6564 |
case 'topic' :
|
6565 |
case 'announcement' :
|
6566 |
+
$course_id = $wpdb->get_var( $wpdb->prepare(
|
6567 |
"SELECT post_parent
|
6568 |
FROM {$wpdb->posts}
|
6569 |
+
WHERE ID=%d
|
6570 |
+
LIMIT 1",
|
6571 |
+
$object_id ) );
|
6572 |
break;
|
6573 |
|
6574 |
case 'lesson' :
|
6575 |
case 'quiz' :
|
6576 |
case 'assignment' :
|
6577 |
+
$course_id = $wpdb->get_var( $wpdb->prepare(
|
6578 |
+
"SELECT post_parent
|
6579 |
+
FROM {$wpdb->posts}
|
6580 |
+
WHERE ID = (SELECT post_parent FROM {$wpdb->posts} WHERE ID = %d);
|
6581 |
+
",
|
6582 |
+
$object_id
|
6583 |
+
) );
|
6584 |
break;
|
6585 |
|
6586 |
case 'question' :
|
6587 |
+
$course_id = $wpdb->get_var( $wpdb->prepare(
|
6588 |
"SELECT topic.post_parent
|
6589 |
+
FROM {$wpdb->posts} topic
|
6590 |
+
INNER JOIN {$wpdb->posts} quiz
|
6591 |
+
ON quiz.post_parent=topic.ID
|
6592 |
+
INNER JOIN {$wpdb->prefix}tutor_quiz_questions question
|
6593 |
+
ON question.quiz_id=quiz.ID
|
6594 |
+
WHERE question.question_id = %d;
|
6595 |
+
",
|
6596 |
+
$object_id
|
6597 |
+
) );
|
6598 |
break;
|
6599 |
|
6600 |
case 'quiz_answer' :
|
6601 |
+
$course_id = $wpdb->get_var( $wpdb->prepare(
|
6602 |
"SELECT topic.post_parent
|
6603 |
+
FROM {$wpdb->posts} topic
|
6604 |
+
INNER JOIN {$wpdb->posts} quiz
|
6605 |
+
ON quiz.post_parent=topic.ID
|
6606 |
+
INNER JOIN {$wpdb->prefix}tutor_quiz_questions question
|
6607 |
+
ON question.quiz_id=quiz.ID
|
6608 |
+
INNER JOIN {$wpdb->prefix}tutor_quiz_question_answers answer
|
6609 |
+
ON answer.belongs_question_id=question.question_id
|
6610 |
+
WHERE answer.answer_id = %d;
|
6611 |
+
",
|
6612 |
+
$object_id
|
6613 |
+
) );
|
6614 |
break;
|
6615 |
|
6616 |
case 'attempt' :
|
6617 |
+
$course_id = $wpdb->get_var( $wpdb->prepare(
|
6618 |
+
"SELECT course_id
|
6619 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts
|
6620 |
+
WHERE attempt_id=%d;
|
6621 |
+
",
|
6622 |
+
$object_id
|
6623 |
+
) );
|
6624 |
break;
|
6625 |
|
6626 |
case 'attempt_answer' :
|
6627 |
+
$course_id = $wpdb->get_var( $wpdb->prepare(
|
6628 |
+
"SELECT course_id
|
6629 |
+
FROM {$wpdb->prefix}tutor_quiz_attempts
|
6630 |
+
WHERE attempt_id = (SELECT quiz_attempt_id FROM {$wpdb->prefix}tutor_quiz_attempt_answers WHERE attempt_answer_id=%d)
|
6631 |
+
",
|
6632 |
+
$object_id
|
6633 |
+
) );
|
6634 |
break;
|
6635 |
case 'review' :
|
6636 |
+
$course_id = $wpdb->get_var( $wpdb->prepare(
|
6637 |
+
"SELECT comment_post_ID
|
6638 |
+
FROM {$wpdb->comments}
|
6639 |
+
WHERE comment_ID = %d;
|
6640 |
+
",
|
6641 |
+
$object_id
|
6642 |
+
) );
|
6643 |
}
|
6644 |
|
6645 |
return $course_id;
|
6646 |
}
|
6647 |
|
|
|
6648 |
/**
|
6649 |
* @return bool
|
6650 |
*
|
6652 |
*
|
6653 |
* Check if user can create, edit, delete various tutor contents such as lesson, quiz, answer etc.
|
6654 |
*/
|
6655 |
+
public function can_user_manage( $content, $object_id, $user_id=0, $allow_current_admin=true ) {
|
6656 |
|
6657 |
+
if( $allow_current_admin && current_user_can( 'administrator' ) ) {
|
6658 |
// Admin has access to everything
|
6659 |
return true;
|
6660 |
}
|
6661 |
|
6662 |
+
$course_id = $this->get_course_id_by( $content, $object_id );
|
6663 |
|
6664 |
+
if( $course_id ) {
|
6665 |
|
6666 |
+
$instructors = $this->get_instructors_by_course( $course_id );
|
6667 |
+
$instructor_ids = is_array( $instructors ) ? array_map( function($instructor) {
|
6668 |
+
return (int)$instructor->ID;
|
6669 |
+
}, $instructors) : array();
|
6670 |
|
6671 |
+
$user_id = (int)$this->get_user_id( $user_id );
|
6672 |
+
$is_listed = in_array( $user_id, $instructor_ids );
|
6673 |
|
6674 |
return $is_listed;
|
6675 |
}
|
6684 |
*
|
6685 |
* Check if user has access for content like lesson, quiz, assignment etc.
|
6686 |
*/
|
6687 |
+
public function has_enrolled_content_access( $content, $object_id=0, $user_id=0 ) {
|
6688 |
+
$user_id = $this->get_user_id( $user_id );
|
6689 |
+
$object_id = $this->get_post_id( $object_id );
|
6690 |
+
$course_id = $this->get_course_id_by( $content, $object_id );
|
6691 |
+
$course_content_access = (bool) get_tutor_option( 'course_content_access_for_ia' );
|
6692 |
|
6693 |
do_action( 'tutor_before_enrolment_check', $course_id, $user_id );
|
6694 |
|
6695 |
+
if ( $this->is_enrolled( $course_id, $user_id ) ) {
|
6696 |
return true;
|
6697 |
}
|
6698 |
+
if ( $course_content_access && ( current_user_can( 'administrator' ) || current_user_can( tutor()->instructor_role ) ) ) {
|
6699 |
return true;
|
6700 |
}
|
6701 |
//Check Lesson edit access to support page builders (eg: Oxygen)
|
6702 |
+
if ( current_user_can(tutor()->instructor_role) && tutils()->has_lesson_edit_access() ) {
|
6703 |
return true;
|
6704 |
}
|
6705 |
|
6706 |
return false;
|
6707 |
}
|
6708 |
|
|
|
6709 |
/**
|
6710 |
* @return date
|
6711 |
*
|
6713 |
*
|
6714 |
* Return the assignment deadline date based on duration and assignment creation date
|
6715 |
*/
|
6716 |
+
public function get_assignment_deadline_date( $assignment_id, $format=null, $fallback=null ) {
|
|
|
6717 |
|
6718 |
+
! $format ? $format='j F, Y, g:i a' : 0;
|
6719 |
|
6720 |
+
$value = $this->get_assignment_option( $assignment_id, 'time_duration.value' );
|
6721 |
+
$time = $this->get_assignment_option( $assignment_id, 'time_duration.time' );
|
6722 |
|
6723 |
+
if ( !$value ) {
|
6724 |
return $fallback;
|
6725 |
}
|
6726 |
|
6727 |
$publish_date = get_post_field( 'post_date', $assignment_id );
|
6728 |
|
6729 |
$date = date_create( $publish_date );
|
6730 |
+
date_add( $date, date_interval_create_from_date_string( $value . ' ' . $time ) );
|
6731 |
+
|
6732 |
+
return date_format( $date, $format );
|
6733 |
+
}
|
6734 |
+
|
6735 |
+
/**
|
6736 |
+
* @return array
|
6737 |
+
*
|
6738 |
+
* @since v1.8.2
|
6739 |
+
*
|
6740 |
+
* Get earning chart data
|
6741 |
+
*/
|
6742 |
+
public function get_earning_chart( $user_id, $start_date, $end_date ) {
|
6743 |
+
global $wpdb;
|
6744 |
+
|
6745 |
+
/**
|
6746 |
+
* Format Date Name
|
6747 |
+
*/
|
6748 |
+
$begin = new \DateTime( $start_date );
|
6749 |
+
$end = new \DateTime( $end_date );
|
6750 |
+
$interval = \DateInterval::createFromDateString( '1 day' );
|
6751 |
+
$period = new \DatePeriod( $begin, $interval, $end );
|
6752 |
+
|
6753 |
+
$datesPeriod = array();
|
6754 |
+
foreach ( $period as $dt ) {
|
6755 |
+
$datesPeriod[ $dt->format( "Y-m-d" ) ] = 0;
|
6756 |
+
}
|
6757 |
+
|
6758 |
+
// Get statuses
|
6759 |
+
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
6760 |
+
$statuses = $complete_status;
|
6761 |
+
$complete_status = "'" . implode( "','", $complete_status) . "'";
|
6762 |
+
|
6763 |
+
$salesQuery = $wpdb->get_results( $wpdb->prepare(
|
6764 |
+
"SELECT SUM(instructor_amount) AS total_earning,
|
6765 |
+
DATE(created_at) AS date_format
|
6766 |
+
FROM {$wpdb->prefix}tutor_earnings
|
6767 |
+
WHERE user_id = %d
|
6768 |
+
AND order_status IN({$complete_status})
|
6769 |
+
AND (created_at BETWEEN %s AND %s)
|
6770 |
+
GROUP BY date_format
|
6771 |
+
ORDER BY created_at ASC;
|
6772 |
+
",
|
6773 |
+
$user_id,
|
6774 |
+
$start_date,
|
6775 |
+
$end_date
|
6776 |
+
) );
|
6777 |
+
|
6778 |
+
$total_earning = wp_list_pluck( $salesQuery, 'total_earning' );
|
6779 |
+
$queried_date = wp_list_pluck( $salesQuery, 'date_format' );
|
6780 |
+
$dateWiseSales = array_combine( $queried_date, $total_earning );
|
6781 |
+
$chartData = array_merge( $datesPeriod, $dateWiseSales );
|
6782 |
+
|
6783 |
+
foreach ( $chartData as $key => $salesCount ) {
|
6784 |
+
unset( $chartData[ $key ] );
|
6785 |
+
$formatDate = date('d M', strtotime($key));
|
6786 |
+
$chartData[ $formatDate ] = $salesCount;
|
6787 |
+
}
|
6788 |
+
|
6789 |
+
$statements = tutor_utils()->get_earning_statements( $user_id, compact('start_date', 'end_date', 'statuses' ) );
|
6790 |
+
$earning_sum = tutor_utils()->get_earning_sum( $user_id, compact( 'start_date', 'end_date' ) );
|
6791 |
+
|
6792 |
+
return array(
|
6793 |
+
'chartData' => $chartData,
|
6794 |
+
'statements' => $statements,
|
6795 |
+
'statuses' => $statuses,
|
6796 |
+
'begin' => $begin,
|
6797 |
+
'end' => $end,
|
6798 |
+
'earning_sum' => $earning_sum,
|
6799 |
+
'datesPeriod' => $datesPeriod
|
6800 |
+
);
|
6801 |
+
}
|
6802 |
+
|
6803 |
+
/**
|
6804 |
+
* @return array
|
6805 |
+
*
|
6806 |
+
* @since v1.8.2
|
6807 |
+
*
|
6808 |
+
* Get earning chart data yearly
|
6809 |
+
*/
|
6810 |
+
public function get_earning_chart_yearly( $user_id, $year ) {
|
6811 |
+
global $wpdb;
|
6812 |
+
|
6813 |
+
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
6814 |
+
$statuses = $complete_status;
|
6815 |
+
$complete_status = "'" . implode( "','", $complete_status) . "'";
|
6816 |
+
|
6817 |
+
$salesQuery = $wpdb->get_results( $wpdb->prepare(
|
6818 |
+
"SELECT SUM(instructor_amount) AS total_earning,
|
6819 |
+
MONTHNAME(created_at) AS month_name
|
6820 |
+
FROM {$wpdb->prefix}tutor_earnings
|
6821 |
+
WHERE user_id = %d
|
6822 |
+
AND order_status IN({$complete_status})
|
6823 |
+
AND YEAR(created_at) = %s
|
6824 |
+
GROUP BY MONTH (created_at)
|
6825 |
+
ORDER BY MONTH(created_at) ASC;
|
6826 |
+
",
|
6827 |
+
$user_id,
|
6828 |
+
$year
|
6829 |
+
) );
|
6830 |
+
|
6831 |
+
$total_earning = wp_list_pluck( $salesQuery, 'total_earning' );
|
6832 |
+
$months = wp_list_pluck( $salesQuery, 'month_name' );
|
6833 |
+
$monthWiseSales = array_combine( $months, $total_earning );
|
6834 |
+
|
6835 |
+
$dataFor = 'yearly';
|
6836 |
+
|
6837 |
+
/**
|
6838 |
+
* Format yearly
|
6839 |
+
*/
|
6840 |
+
$emptyMonths = array();
|
6841 |
+
for ( $m=1; $m <= 12; $m++ ) {
|
6842 |
+
$emptyMonths[ date('F', mktime( 0, 0, 0, $m, 1, date( 'Y' ) ) ) ] = 0;
|
6843 |
+
}
|
6844 |
+
|
6845 |
+
$chartData = array_merge( $emptyMonths, $monthWiseSales );
|
6846 |
+
$statements = tutor_utils()->get_earning_statements( $user_id, compact('year', 'dataFor', 'statuses' ) );
|
6847 |
+
$earning_sum = tutor_utils()->get_earning_sum( $user_id, compact( 'year', 'dataFor' ) );
|
6848 |
|
6849 |
+
return [
|
6850 |
+
'chartData' => $chartData,
|
6851 |
+
'statements' => $statements,
|
6852 |
+
'earning_sum' => $earning_sum
|
6853 |
+
];
|
6854 |
}
|
6855 |
}
|
languages/tutor.pot
CHANGED
@@ -13,7 +13,7 @@ msgstr ""
|
|
13 |
"X-Poedit-SourceCharset: UTF-8\n"
|
14 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
|
16 |
-
#: tutor.php:52, classes/Tutor.php:
|
17 |
msgid "Tutor Instructor"
|
18 |
msgstr ""
|
19 |
|
@@ -117,15 +117,15 @@ msgstr ""
|
|
117 |
msgid "Tags"
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: classes/Admin.php:60, classes/Admin.php:60, classes/Course.php:
|
121 |
msgid "Students"
|
122 |
msgstr ""
|
123 |
|
124 |
-
#: classes/Admin.php:63, classes/Admin.php:63, classes/Course.php:
|
125 |
msgid "Instructors"
|
126 |
msgstr ""
|
127 |
|
128 |
-
#: classes/Admin.php:66, classes/Admin.php:66, classes/Utils.php:
|
129 |
msgid "Announcements"
|
130 |
msgstr ""
|
131 |
|
@@ -133,7 +133,7 @@ msgstr ""
|
|
133 |
msgid "Q & A"
|
134 |
msgstr ""
|
135 |
|
136 |
-
#: classes/Admin.php:70, classes/Admin.php:70, classes/Utils.php:
|
137 |
msgid "Quiz Attempts"
|
138 |
msgstr ""
|
139 |
|
@@ -145,7 +145,7 @@ msgstr ""
|
|
145 |
msgid "Add-ons"
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: classes/Admin.php:80, classes/Admin.php:80, classes/Admin.php:442, classes/Utils.php:
|
149 |
msgid "Settings"
|
150 |
msgstr ""
|
151 |
|
@@ -165,7 +165,7 @@ msgstr ""
|
|
165 |
msgid "Tutor Pages"
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: classes/Admin.php:139, classes/Instructors_List.php:116, templates/dashboard/dashboard.php:84, templates/dashboard/purchase_history.php:23, templates/dashboard/withdraw.php:
|
169 |
msgid "Status"
|
170 |
msgstr ""
|
171 |
|
@@ -189,7 +189,7 @@ msgstr ""
|
|
189 |
msgid "If you like %1$s please leave us a %2$s rating. A huge thanks in advance!"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: classes/Ajax.php:62, classes/Ajax.php:112, classes/Ajax.php:176, classes/Ajax.php:234, classes/Ajax.php:287, classes/Ajax.php:329, classes/Ajax.php:350, classes/Ajax.php:448, classes/Ajax.php:524, classes/Course.php:
|
193 |
msgid "Access Denied"
|
194 |
msgstr ""
|
195 |
|
@@ -273,67 +273,67 @@ msgstr ""
|
|
273 |
msgid "Assignment answer can not be empty"
|
274 |
msgstr ""
|
275 |
|
276 |
-
#: classes/Course.php:
|
277 |
msgid "Course Builder"
|
278 |
msgstr ""
|
279 |
|
280 |
-
#: classes/Course.php:
|
281 |
msgid "Additional Data"
|
282 |
msgstr ""
|
283 |
|
284 |
-
#: classes/Course.php:
|
285 |
msgid "Video"
|
286 |
msgstr ""
|
287 |
|
288 |
-
#: classes/Course.php:
|
289 |
msgid "Tutor Settings"
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: classes/Course.php:
|
293 |
msgid "Topic has been updated"
|
294 |
msgstr ""
|
295 |
|
296 |
-
#: classes/Course.php:
|
297 |
msgid "Lessons"
|
298 |
msgstr ""
|
299 |
|
300 |
-
#: classes/Course.php:
|
301 |
msgid "Price"
|
302 |
msgstr ""
|
303 |
|
304 |
-
#: classes/Course.php:
|
305 |
msgid "Please Sign In first"
|
306 |
msgstr ""
|
307 |
|
308 |
-
#: classes/Course.php:
|
309 |
msgid "Please Sign-In"
|
310 |
msgstr ""
|
311 |
|
312 |
-
#: classes/Course.php:
|
313 |
msgid "<p>No instructor available or you have already added maximum instructors</p>"
|
314 |
msgstr ""
|
315 |
|
316 |
-
#: classes/Course.php:
|
317 |
msgid "To add unlimited multiple instructors in your course, get %sTutor LMS Pro%s"
|
318 |
msgstr ""
|
319 |
|
320 |
-
#: classes/Course.php:
|
321 |
msgid "complete all lessons to mark this course as complete"
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: classes/Course.php:
|
325 |
msgid "You have to pass %s quizzes to complete this course."
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: classes/Course.php:
|
329 |
msgid "Make This Course Public"
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: classes/Course.php:
|
333 |
msgid "No enrollment required."
|
334 |
msgstr ""
|
335 |
|
336 |
-
#: classes/Course.php:
|
337 |
msgid "Disable Q&A"
|
338 |
msgstr ""
|
339 |
|
@@ -433,7 +433,7 @@ msgstr ""
|
|
433 |
msgid "Check and place necessary information here."
|
434 |
msgstr ""
|
435 |
|
436 |
-
#: classes/Email.php:32, classes/Instructors_List.php:112, classes/Students_List.php:
|
437 |
msgid "Name"
|
438 |
msgstr ""
|
439 |
|
@@ -577,7 +577,7 @@ msgstr ""
|
|
577 |
msgid "Remove as Instructor"
|
578 |
msgstr ""
|
579 |
|
580 |
-
#: classes/Instructors_List.php:113, classes/Students_List.php:
|
581 |
msgid "E-Mail"
|
582 |
msgstr ""
|
583 |
|
@@ -661,7 +661,7 @@ msgstr ""
|
|
661 |
msgid "Price Type"
|
662 |
msgstr ""
|
663 |
|
664 |
-
#: classes/Options.php:102, classes/Utils.php:
|
665 |
msgid "Dashboard Page"
|
666 |
msgstr ""
|
667 |
|
@@ -1169,7 +1169,7 @@ msgstr ""
|
|
1169 |
msgid "Allow multiple instructors to upload their courses."
|
1170 |
msgstr ""
|
1171 |
|
1172 |
-
#: classes/Options.php:533, classes/Utils.php:
|
1173 |
msgid "Instructor Registration Page"
|
1174 |
msgstr ""
|
1175 |
|
@@ -1197,7 +1197,7 @@ msgstr ""
|
|
1197 |
msgid "Student Profile settings"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#: classes/Options.php:565, classes/Utils.php:
|
1201 |
msgid "Student Registration Page"
|
1202 |
msgstr ""
|
1203 |
|
@@ -1221,7 +1221,7 @@ msgstr ""
|
|
1221 |
msgid "Completed courses will be shown on student profiles. <br/> For example, you can see this link-"
|
1222 |
msgstr ""
|
1223 |
|
1224 |
-
#: classes/Options.php:589, classes/Options.php:597, classes/Tutor_Setup.php:484, templates/dashboard/earning.php:
|
1225 |
msgid "Earning"
|
1226 |
msgstr ""
|
1227 |
|
@@ -1770,7 +1770,7 @@ msgstr ""
|
|
1770 |
msgid "Preview course"
|
1771 |
msgstr ""
|
1772 |
|
1773 |
-
#: classes/Question_Answers_List.php:70, classes/Quiz.php:
|
1774 |
msgid "Question"
|
1775 |
msgstr ""
|
1776 |
|
@@ -1778,47 +1778,47 @@ msgstr ""
|
|
1778 |
msgid "Student"
|
1779 |
msgstr ""
|
1780 |
|
1781 |
-
#: classes/Question_Answers_List.php:73, classes/Quiz.php:
|
1782 |
msgid "Answer"
|
1783 |
msgstr ""
|
1784 |
|
1785 |
-
#: classes/Quiz.php:
|
1786 |
msgid "Quiz has been timeout already"
|
1787 |
msgstr ""
|
1788 |
|
1789 |
-
#: classes/Quiz.php:
|
1790 |
msgid "QUIZ"
|
1791 |
msgstr ""
|
1792 |
|
1793 |
-
#: classes/Quiz.php:
|
1794 |
msgid "Please make sure you have added more than one option and saved them"
|
1795 |
msgstr ""
|
1796 |
|
1797 |
-
#: classes/Quiz.php:
|
1798 |
msgid "Please select the correct answer"
|
1799 |
msgstr ""
|
1800 |
|
1801 |
-
#: classes/Quiz.php:
|
1802 |
msgid "True"
|
1803 |
msgstr ""
|
1804 |
|
1805 |
-
#: classes/Quiz.php:
|
1806 |
msgid "False"
|
1807 |
msgstr ""
|
1808 |
|
1809 |
-
#: classes/Quiz.php:
|
1810 |
msgid "Answer options & mark correct"
|
1811 |
msgstr ""
|
1812 |
|
1813 |
-
#: classes/Quiz.php:
|
1814 |
msgid "Make sure you’re saving the answers in the right order. Students will have to match this order exactly."
|
1815 |
msgstr ""
|
1816 |
|
1817 |
-
#: classes/Quiz.php:
|
1818 |
msgid "Mark as correct"
|
1819 |
msgstr ""
|
1820 |
|
1821 |
-
#: classes/Quiz.php:
|
1822 |
msgid "Access Denied."
|
1823 |
msgstr ""
|
1824 |
|
@@ -1870,7 +1870,7 @@ msgstr ""
|
|
1870 |
msgid "Password set successfully"
|
1871 |
msgstr ""
|
1872 |
|
1873 |
-
#: classes/Students_List.php:
|
1874 |
msgid "Completed Course"
|
1875 |
msgstr ""
|
1876 |
|
@@ -1902,15 +1902,15 @@ msgstr ""
|
|
1902 |
msgid "Setup Wizard"
|
1903 |
msgstr ""
|
1904 |
|
1905 |
-
#: classes/Tutor.php:
|
1906 |
msgid "Dashboard"
|
1907 |
msgstr ""
|
1908 |
|
1909 |
-
#: classes/Tutor.php:
|
1910 |
msgid "Student Registration"
|
1911 |
msgstr ""
|
1912 |
|
1913 |
-
#: classes/Tutor.php:
|
1914 |
msgid "Instructor Registration"
|
1915 |
msgstr ""
|
1916 |
|
@@ -1974,7 +1974,7 @@ msgstr ""
|
|
1974 |
msgid "ON"
|
1975 |
msgstr ""
|
1976 |
|
1977 |
-
#: classes/Tutor_Setup.php:268, classes/Tutor_Setup.php:557, classes/Utils.php:
|
1978 |
msgid "Instructor"
|
1979 |
msgstr ""
|
1980 |
|
@@ -2278,195 +2278,195 @@ msgstr ""
|
|
2278 |
msgid "Tutor › Setup Wizard"
|
2279 |
msgstr ""
|
2280 |
|
2281 |
-
#: classes/Utils.php:
|
2282 |
msgid "Nonce not matched"
|
2283 |
msgstr ""
|
2284 |
|
2285 |
-
#: classes/Utils.php:
|
2286 |
msgid "Q&A"
|
2287 |
msgstr ""
|
2288 |
|
2289 |
-
#: classes/Utils.php:
|
2290 |
msgid "Course Enrolled"
|
2291 |
msgstr ""
|
2292 |
|
2293 |
-
#: classes/Utils.php:
|
2294 |
msgid "My Profile"
|
2295 |
msgstr ""
|
2296 |
|
2297 |
-
#: classes/Utils.php:
|
2298 |
msgid "Enrolled Courses"
|
2299 |
msgstr ""
|
2300 |
|
2301 |
-
#: classes/Utils.php:
|
2302 |
msgid "Wishlist"
|
2303 |
msgstr ""
|
2304 |
|
2305 |
-
#: classes/Utils.php:
|
2306 |
msgid "Reviews"
|
2307 |
msgstr ""
|
2308 |
|
2309 |
-
#: classes/Utils.php:
|
2310 |
msgid "My Quiz Attempts"
|
2311 |
msgstr ""
|
2312 |
|
2313 |
-
#: classes/Utils.php:
|
2314 |
msgid "Purchase History"
|
2315 |
msgstr ""
|
2316 |
|
2317 |
-
#: classes/Utils.php:
|
2318 |
msgid "Create Course"
|
2319 |
msgstr ""
|
2320 |
|
2321 |
-
#: classes/Utils.php:
|
2322 |
msgid "My Courses"
|
2323 |
msgstr ""
|
2324 |
|
2325 |
-
#: classes/Utils.php:
|
2326 |
msgid "Earnings"
|
2327 |
msgstr ""
|
2328 |
|
2329 |
-
#: classes/Utils.php:
|
2330 |
msgid "Withdrawals"
|
2331 |
msgstr ""
|
2332 |
|
2333 |
-
#: classes/Utils.php:
|
2334 |
msgid "Question & Answer"
|
2335 |
msgstr ""
|
2336 |
|
2337 |
-
#: classes/Utils.php:
|
2338 |
msgid "Logout"
|
2339 |
msgstr ""
|
2340 |
|
2341 |
-
#: classes/Utils.php:
|
2342 |
msgid "Retrieve Password"
|
2343 |
msgstr ""
|
2344 |
|
2345 |
-
#: classes/Utils.php:
|
2346 |
msgid "Pending"
|
2347 |
msgstr ""
|
2348 |
|
2349 |
-
#: classes/Utils.php:
|
2350 |
msgid "Approved"
|
2351 |
msgstr ""
|
2352 |
|
2353 |
-
#: classes/Utils.php:
|
2354 |
msgid "Blocked"
|
2355 |
msgstr ""
|
2356 |
|
2357 |
-
#: classes/Utils.php:
|
2358 |
msgid "True/False"
|
2359 |
msgstr ""
|
2360 |
|
2361 |
-
#: classes/Utils.php:
|
2362 |
msgid "Single Choice"
|
2363 |
msgstr ""
|
2364 |
|
2365 |
-
#: classes/Utils.php:
|
2366 |
msgid "Multiple Choice"
|
2367 |
msgstr ""
|
2368 |
|
2369 |
-
#: classes/Utils.php:
|
2370 |
msgid "Open Ended/Essay"
|
2371 |
msgstr ""
|
2372 |
|
2373 |
-
#: classes/Utils.php:
|
2374 |
msgid "Fill In The Blanks"
|
2375 |
msgstr ""
|
2376 |
|
2377 |
-
#: classes/Utils.php:
|
2378 |
msgid "Short Answer"
|
2379 |
msgstr ""
|
2380 |
|
2381 |
-
#: classes/Utils.php:
|
2382 |
msgid "Matching"
|
2383 |
msgstr ""
|
2384 |
|
2385 |
-
#: classes/Utils.php:
|
2386 |
msgid "Image Matching"
|
2387 |
msgstr ""
|
2388 |
|
2389 |
-
#: classes/Utils.php:
|
2390 |
msgid "Image Answering"
|
2391 |
msgstr ""
|
2392 |
|
2393 |
-
#: classes/Utils.php:
|
2394 |
msgid "Ordering"
|
2395 |
msgstr ""
|
2396 |
|
2397 |
-
#: classes/Utils.php:
|
2398 |
msgid "All Levels"
|
2399 |
msgstr ""
|
2400 |
|
2401 |
-
#: classes/Utils.php:
|
2402 |
msgid "Beginner"
|
2403 |
msgstr ""
|
2404 |
|
2405 |
-
#: classes/Utils.php:
|
2406 |
msgid "Intermediate"
|
2407 |
msgstr ""
|
2408 |
|
2409 |
-
#: classes/Utils.php:
|
2410 |
msgid "Expert"
|
2411 |
msgstr ""
|
2412 |
|
2413 |
-
#: classes/Utils.php:
|
2414 |
msgid "Courses Taken"
|
2415 |
msgstr ""
|
2416 |
|
2417 |
-
#: classes/Utils.php:
|
2418 |
msgid "Enrolled Course"
|
2419 |
msgstr ""
|
2420 |
|
2421 |
-
#: classes/Utils.php:
|
2422 |
msgid "Reviews Written"
|
2423 |
msgstr ""
|
2424 |
|
2425 |
-
#: classes/Utils.php:
|
2426 |
msgid "Website URL"
|
2427 |
msgstr ""
|
2428 |
|
2429 |
-
#: classes/Utils.php:
|
2430 |
msgid "Github URL"
|
2431 |
msgstr ""
|
2432 |
|
2433 |
-
#: classes/Utils.php:
|
2434 |
msgid "Facebook URL"
|
2435 |
msgstr ""
|
2436 |
|
2437 |
-
#: classes/Utils.php:
|
2438 |
msgid "Twitter URL"
|
2439 |
msgstr ""
|
2440 |
|
2441 |
-
#: classes/Utils.php:
|
2442 |
msgid "Linkedin URL"
|
2443 |
msgstr ""
|
2444 |
|
2445 |
-
#: classes/Utils.php:
|
2446 |
msgid "Not Taken"
|
2447 |
msgstr ""
|
2448 |
|
2449 |
-
#: classes/Utils.php:
|
2450 |
msgid "In Progress"
|
2451 |
msgstr ""
|
2452 |
|
2453 |
-
#: classes/Utils.php:
|
2454 |
msgid "Completed"
|
2455 |
msgstr ""
|
2456 |
|
2457 |
-
#: classes/Utils.php:
|
2458 |
msgid "First Name"
|
2459 |
msgstr ""
|
2460 |
|
2461 |
-
#: classes/Utils.php:
|
2462 |
msgid "Last Name"
|
2463 |
msgstr ""
|
2464 |
|
2465 |
-
#: classes/Utils.php:
|
2466 |
msgid "Profile Photo"
|
2467 |
msgstr ""
|
2468 |
|
2469 |
-
#: classes/Utils.php:
|
2470 |
msgid "Withdraw Method"
|
2471 |
msgstr ""
|
2472 |
|
@@ -2562,11 +2562,11 @@ msgstr ""
|
|
2562 |
msgid "Requested By"
|
2563 |
msgstr ""
|
2564 |
|
2565 |
-
#: classes/Withdraw_Requests_List.php:103, templates/dashboard/purchase_history.php:22, templates/dashboard/withdraw.php:
|
2566 |
msgid "Amount"
|
2567 |
msgstr ""
|
2568 |
|
2569 |
-
#: classes/Withdraw_Requests_List.php:104, templates/dashboard/withdraw.php:
|
2570 |
msgid "Withdrawal Method"
|
2571 |
msgstr ""
|
2572 |
|
@@ -2785,7 +2785,7 @@ msgstr ""
|
|
2785 |
msgid "Biography"
|
2786 |
msgstr ""
|
2787 |
|
2788 |
-
#: templates/course-filter/filters.php:9, templates/dashboard/create-course.php:
|
2789 |
msgid "Free"
|
2790 |
msgstr ""
|
2791 |
|
@@ -2869,11 +2869,11 @@ msgstr ""
|
|
2869 |
msgid "Preview"
|
2870 |
msgstr ""
|
2871 |
|
2872 |
-
#: templates/dashboard/create-course.php:50, templates/dashboard/create-course.php:
|
2873 |
msgid "Submit for Review"
|
2874 |
msgstr ""
|
2875 |
|
2876 |
-
#: templates/dashboard/create-course.php:46, templates/dashboard/create-course.php:
|
2877 |
msgid "Publish Course"
|
2878 |
msgstr ""
|
2879 |
|
@@ -2881,83 +2881,83 @@ msgstr ""
|
|
2881 |
msgid "Exit"
|
2882 |
msgstr ""
|
2883 |
|
2884 |
-
#: templates/dashboard/create-course.php:
|
2885 |
msgid "Your course has been submitted to the admin. It will be published once it has been reviewed by the admins."
|
2886 |
msgstr ""
|
2887 |
|
2888 |
-
#: templates/dashboard/create-course.php:
|
2889 |
msgid "Course Info"
|
2890 |
msgstr ""
|
2891 |
|
2892 |
-
#: templates/dashboard/create-course.php:
|
2893 |
msgid "Course Title"
|
2894 |
msgstr ""
|
2895 |
|
2896 |
-
#: templates/dashboard/create-course.php:
|
2897 |
msgid "ex. Learn photoshop CS6 from scratch"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#: templates/dashboard/create-course.php:
|
2901 |
msgid "Description"
|
2902 |
msgstr ""
|
2903 |
|
2904 |
-
#: templates/dashboard/create-course.php:
|
2905 |
msgid "Choose a category"
|
2906 |
msgstr ""
|
2907 |
|
2908 |
-
#: templates/dashboard/create-course.php:
|
2909 |
msgid "Course Price"
|
2910 |
msgstr ""
|
2911 |
|
2912 |
-
#: templates/dashboard/create-course.php:
|
2913 |
msgid "Set course price"
|
2914 |
msgstr ""
|
2915 |
|
2916 |
-
#: templates/dashboard/create-course.php:
|
2917 |
msgid "Course Thumbnail"
|
2918 |
msgstr ""
|
2919 |
|
2920 |
-
#: templates/dashboard/create-course.php:
|
2921 |
msgid "Important Guideline: %1$s 700x430 pixels %2$s %3$s File Support: %1$s jpg, .jpeg,. gif, or .png %2$s no text on the image."
|
2922 |
msgstr ""
|
2923 |
|
2924 |
-
#: templates/dashboard/create-course.php:
|
2925 |
msgid "Upload Image"
|
2926 |
msgstr ""
|
2927 |
|
2928 |
-
#: templates/dashboard/create-course.php:
|
2929 |
msgid "Save course as draft"
|
2930 |
msgstr ""
|
2931 |
|
2932 |
-
#: templates/dashboard/create-course.php:
|
2933 |
msgid "Course Upload Tips"
|
2934 |
msgstr ""
|
2935 |
|
2936 |
-
#: templates/dashboard/create-course.php:
|
2937 |
msgid "Set the Course Price option or make it free."
|
2938 |
msgstr ""
|
2939 |
|
2940 |
-
#: templates/dashboard/create-course.php:
|
2941 |
msgid "Standard size for the course thumbnail is 700x430."
|
2942 |
msgstr ""
|
2943 |
|
2944 |
-
#: templates/dashboard/create-course.php:
|
2945 |
msgid "Video section controls the course overview video."
|
2946 |
msgstr ""
|
2947 |
|
2948 |
-
#: templates/dashboard/create-course.php:
|
2949 |
msgid "Course Builder is where you create & organize a course."
|
2950 |
msgstr ""
|
2951 |
|
2952 |
-
#: templates/dashboard/create-course.php:
|
2953 |
msgid "Add Topics in the Course Builder section to create lessons, quizzes, and assignments."
|
2954 |
msgstr ""
|
2955 |
|
2956 |
-
#: templates/dashboard/create-course.php:
|
2957 |
msgid "Prerequisites refers to the fundamental courses to complete before taking this particular course."
|
2958 |
msgstr ""
|
2959 |
|
2960 |
-
#: templates/dashboard/create-course.php:
|
2961 |
msgid "Information from the Additional Data section shows up on the course single page."
|
2962 |
msgstr ""
|
2963 |
|
@@ -2993,55 +2993,55 @@ msgstr ""
|
|
2993 |
msgid "Published"
|
2994 |
msgstr ""
|
2995 |
|
2996 |
-
#: templates/dashboard/earning.php:
|
2997 |
msgid "No Earning info available"
|
2998 |
msgstr ""
|
2999 |
|
3000 |
-
#: templates/dashboard/earning.php:
|
3001 |
msgid "Reports"
|
3002 |
msgstr ""
|
3003 |
|
3004 |
-
#: templates/dashboard/earning.php:
|
3005 |
msgid "Statements"
|
3006 |
msgstr ""
|
3007 |
|
3008 |
-
#: templates/dashboard/earning.php:
|
3009 |
msgid "My Balance"
|
3010 |
msgstr ""
|
3011 |
|
3012 |
-
#: templates/dashboard/earning.php:
|
3013 |
msgid "All Time"
|
3014 |
msgstr ""
|
3015 |
|
3016 |
-
#: templates/dashboard/earning.php:
|
3017 |
msgid "My Earnings"
|
3018 |
msgstr ""
|
3019 |
|
3020 |
-
#: templates/dashboard/earning.php:
|
3021 |
msgid "Based on course price"
|
3022 |
msgstr ""
|
3023 |
|
3024 |
-
#: templates/dashboard/earning.php:
|
3025 |
msgid "All time sales"
|
3026 |
msgstr ""
|
3027 |
|
3028 |
-
#: templates/dashboard/earning.php:
|
3029 |
msgid "All of withdraw type excluding rejected."
|
3030 |
msgstr ""
|
3031 |
|
3032 |
-
#: templates/dashboard/earning.php:
|
3033 |
msgid "All time withdrawals"
|
3034 |
msgstr ""
|
3035 |
|
3036 |
-
#: templates/dashboard/earning.php:
|
3037 |
msgid "Deducted Commissions"
|
3038 |
msgstr ""
|
3039 |
|
3040 |
-
#: templates/dashboard/earning.php:
|
3041 |
msgid "Deducted Fees."
|
3042 |
msgstr ""
|
3043 |
|
3044 |
-
#: templates/dashboard/earning.php:
|
3045 |
msgid "Earnings Chart for this month"
|
3046 |
msgstr ""
|
3047 |
|
@@ -3097,7 +3097,7 @@ msgstr ""
|
|
3097 |
msgid "You are going to delete this course, it can't be undone"
|
3098 |
msgstr ""
|
3099 |
|
3100 |
-
#: templates/dashboard/my-courses.php:109, templates/dashboard/question-answer.php:72, templates/dashboard/withdraw.php:
|
3101 |
msgid "Cancel"
|
3102 |
msgstr ""
|
3103 |
|
@@ -3281,19 +3281,19 @@ msgstr ""
|
|
3281 |
msgid "Selected Payment Method"
|
3282 |
msgstr ""
|
3283 |
|
3284 |
-
#: templates/dashboard/withdraw.php:
|
3285 |
msgid "Submit Request"
|
3286 |
msgstr ""
|
3287 |
|
3288 |
-
#: templates/dashboard/withdraw.php:
|
3289 |
msgid "Withdrawal History"
|
3290 |
msgstr ""
|
3291 |
|
3292 |
-
#: templates/dashboard/withdraw.php:
|
3293 |
msgid "No withdrawal yet"
|
3294 |
msgstr ""
|
3295 |
|
3296 |
-
#: templates/dashboard/withdraw.php:
|
3297 |
msgid "Requested On"
|
3298 |
msgstr ""
|
3299 |
|
@@ -4167,19 +4167,19 @@ msgstr ""
|
|
4167 |
msgid "Manual Review"
|
4168 |
msgstr ""
|
4169 |
|
4170 |
-
#: views/pages/view_attempt.php:331, views/pages/view_attempt.php:324, templates/dashboard/my-quiz-attempts/attempts-details.php:119, templates/dashboard/my-quiz-attempts/attempts-details.php:
|
4171 |
msgid "Incorrect"
|
4172 |
msgstr ""
|
4173 |
|
4174 |
-
#: views/pages/view_attempt.php:327, views/pages/view_attempt.php:311, templates/dashboard/my-quiz-attempts/attempts-details.php:118, templates/dashboard/my-quiz-attempts/attempts-details.php:
|
4175 |
msgid "Correct"
|
4176 |
msgstr ""
|
4177 |
|
4178 |
-
#: views/pages/view_attempt.php:320, templates/dashboard/my-quiz-attempts/attempts-details.php:
|
4179 |
msgid "Review Required"
|
4180 |
msgstr ""
|
4181 |
|
4182 |
-
#: views/pages/view_attempt.php:343, templates/dashboard/quiz-attempts/quiz-reviews.php:
|
4183 |
msgid "Mark as In correct"
|
4184 |
msgstr ""
|
4185 |
|
@@ -4299,31 +4299,31 @@ msgstr ""
|
|
4299 |
msgid "This Week"
|
4300 |
msgstr ""
|
4301 |
|
4302 |
-
#: templates/dashboard/earning/report-date_range.php:
|
4303 |
msgid "All time"
|
4304 |
msgstr ""
|
4305 |
|
4306 |
-
#: templates/dashboard/earning/report-date_range.php:
|
4307 |
msgid "My Earning"
|
4308 |
msgstr ""
|
4309 |
|
4310 |
-
#: templates/dashboard/earning/report-date_range.php:
|
4311 |
msgid "Deducted Fees"
|
4312 |
msgstr ""
|
4313 |
|
4314 |
-
#: templates/dashboard/earning/report-date_range.php:
|
4315 |
msgid "Showing Result from %s to %s"
|
4316 |
msgstr ""
|
4317 |
|
4318 |
-
#: templates/dashboard/earning/report-date_range.php:
|
4319 |
msgid "Sales statements for this period"
|
4320 |
msgstr ""
|
4321 |
|
4322 |
-
#: templates/dashboard/earning/report-last_month.php:
|
4323 |
msgid "Earning Data for the month of %s"
|
4324 |
msgstr ""
|
4325 |
|
4326 |
-
#: templates/dashboard/earning/report-last_year.php:
|
4327 |
msgid "Earning Data for the year of %s"
|
4328 |
msgstr ""
|
4329 |
|
@@ -4811,6 +4811,10 @@ msgstr ""
|
|
4811 |
msgid "Please enroll This course first"
|
4812 |
msgstr ""
|
4813 |
|
|
|
|
|
|
|
|
|
4814 |
#: templates/single/lesson/sidebar_question_and_answer.php:132
|
4815 |
msgid "No questions yet"
|
4816 |
msgstr ""
|
13 |
"X-Poedit-SourceCharset: UTF-8\n"
|
14 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
|
16 |
+
#: tutor.php:52, classes/Tutor.php:425
|
17 |
msgid "Tutor Instructor"
|
18 |
msgstr ""
|
19 |
|
117 |
msgid "Tags"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: classes/Admin.php:60, classes/Admin.php:60, classes/Course.php:433, classes/Options.php:557, classes/Quiz_Attempts_List.php:110, templates/student-public-profile.php:103, views/pages/students.php:8
|
121 |
msgid "Students"
|
122 |
msgstr ""
|
123 |
|
124 |
+
#: classes/Admin.php:63, classes/Admin.php:63, classes/Course.php:127, classes/Course.php:206, classes/Options.php:518, views/pages/instructors.php:18
|
125 |
msgid "Instructors"
|
126 |
msgstr ""
|
127 |
|
128 |
+
#: classes/Admin.php:66, classes/Admin.php:66, classes/Utils.php:1275, classes/Utils.php:2451, templates/dashboard/announcements.php:127, views/pages/announcements.php:104, views/pages/announcements.php:114
|
129 |
msgid "Announcements"
|
130 |
msgstr ""
|
131 |
|
133 |
msgid "Q & A"
|
134 |
msgstr ""
|
135 |
|
136 |
+
#: classes/Admin.php:70, classes/Admin.php:70, classes/Utils.php:2454, templates/dashboard/quiz-attempts.php:19, views/pages/quiz_attempts.php:19
|
137 |
msgid "Quiz Attempts"
|
138 |
msgstr ""
|
139 |
|
145 |
msgid "Add-ons"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: classes/Admin.php:80, classes/Admin.php:80, classes/Admin.php:442, classes/Utils.php:2467, templates/dashboard/settings.php:8, views/modal/add_quiz.php:21, views/modal/edit_quiz.php:31, templates/dashboard/notifications/profile-completion.php:14, templates/dashboard/settings/education.php:7, templates/dashboard/settings/skill.php:8
|
149 |
msgid "Settings"
|
150 |
msgstr ""
|
151 |
|
165 |
msgid "Tutor Pages"
|
166 |
msgstr ""
|
167 |
|
168 |
+
#: classes/Admin.php:139, classes/Instructors_List.php:116, templates/dashboard/dashboard.php:84, templates/dashboard/purchase_history.php:23, templates/dashboard/withdraw.php:182, views/pages/view_attempt.php:59, views/pages/tools/tutor_pages.php:13
|
169 |
msgid "Status"
|
170 |
msgstr ""
|
171 |
|
189 |
msgid "If you like %1$s please leave us a %2$s rating. A huge thanks in advance!"
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: classes/Ajax.php:62, classes/Ajax.php:112, classes/Ajax.php:176, classes/Ajax.php:234, classes/Ajax.php:287, classes/Ajax.php:329, classes/Ajax.php:350, classes/Ajax.php:448, classes/Ajax.php:524, classes/Course.php:373, classes/Course.php:408, classes/Course.php:614, classes/Course.php:665, classes/Course.php:702, classes/Course.php:715, classes/Instructor.php:244, classes/Lesson.php:110, classes/Lesson.php:149, classes/Lesson.php:211, classes/Quiz.php:140, classes/Quiz.php:470, classes/Quiz.php:507, classes/Quiz.php:597, classes/Quiz.php:643, classes/Quiz.php:687, classes/Quiz.php:726, classes/Quiz.php:749, classes/Quiz.php:845, classes/Quiz.php:868, classes/Quiz.php:889, classes/Quiz.php:1000, classes/Quiz.php:1045, classes/Quiz.php:1123, classes/Quiz.php:1183, classes/Quiz.php:1205, classes/Q_and_A.php:71, templates/dashboard/registration.php:11
|
193 |
msgid "Access Denied"
|
194 |
msgstr ""
|
195 |
|
273 |
msgid "Assignment answer can not be empty"
|
274 |
msgstr ""
|
275 |
|
276 |
+
#: classes/Course.php:123, classes/Course.php:205
|
277 |
msgid "Course Builder"
|
278 |
msgstr ""
|
279 |
|
280 |
+
#: classes/Course.php:124, classes/Course.php:207
|
281 |
msgid "Additional Data"
|
282 |
msgstr ""
|
283 |
|
284 |
+
#: classes/Course.php:125, classes/Course.php:204
|
285 |
msgid "Video"
|
286 |
msgstr ""
|
287 |
|
288 |
+
#: classes/Course.php:134, classes/Course.php:1244, views/options/options_generator.php:2
|
289 |
msgid "Tutor Settings"
|
290 |
msgstr ""
|
291 |
|
292 |
+
#: classes/Course.php:418
|
293 |
msgid "Topic has been updated"
|
294 |
msgstr ""
|
295 |
|
296 |
+
#: classes/Course.php:432, classes/Options.php:423, classes/Post_types.php:172
|
297 |
msgid "Lessons"
|
298 |
msgstr ""
|
299 |
|
300 |
+
#: classes/Course.php:434, templates/course-filter/filters.php:73, templates/dashboard/earning/statement.php:30
|
301 |
msgid "Price"
|
302 |
msgstr ""
|
303 |
|
304 |
+
#: classes/Course.php:514
|
305 |
msgid "Please Sign In first"
|
306 |
msgstr ""
|
307 |
|
308 |
+
#: classes/Course.php:562, classes/Lesson.php:303
|
309 |
msgid "Please Sign-In"
|
310 |
msgstr ""
|
311 |
|
312 |
+
#: classes/Course.php:647
|
313 |
msgid "<p>No instructor available or you have already added maximum instructors</p>"
|
314 |
msgstr ""
|
315 |
|
316 |
+
#: classes/Course.php:652
|
317 |
msgid "To add unlimited multiple instructors in your course, get %sTutor LMS Pro%s"
|
318 |
msgstr ""
|
319 |
|
320 |
+
#: classes/Course.php:1079
|
321 |
msgid "complete all lessons to mark this course as complete"
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: classes/Course.php:1116
|
325 |
msgid "You have to pass %s quizzes to complete this course."
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: classes/Course.php:1223
|
329 |
msgid "Make This Course Public"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: classes/Course.php:1225
|
333 |
msgid "No enrollment required."
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: classes/Course.php:1233
|
337 |
msgid "Disable Q&A"
|
338 |
msgstr ""
|
339 |
|
433 |
msgid "Check and place necessary information here."
|
434 |
msgstr ""
|
435 |
|
436 |
+
#: classes/Email.php:32, classes/Instructors_List.php:112, classes/Students_List.php:61
|
437 |
msgid "Name"
|
438 |
msgstr ""
|
439 |
|
577 |
msgid "Remove as Instructor"
|
578 |
msgstr ""
|
579 |
|
580 |
+
#: classes/Instructors_List.php:113, classes/Students_List.php:62, templates/dashboard/registration.php:73, templates/dashboard/registration.php:76, views/pages/add_new_instructor.php:69, views/pages/add_new_instructor.php:75, templates/dashboard/instructor/registration.php:67, templates/dashboard/instructor/registration.php:70
|
581 |
msgid "E-Mail"
|
582 |
msgstr ""
|
583 |
|
661 |
msgid "Price Type"
|
662 |
msgstr ""
|
663 |
|
664 |
+
#: classes/Options.php:102, classes/Utils.php:6232
|
665 |
msgid "Dashboard Page"
|
666 |
msgstr ""
|
667 |
|
1169 |
msgid "Allow multiple instructors to upload their courses."
|
1170 |
msgstr ""
|
1171 |
|
1172 |
+
#: classes/Options.php:533, classes/Utils.php:6233
|
1173 |
msgid "Instructor Registration Page"
|
1174 |
msgstr ""
|
1175 |
|
1197 |
msgid "Student Profile settings"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
+
#: classes/Options.php:565, classes/Utils.php:6234
|
1201 |
msgid "Student Registration Page"
|
1202 |
msgstr ""
|
1203 |
|
1221 |
msgid "Completed courses will be shown on student profiles. <br/> For example, you can see this link-"
|
1222 |
msgstr ""
|
1223 |
|
1224 |
+
#: classes/Options.php:589, classes/Options.php:597, classes/Tutor_Setup.php:484, templates/dashboard/earning.php:123, templates/dashboard/earning/chart-body.php:17, templates/dashboard/earning/statement.php:14, templates/dashboard/earning/statements.php:135
|
1225 |
msgid "Earning"
|
1226 |
msgstr ""
|
1227 |
|
1770 |
msgid "Preview course"
|
1771 |
msgstr ""
|
1772 |
|
1773 |
+
#: classes/Question_Answers_List.php:70, classes/Quiz.php:758, templates/dashboard/question-answer.php:25, views/pages/view_attempt.php:192, templates/dashboard/my-quiz-attempts/attempts-details.php:210, templates/dashboard/quiz-attempts/quiz-reviews.php:227
|
1774 |
msgid "Question"
|
1775 |
msgstr ""
|
1776 |
|
1778 |
msgid "Student"
|
1779 |
msgstr ""
|
1780 |
|
1781 |
+
#: classes/Question_Answers_List.php:73, classes/Quiz.php:1071, templates/dashboard/question-answer.php:28, views/modal/question_form.php:150, views/pages/answer.php:11, templates/dashboard/question-answer/answers.php:13
|
1782 |
msgid "Answer"
|
1783 |
msgstr ""
|
1784 |
|
1785 |
+
#: classes/Quiz.php:489
|
1786 |
msgid "Quiz has been timeout already"
|
1787 |
msgstr ""
|
1788 |
|
1789 |
+
#: classes/Quiz.php:622, classes/Quiz.php:705, views/metabox/course-contents.php:98, views/metabox/course-contents.php:190
|
1790 |
msgid "QUIZ"
|
1791 |
msgstr ""
|
1792 |
|
1793 |
+
#: classes/Quiz.php:828
|
1794 |
msgid "Please make sure you have added more than one option and saved them"
|
1795 |
msgstr ""
|
1796 |
|
1797 |
+
#: classes/Quiz.php:824
|
1798 |
msgid "Please select the correct answer"
|
1799 |
msgstr ""
|
1800 |
|
1801 |
+
#: classes/Quiz.php:937, views/modal/question_answer_form.php:21
|
1802 |
msgid "True"
|
1803 |
msgstr ""
|
1804 |
|
1805 |
+
#: classes/Quiz.php:944, views/modal/question_answer_form.php:25
|
1806 |
msgid "False"
|
1807 |
msgstr ""
|
1808 |
|
1809 |
+
#: classes/Quiz.php:1055
|
1810 |
msgid "Answer options & mark correct"
|
1811 |
msgstr ""
|
1812 |
|
1813 |
+
#: classes/Quiz.php:1058
|
1814 |
msgid "Make sure you’re saving the answers in the right order. Students will have to match this order exactly."
|
1815 |
msgstr ""
|
1816 |
|
1817 |
+
#: classes/Quiz.php:1093, classes/Quiz.php:1087, views/modal/question_form.php:174, views/modal/question_form.php:167, views/pages/view_attempt.php:342, templates/dashboard/quiz-attempts/quiz-reviews.php:400
|
1818 |
msgid "Mark as correct"
|
1819 |
msgstr ""
|
1820 |
|
1821 |
+
#: classes/Quiz.php:1231
|
1822 |
msgid "Access Denied."
|
1823 |
msgstr ""
|
1824 |
|
1870 |
msgid "Password set successfully"
|
1871 |
msgstr ""
|
1872 |
|
1873 |
+
#: classes/Students_List.php:63, templates/dashboard/enrolled-courses/completed-courses.php:9
|
1874 |
msgid "Completed Course"
|
1875 |
msgstr ""
|
1876 |
|
1902 |
msgid "Setup Wizard"
|
1903 |
msgstr ""
|
1904 |
|
1905 |
+
#: classes/Tutor.php:520, classes/Utils.php:2438, templates/dashboard/dashboard.php:9
|
1906 |
msgid "Dashboard"
|
1907 |
msgstr ""
|
1908 |
|
1909 |
+
#: classes/Tutor.php:529
|
1910 |
msgid "Student Registration"
|
1911 |
msgstr ""
|
1912 |
|
1913 |
+
#: classes/Tutor.php:538
|
1914 |
msgid "Instructor Registration"
|
1915 |
msgstr ""
|
1916 |
|
1974 |
msgid "ON"
|
1975 |
msgstr ""
|
1976 |
|
1977 |
+
#: classes/Tutor_Setup.php:268, classes/Tutor_Setup.php:557, classes/Utils.php:2448
|
1978 |
msgid "Instructor"
|
1979 |
msgstr ""
|
1980 |
|
2278 |
msgid "Tutor › Setup Wizard"
|
2279 |
msgstr ""
|
2280 |
|
2281 |
+
#: classes/Utils.php:947
|
2282 |
msgid "Nonce not matched"
|
2283 |
msgstr ""
|
2284 |
|
2285 |
+
#: classes/Utils.php:1274
|
2286 |
msgid "Q&A"
|
2287 |
msgstr ""
|
2288 |
|
2289 |
+
#: classes/Utils.php:2129, templates/student-public-profile.php:116
|
2290 |
msgid "Course Enrolled"
|
2291 |
msgstr ""
|
2292 |
|
2293 |
+
#: classes/Utils.php:2439, templates/dashboard/my-profile.php:21
|
2294 |
msgid "My Profile"
|
2295 |
msgstr ""
|
2296 |
|
2297 |
+
#: classes/Utils.php:2440, templates/dashboard/dashboard.php:30, templates/dashboard/enrolled-courses.php:9
|
2298 |
msgid "Enrolled Courses"
|
2299 |
msgstr ""
|
2300 |
|
2301 |
+
#: classes/Utils.php:2441, templates/dashboard/wishlist.php:10
|
2302 |
msgid "Wishlist"
|
2303 |
msgstr ""
|
2304 |
|
2305 |
+
#: classes/Utils.php:2442
|
2306 |
msgid "Reviews"
|
2307 |
msgstr ""
|
2308 |
|
2309 |
+
#: classes/Utils.php:2443, templates/dashboard/my-quiz-attempts.php:19
|
2310 |
msgid "My Quiz Attempts"
|
2311 |
msgstr ""
|
2312 |
|
2313 |
+
#: classes/Utils.php:2444, templates/dashboard/purchase_history.php:9
|
2314 |
msgid "Purchase History"
|
2315 |
msgstr ""
|
2316 |
|
2317 |
+
#: classes/Utils.php:2449
|
2318 |
msgid "Create Course"
|
2319 |
msgstr ""
|
2320 |
|
2321 |
+
#: classes/Utils.php:2450, templates/dashboard/my-courses.php:9
|
2322 |
msgid "My Courses"
|
2323 |
msgstr ""
|
2324 |
|
2325 |
+
#: classes/Utils.php:2452, templates/dashboard/earning.php:35, templates/dashboard/earning.php:43
|
2326 |
msgid "Earnings"
|
2327 |
msgstr ""
|
2328 |
|
2329 |
+
#: classes/Utils.php:2453
|
2330 |
msgid "Withdrawals"
|
2331 |
msgstr ""
|
2332 |
|
2333 |
+
#: classes/Utils.php:2455, templates/dashboard/question-answer.php:10, views/pages/question_answer.php:18
|
2334 |
msgid "Question & Answer"
|
2335 |
msgstr ""
|
2336 |
|
2337 |
+
#: classes/Utils.php:2468
|
2338 |
msgid "Logout"
|
2339 |
msgstr ""
|
2340 |
|
2341 |
+
#: classes/Utils.php:2479
|
2342 |
msgid "Retrieve Password"
|
2343 |
msgstr ""
|
2344 |
|
2345 |
+
#: classes/Utils.php:2583
|
2346 |
msgid "Pending"
|
2347 |
msgstr ""
|
2348 |
|
2349 |
+
#: classes/Utils.php:2584
|
2350 |
msgid "Approved"
|
2351 |
msgstr ""
|
2352 |
|
2353 |
+
#: classes/Utils.php:2585
|
2354 |
msgid "Blocked"
|
2355 |
msgstr ""
|
2356 |
|
2357 |
+
#: classes/Utils.php:3822
|
2358 |
msgid "True/False"
|
2359 |
msgstr ""
|
2360 |
|
2361 |
+
#: classes/Utils.php:3823
|
2362 |
msgid "Single Choice"
|
2363 |
msgstr ""
|
2364 |
|
2365 |
+
#: classes/Utils.php:3824
|
2366 |
msgid "Multiple Choice"
|
2367 |
msgstr ""
|
2368 |
|
2369 |
+
#: classes/Utils.php:3825
|
2370 |
msgid "Open Ended/Essay"
|
2371 |
msgstr ""
|
2372 |
|
2373 |
+
#: classes/Utils.php:3826
|
2374 |
msgid "Fill In The Blanks"
|
2375 |
msgstr ""
|
2376 |
|
2377 |
+
#: classes/Utils.php:3827
|
2378 |
msgid "Short Answer"
|
2379 |
msgstr ""
|
2380 |
|
2381 |
+
#: classes/Utils.php:3828
|
2382 |
msgid "Matching"
|
2383 |
msgstr ""
|
2384 |
|
2385 |
+
#: classes/Utils.php:3829
|
2386 |
msgid "Image Matching"
|
2387 |
msgstr ""
|
2388 |
|
2389 |
+
#: classes/Utils.php:3830
|
2390 |
msgid "Image Answering"
|
2391 |
msgstr ""
|
2392 |
|
2393 |
+
#: classes/Utils.php:3831
|
2394 |
msgid "Ordering"
|
2395 |
msgstr ""
|
2396 |
|
2397 |
+
#: classes/Utils.php:4596
|
2398 |
msgid "All Levels"
|
2399 |
msgstr ""
|
2400 |
|
2401 |
+
#: classes/Utils.php:4597, templates/course-filter/filters.php:4
|
2402 |
msgid "Beginner"
|
2403 |
msgstr ""
|
2404 |
|
2405 |
+
#: classes/Utils.php:4598, templates/course-filter/filters.php:5
|
2406 |
msgid "Intermediate"
|
2407 |
msgstr ""
|
2408 |
|
2409 |
+
#: classes/Utils.php:4599, templates/course-filter/filters.php:6
|
2410 |
msgid "Expert"
|
2411 |
msgstr ""
|
2412 |
|
2413 |
+
#: classes/Utils.php:4622
|
2414 |
msgid "Courses Taken"
|
2415 |
msgstr ""
|
2416 |
|
2417 |
+
#: classes/Utils.php:4629
|
2418 |
msgid "Enrolled Course"
|
2419 |
msgstr ""
|
2420 |
|
2421 |
+
#: classes/Utils.php:4633
|
2422 |
msgid "Reviews Written"
|
2423 |
msgstr ""
|
2424 |
|
2425 |
+
#: classes/Utils.php:4911
|
2426 |
msgid "Website URL"
|
2427 |
msgstr ""
|
2428 |
|
2429 |
+
#: classes/Utils.php:4916
|
2430 |
msgid "Github URL"
|
2431 |
msgstr ""
|
2432 |
|
2433 |
+
#: classes/Utils.php:4921
|
2434 |
msgid "Facebook URL"
|
2435 |
msgstr ""
|
2436 |
|
2437 |
+
#: classes/Utils.php:4926
|
2438 |
msgid "Twitter URL"
|
2439 |
msgstr ""
|
2440 |
|
2441 |
+
#: classes/Utils.php:4931
|
2442 |
msgid "Linkedin URL"
|
2443 |
msgstr ""
|
2444 |
|
2445 |
+
#: classes/Utils.php:6197
|
2446 |
msgid "Not Taken"
|
2447 |
msgstr ""
|
2448 |
|
2449 |
+
#: classes/Utils.php:6195
|
2450 |
msgid "In Progress"
|
2451 |
msgstr ""
|
2452 |
|
2453 |
+
#: classes/Utils.php:6191
|
2454 |
msgid "Completed"
|
2455 |
msgstr ""
|
2456 |
|
2457 |
+
#: classes/Utils.php:6373, templates/dashboard/my-profile.php:34, templates/dashboard/registration.php:40, templates/dashboard/registration.php:43, views/pages/add_new_instructor.php:29, views/pages/add_new_instructor.php:35, templates/dashboard/instructor/registration.php:32, templates/dashboard/instructor/registration.php:35, templates/dashboard/settings/profile.php:95, templates/dashboard/settings/profile.php:97
|
2458 |
msgid "First Name"
|
2459 |
msgstr ""
|
2460 |
|
2461 |
+
#: classes/Utils.php:6374, templates/dashboard/my-profile.php:42, templates/dashboard/registration.php:50, templates/dashboard/registration.php:53, views/pages/add_new_instructor.php:43, views/pages/add_new_instructor.php:49, templates/dashboard/instructor/registration.php:42, templates/dashboard/instructor/registration.php:45, templates/dashboard/settings/profile.php:104, templates/dashboard/settings/profile.php:106
|
2462 |
msgid "Last Name"
|
2463 |
msgstr ""
|
2464 |
|
2465 |
+
#: classes/Utils.php:6375
|
2466 |
msgid "Profile Photo"
|
2467 |
msgstr ""
|
2468 |
|
2469 |
+
#: classes/Utils.php:6376
|
2470 |
msgid "Withdraw Method"
|
2471 |
msgstr ""
|
2472 |
|
2562 |
msgid "Requested By"
|
2563 |
msgstr ""
|
2564 |
|
2565 |
+
#: classes/Withdraw_Requests_List.php:103, templates/dashboard/purchase_history.php:22, templates/dashboard/withdraw.php:137, templates/dashboard/withdraw.php:181
|
2566 |
msgid "Amount"
|
2567 |
msgstr ""
|
2568 |
|
2569 |
+
#: classes/Withdraw_Requests_List.php:104, templates/dashboard/withdraw.php:179
|
2570 |
msgid "Withdrawal Method"
|
2571 |
msgstr ""
|
2572 |
|
2785 |
msgid "Biography"
|
2786 |
msgstr ""
|
2787 |
|
2788 |
+
#: templates/course-filter/filters.php:9, templates/dashboard/create-course.php:154, templates/loop/course-continue.php:19, templates/loop/course-in-cart.php:20, templates/loop/course-price-edd.php:20, templates/loop/course-price-woocommerce.php:19, templates/loop/course-price.php:19, views/metabox/course-add-edd-product-metabox.php:59, views/metabox/course-add-product-metabox.php:66, templates/single/course/wc-price-html.php:23
|
2789 |
msgid "Free"
|
2790 |
msgstr ""
|
2791 |
|
2869 |
msgid "Preview"
|
2870 |
msgstr ""
|
2871 |
|
2872 |
+
#: templates/dashboard/create-course.php:50, templates/dashboard/create-course.php:209
|
2873 |
msgid "Submit for Review"
|
2874 |
msgstr ""
|
2875 |
|
2876 |
+
#: templates/dashboard/create-course.php:46, templates/dashboard/create-course.php:207
|
2877 |
msgid "Publish Course"
|
2878 |
msgstr ""
|
2879 |
|
2881 |
msgid "Exit"
|
2882 |
msgstr ""
|
2883 |
|
2884 |
+
#: templates/dashboard/create-course.php:77
|
2885 |
msgid "Your course has been submitted to the admin. It will be published once it has been reviewed by the admins."
|
2886 |
msgstr ""
|
2887 |
|
2888 |
+
#: templates/dashboard/create-course.php:86, templates/dashboard/my-quiz-attempts.php:27, templates/dashboard/quiz-attempts.php:31, templates/dashboard/earning/statements.php:134, templates/single/quiz/previous-attempts.php:16
|
2889 |
msgid "Course Info"
|
2890 |
msgstr ""
|
2891 |
|
2892 |
+
#: templates/dashboard/create-course.php:92
|
2893 |
msgid "Course Title"
|
2894 |
msgstr ""
|
2895 |
|
2896 |
+
#: templates/dashboard/create-course.php:94
|
2897 |
msgid "ex. Learn photoshop CS6 from scratch"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
+
#: templates/dashboard/create-course.php:100, views/modal/question_form.php:113, templates/single/assignment/content.php:134, templates/single/course/course-content.php:26
|
2901 |
msgid "Description"
|
2902 |
msgstr ""
|
2903 |
|
2904 |
+
#: templates/dashboard/create-course.php:118
|
2905 |
msgid "Choose a category"
|
2906 |
msgstr ""
|
2907 |
|
2908 |
+
#: templates/dashboard/create-course.php:138
|
2909 |
msgid "Course Price"
|
2910 |
msgstr ""
|
2911 |
|
2912 |
+
#: templates/dashboard/create-course.php:147
|
2913 |
msgid "Set course price"
|
2914 |
msgstr ""
|
2915 |
|
2916 |
+
#: templates/dashboard/create-course.php:164
|
2917 |
msgid "Course Thumbnail"
|
2918 |
msgstr ""
|
2919 |
|
2920 |
+
#: templates/dashboard/create-course.php:187
|
2921 |
msgid "Important Guideline: %1$s 700x430 pixels %2$s %3$s File Support: %1$s jpg, .jpeg,. gif, or .png %2$s no text on the image."
|
2922 |
msgstr ""
|
2923 |
|
2924 |
+
#: templates/dashboard/create-course.php:189, views/metabox/video-metabox.php:106, views/modal/question_answer_edit_form.php:214, views/modal/question_answer_edit_form.php:177, views/modal/question_answer_edit_form.php:124, views/modal/question_answer_edit_form.php:34, views/modal/question_answer_form.php:230, views/modal/question_answer_form.php:201, views/modal/question_answer_form.php:157, views/modal/question_answer_form.php:48
|
2925 |
msgid "Upload Image"
|
2926 |
msgstr ""
|
2927 |
|
2928 |
+
#: templates/dashboard/create-course.php:205
|
2929 |
msgid "Save course as draft"
|
2930 |
msgstr ""
|
2931 |
|
2932 |
+
#: templates/dashboard/create-course.php:219
|
2933 |
msgid "Course Upload Tips"
|
2934 |
msgstr ""
|
2935 |
|
2936 |
+
#: templates/dashboard/create-course.php:221
|
2937 |
msgid "Set the Course Price option or make it free."
|
2938 |
msgstr ""
|
2939 |
|
2940 |
+
#: templates/dashboard/create-course.php:222
|
2941 |
msgid "Standard size for the course thumbnail is 700x430."
|
2942 |
msgstr ""
|
2943 |
|
2944 |
+
#: templates/dashboard/create-course.php:223
|
2945 |
msgid "Video section controls the course overview video."
|
2946 |
msgstr ""
|
2947 |
|
2948 |
+
#: templates/dashboard/create-course.php:224
|
2949 |
msgid "Course Builder is where you create & organize a course."
|
2950 |
msgstr ""
|
2951 |
|
2952 |
+
#: templates/dashboard/create-course.php:225
|
2953 |
msgid "Add Topics in the Course Builder section to create lessons, quizzes, and assignments."
|
2954 |
msgstr ""
|
2955 |
|
2956 |
+
#: templates/dashboard/create-course.php:226
|
2957 |
msgid "Prerequisites refers to the fundamental courses to complete before taking this particular course."
|
2958 |
msgstr ""
|
2959 |
|
2960 |
+
#: templates/dashboard/create-course.php:227
|
2961 |
msgid "Information from the Additional Data section shows up on the course single page."
|
2962 |
msgstr ""
|
2963 |
|
2993 |
msgid "Published"
|
2994 |
msgstr ""
|
2995 |
|
2996 |
+
#: templates/dashboard/earning.php:28, templates/dashboard/earning/report-date_range.php:29, templates/dashboard/earning/report-last_month.php:28, templates/dashboard/earning/report-last_week.php:32, templates/dashboard/earning/report-last_year.php:27, templates/dashboard/earning/report-this_month.php:29, templates/dashboard/earning/report-this_week.php:29, templates/dashboard/earning/report-this_year.php:27
|
2997 |
msgid "No Earning info available"
|
2998 |
msgstr ""
|
2999 |
|
3000 |
+
#: templates/dashboard/earning.php:48
|
3001 |
msgid "Reports"
|
3002 |
msgstr ""
|
3003 |
|
3004 |
+
#: templates/dashboard/earning.php:53, templates/dashboard/earning/report.php:36, templates/dashboard/earning/statements.php:32, templates/dashboard/earning/statements.php:116
|
3005 |
msgid "Statements"
|
3006 |
msgstr ""
|
3007 |
|
3008 |
+
#: templates/dashboard/earning.php:62
|
3009 |
msgid "My Balance"
|
3010 |
msgstr ""
|
3011 |
|
3012 |
+
#: templates/dashboard/earning.php:66
|
3013 |
msgid "All Time"
|
3014 |
msgstr ""
|
3015 |
|
3016 |
+
#: templates/dashboard/earning.php:68
|
3017 |
msgid "My Earnings"
|
3018 |
msgstr ""
|
3019 |
|
3020 |
+
#: templates/dashboard/earning.php:72, templates/dashboard/earning/report-date_range.php:41, templates/dashboard/earning/report-last_month.php:40, templates/dashboard/earning/report-last_week.php:44, templates/dashboard/earning/report-last_year.php:40, templates/dashboard/earning/report-this_month.php:42, templates/dashboard/earning/report-this_week.php:42, templates/dashboard/earning/report-this_year.php:38
|
3021 |
msgid "Based on course price"
|
3022 |
msgstr ""
|
3023 |
|
3024 |
+
#: templates/dashboard/earning.php:74, templates/dashboard/earning/report-date_range.php:43, templates/dashboard/earning/report-last_month.php:42, templates/dashboard/earning/report-last_week.php:46, templates/dashboard/earning/report-last_year.php:42, templates/dashboard/earning/report-this_month.php:44, templates/dashboard/earning/report-this_week.php:44, templates/dashboard/earning/report-this_year.php:40
|
3025 |
msgid "All time sales"
|
3026 |
msgstr ""
|
3027 |
|
3028 |
+
#: templates/dashboard/earning.php:78
|
3029 |
msgid "All of withdraw type excluding rejected."
|
3030 |
msgstr ""
|
3031 |
|
3032 |
+
#: templates/dashboard/earning.php:80
|
3033 |
msgid "All time withdrawals"
|
3034 |
msgstr ""
|
3035 |
|
3036 |
+
#: templates/dashboard/earning.php:86, templates/dashboard/earning/report-date_range.php:49, templates/dashboard/earning/report-last_month.php:48, templates/dashboard/earning/report-last_week.php:52, templates/dashboard/earning/report-last_year.php:48, templates/dashboard/earning/report-this_month.php:50, templates/dashboard/earning/report-this_week.php:50, templates/dashboard/earning/report-this_year.php:46
|
3037 |
msgid "Deducted Commissions"
|
3038 |
msgstr ""
|
3039 |
|
3040 |
+
#: templates/dashboard/earning.php:94
|
3041 |
msgid "Deducted Fees."
|
3042 |
msgstr ""
|
3043 |
|
3044 |
+
#: templates/dashboard/earning.php:102
|
3045 |
msgid "Earnings Chart for this month"
|
3046 |
msgstr ""
|
3047 |
|
3097 |
msgid "You are going to delete this course, it can't be undone"
|
3098 |
msgstr ""
|
3099 |
|
3100 |
+
#: templates/dashboard/my-courses.php:109, templates/dashboard/question-answer.php:72, templates/dashboard/withdraw.php:151, views/modal/add_quiz.php:55, views/modal/add_quiz.php:71, views/modal/add_quiz.php:88, views/modal/edit_quiz.php:67, views/modal/edit_quiz.php:129, views/modal/question_form.php:225, views/pages/announcements.php:256, views/pages/announcements.php:344, templates/dashboard/announcements/create.php:58, templates/dashboard/announcements/details.php:29, templates/dashboard/announcements/update.php:59, templates/single/lesson/sidebar_question_and_answer.php:115, templates/single/course/enrolled/question_and_answer.php:52, templates/single/course/enrolled/question_and_answer.php:136
|
3101 |
msgid "Cancel"
|
3102 |
msgstr ""
|
3103 |
|
3281 |
msgid "Selected Payment Method"
|
3282 |
msgstr ""
|
3283 |
|
3284 |
+
#: templates/dashboard/withdraw.php:152
|
3285 |
msgid "Submit Request"
|
3286 |
msgstr ""
|
3287 |
|
3288 |
+
#: templates/dashboard/withdraw.php:170
|
3289 |
msgid "Withdrawal History"
|
3290 |
msgstr ""
|
3291 |
|
3292 |
+
#: templates/dashboard/withdraw.php:260
|
3293 |
msgid "No withdrawal yet"
|
3294 |
msgstr ""
|
3295 |
|
3296 |
+
#: templates/dashboard/withdraw.php:180
|
3297 |
msgid "Requested On"
|
3298 |
msgstr ""
|
3299 |
|
4167 |
msgid "Manual Review"
|
4168 |
msgstr ""
|
4169 |
|
4170 |
+
#: views/pages/view_attempt.php:331, views/pages/view_attempt.php:324, templates/dashboard/my-quiz-attempts/attempts-details.php:119, templates/dashboard/my-quiz-attempts/attempts-details.php:379, templates/dashboard/my-quiz-attempts/attempts-details.php:374, templates/dashboard/quiz-attempts/quiz-reviews.php:107, templates/dashboard/quiz-attempts/quiz-reviews.php:393, templates/dashboard/quiz-attempts/quiz-reviews.php:388
|
4171 |
msgid "Incorrect"
|
4172 |
msgstr ""
|
4173 |
|
4174 |
+
#: views/pages/view_attempt.php:327, views/pages/view_attempt.php:311, templates/dashboard/my-quiz-attempts/attempts-details.php:118, templates/dashboard/my-quiz-attempts/attempts-details.php:370, templates/dashboard/quiz-attempts/quiz-reviews.php:106, templates/dashboard/quiz-attempts/quiz-reviews.php:384
|
4175 |
msgid "Correct"
|
4176 |
msgstr ""
|
4177 |
|
4178 |
+
#: views/pages/view_attempt.php:320, templates/dashboard/my-quiz-attempts/attempts-details.php:376, templates/dashboard/quiz-attempts/quiz-reviews.php:390
|
4179 |
msgid "Review Required"
|
4180 |
msgstr ""
|
4181 |
|
4182 |
+
#: views/pages/view_attempt.php:343, templates/dashboard/quiz-attempts/quiz-reviews.php:401
|
4183 |
msgid "Mark as In correct"
|
4184 |
msgstr ""
|
4185 |
|
4299 |
msgid "This Week"
|
4300 |
msgstr ""
|
4301 |
|
4302 |
+
#: templates/dashboard/earning/report-date_range.php:35, templates/dashboard/earning/report-last_month.php:34, templates/dashboard/earning/report-last_week.php:38, templates/dashboard/earning/report-last_year.php:34, templates/dashboard/earning/report-this_month.php:36, templates/dashboard/earning/report-this_week.php:36, templates/dashboard/earning/report-this_year.php:32
|
4303 |
msgid "All time"
|
4304 |
msgstr ""
|
4305 |
|
4306 |
+
#: templates/dashboard/earning/report-date_range.php:37, templates/dashboard/earning/report-last_month.php:36, templates/dashboard/earning/report-last_week.php:40, templates/dashboard/earning/report-last_year.php:36, templates/dashboard/earning/report-this_month.php:38, templates/dashboard/earning/report-this_week.php:38, templates/dashboard/earning/report-this_year.php:34
|
4307 |
msgid "My Earning"
|
4308 |
msgstr ""
|
4309 |
|
4310 |
+
#: templates/dashboard/earning/report-date_range.php:56, templates/dashboard/earning/report-date_range.php:58, templates/dashboard/earning/report-last_month.php:55, templates/dashboard/earning/report-last_month.php:57, templates/dashboard/earning/report-last_week.php:59, templates/dashboard/earning/report-last_week.php:61, templates/dashboard/earning/report-last_year.php:55, templates/dashboard/earning/report-last_year.php:57, templates/dashboard/earning/report-this_month.php:57, templates/dashboard/earning/report-this_month.php:59, templates/dashboard/earning/report-this_week.php:57, templates/dashboard/earning/report-this_week.php:59, templates/dashboard/earning/report-this_year.php:53, templates/dashboard/earning/report-this_year.php:55
|
4311 |
msgid "Deducted Fees"
|
4312 |
msgstr ""
|
4313 |
|
4314 |
+
#: templates/dashboard/earning/report-date_range.php:67, templates/dashboard/earning/report-last_week.php:74, templates/dashboard/earning/report-this_week.php:67
|
4315 |
msgid "Showing Result from %s to %s"
|
4316 |
msgstr ""
|
4317 |
|
4318 |
+
#: templates/dashboard/earning/report-date_range.php:74, templates/dashboard/earning/report-last_month.php:72, templates/dashboard/earning/report-last_week.php:81, templates/dashboard/earning/report-last_year.php:76, templates/dashboard/earning/report-this_month.php:77, templates/dashboard/earning/report-this_week.php:74, templates/dashboard/earning/report-this_year.php:74
|
4319 |
msgid "Sales statements for this period"
|
4320 |
msgstr ""
|
4321 |
|
4322 |
+
#: templates/dashboard/earning/report-last_month.php:65, templates/dashboard/earning/report-this_month.php:70
|
4323 |
msgid "Earning Data for the month of %s"
|
4324 |
msgstr ""
|
4325 |
|
4326 |
+
#: templates/dashboard/earning/report-last_year.php:69, templates/dashboard/earning/report-this_year.php:67
|
4327 |
msgid "Earning Data for the year of %s"
|
4328 |
msgstr ""
|
4329 |
|
4811 |
msgid "Please enroll This course first"
|
4812 |
msgstr ""
|
4813 |
|
4814 |
+
#: templates/single/lesson/required-enroll.php:30
|
4815 |
+
msgid "Course name : %s"
|
4816 |
+
msgstr ""
|
4817 |
+
|
4818 |
#: templates/single/lesson/sidebar_question_and_answer.php:132
|
4819 |
msgid "No questions yet"
|
4820 |
msgstr ""
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: lms, course, elearning, education, learning management system
|
|
5 |
Requires at least: 5.3
|
6 |
Tested up to: 5.6
|
7 |
Requires PHP: 7.0
|
8 |
-
Stable tag: 1.8.
|
9 |
License: GPLv3
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|
@@ -241,6 +241,20 @@ Tutor enables you to use any third party plugins without facing any compatibilit
|
|
241 |
|
242 |
== Changelog ==
|
243 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
= 1.8.1 - February 05, 2021 =
|
245 |
|
246 |
New: Course enrolment expiration
|
5 |
Requires at least: 5.3
|
6 |
Tested up to: 5.6
|
7 |
Requires PHP: 7.0
|
8 |
+
Stable tag: 1.8.2
|
9 |
License: GPLv3
|
10 |
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|
241 |
|
242 |
== Changelog ==
|
243 |
|
244 |
+
= 1.8.2 - February 15, 2021 =
|
245 |
+
|
246 |
+
New: Certificate link added to the course completion email notification
|
247 |
+
New: Settings added to enable/disable course enrollment expiration feature
|
248 |
+
Update: Zoom meeting input date format updated to dd/mm/yyyy to avoid internal errors
|
249 |
+
Update: If enrollment expiration is set to 0, you will see 'lifetime' on the frontend course page
|
250 |
+
Update: Security features enhanced in wpdb query & Quiz. Thanks Wordfence!
|
251 |
+
Update: Option added to enter decimal value in withdrawal request
|
252 |
+
Update: Code optimization in the frontend Earnings report
|
253 |
+
Fix: 404 console error due to min.map asset files
|
254 |
+
Fix: An active PHP session was detected issue
|
255 |
+
Fix: Division by 0 warning in Gradebook
|
256 |
+
Fix: Zoom meeting list pagination issue
|
257 |
+
|
258 |
= 1.8.1 - February 05, 2021 =
|
259 |
|
260 |
New: Course enrolment expiration
|
templates/dashboard/create-course.php
CHANGED
@@ -66,18 +66,16 @@ $can_publish_course = (bool) tutor_utils()->get_option('instructor_can_publish_c
|
|
66 |
<input type="hidden" name="course_ID" id="course_ID" value="<?php echo get_the_ID(); ?>">
|
67 |
<input type="hidden" name="post_ID" id="post_ID" value="<?php echo get_the_ID(); ?>">
|
68 |
|
69 |
-
|
70 |
<div class="tutor-dashboard-course-builder-wrap">
|
71 |
<!--since 1.8.0 alert message -->
|
72 |
<?php
|
73 |
$instructor_can_publish = tutils()->get_option('instructor_can_publish_course');
|
74 |
?>
|
75 |
<?php if(current_user_can('tutor_instructor') && !current_user_can('administrator')):?>
|
76 |
-
<?php if(isset($
|
77 |
<div class="tutor-alert tutor-alert-info">
|
78 |
<?php _e('Your course has been submitted to the admin. It will be published once it has been reviewed by the admins.','tutor');?>
|
79 |
</div>
|
80 |
-
<?php session_destroy();?>
|
81 |
<?php endif;?>
|
82 |
<?php endif;?>
|
83 |
<!--alert message end -->
|
66 |
<input type="hidden" name="course_ID" id="course_ID" value="<?php echo get_the_ID(); ?>">
|
67 |
<input type="hidden" name="post_ID" id="post_ID" value="<?php echo get_the_ID(); ?>">
|
68 |
|
|
|
69 |
<div class="tutor-dashboard-course-builder-wrap">
|
70 |
<!--since 1.8.0 alert message -->
|
71 |
<?php
|
72 |
$instructor_can_publish = tutils()->get_option('instructor_can_publish_course');
|
73 |
?>
|
74 |
<?php if(current_user_can('tutor_instructor') && !current_user_can('administrator')):?>
|
75 |
+
<?php if(isset($_COOKIE['tutor_course_updated']) && !$instructor_can_publish):?>
|
76 |
<div class="tutor-alert tutor-alert-info">
|
77 |
<?php _e('Your course has been submitted to the admin. It will be published once it has been reviewed by the admins.','tutor');?>
|
78 |
</div>
|
|
|
79 |
<?php endif;?>
|
80 |
<?php endif;?>
|
81 |
<!--alert message end -->
|
templates/dashboard/earning.php
CHANGED
@@ -13,17 +13,7 @@
|
|
13 |
|
14 |
global $wpdb;
|
15 |
|
16 |
-
$instructor_id = get_current_user_id();
|
17 |
-
|
18 |
-
$earning_sum = tutor_utils()->get_earning_sum();
|
19 |
-
if ( ! $earning_sum){
|
20 |
-
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
21 |
-
return;
|
22 |
-
}
|
23 |
-
|
24 |
$user_id = get_current_user_id();
|
25 |
-
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
26 |
-
$complete_status = "'".implode("','", $complete_status)."'";
|
27 |
|
28 |
/**
|
29 |
* Getting the last week
|
@@ -31,41 +21,12 @@ $complete_status = "'".implode("','", $complete_status)."'";
|
|
31 |
$start_date = date("Y-m-01");
|
32 |
$end_date = date("Y-m-t");
|
33 |
|
34 |
-
|
35 |
-
|
36 |
-
*/
|
37 |
-
$begin = new DateTime($start_date);
|
38 |
-
$end = new DateTime($end_date.' + 1 day');
|
39 |
-
$interval = DateInterval::createFromDateString('1 day');
|
40 |
-
$period = new DatePeriod($begin, $interval, $end);
|
41 |
-
|
42 |
-
$datesPeriod = array();
|
43 |
-
foreach ($period as $dt) {
|
44 |
-
$datesPeriod[$dt->format("Y-m-d")] = 0;
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* Query This Month
|
49 |
-
*/
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
from {$wpdb->prefix}tutor_earnings
|
55 |
-
WHERE user_id = {$user_id} AND order_status IN({$complete_status})
|
56 |
-
AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
|
57 |
-
GROUP BY date_format
|
58 |
-
ORDER BY created_at ASC ;");
|
59 |
-
|
60 |
-
$total_earning = wp_list_pluck($salesQuery, 'total_earning');
|
61 |
-
$queried_date = wp_list_pluck($salesQuery, 'date_format');
|
62 |
-
$dateWiseSales = array_combine($queried_date, $total_earning);
|
63 |
-
|
64 |
-
$chartData = array_merge($datesPeriod, $dateWiseSales);
|
65 |
-
foreach ($chartData as $key => $salesCount){
|
66 |
-
unset($chartData[$key]);
|
67 |
-
$formatDate = date('d M', strtotime($key));
|
68 |
-
$chartData[$formatDate] = $salesCount;
|
69 |
}
|
70 |
|
71 |
?>
|
13 |
|
14 |
global $wpdb;
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
$user_id = get_current_user_id();
|
|
|
|
|
17 |
|
18 |
/**
|
19 |
* Getting the last week
|
21 |
$start_date = date("Y-m-01");
|
22 |
$end_date = date("Y-m-t");
|
23 |
|
24 |
+
$stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
|
25 |
+
extract($stats);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
+
if ( ! $earning_sum){
|
28 |
+
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
29 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
}
|
31 |
|
32 |
?>
|
templates/dashboard/earning/report-date_range.php
CHANGED
@@ -22,55 +22,13 @@ $user_id = get_current_user_id();
|
|
22 |
$start_date = sanitize_text_field(tutor_utils()->avalue_dot('date_range_from', $_GET)).' 00:00:00';
|
23 |
$end_date = sanitize_text_field(tutor_utils()->avalue_dot('date_range_to', $_GET)).' 23:59:59';
|
24 |
|
25 |
-
$
|
|
|
|
|
26 |
if ( ! $earning_sum){
|
27 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
28 |
return;
|
29 |
}
|
30 |
-
|
31 |
-
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
32 |
-
$statuses = $complete_status;
|
33 |
-
$complete_status = "'".implode("','", $complete_status)."'";
|
34 |
-
|
35 |
-
/**
|
36 |
-
* Format Date Name
|
37 |
-
*/
|
38 |
-
$begin = new DateTime($start_date);
|
39 |
-
$end = new DateTime($end_date);
|
40 |
-
$interval = DateInterval::createFromDateString('1 day');
|
41 |
-
$period = new DatePeriod($begin, $interval, $end);
|
42 |
-
|
43 |
-
$datesPeriod = array();
|
44 |
-
foreach ($period as $dt) {
|
45 |
-
$datesPeriod[$dt->format("Y-m-d")] = 0;
|
46 |
-
}
|
47 |
-
|
48 |
-
/**
|
49 |
-
* Query This Month
|
50 |
-
*/
|
51 |
-
|
52 |
-
$salesQuery = $wpdb->get_results( "
|
53 |
-
SELECT SUM(instructor_amount) as total_earning,
|
54 |
-
DATE(created_at) as date_format
|
55 |
-
from {$wpdb->prefix}tutor_earnings
|
56 |
-
WHERE user_id = {$user_id} AND order_status IN({$complete_status})
|
57 |
-
AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
|
58 |
-
GROUP BY date_format
|
59 |
-
ORDER BY created_at ASC ;");
|
60 |
-
|
61 |
-
$total_earning = wp_list_pluck($salesQuery, 'total_earning');
|
62 |
-
$queried_date = wp_list_pluck($salesQuery, 'date_format');
|
63 |
-
$dateWiseSales = array_combine($queried_date, $total_earning);
|
64 |
-
|
65 |
-
$chartData = array_merge($datesPeriod, $dateWiseSales);
|
66 |
-
foreach ($chartData as $key => $salesCount){
|
67 |
-
unset($chartData[$key]);
|
68 |
-
$formatDate = date('d M', strtotime($key));
|
69 |
-
$chartData[$formatDate] = $salesCount;
|
70 |
-
}
|
71 |
-
|
72 |
-
$statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
|
73 |
-
|
74 |
?>
|
75 |
|
76 |
<div class="tutor-dashboard-info-cards">
|
22 |
$start_date = sanitize_text_field(tutor_utils()->avalue_dot('date_range_from', $_GET)).' 00:00:00';
|
23 |
$end_date = sanitize_text_field(tutor_utils()->avalue_dot('date_range_to', $_GET)).' 23:59:59';
|
24 |
|
25 |
+
$stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
|
26 |
+
extract($stats);
|
27 |
+
|
28 |
if ( ! $earning_sum){
|
29 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
30 |
return;
|
31 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
?>
|
33 |
|
34 |
<div class="tutor-dashboard-info-cards">
|
templates/dashboard/earning/report-last_month.php
CHANGED
@@ -21,54 +21,13 @@ $user_id = get_current_user_id();
|
|
21 |
$start_date = date('Y-m-01 00:00:00', strtotime('last day of last month'));
|
22 |
$end_date = date("Y-m-t 23:59:59", strtotime($start_date));
|
23 |
|
24 |
-
$
|
|
|
|
|
25 |
if ( ! $earning_sum){
|
26 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
27 |
return;
|
28 |
}
|
29 |
-
|
30 |
-
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
31 |
-
$statuses = $complete_status;
|
32 |
-
$complete_status = "'".implode("','", $complete_status)."'";
|
33 |
-
|
34 |
-
/**
|
35 |
-
* Format Date Name
|
36 |
-
*/
|
37 |
-
$begin = new DateTime($start_date);
|
38 |
-
$end = new DateTime($end_date);
|
39 |
-
$interval = DateInterval::createFromDateString('1 day');
|
40 |
-
$period = new DatePeriod($begin, $interval, $end);
|
41 |
-
|
42 |
-
$datesPeriod = array();
|
43 |
-
foreach ($period as $dt) {
|
44 |
-
$datesPeriod[$dt->format("Y-m-d")] = 0;
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* Query This Month
|
49 |
-
*/
|
50 |
-
|
51 |
-
$salesQuery = $wpdb->get_results( "
|
52 |
-
SELECT SUM(instructor_amount) as total_earning,
|
53 |
-
DATE(created_at) as date_format
|
54 |
-
from {$wpdb->prefix}tutor_earnings
|
55 |
-
WHERE user_id = {$user_id} AND order_status IN({$complete_status})
|
56 |
-
AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
|
57 |
-
GROUP BY date_format
|
58 |
-
ORDER BY created_at ASC ;");
|
59 |
-
|
60 |
-
$total_earning = wp_list_pluck($salesQuery, 'total_earning');
|
61 |
-
$queried_date = wp_list_pluck($salesQuery, 'date_format');
|
62 |
-
$dateWiseSales = array_combine($queried_date, $total_earning);
|
63 |
-
|
64 |
-
$chartData = array_merge($datesPeriod, $dateWiseSales);
|
65 |
-
foreach ($chartData as $key => $salesCount){
|
66 |
-
unset($chartData[$key]);
|
67 |
-
$formatDate = date('d M', strtotime($key));
|
68 |
-
$chartData[$formatDate] = $salesCount;
|
69 |
-
}
|
70 |
-
$statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
|
71 |
-
|
72 |
?>
|
73 |
|
74 |
<div class="tutor-dashboard-info-cards">
|
21 |
$start_date = date('Y-m-01 00:00:00', strtotime('last day of last month'));
|
22 |
$end_date = date("Y-m-t 23:59:59", strtotime($start_date));
|
23 |
|
24 |
+
$stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
|
25 |
+
extract($stats);
|
26 |
+
|
27 |
if ( ! $earning_sum){
|
28 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
29 |
return;
|
30 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
?>
|
32 |
|
33 |
<div class="tutor-dashboard-info-cards">
|
templates/dashboard/earning/report-last_week.php
CHANGED
@@ -25,56 +25,13 @@ $end_date = strtotime("next saturday",$start_date);
|
|
25 |
$start_date = date("Y-m-d 00:00:00",$start_date);
|
26 |
$end_date = date("Y-m-d 23:59:59",$end_date);
|
27 |
|
|
|
|
|
28 |
|
29 |
-
$earning_sum = tutor_utils()->get_earning_sum($user_id, compact('start_date', 'end_date'));
|
30 |
if ( ! $earning_sum){
|
31 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
32 |
return;
|
33 |
}
|
34 |
-
|
35 |
-
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
36 |
-
$statuses = $complete_status;
|
37 |
-
$complete_status = "'".implode("','", $complete_status)."'";
|
38 |
-
|
39 |
-
/**
|
40 |
-
* Format Date Name
|
41 |
-
*/
|
42 |
-
$begin = new DateTime($start_date);
|
43 |
-
$end = new DateTime($end_date);
|
44 |
-
$interval = DateInterval::createFromDateString('1 day');
|
45 |
-
$period = new DatePeriod($begin, $interval, $end);
|
46 |
-
|
47 |
-
$datesPeriod = array();
|
48 |
-
foreach ($period as $dt) {
|
49 |
-
$datesPeriod[$dt->format("Y-m-d")] = 0;
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* Query This Month
|
54 |
-
*/
|
55 |
-
|
56 |
-
$salesQuery = $wpdb->get_results( "
|
57 |
-
SELECT SUM(instructor_amount) as total_earning,
|
58 |
-
DATE(created_at) as date_format
|
59 |
-
from {$wpdb->prefix}tutor_earnings
|
60 |
-
WHERE user_id = {$user_id} AND order_status IN({$complete_status})
|
61 |
-
AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
|
62 |
-
GROUP BY date_format
|
63 |
-
ORDER BY created_at ASC ;");
|
64 |
-
|
65 |
-
$total_earning = wp_list_pluck($salesQuery, 'total_earning');
|
66 |
-
$queried_date = wp_list_pluck($salesQuery, 'date_format');
|
67 |
-
$dateWiseSales = array_combine($queried_date, $total_earning);
|
68 |
-
|
69 |
-
$chartData = array_merge($datesPeriod, $dateWiseSales);
|
70 |
-
foreach ($chartData as $key => $salesCount){
|
71 |
-
unset($chartData[$key]);
|
72 |
-
$formatDate = date('d M', strtotime($key));
|
73 |
-
$chartData[$formatDate] = $salesCount;
|
74 |
-
}
|
75 |
-
|
76 |
-
$statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
|
77 |
-
|
78 |
?>
|
79 |
|
80 |
<div class="tutor-dashboard-info-cards">
|
25 |
$start_date = date("Y-m-d 00:00:00",$start_date);
|
26 |
$end_date = date("Y-m-d 23:59:59",$end_date);
|
27 |
|
28 |
+
$stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
|
29 |
+
extract($stats);
|
30 |
|
|
|
31 |
if ( ! $earning_sum){
|
32 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
33 |
return;
|
34 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
?>
|
36 |
|
37 |
<div class="tutor-dashboard-info-cards">
|
templates/dashboard/earning/report-last_year.php
CHANGED
@@ -19,48 +19,15 @@ $user_id = get_current_user_id();
|
|
19 |
* Getting the Last Month
|
20 |
*/
|
21 |
$year = date('Y', strtotime('-1 year'));
|
22 |
-
$dataFor = 'yearly';
|
23 |
|
24 |
-
$
|
|
|
25 |
|
26 |
if ( ! $earning_sum){
|
27 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
28 |
return;
|
29 |
}
|
30 |
|
31 |
-
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
32 |
-
$statuses = $complete_status;
|
33 |
-
$complete_status = "'".implode("','", $complete_status)."'";
|
34 |
-
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Query This Month
|
38 |
-
*/
|
39 |
-
|
40 |
-
$salesQuery = $wpdb->get_results( "
|
41 |
-
SELECT SUM(instructor_amount) as total_earning,
|
42 |
-
MONTHNAME(created_at) as month_name
|
43 |
-
from {$wpdb->prefix}tutor_earnings
|
44 |
-
WHERE user_id = {$user_id} AND order_status IN({$complete_status})
|
45 |
-
AND YEAR(created_at) = {$year}
|
46 |
-
GROUP BY MONTH (created_at)
|
47 |
-
ORDER BY MONTH(created_at) ASC ;");
|
48 |
-
|
49 |
-
$total_earning = wp_list_pluck($salesQuery, 'total_earning');
|
50 |
-
$months = wp_list_pluck($salesQuery, 'month_name');
|
51 |
-
$monthWiseSales = array_combine($months, $total_earning);
|
52 |
-
|
53 |
-
/**
|
54 |
-
* Format yearly
|
55 |
-
*/
|
56 |
-
$emptyMonths = array();
|
57 |
-
for ($m=1; $m<=12; $m++) {
|
58 |
-
$emptyMonths[date('F', mktime(0,0,0,$m, 1, date('Y')))] = 0;
|
59 |
-
}
|
60 |
-
$chartData = array_merge($emptyMonths, $monthWiseSales);
|
61 |
-
|
62 |
-
$statements = tutor_utils()->get_earning_statements($user_id, compact('year', 'dataFor', 'statuses'));
|
63 |
-
|
64 |
?>
|
65 |
|
66 |
<div class="tutor-dashboard-info-cards">
|
19 |
* Getting the Last Month
|
20 |
*/
|
21 |
$year = date('Y', strtotime('-1 year'));
|
|
|
22 |
|
23 |
+
$stats = tutils()->get_earning_chart_yearly( $user_id, $year );
|
24 |
+
extract($stats);
|
25 |
|
26 |
if ( ! $earning_sum){
|
27 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
28 |
return;
|
29 |
}
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
?>
|
32 |
|
33 |
<div class="tutor-dashboard-info-cards">
|
templates/dashboard/earning/report-this_month.php
CHANGED
@@ -22,55 +22,14 @@ $start_date = date("Y-m-01 00:00:00");
|
|
22 |
$end_date = date("Y-m-t 23:59:59");
|
23 |
|
24 |
|
25 |
-
$
|
|
|
|
|
26 |
if ( ! $earning_sum){
|
27 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
28 |
return;
|
29 |
}
|
30 |
|
31 |
-
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
32 |
-
$statuses = $complete_status;
|
33 |
-
$complete_status = "'".implode("','", $complete_status)."'";
|
34 |
-
|
35 |
-
/**
|
36 |
-
* Format Date Name
|
37 |
-
*/
|
38 |
-
$begin = new DateTime($start_date);
|
39 |
-
$end = new DateTime($end_date);
|
40 |
-
$interval = DateInterval::createFromDateString('1 day');
|
41 |
-
$period = new DatePeriod($begin, $interval, $end);
|
42 |
-
|
43 |
-
$datesPeriod = array();
|
44 |
-
foreach ($period as $dt) {
|
45 |
-
$datesPeriod[$dt->format("Y-m-d")] = 0;
|
46 |
-
}
|
47 |
-
|
48 |
-
/**
|
49 |
-
* Query This Month
|
50 |
-
*/
|
51 |
-
|
52 |
-
$salesQuery = $wpdb->get_results( "
|
53 |
-
SELECT SUM(instructor_amount) as total_earning,
|
54 |
-
DATE(created_at) as date_format
|
55 |
-
from {$wpdb->prefix}tutor_earnings
|
56 |
-
WHERE user_id = {$user_id} AND order_status IN({$complete_status})
|
57 |
-
AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
|
58 |
-
GROUP BY date_format
|
59 |
-
ORDER BY created_at ASC ;");
|
60 |
-
|
61 |
-
$total_earning = wp_list_pluck($salesQuery, 'total_earning');
|
62 |
-
$queried_date = wp_list_pluck($salesQuery, 'date_format');
|
63 |
-
$dateWiseSales = array_combine($queried_date, $total_earning);
|
64 |
-
|
65 |
-
$chartData = array_merge($datesPeriod, $dateWiseSales);
|
66 |
-
foreach ($chartData as $key => $salesCount){
|
67 |
-
unset($chartData[$key]);
|
68 |
-
$formatDate = date('d M', strtotime($key));
|
69 |
-
$chartData[$formatDate] = $salesCount;
|
70 |
-
}
|
71 |
-
|
72 |
-
$statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
|
73 |
-
|
74 |
?>
|
75 |
|
76 |
<div class="tutor-dashboard-info-cards">
|
22 |
$end_date = date("Y-m-t 23:59:59");
|
23 |
|
24 |
|
25 |
+
$stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
|
26 |
+
extract($stats);
|
27 |
+
|
28 |
if ( ! $earning_sum){
|
29 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
30 |
return;
|
31 |
}
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
?>
|
34 |
|
35 |
<div class="tutor-dashboard-info-cards">
|
templates/dashboard/earning/report-this_week.php
CHANGED
@@ -22,55 +22,13 @@ $user_id = get_current_user_id();
|
|
22 |
$start_date = date("Y-m-d 00:00:00", strtotime("last sunday midnight"));
|
23 |
$end_date = date("Y-m-d 23:59:59", strtotime("next saturday"));
|
24 |
|
|
|
|
|
25 |
|
26 |
-
$earning_sum = tutor_utils()->get_earning_sum($user_id, compact('start_date', 'end_date'));
|
27 |
if ( ! $earning_sum){
|
28 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
29 |
return;
|
30 |
}
|
31 |
-
|
32 |
-
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
33 |
-
$statuses = $complete_status;
|
34 |
-
$complete_status = "'".implode("','", $complete_status)."'";
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Format Date Name
|
38 |
-
*/
|
39 |
-
$begin = new DateTime($start_date);
|
40 |
-
$end = new DateTime($end_date);
|
41 |
-
$interval = DateInterval::createFromDateString('1 day');
|
42 |
-
$period = new DatePeriod($begin, $interval, $end);
|
43 |
-
|
44 |
-
$datesPeriod = array();
|
45 |
-
foreach ($period as $dt) {
|
46 |
-
$datesPeriod[$dt->format("Y-m-d")] = 0;
|
47 |
-
}
|
48 |
-
|
49 |
-
/**
|
50 |
-
* Query This Month
|
51 |
-
*/
|
52 |
-
|
53 |
-
$salesQuery = $wpdb->get_results( "
|
54 |
-
SELECT SUM(instructor_amount) as total_earning,
|
55 |
-
DATE(created_at) as date_format
|
56 |
-
from {$wpdb->prefix}tutor_earnings
|
57 |
-
WHERE user_id = {$user_id} AND order_status IN({$complete_status})
|
58 |
-
AND (created_at BETWEEN '{$start_date}' AND '{$end_date}')
|
59 |
-
GROUP BY date_format
|
60 |
-
ORDER BY created_at ASC ;");
|
61 |
-
|
62 |
-
$total_earning = wp_list_pluck($salesQuery, 'total_earning');
|
63 |
-
$queried_date = wp_list_pluck($salesQuery, 'date_format');
|
64 |
-
$dateWiseSales = array_combine($queried_date, $total_earning);
|
65 |
-
|
66 |
-
$chartData = array_merge($datesPeriod, $dateWiseSales);
|
67 |
-
foreach ($chartData as $key => $salesCount){
|
68 |
-
unset($chartData[$key]);
|
69 |
-
$formatDate = date('d M', strtotime($key));
|
70 |
-
$chartData[$formatDate] = $salesCount;
|
71 |
-
}
|
72 |
-
|
73 |
-
$statements = tutor_utils()->get_earning_statements($user_id, compact('start_date', 'end_date', 'statuses'));
|
74 |
?>
|
75 |
|
76 |
|
22 |
$start_date = date("Y-m-d 00:00:00", strtotime("last sunday midnight"));
|
23 |
$end_date = date("Y-m-d 23:59:59", strtotime("next saturday"));
|
24 |
|
25 |
+
$stats = tutils()->get_earning_chart( $user_id, $start_date, $end_date );
|
26 |
+
extract($stats);
|
27 |
|
|
|
28 |
if ( ! $earning_sum){
|
29 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
30 |
return;
|
31 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
?>
|
33 |
|
34 |
|
templates/dashboard/earning/report-this_year.php
CHANGED
@@ -19,52 +19,15 @@ $user_id = get_current_user_id();
|
|
19 |
* Getting the Last Month
|
20 |
*/
|
21 |
$year = date('Y');
|
22 |
-
$dataFor = 'yearly';
|
23 |
-
|
24 |
-
$earning_sum = tutor_utils()->get_earning_sum($user_id, compact('year', 'dataFor'));
|
25 |
|
|
|
|
|
26 |
|
27 |
if ( ! $earning_sum){
|
28 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
29 |
return;
|
30 |
}
|
31 |
-
|
32 |
-
$complete_status = tutor_utils()->get_earnings_completed_statuses();
|
33 |
-
$statuses = $complete_status;
|
34 |
-
$complete_status = "'".implode("','", $complete_status)."'";
|
35 |
-
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Query This Month
|
39 |
-
*/
|
40 |
-
|
41 |
-
$salesQuery = $wpdb->get_results( "
|
42 |
-
SELECT SUM(instructor_amount) as total_earning,
|
43 |
-
MONTHNAME(created_at) as month_name
|
44 |
-
from {$wpdb->prefix}tutor_earnings
|
45 |
-
WHERE user_id = {$user_id} AND order_status IN({$complete_status})
|
46 |
-
AND YEAR(created_at) = {$year}
|
47 |
-
GROUP BY MONTH (created_at)
|
48 |
-
ORDER BY MONTH(created_at) ASC ;");
|
49 |
-
|
50 |
-
$total_earning = wp_list_pluck($salesQuery, 'total_earning');
|
51 |
-
$months = wp_list_pluck($salesQuery, 'month_name');
|
52 |
-
$monthWiseSales = array_combine($months, $total_earning);
|
53 |
-
|
54 |
-
/**
|
55 |
-
* Format yearly
|
56 |
-
*/
|
57 |
-
$emptyMonths = array();
|
58 |
-
for ($m=1; $m<=12; $m++) {
|
59 |
-
$emptyMonths[date('F', mktime(0,0,0,$m, 1, date('Y')))] = 0;
|
60 |
-
}
|
61 |
-
$chartData = array_merge($emptyMonths, $monthWiseSales);
|
62 |
-
|
63 |
-
$statements = tutor_utils()->get_earning_statements($user_id, compact('year', 'dataFor', 'statuses'));
|
64 |
-
|
65 |
-
|
66 |
?>
|
67 |
-
|
68 |
<div class="tutor-dashboard-info-cards">
|
69 |
<div class="tutor-dashboard-info-card" title="<?php _e('All time', 'tutor'); ?>">
|
70 |
<p>
|
19 |
* Getting the Last Month
|
20 |
*/
|
21 |
$year = date('Y');
|
|
|
|
|
|
|
22 |
|
23 |
+
$stats = tutils()->get_earning_chart_yearly( $user_id, $year );
|
24 |
+
extract($stats);
|
25 |
|
26 |
if ( ! $earning_sum){
|
27 |
echo '<p>'.__('No Earning info available', 'tutor' ).'</p>';
|
28 |
return;
|
29 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
?>
|
|
|
31 |
<div class="tutor-dashboard-info-cards">
|
32 |
<div class="tutor-dashboard-info-card" title="<?php _e('All time', 'tutor'); ?>">
|
33 |
<p>
|
templates/dashboard/my-quiz-attempts/attempts-details.php
CHANGED
@@ -330,27 +330,33 @@ $answers = tutor_utils()->get_quiz_answers_by_attempt_id($attempt_id);
|
|
330 |
if (($answer->question_type != 'open_ended' && $answer->question_type != 'short_answer')) {
|
331 |
global $wpdb;
|
332 |
if ( $answer->question_type === 'true_false' ) {
|
333 |
-
$correct_answer = $wpdb->get_var( "SELECT answer_title FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
334 |
echo $correct_answer;
|
|
|
335 |
} elseif ( $answer->question_type === 'single_choice' ) {
|
336 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
337 |
show_correct_answer($correct_answer);
|
|
|
338 |
} elseif ( $answer->question_type === 'multiple_choice' ) {
|
339 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
340 |
show_correct_answer($correct_answer);
|
|
|
341 |
} elseif ( $answer->question_type === 'fill_in_the_blank' ) {
|
342 |
-
$correct_answer = $wpdb->get_var( "SELECT answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
343 |
if($correct_answer){
|
344 |
echo implode(', ', explode('|', stripslashes($correct_answer)));
|
345 |
}
|
|
|
346 |
} elseif ( $answer->question_type === 'ordering' ) {
|
347 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
348 |
show_correct_answer($correct_answer);
|
|
|
349 |
} elseif( $answer->question_type === 'matching' ){
|
350 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_two_gap_match, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
351 |
show_correct_answer($correct_answer);
|
|
|
352 |
} elseif( $answer->question_type === 'image_matching' ) {
|
353 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
354 |
show_correct_answer($correct_answer);
|
355 |
}
|
356 |
}
|
330 |
if (($answer->question_type != 'open_ended' && $answer->question_type != 'short_answer')) {
|
331 |
global $wpdb;
|
332 |
if ( $answer->question_type === 'true_false' ) {
|
333 |
+
$correct_answer = $wpdb->get_var( $wpdb->prepare( "SELECT answer_title FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1", $answer->question_id ) );
|
334 |
echo $correct_answer;
|
335 |
+
|
336 |
} elseif ( $answer->question_type === 'single_choice' ) {
|
337 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1", $answer->question_id ) );
|
338 |
show_correct_answer($correct_answer);
|
339 |
+
|
340 |
} elseif ( $answer->question_type === 'multiple_choice' ) {
|
341 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1 ;", $answer->question_id ) );
|
342 |
show_correct_answer($correct_answer);
|
343 |
+
|
344 |
} elseif ( $answer->question_type === 'fill_in_the_blank' ) {
|
345 |
+
$correct_answer = $wpdb->get_var( $wpdb->prepare( "SELECT answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d", $answer->question_id ) );
|
346 |
if($correct_answer){
|
347 |
echo implode(', ', explode('|', stripslashes($correct_answer)));
|
348 |
}
|
349 |
+
|
350 |
} elseif ( $answer->question_type === 'ordering' ) {
|
351 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
|
352 |
show_correct_answer($correct_answer);
|
353 |
+
|
354 |
} elseif( $answer->question_type === 'matching' ){
|
355 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_two_gap_match, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
|
356 |
show_correct_answer($correct_answer);
|
357 |
+
|
358 |
} elseif( $answer->question_type === 'image_matching' ) {
|
359 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
|
360 |
show_correct_answer($correct_answer);
|
361 |
}
|
362 |
}
|
templates/dashboard/quiz-attempts/quiz-reviews.php
CHANGED
@@ -345,27 +345,33 @@ $attempt_data = tutor_utils()->get_attempt($attempt_id);
|
|
345 |
if (($answer->question_type != 'open_ended' && $answer->question_type != 'short_answer')) {
|
346 |
global $wpdb;
|
347 |
if ( $answer->question_type === 'true_false' ) {
|
348 |
-
$correct_answer = $wpdb->get_var( "SELECT answer_title FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
349 |
echo $correct_answer;
|
|
|
350 |
} elseif ( $answer->question_type === 'single_choice' ) {
|
351 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
352 |
show_correct_answer($correct_answer);
|
|
|
353 |
} elseif ( $answer->question_type === 'multiple_choice' ) {
|
354 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
355 |
show_correct_answer($correct_answer);
|
|
|
356 |
} elseif ( $answer->question_type === 'fill_in_the_blank' ) {
|
357 |
-
$correct_answer = $wpdb->get_var( "SELECT answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
358 |
if($correct_answer){
|
359 |
echo implode(', ', explode('|', stripslashes($correct_answer)));
|
360 |
}
|
|
|
361 |
} elseif ( $answer->question_type === 'ordering' ) {
|
362 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
363 |
show_correct_answer($correct_answer);
|
|
|
364 |
} elseif( $answer->question_type === 'matching' ){
|
365 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_two_gap_match, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
366 |
show_correct_answer($correct_answer);
|
|
|
367 |
} elseif( $answer->question_type === 'image_matching' ) {
|
368 |
-
$correct_answer = $wpdb->get_results( "SELECT answer_title, image_id, answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id =
|
369 |
show_correct_answer($correct_answer);
|
370 |
}
|
371 |
}
|
345 |
if (($answer->question_type != 'open_ended' && $answer->question_type != 'short_answer')) {
|
346 |
global $wpdb;
|
347 |
if ( $answer->question_type === 'true_false' ) {
|
348 |
+
$correct_answer = $wpdb->get_var( $wpdb->prepare( "SELECT answer_title FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1" , $answer->question_id ) );
|
349 |
echo $correct_answer;
|
350 |
+
|
351 |
} elseif ( $answer->question_type === 'single_choice' ) {
|
352 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1", $answer->question_id ) );
|
353 |
show_correct_answer($correct_answer);
|
354 |
+
|
355 |
} elseif ( $answer->question_type === 'multiple_choice' ) {
|
356 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d AND is_correct = 1 ;", $answer->question_id ) );
|
357 |
show_correct_answer($correct_answer);
|
358 |
+
|
359 |
} elseif ( $answer->question_type === 'fill_in_the_blank' ) {
|
360 |
+
$correct_answer = $wpdb->get_var( $wpdb->prepare( "SELECT answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d", $answer->question_id ) );
|
361 |
if($correct_answer){
|
362 |
echo implode(', ', explode('|', stripslashes($correct_answer)));
|
363 |
}
|
364 |
+
|
365 |
} elseif ( $answer->question_type === 'ordering' ) {
|
366 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
|
367 |
show_correct_answer($correct_answer);
|
368 |
+
|
369 |
} elseif( $answer->question_type === 'matching' ){
|
370 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_two_gap_match, answer_view_format FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
|
371 |
show_correct_answer($correct_answer);
|
372 |
+
|
373 |
} elseif( $answer->question_type === 'image_matching' ) {
|
374 |
+
$correct_answer = $wpdb->get_results( $wpdb->prepare( "SELECT answer_title, image_id, answer_two_gap_match FROM {$wpdb->prefix}tutor_quiz_question_answers WHERE belongs_question_id = %d ORDER BY answer_order ASC;", $answer->question_id ) );
|
375 |
show_correct_answer($correct_answer);
|
376 |
}
|
377 |
}
|
templates/dashboard/withdraw.php
CHANGED
@@ -121,6 +121,14 @@ else if(function_exists('edd_currency_symbol')){
|
|
121 |
</table>
|
122 |
</div>
|
123 |
<div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
<form id="tutor-earning-withdraw-form" action="" method="post">
|
125 |
<?php wp_nonce_field(tutor()->nonce_action, tutor()->nonce); ?>
|
126 |
<input type="hidden" value="tutor_make_an_withdraw" name="action" />
|
@@ -131,7 +139,7 @@ else if(function_exists('edd_currency_symbol')){
|
|
131 |
<span>
|
132 |
<span><?php echo $currency_symbol; ?></span>
|
133 |
</span>
|
134 |
-
<input type="number" min="
|
135 |
</div>
|
136 |
<div class="inline-image-text">
|
137 |
<img src="<?php echo $image_base; ?>info-icon-question.svg" />
|
121 |
</table>
|
122 |
</div>
|
123 |
<div>
|
124 |
+
<?php
|
125 |
+
/**
|
126 |
+
* @since 1.8.1
|
127 |
+
* set min value for withdraw input field as per settings
|
128 |
+
* field req step .01
|
129 |
+
*/
|
130 |
+
|
131 |
+
?>
|
132 |
<form id="tutor-earning-withdraw-form" action="" method="post">
|
133 |
<?php wp_nonce_field(tutor()->nonce_action, tutor()->nonce); ?>
|
134 |
<input type="hidden" value="tutor_make_an_withdraw" name="action" />
|
139 |
<span>
|
140 |
<span><?php echo $currency_symbol; ?></span>
|
141 |
</span>
|
142 |
+
<input type="number" min="<?php echo esc_attr($min_withdraw); ?>" name="tutor_withdraw_amount" step=".01" required>
|
143 |
</div>
|
144 |
<div class="inline-image-text">
|
145 |
<img src="<?php echo $image_base; ?>info-icon-question.svg" />
|
templates/single/lesson/required-enroll.php
CHANGED
@@ -27,7 +27,7 @@ get_header();
|
|
27 |
?>
|
28 |
|
29 |
<h2><?php _e('Please enroll This course first', 'tutor'); ?></h2>
|
30 |
-
<h3> <?php echo sprintf(__('Course name : %s'
|
31 |
<a href="<?php echo get_permalink($course_id); ?>" class="tutor-button"><?php _e('View Course', 'tutor'); ?></a>
|
32 |
</div>
|
33 |
</div>
|
27 |
?>
|
28 |
|
29 |
<h2><?php _e('Please enroll This course first', 'tutor'); ?></h2>
|
30 |
+
<h3> <?php echo sprintf(__('Course name : %s', 'tutor'), get_the_title($course_id)); ?> </h3>
|
31 |
<a href="<?php echo get_permalink($course_id); ?>" class="tutor-button"><?php _e('View Course', 'tutor'); ?></a>
|
32 |
</div>
|
33 |
</div>
|
tutor.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Tutor LMS
|
|
4 |
Plugin URI: https://www.themeum.com/product/tutor-lms/
|
5 |
Description: Tutor is a complete solution for creating a Learning Management System in WordPress way. It can help you to create small to large scale online education site very conveniently. Power features like report, certificate, course preview, private file sharing make Tutor a robust plugin for any educational institutes.
|
6 |
Author: Themeum
|
7 |
-
Version: 1.8.
|
8 |
Author URI: https://themeum.com
|
9 |
Requires at least: 4.5
|
10 |
Tested up to: 5.3
|
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) )
|
|
17 |
/**
|
18 |
* Defined the tutor main file
|
19 |
*/
|
20 |
-
define('TUTOR_VERSION', '1.8.
|
21 |
define('TUTOR_FILE', __FILE__);
|
22 |
|
23 |
/**
|
4 |
Plugin URI: https://www.themeum.com/product/tutor-lms/
|
5 |
Description: Tutor is a complete solution for creating a Learning Management System in WordPress way. It can help you to create small to large scale online education site very conveniently. Power features like report, certificate, course preview, private file sharing make Tutor a robust plugin for any educational institutes.
|
6 |
Author: Themeum
|
7 |
+
Version: 1.8.2
|
8 |
Author URI: https://themeum.com
|
9 |
Requires at least: 4.5
|
10 |
Tested up to: 5.3
|
17 |
/**
|
18 |
* Defined the tutor main file
|
19 |
*/
|
20 |
+
define('TUTOR_VERSION', '1.8.2');
|
21 |
define('TUTOR_FILE', __FILE__);
|
22 |
|
23 |
/**
|