Version Description
= 0.9.19 = In this version, we have changed a little bit about LearnPress Plugin directory structure and moved all add-ons to become independence plugins. If you face any problems relate to add-ons, please completely remove old version and re-install LearnPress. It does not affect your current data. Thank you.
Download this release
Release Info
Developer | tunnhn |
Plugin | LearnPress – WordPress LMS Plugin |
Version | 2.1.8.1 |
Comparing to | |
See all releases |
Code changes from version 2.1.7.4 to 2.1.8.1
- assets/css/admin/admin.css +4 -1
- assets/css/admin/meta-box-course.css +0 -2
- assets/css/frontend/form.css +5 -0
- assets/css/learnpress.css +4 -3
- assets/js/frontend/profile.js +1 -1
- assets/js/frontend/single-course.js +2 -1
- assets/less/admin/admin.less +8 -6
- assets/less/learnpress.less +1973 -1970
- inc/admin/class-lp-admin-ajax.php +133 -156
- inc/admin/views/question/html-base-option.php +0 -137
- inc/class-lp-page-controller.php +4 -1
- inc/class-lp-schedules.php +26 -10
- inc/class-lp-shortcodes.php +50 -43
- inc/course/abstract-lp-course.php +172 -105
- inc/custom-post-types/abstract.php +1 -4
- inc/custom-post-types/course.php +15 -16
- inc/custom-post-types/order.php +67 -47
- inc/lp-constants.php +1 -1
- inc/lp-core-functions.php +2 -1
- inc/lp-init.php +117 -100
- inc/lp-template-functions.php +10 -6
- inc/lp-template-hooks.php +2 -2
- inc/user/abstract-lp-user.php +124 -75
- inc/user/class-lp-user-factory.php +1 -1
- inc/user/lp-user-functions.php +13 -11
- inc/widgets/course-filters/course-filters.php +1 -1
- inc/widgets/featured-courses/featured-courses.php +1 -1
- inc/widgets/popular-courses/popular-courses.php +1 -1
- inc/widgets/recent-courses/recent-courses.php +1 -1
- languages/learnpress.pot +716 -340
- learnpress.php +45 -22
- readme.txt +14 -9
- templates/checkout/form-logged-in.php +5 -4
- templates/global/become-teacher-form.php +18 -16
- templates/profile/tabs/orders.php +22 -20
- templates/single-course/buttons.php +97 -42
- templates/single-course/content-item-lp_lesson.php +7 -1
- templates/single-course/content-item-only.php +20 -16
- templates/single-course/progress.php +1 -1
- templates/single-course/section/item-lesson.php +11 -9
- templates/single-course/section/title.php +12 -9
assets/css/admin/admin.css
CHANGED
@@ -1522,6 +1522,9 @@ body.post-type-lp_question #question_answer_ .inside {
|
|
1522 |
.meta_box_course_lesson_quiz li select {
|
1523 |
min-width: 250px;
|
1524 |
}
|
|
|
|
|
|
|
1525 |
.rwmb-meta-box label {
|
1526 |
color: #222;
|
1527 |
font-weight: bold;
|
@@ -2027,4 +2030,4 @@ input.regular-text[id^="learn-press-emails"] {
|
|
2027 |
}
|
2028 |
}
|
2029 |
|
2030 |
-
/*# sourceMappingURL=data:application/json;charset=utf8;base64,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QUE7O0VBRUo7SUFDSSxVQUFBOztFQUVKO0lBQ0ksVUFBQTs7O0FBSVI7RUFDSTtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBOztFQUVKO0lBQ0ksVUFBQTs7O0FBSVI7RUFDSTtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBOztFQUVKO0lBQ0ksVUFBQTs7O0FBSVI7RUFDSTtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBOztFQUVKO0lBQ0ksVUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBEZWZpbmUgYWxsIHN0eWxlcyBmb3IgYWRtaW4gc2lkZVxyXG4gKlxyXG4gKiBAYXV0aG9yIFRoaW1QcmVzc1xyXG4gKiBAdmVyc2lvbiAxLjBcclxuICovXHJcbi8vIGFkbWluIHZhcmlhYmxlc1xyXG5AcHJpbWFyeS1pY29uLWNvbG9yOiAjNjY2NjY2O1xyXG5AcHJpbWFyeS1pY29uLWhvdmVyLWNvbG9yOiAjMDBhMGQyO1xyXG5cclxuaW5wdXQ6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbmlucHV0OmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5pbnB1dDpmb2N1czotbW96LXBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ucndtYi1maWVsZCB7XHJcbiAgICBtYXJnaW46IDIwcHggMCAyMHB4IDA7XHJcbiAgICAucndtYi1pbnB1dCB7XHJcbiAgICAgICAgLnJ3bWItbGFiZWwge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICAuZGVzY3JpcHRpb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgICAgICYub3B0aW9uLWRlc2Mge1xyXG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgICAgICAgICAgIG1hcmdpbjogOHB4IDAgMTBweCAyNHB4O1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG4gICAgICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ubHAtbmF2LXRhYi13cmFwcGVyIHtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogOXB4IDE1cHggMCAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1xdWljay1hZGQtcGFnZS1pbmxpbmUge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtcXVpY2stYWRkLXBhZ2UtaW5saW5lID4gKiB7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3MtYWRtaW4tc2V0dGluZ3Mge1xyXG4gICAgI2xlYXJuX3ByZXNzX2VtYWlsX2Zvcm1hdHMge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICB9XHJcbiAgICAubGVhcm4tcHJlc3MtZW1haWwtdmFyaWFibGVzIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgbGkge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogIzAwODViYTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5uYXYtdGFiLXdyYXBwZXIge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICB9XHJcbiAgICAuc3Vic3Vic3ViIHtcclxuICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICB3aWR0aDogMjQwcHg7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHotaW5kZXg6IDEwO1xyXG4gICAgICAgIG1hcmdpbjogMCAtMjYwcHggMCAyMHB4O1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAxMXB4O1xyXG4gICAgICAgIGxpIHtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIGEge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5sZWFybi1wcmVzcy1zZXR0aW5ncy13cmFwIHtcclxuICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICBwYWRkaW5nOiAxcHggMCAxNXB4IDMwMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgei1pbmRleDogMDtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19hdXRvX3JlZGlyZWN0X21lc3NhZ2VcIl0ge1xyXG4gICAgICAgICAgICB3aWR0aDogODAlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgYm90dG9tOiAwO1xyXG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMzBweDtcclxuICAgICAgICB9XHJcbiAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYucmVhZHkge1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICAjbGVhcm4tcHJlc3MtcmVzZXQtc2V0dGluZ3Mge1xyXG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJi5uby1zdWJ0YWJzIHtcclxuICAgICAgICAubGVhcm4tcHJlc3Mtc2V0dGluZ3Mtd3JhcCB7XHJcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAyNXB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNXB4O1xyXG5cclxuICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAuc3Vic3Vic3ViIHtcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xyXG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgbGFiZWwge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgfVxyXG4gICAgLyppbnB1dFtuYW1lPVwibGVhcm5fcHJlc3Nfc2luZ2xlX2NvdXJzZV9pbWFnZV9zaXplW3dpZHRoXVwiXSxcclxuICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19zaW5nbGVfY291cnNlX2ltYWdlX3NpemVbaGVpZ2h0XVwiXSxcclxuICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19jb3Vyc2VfdGh1bWJuYWlsX2ltYWdlX3NpemVbd2lkdGhdXCJdLFxyXG4gICAgaW5wdXRbbmFtZT1cImxlYXJuX3ByZXNzX2NvdXJzZV90aHVtYm5haWxfaW1hZ2Vfc2l6ZVtoZWlnaHRdXCJdIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAtNHB4O1xyXG4gICAgfVxyXG4gICAgaW5wdXRbbmFtZT1cImxlYXJuX3ByZXNzX3NpbmdsZV9jb3Vyc2VfaW1hZ2Vfc2l6ZVtjcm9wXVwiXSxcclxuICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19jb3Vyc2VfdGh1bWJuYWlsX2ltYWdlX3NpemVbY3JvcF1cIl0ge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDNweDtcclxuICAgIH0qL1xyXG5cclxuICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19jb3Vyc2VfYmFzZVwiXSB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xyXG4gICAgfVxyXG4gICAgLmxwLWdyb3VwLXRpdGxlIHtcclxuICAgICAgICBwYWRkaW5nOiAwIDAgMTBweDtcclxuICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgIzU2M2Q3YztcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gICAgaW5wdXRbdHlwZT1cInRleHRcIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwiZW1haWxcIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLFxyXG4gICAgaW5wdXRbdHlwZT1cInRlbFwiXSxcclxuICAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcclxuICAgIHNlbGVjdCB7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIH1cclxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIC5scC1zZXR0aW5nLWZpZWxkIHtcclxuICAgICAgICBzcGFuIHtcclxuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5scC1zaWduLXRpbWVzIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxOXB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmxlYXJucHJlc3NfcGFnZV9sZWFybi1wcmVzcy1zZXR0aW5ncyB7XHJcbiAgICAuc2VsZWN0Mi1yZXN1bHQge1xyXG4gICAgICAgIC5zZWxlY3QyLXJlc3VsdC1sYWJlbCB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyMzI4MmQ7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgICAgbGVmdDogOHB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI0ZGRjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAmLmxldmVsLTEge1xyXG4gICAgICAgICAgICAuc2VsZWN0Mi1yZXN1bHQtbGFiZWwge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzNXB4O1xyXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYubGV2ZWwtMiB7XHJcbiAgICAgICAgICAgIC5zZWxlY3QyLXJlc3VsdC1sYWJlbCB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDYwcHg7XHJcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMzVweDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAmLmxldmVsLTMge1xyXG4gICAgICAgICAgICAuc2VsZWN0Mi1yZXN1bHQtbGFiZWwge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA4NXB4O1xyXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDYwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qIG1lc3NhZ2UgYm94ICovXHJcbiNsZWFybi1wcmVzcy1tZXNzYWdlLWJveC1ibG9jayB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xyXG4gICAgei1pbmRleDogOTk5OTk7XHJcbiAgICBvcGFjaXR5OiAwLjg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1tZXNzYWdlLWJveC13aW5kb3cge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgei1pbmRleDogMTAwMDAwO1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbiNtZXNzYWdlLWJveC13cmFwIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgLyogdGV4dC1hbGlnbjogY2VudGVyOyAqL1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIG1heC13aWR0aDogNzAlO1xyXG59XHJcblxyXG4ubWVzc2FnZS1ib3gtdGl0bGUge1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbiAgICBtYXJnaW46IDAgMCA0MHB4IDA7XHJcbiAgICBmb250LXNpemU6IDM0cHg7XHJcbn1cclxuXHJcbi5tZXNzYWdlLWJveC1jb250ZW50IHtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbn1cclxuXHJcbi5tZXNzYWdlLWJveC1hbmltYXRpb24ge1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vaW1hZ2VzL2FuaW1hdGlvbi5naWZcIik7XHJcbiAgICB3aWR0aDogMjIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICBtYXJnaW46IDIwcHggMCAwO1xyXG59XHJcblxyXG4ubWVzc2FnZS1ib3gtYnV0dG9ucyB7XHJcbiAgICBtYXJnaW46IDIwcHggMCAwO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM5MjkyOTI7XHJcbiAgICBwYWRkaW5nLXRvcDogMjBweDtcclxufVxyXG5cclxuLm1lc3NhZ2UtYm94LWJ1dHRvbiB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLnBvc3QtdHlwZS1scF9sZXNzb24gLmNvbHVtbi1mb3JtYXQgLmxwLWxhYmVsIHtcclxuICAgIGZvbnQtc2l6ZTogMTAwJTtcclxufVxyXG5cclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuLmhpZGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmhhbmRsZS5kYXNoaWNvbnMge1xyXG4gICAgY3Vyc29yOiBtb3ZlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG59XHJcblxyXG4ubWV0YV9ib3hfcmVtb3ZlIC5kYXNoaWNvbnMge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBpbml0aWFsO1xyXG59XHJcblxyXG4ubWV0YV9ib3hfY291cnNlX2xlc3Nvbl9xdWl6IGxpIGlucHV0LFxyXG4ubWV0YV9ib3hfY291cnNlX2xlc3Nvbl9xdWl6IGxpIHNlbGVjdCB7XHJcbiAgICBtaW4td2lkdGg6IDI1MHB4O1xyXG59XHJcblxyXG4uZGFzaGVkLXBsYWNlaG9sZGVyIHtcclxuICAgIGJvcmRlcjogMnB4IGRhc2hlZCAjOTk5O1xyXG4gICAgcGFkZGluZzogMTBweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLW1lc3NhZ2Uge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgYmFja2dyb3VuZDogI0ZGRjtcclxuICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzAwQTBEMjtcclxuICAgIHBhZGRpbmc6IDEwcHggMTBweCAwcHggMTBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgY29sb3I6ICM3Nzc7XHJcbiAgICBidXR0b24ge1xyXG4gICAgICAgIGZsb2F0OiByaWdodDtcclxuICAgIH1cclxuICAgIHAge1xyXG4gICAgICAgIG1hcmdpbjogMCAwIDEwcHg7XHJcbiAgICB9XHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuICAgICYubm90aWNlIHtcclxuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogI2IzZDIwYTtcclxuICAgIH1cclxuICAgICYubHAtZXJyb3IsXHJcbiAgICAmLmVycm9yIHtcclxuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogI2I4MWMyMztcclxuICAgIH1cclxuICAgIHVsIHtcclxuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAubGVhcm4tcHJlc3MtYWRtaW4tbm90aWNlLWRpc21pc3Mge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAxcHggMXB4ICNGMUYxRjE7XHJcbiAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogLTEwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBkYXNoaWNvbnM7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcXGYzMzUnO1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcclxuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiogQ291cnNlIE1ldGFib3hcclxuKi9cclxubGkucXVpeiwgbGkubGVzc29uLCBsaS5xdWlja19sZXNzb24sIGxpLnF1aWNrX3F1aXoge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDMwcHg7XHJcbn1cclxuXHJcbi53cC1jb3JlLXVpIC5tZXRhX2JveF9hZGRfc2VjdGlvbixcclxuLndwLWNvcmUtdWkgLm1ldGFfYm94X2FkZF9sZXNzb24sXHJcbi53cC1jb3JlLXVpIC5tZXRhX2JveF9hZGRfcXVpeixcclxuLndwLWNvcmUtdWkgLm1ldGFfYm94X3F1aWNrX2FkZF9sZXNzb24sXHJcbi53cC1jb3JlLXVpIC5tZXRhX2JveF9xdWlja19hZGRfcXVpeiB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbn1cclxuXHJcbi5jb2x1bW4tdGF4b25vbXktY291cnNlX2NhdGVnb3J5IHtcclxuICAgIHdpZHRoOiAxNSU7XHJcbn1cclxuXHJcbi50b29scy1idXR0b24ge1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbn1cclxuXHJcbi8qXHJcbiNscHItYmxvY2sge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB6LWluZGV4OiAyMDA7XHJcbiAgICBvcGFjaXR5OiAwLjI7XHJcbn1cclxuXHJcbi5scHItcXVpY2stYWRkLWZvcm0ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcclxuICAgIHBhZGRpbmc6IDVweDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDIxMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbn1cclxuXHJcbi5scHItcXVpY2stYWRkLWZvcm0gaW5wdXQge1xyXG4gICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIHdpZHRoOiAzNTBweDtcclxufVxyXG5cclxuLmxwci1xdWljay1hZGQtZm9ybSBpbnB1dCxcclxuLmxwci1xdWljay1hZGQtZm9ybSBzZWxlY3Qge1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuLmxwci1xdWljay1hZGQtZm9ybSAubHByLWFqYXhsb2FkIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3NwaW5uZXIuZ2lmKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgd2lkdGg6IDMwcHg7XHJcbiAgICBjb2xvcjogI0ZGRjtcclxuICAgIG1hcmdpbi10b3A6IDZweDtcclxufVxyXG5cclxuLmxwci1xdWljay1hZGQtZm9ybS53b3JraW5nIC5scHItYWpheGxvYWQge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4ubHByLXF1aWNrLWFkZC1mb3JtLndvcmtpbmcgYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5wb3N0LXR5cGUtbHByX3F1ZXN0aW9uIC5scHItcXVlc3Rpb24tb3B0aW9uLWxhYmVsIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbiNscHItcXVlc3Rpb24tb3B0aW9ucy13cmFwIHtcclxuICAgIG1hcmdpbi10b3A6IDhweDtcclxufVxyXG5cclxuLmxwci1xdWVzdGlvbiB0ci5scHItZGlzYWJsZWQgLmRhc2hpY29ucy10cmFzaCxcclxuLmxwci1xdWVzdGlvbiB0ci5scHItZGlzYWJsZWQgLmRhc2hpY29ucy1zb3J0IHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn0qL1xyXG5cclxuLypcclxuKiBBZGQgb24gcGFnZVxyXG4qL1xyXG4ubGVhcm5wcmVzcy1hZHZlcnRpcy1hZG1pbiB7XHJcblxyXG4gICAgbWFyZ2luLWxlZnQ6IDE2MHB4O1xyXG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICA+IC5pdGVtIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gICAgPiAuaXRlbTpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB9XHJcblxyXG4gICAgLmxlYXJucHJlc3Mtd3JhcC1pdGVtcyB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzO1xyXG4gICAgICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMXMsIG9wYWNpdHkgMXM7XHJcbiAgICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuICAgIH1cclxuICAgIC50aGVtZS10aHVtYm5haWwge1xyXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgIHdpZHRoOiAzNSU7XHJcbiAgICB9XHJcbiAgICAudGhlbWUtZGV0YWlsIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMzUlO1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgIH1cclxuICAgIC5sZWFybnByZXNzLWl0ZW0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDAuNXMgbGluZWFyLCBvcGFjaXR5IDAuNXMgbGluZWFyO1xyXG4gICAgICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMC41cyBsaW5lYXIsIG9wYWNpdHkgMC41cyBsaW5lYXI7XHJcblxyXG4gICAgfVxyXG4gICAgaW1nIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAubGVhcm5wcmVzcy1hY3RpdmUge1xyXG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuXHJcbiAgICAubGVhcm5wcmVzcy1jb250cm9scyB7XHJcblxyXG4gICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGJvdHRvbTogMzBweDtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcblxyXG4gICAgICAgIC5wcmV2LWl0ZW0sXHJcbiAgICAgICAgLm5leHQtaXRlbSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBmb250LWZhbWlseTogJ2Rhc2hpY29ucyc7XHJcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5wcmV2LWl0ZW0ge1xyXG4gICAgICAgICAgICByaWdodDogOTVweDtcclxuICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYzNDFcIjtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5uZXh0LWl0ZW0ge1xyXG4gICAgICAgICAgICByaWdodDogNDVweDtcclxuXHJcbiAgICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmMzQ1XCI7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTIwMHB4KSB7XHJcbiAgICAgICAgLnRoZW1lLXRodW1ibmFpbCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudGhlbWUtZGV0YWlsIHtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDUwJTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NjBweCkge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAzNnB4O1xyXG5cclxuICAgICAgICAudGhlbWUtdGh1bWJuYWlsIHtcclxuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnRoZW1lLWRldGFpbCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc4MnB4KSB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5scHItYWRkLW9ucy13cmFwcGVyIC5hZGQtb24taW5mbyB7XHJcbiAgICB3aWR0aDogNjUlO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4ubHByLWFkZC1vbnMtd3JhcHBlciAuYWRkLW9uLWFjdGlvbiB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbn1cclxuXHJcbi5scHItYWRkLW9ucy13cmFwcGVyIC5hZGQtb24tYWN0aW9uIGEge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICAgIGhlaWdodDogODBweDtcclxuICAgIHdpZHRoOiAxMDBweDtcclxuICAgIGJhY2tncm91bmQ6ICNFQkVCRUI7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwMHB4O1xyXG59XHJcblxyXG4ubHByLWFkZC1vbnMtd3JhcHBlciAuYWRkLW9uLWFjdGlvbiAuYWRkLW9uLWVuYWJsZWQge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWFyZ2luOiA0MHB4O1xyXG59XHJcblxyXG4ubHByLWFkZC1vbnMtd3JhcHBlciAuYWRkLW9uLWFjdGlvbiAuYWRkLW9uLWRpc2FibGVkIHtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIG1hcmdpbjogNDBweDtcclxufVxyXG5cclxuLmxwci1hZGQtb25zLXdyYXBwZXIgLmFkZC1vbi1hY3Rpb24gYTpob3ZlciB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtdGV4dC1kaXNhYmxlKTtcclxufVxyXG5cclxuLmxwLXNlYXJjaC1hZGRvbiB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICB3aWR0aDogMjgwcHg7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBmb250LXdlaWdodDogMzAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIHBhZGRpbmc6IDNweCA1cHg7XHJcbiAgICBoZWlnaHQ6IDMycHg7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIHtcclxuICAgIG1hcmdpbjogMjBweCAwIDA7XHJcblxyXG4gICAgLmxwLWFkZG9uLWhpZGRlbiB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgLmxwLWFjdGl2ZTpudGgtb2YtdHlwZSgybisxKSB7XHJcbiAgICAgICAgY2xlYXI6IG5vbmU7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XHJcbiAgICB9XHJcbiAgICAubHAtYWN0aXZlOm50aC1vZi10eXBlKDJuKSB7XHJcbiAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgJi5sZWFybnByZXNzLXByZW1pdW0tcGx1Z2luIHtcclxuXHJcbiAgICAgICAgLmNvbHVtbi1kZXNjcmlwdGlvbiB7XHJcblxyXG4gICAgICAgICAgICBwIHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcclxuICAgICAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcclxuICAgICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiA0O1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42ZW07XHJcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDYuNGVtO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnM6YWZ0ZXIge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBjbGVhcjogYm90aDtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIHtcclxuICAgIC8qZmxvYXQ6IGxlZnQ7Ki9cclxuICAgIC8qd2lkdGg6IDI1JTsqL1xyXG4gICAgLypwb3NpdGlvbjogcmVsYXRpdmU7Ki9cclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLWlubmVyIHtcclxuICAgIG1hcmdpbjogMCAyMHB4IDQwcHggMjBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLXRodW1ibmFpbCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFM0UzRTM7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkgLmFkZC1vbi10aHVtYm5haWwgaW1nIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLXRodW1ibmFpbCAuYWRkLW9uLW92ZXJsYXkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4yNXM7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQURFNkZGO1xyXG4gICAgb3BhY2l0eTogMDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLXRodW1ibmFpbCAuYWRkLW9uLWRlc2NyaXB0aW9uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGxlZnQ6IDIwcHg7XHJcbiAgICByaWdodDogMjBweDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMjVzO1xyXG4gICAgY29sb3I6ICM0NDQ7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpOmhvdmVyIC5hZGQtb24tb3ZlcmxheSB7XHJcbiAgICBvcGFjaXR5OiAwLjM7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGk6aG92ZXIgLmFkZC1vbi1kZXNjcmlwdGlvbiB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24taW5mbyB7XHJcbiAgICBtaW4taGVpZ2h0OiA4MHB4O1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0ZGRjtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLWluZm8gPiBoMyB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24tYWN0aW9ucyB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBib3R0b206IDQzcHg7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkgLmFkZC1vbi1hY3Rpb25zIC5hZGQtb24tc3RhdGUge1xyXG4gICAgZm9udC1zaXplOiAzNnB4O1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBtYXJnaW4tdG9wOiAtOHB4O1xyXG4gICAgY29sb3I6ICMwNUIzRkY7XHJcbiAgICBtYXJnaW4tbGVmdDogLTlweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLWFjdGlvbnMgLmFkZC1vbi1zdGF0ZS5jaGFuZ2Uge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQtdG9wIHtcclxuICAgIG1pbi1oZWlnaHQ6IDE4MHB4O1xyXG59XHJcblxyXG4ucHJlbWl1bV9hZGRfb25zLmFjdGl2ZSAuY29sdW1uLWRlc2NyaXB0aW9uIHAge1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xyXG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiA1O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xyXG4gICAgbWF4LWhlaWdodDogOGVtO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYnV0dG9uLnNwaW5uZXIge1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9zcGlubmVyLmdpZikgbm8tcmVwZWF0IDRweCAhaW1wb3J0YW50O1xyXG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIHdpZHRoOiBhdXRvO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYWN0aW9uLWxpbmtzID4gc3BhbiB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYWN0aW9uLWxpbmtzID4gc3Bhbi5lbmFibGVkIHtcclxuICAgIGNvbG9yOiAjN2FkMDNhO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYWN0aW9uLWxpbmtzID4gc3Bhbi5kaXNhYmxlZCB7XHJcbiAgICBjb2xvcjogI0ZGMDAwMDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLmFjdGlvbi1saW5rcyAucHJpY2Uge1xyXG4gICAgY29sb3I6ICM0MzlmZGY7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYWN0aW9uLWxpbmtzIC5wcmljZSBkZWwge1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIGNvbG9yOiAjYWFhO1xyXG4gICAgcGFkZGluZy1yaWdodDogNXB4O1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWljb24gaW1nIHtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLWJ1bmRsZS1hY3RpdmF0ZS1hZGQtb25zLnNwaW5uZXIge1xyXG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi12ZXJzaW9uIHtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3MtYWRkLW9ucy13cmFwICNuYW1lIHtcclxuICAgIHdpZHRoOiAzMCU7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIHA6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3MtYWRkLW9ucy13cmFwIC50aGVtZSB7XHJcbiAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLWFkZC1vbnMtd3JhcCAudGhlbWUtY29udHJvbHMge1xyXG4gICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1hZGQtb25zLXdyYXAgLnRoZW1lIGgyIHtcclxuICAgIG1hcmdpbjogMCAwIDIwcHggMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1hZGQtb25zLXdyYXAgLnRoZW1lIGltZyB7XHJcbiAgICB3aWR0aDogNDAwcHg7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICBtYXJnaW46IDAgMjBweCAwIDA7XHJcbn1cclxuXHJcbi5yZWxhdGVkX3RoZW1lcyB7XHJcbiAgICAucGx1Z2luLWNhcmQtdG9wIHtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICAgIH1cclxuICAgIC50aGVtZS1jb250ZW50IHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB9XHJcbiAgICAuaW1hZ2UtdGh1bWJuYWlsIGltZyB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcbiAgICAudGhlbWUtZGVzY3JpcHRpb24ge1xyXG4gICAgICAgIG1hcmdpbjogMCAwIDI1cHggMDtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiA2O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcclxuICAgICAgICBtYXgtaGVpZ2h0OiA5LjZlbTtcclxuXHJcbiAgICB9XHJcbiAgICAudGhlbWUtdGl0bGUge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTAwcHg7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgICAgbWluLWhlaWdodDogMy4yZW07XHJcbiAgICB9XHJcbiAgICAudGhlbWUtdGl0bGUgYSB7XHJcblxyXG4gICAgICAgIGNvbG9yOiAjNTQ1NDU0O1xyXG4gICAgfVxyXG4gICAgLnRoZW1lLXJhdGluZyB7XHJcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICAgIC5zdGFyLXJhdGluZyB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gICAgLmNvdW50LXJhdGluZyB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB0b3A6IDJweDtcclxuICAgIH1cclxuICAgIC50aGVtZS1kZXRhaWwge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICByaWdodDogM3B4O1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS42ZW07XHJcblxyXG4gICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnRoZW1lLXByaWNlIHtcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjNTQ1NDU0O1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42ZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICAudGhlbWUtZm9vdGVyIHtcclxuICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgICBtYXJnaW4tbGVmdDogLTIwcHg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMjBweDtcclxuICAgICAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XHJcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDEyODBweCkge1xyXG4gICAgLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSB7XHJcbiAgICAgICAgLyp3aWR0aDogMzMuMzMlOyovXHJcbiAgICB9XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc4MnB4KSB7XHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyAuZW5hYmxlLW5vdyB7XHJcbiAgICAgICAgcGFkZGluZzogNXB4O1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyAuZW5hYmxlLW5vdzpiZWZvcmUge1xyXG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5sZWFybi1wcmVzcy1hZGQtb25zIC5lbmFibGUtbm93OmJlZm9yZSB7XHJcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgI2xlYXJuLXByZXNzLWFkZC1vbnMtd3JhcCAudGhlbWUgaW1nIHtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIHtcclxuICAgICAgICAvKndpZHRoOiA1MCU7Ki9cclxuICAgIH1cclxuXHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5jb2x1bW4tbmFtZSB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNTBweDtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAjbGVhcm4tcHJlc3MtYWRkLW9ucy13cmFwIC50aGVtZSBpbWcge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1hcmdpbjogMCAwIDIwcHggMDtcclxuICAgIH1cclxufVxyXG5cclxuLyoqL1xyXG5cclxuI2xwci1xdWl6LXF1ZXN0aW9ucy13cmFwIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2Uge1xyXG4gICAgaGVpZ2h0OiAyOXB4O1xyXG4gICAgcGFkZGluZy10b3A6IDNweDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuLnBvc3QtdGl0bGUuY29sdW1uLXRpdGxlIHtcclxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG59XHJcblxyXG4ubHByLXJvdy1hY3Rpb25zIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmxwci1yb3ctYWN0aW9uLWRyb3Bkb3duIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMTAwJTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBtaW4td2lkdGg6IDE1MHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmxwci1yb3ctYWN0aW9uLWRyb3Bkb3duID4gbGkge1xyXG4gICAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4ubHByLXJvdy1hY3Rpb24tZHJvcGRvd24gPiBsaSA+IGEge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiA1cHg7XHJcbn1cclxuXHJcbi5scHItcm93LWFjdGlvbnMgPiBhIHtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5scHItcm93LWFjdGlvbnMgPiBhOmFmdGVyIHtcclxuICAgIHdpZHRoOiAwO1xyXG4gICAgaGVpZ2h0OiAwO1xyXG4gICAgYm9yZGVyOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjREREO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICByaWdodDogMDtcclxuICAgIHRvcDogNnB4O1xyXG59XHJcblxyXG4ubHByLXJvdy1hY3Rpb25zOmhvdmVyID4gdWwge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi8qIGFkZG9ucyBwYWdlICovXHJcbiNscHItYWRkLW9ucy13cmFwcGVyIHtcclxufVxyXG5cclxuI2xwci1hZGQtb25zLXdyYXBwZXIgLmxwci1hZGQtb24tYmxvY2sge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjREREO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDIwcHg7XHJcbiAgICB3aWR0aDogNTAlO1xyXG4gICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG59XHJcblxyXG4jbHByLWFkZC1vbnMtd3JhcHBlciAubHByLWFkZC1vbi1ibG9jazphZnRlciB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgY2xlYXI6IGJvdGg7XHJcbn1cclxuXHJcbiNscHItYWRkLW9ucy13cmFwcGVyIC5scHItYWRtaW4tdGh1bWJuYWlsIHtcclxuICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgd2lkdGg6IDIwMHB4O1xyXG59XHJcblxyXG4jbHByLWFkZC1vbnMtd3JhcHBlciAubHByLWFkbWluLXRodW1ibmFpbCBpbWcge1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuI2xwci1hZGQtb25zLXdyYXBwZXIgLmxwci1hZGQtb24taW5mbyB7XHJcbiAgICBtYXJnaW4tbGVmdDogMjIwcHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XHJcbn1cclxuXHJcbiNscHItYWRkLW9ucy13cmFwcGVyIC5scHItYWRkLW9uLWluZm8gPiBoMyB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG59XHJcblxyXG4jbHByLWFkZC1vbnMtd3JhcHBlciAubHByLWFkZC1vbi1pbmZvID4gaDMgPiBzcGFuIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBhZGRpbmc6IDAgNXB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzdBRDNGQTtcclxuICAgIGNvbG9yOiAjRkZGO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxufVxyXG5cclxuI2xwci1hZGQtb25zLXdyYXBwZXIgLmxwci1hZGQtb24tYWN0aW9uIHtcclxuICAgIGZsb2F0OiByaWdodDtcclxuICAgIHdpZHRoOiAxMDBweDtcclxufVxyXG5cclxuLyogdG9nZ2xlICovXHJcbmlucHV0Lmxwci1mYW5jeS1jaGVja2JveCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4ubHByLWZhbmN5LWNoZWNrYm94LnRvZyB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDRweCByZ2JhKDAsIDAsIDAsIC42KTtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgaGVpZ2h0OiAxOXB4O1xyXG4gICAgd2lkdGg6IDUwcHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250OiAxMXB4LzE4cHggYXJpYWw7XHJcbiAgICBiYWNrZ3JvdW5kOiAjY2NjO1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2U7XHJcbiAgICAtbW96LXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubHByLWZhbmN5LWNoZWNrYm94LnRvZzphZnRlciB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCByZ2JhKDAsIDAsIDAsIC42KTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGhlaWdodDogMTVweDtcclxuICAgIHdpZHRoOiAxNXB4O1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMnB4O1xyXG4gICAgbGVmdDogMnB4O1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2U7XHJcbiAgICAtbW96LXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2c6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdPRkYnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDdweDtcclxuICAgIHRvcDogMXB4O1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbn1cclxuXHJcbi5scHItZmFuY3ktY2hlY2tib3gudG9nOmhvdmVyOmFmdGVyIHtcclxuICAgIGxlZnQ6IDVweDtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2cub246YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdPTic7XHJcbiAgICByaWdodDogMjhweDtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2cub24ge1xyXG4gICAgYmFja2dyb3VuZDogIzA1QjNGRjtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2cub246YWZ0ZXIge1xyXG4gICAgbGVmdDogMzNweDtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2cub246aG92ZXI6YWZ0ZXIge1xyXG4gICAgbGVmdDogMzBweDtcclxufVxyXG5cclxuLyoqL1xyXG4uY2xlYXJmaXg6YWZ0ZXIge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGNsZWFyOiBib3RoO1xyXG59XHJcblxyXG4uY2xlYXIge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBjbGVhcjogYm90aDtcclxuICAgIGhlaWdodDogMDtcclxufVxyXG5cclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cclxuLmxwLWxpc3Qtb3B0aW9ucyB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24ge1xyXG5cclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uLmxwLWxpc3Qtb3B0aW9uLWVtcHR5IHRkLFxyXG4ubHAtbGlzdC1vcHRpb24ubHAtbGlzdC1vcHRpb24tZW1wdHkgdGgge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZCRTlFOTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uLmxwLWxpc3Qtb3B0aW9uLWVtcHR5IC5scC1hbnN3ZXItY2hlY2sgaW5wdXQsXHJcbi5scC1saXN0LW9wdGlvbi5scC1saXN0LW9wdGlvbi1lbXB0eSAubHAtbGlzdC1vcHRpb24tYWN0aW9ucyBpIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiAuY2xtIHtcclxuXHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiAubHAtaXRlbS1jaGVja2JveCB7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiAubHAtaXRlbS1uYW1lIHtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uIC5scC1pdGVtLWFjdGlvbnMge1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIHRoZWFkIHRoIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRkY7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUFFQUVBO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcblxyXG4gICAgY29sb3I6ICMwMEEwRDI7XHJcblxyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIHRib2R5IHRoLFxyXG4ubHAtbGlzdC1vcHRpb25zIHRib2R5IHRkIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRkY7XHJcbiAgICBwYWRkaW5nOiAxMHB4IDEwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9ucyAubHAtYW5zd2VyLWNoZWNrIHtcclxuICAgIHdpZHRoOiAxMDBweDtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9ucyB0Ym9keSB0aCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuLmxwLWxpc3Qtb3B0aW9ucyB0Ym9keSB0ZCBpbnB1dFt0eXBlPVwidGV4dFwiXSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9ucyAudWktc29ydGFibGUtcGxhY2Vob2xkZXIge1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB0ZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi9pbWFnZXMvc3RyaXBlLnBuZ1wiKTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uIC5scC1hbnN3ZXItdGV4dCB7XHJcbiAgICBjb2xvcjogIzc3NztcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiAubHAtYW5zd2VyLXRleHQ6YWZ0ZXIge1xyXG4gICAgZm9udC1mYW1pbHk6IGRhc2hpY29ucztcclxuICAgIGNvbnRlbnQ6ICdcXGY0NjQnO1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24gLmxwLWFuc3dlci10ZXh0OmZvY3VzLFxyXG4ubHAtbGlzdC1vcHRpb246aG92ZXIgLmxwLWFuc3dlci10ZXh0IHtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb246aG92ZXIgLmxwLWFuc3dlci10ZXh0IHtcclxuICAgIGJvcmRlci1zdHlsZTogZGFzaGVkO1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24tYWN0aW9ucyB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBjb2xvcjogIzAwQTBEMjtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uLWFjdGlvbnMubHAtbW92ZS1saXN0LW9wdGlvbiB7XHJcbiAgICBjdXJzb3I6IG1vdmU7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbi1hY3Rpb25zOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjMTU2MDc3O1xyXG59XHJcblxyXG4vKiBRdWVzdGlvbiBtZXRhIGJveCAqL1xyXG4jcXVlc3Rpb25fYW5zd2VyIC5yd21iLXF1ZXN0aW9uLXdyYXBwZXIge1xyXG4gICAgbWFyZ2luOiAxMnB4IDAgMCAwO1xyXG59XHJcblxyXG4ucXVlc3Rpb24tYm90dG9tLWFjdGlvbnMgPiAqIHtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBRdWl6IG1ldGEgYm94ICovXHJcbmJvZHkucG9zdC10eXBlLWxwX3F1aXogI3F1ZXN0aW9ucyxcclxuYm9keS5wb3N0LXR5cGUtbHBfcXVlc3Rpb24gI3F1ZXN0aW9uX2Fuc3dlcl8ge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcblxyXG5ib2R5LnBvc3QtdHlwZS1scF9xdWl6ICNxdWVzdGlvbnMgLmhhbmRsZWRpdixcclxuYm9keS5wb3N0LXR5cGUtbHBfcXVlc3Rpb24gI3F1ZXN0aW9uX2Fuc3dlcl8gLmhhbmRsZWRpdiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG5ib2R5LnBvc3QtdHlwZS1scF9xdWl6ICNxdWVzdGlvbnMgLmhuZGxlLFxyXG5ib2R5LnBvc3QtdHlwZS1scF9xdWVzdGlvbiAjcXVlc3Rpb25fYW5zd2VyXyAuaG5kbGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuYm9keS5wb3N0LXR5cGUtbHBfcXVpeiAjcXVlc3Rpb25zIC5pbnNpZGUsXHJcbmJvZHkucG9zdC10eXBlLWxwX3F1ZXN0aW9uICNxdWVzdGlvbl9hbnN3ZXJfIC5pbnNpZGUge1xyXG4gICAgcGFkZGluZzogMDtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbnMtaGVhZGluZyAucXVlc3Rpb25zLXRvZ2dsZSB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbnMtaGVhZGluZyAucXVlc3Rpb25zLXRvZ2dsZSBhOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjMDBhMGQyO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy1kcm9wZG93bi1xdWVzdGlvbnMge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy1kcm9wZG93bi1xdWVzdGlvbnMgPiB1bCB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDEwMCU7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNFRUU7XHJcbiAgICBib3JkZXItdG9wOiBub25lO1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIHotaW5kZXg6IDUwO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy1kcm9wZG93bi1xdWVzdGlvbnMgPiB1bCA+IGxpIHtcclxuICAgIG1hcmdpbjogMDtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtZHJvcGRvd24tcXVlc3Rpb25zID4gdWwgbGkgPiBhIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcGFkZGluZzogNXB4O1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgI2xlYXJuLXByZXNzLXF1ZXN0aW9uLW5hbWUge1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgbWluLXdpZHRoOiAzNTBweDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBib3JkZXItY29sb3I6ICNFRUU7XHJcbiAgICBjb2xvcjogI0JCQjtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgI2xlYXJuLXByZXNzLXRvZ2dsZS1xdWVzdGlvbnMge1xyXG4gICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjRUVFO1xyXG4gICAgd2lkdGg6IDMycHg7XHJcbiAgICBtYXJnaW4tbGVmdDogLTRweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMzBweDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBjb2xvcjogI0NDQztcclxuICAgIGJvcmRlci1sZWZ0OiBub25lO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtdG9nZ2xlLXF1ZXN0aW9uczpob3ZlciB7XHJcbiAgICBjb2xvcjogI0FBQUFBQTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtYnV0dG9uLWFkZC1xdWVzdGlvbiB7XHJcbiAgICBfdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyBpbnB1dFtuYW1lPVwibHAtbmV3LXF1ZXN0aW9uLW5hbWVcIl0ge1xyXG5cclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVlc3Rpb24tYWN0aW9ucyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogOTk5O1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9uLWhlYWQgLnF1aXotcXVlc3Rpb24tYWN0aW9ucyB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICBtYXJnaW46IDFweCAwO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgcGFkZGluZy10b3A6IDJweDtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbi1oZWFkIC5xdWl6LXF1ZXN0aW9uLWFjdGlvbnMgYSB7XHJcbiAgICBtYXJnaW46IDAgM3B4O1xyXG4gICAgY29sb3I6IEBwcmltYXJ5LWljb24tY29sb3I7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbi1oZWFkIC5xdWl6LXF1ZXN0aW9uLWFjdGlvbnMgYTpob3ZlciB7XHJcbiAgICBjb2xvcjogIzAwYTBkMjtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbi1oZWFkOmhvdmVyIC5xdWl6LXF1ZXN0aW9uLWFjdGlvbnMge1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbi51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi9pbWFnZXMvc3RyaXBlLnBuZ1wiKTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWVzdGlvbi1uYW1lIHtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICB3aWR0aDogNzAlO1xyXG4gICAgY29sb3I6ICM3Nzc7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9uLWljb24gaW1nIHtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogYXV0bztcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtZHJvcGRvd24tcXVlc3Rpb25zIC5hZGRlZCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4ubHByLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzIHtcclxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmxwci1jdXJyaWN1bHVtLXNlY3Rpb24gPiBoMyAubHByLWFjdGlvbiB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICByaWdodDogMDtcclxufVxyXG5cclxuLmxwci1jdXJyaWN1bHVtLXNlY3Rpb24ubHByLWVtcHR5ID4gaDMge1xyXG4gICAgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5scHItY3VycmljdWx1bS1zZWN0aW9uLmxwci1lbXB0eSAubHByLWFjdGlvbiB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5scHItY291cnNlLWN1cnJpY3VsdW0gYnV0dG9uIHNwYW4ge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1zdGF0aXN0aWMge1xyXG4gICAgbWFyZ2luLXRvcDogMjBweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWNoYXJ0IHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWNoYXJ0IGNhbnZhcyB7XHJcbiAgICBoZWlnaHQ6IDcwdmg7XHJcbiAgICB3aWR0aDogMTAwdnc7XHJcbn1cclxuXHJcbi5jaGFydC1idXR0b25zIGZvcm0ge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuLmNoYXJ0LWJ1dHRvbnMgZm9ybSBpbnB1dFt0eXBlPVwidGV4dFwiXSB7XHJcbiAgICB3aWR0aDogMTA1cHg7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBwYWRkaW5nOiA0cHg7XHJcbn1cclxuXHJcbi5jaGFydC1idXR0b25zIGZvcm0gc3BhbiB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBwYWRkaW5nOiA1cHg7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1jaGFydC5sb2FkaW5nOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgei1pbmRleDogMTA7XHJcbiAgICBiYWNrZ3JvdW5kOiAjRkZGO1xyXG4gICAgb3BhY2l0eTogMC41O1xyXG59XHJcblxyXG4uY2hhcnQtZGVzY3JpcHRpb24ge1xyXG5cclxufVxyXG5cclxuLmNoYXJ0LWRlc2NyaXB0aW9uIGxpIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIG1hcmdpbi1yaWdodDogMTVweDtcclxufVxyXG5cclxuLmNoYXJ0LWRlc2NyaXB0aW9uIGxpOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiAxMHB4O1xyXG4gICAgaGVpZ2h0OiAxMHB4O1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG59XHJcblxyXG4uY2hhcnQtZGVzY3JpcHRpb24gbGkgc3BhbiB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbi5jaGFydC1kZXNjcmlwdGlvbiBsaS5hbGw6YmVmb3JlIHtcclxuICAgIGJhY2tncm91bmQ6ICMyRkE3RkY7XHJcbn1cclxuXHJcbi5jaGFydC1kZXNjcmlwdGlvbiBsaS5pbnN0cnVjdG9yczpiZWZvcmUge1xyXG4gICAgYmFja2dyb3VuZDogI0VBQzc5QjtcclxufVxyXG5cclxuLmNoYXJ0LWRlc2NyaXB0aW9uIGxpLnN0dWRlbnRzOmJlZm9yZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjRDREMENCO1xyXG59XHJcblxyXG4ubHByLXN0YXRzLXRpbWUge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4ubHByLWhpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4jbHByLWN1c3RvbS10aW1lIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHRvcDogNHB4O1xyXG59XHJcblxyXG4vKiBibG9jayBwYWdlICovXHJcbiNscHItcGFnZS1ibG9jayB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xyXG4gICAgb3BhY2l0eTogMC41O1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIHotaW5kZXg6IDk5OTk7XHJcbn1cclxuXHJcbiNmb3JtLXF1aWNrLWFkZC1sZXNzb24tbGluayB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuXHJcbiNfbHByX2NvdXJzZV9wcmljZV9kZXNjcmlwdGlvbiA+IHNwYW4ge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBmb250LXNpemU6IDE1cHg7XHJcbn1cclxuXHJcbi5scHItaWdub3JlLCAubHByLWlnbm9yZTpob3ZlciB7XHJcbiAgICBjb2xvcjogI2RkM2QzNjtcclxufVxyXG5cclxuLmxwci1pZ25vcmU6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ubHByLXF1aWNrLWFkZC1wYWdlLWlubGluZSxcclxuLmxwci1xdWljay1hY3Rpb25zLWlubGluZSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbiNscHItdG9nZ2xlLXF1aXotbW9kZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N0ZGO1xyXG4gICAgcGFkZGluZzogM3B4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIGNvbG9yOiAjRkZGO1xyXG59XHJcblxyXG4uY29sdW1uLW51bV9vZl9xdWVzdGlvbiB7XHJcbiAgICB3aWR0aDogMTUwcHg7XHJcbn1cclxuXHJcbi5scC1zZWFyY2gtaXRlbXMgaW5wdXRbbmFtZT1cImxwLWl0ZW0tbmFtZVwiXSB7XHJcbiAgICB3aWR0aDogNTAwcHg7XHJcbn1cclxuXHJcbi5scC1idXR0b24tZHJvcGRvd24ge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiA5OTk5ODtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93biAubHAtZHJvcGRvd24tbGFiZWwge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG59XHJcblxyXG4ubHAtYnV0dG9uLWRyb3Bkb3duIC5scC1kcm9wZG93bi1hcnJvdyB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAvKiB3aWR0aDogMjBweDsgKi9cclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIHBhZGRpbmc6IDAgMTBweDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTFweDtcclxuICAgIGJvdHRvbTogLTFweDtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93biAubHAtZHJvcGRvd24taXRlbXMge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgLyogd2lkdGg6IDEwMCU7ICovXHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xyXG4gICAgdG9wOiAxMDAlO1xyXG4gICAgbWFyZ2luLXRvcDogMXB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIHJpZ2h0OiAtMXB4O1xyXG4gICAgLyogcmlnaHQ6IC0xcHg7ICovXHJcbiAgICB3aWR0aDogMjAwcHg7XHJcbiAgICB6LWluZGV4OiA5OTk5OTk5O1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93biAubHAtZHJvcGRvd24taXRlbXMgbGkge1xyXG4gICAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4ubHAtYnV0dG9uLWRyb3Bkb3duIC5scC1kcm9wZG93bi1pdGVtcyBsaSBhIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5scC1idXR0b24tZHJvcGRvd24gLmxwLWRyb3Bkb3duLWl0ZW1zIGxpIGE6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93bjpub3QoLmRpc2FibGVkKTpob3ZlciB1bCxcclxuLmxwLWJ1dHRvbi1kcm9wZG93bjpub3QoLmRpc2FibGVkKSB1bDpob3ZlciB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLmN1cnJpY3VsdW0tc2VjdGlvbi5scC1lbXB0eS1zZWN0aW9uIHtcclxufVxyXG5cclxuLmN1cnJpY3VsdW0tc2VjdGlvbiAubHAtY2hlY2staXRlbXMsXHJcbi5jdXJyaWN1bHVtLXNlY3Rpb24gLmxwLWNoZWNrLWl0ZW1zOmhvdmVyIHtcclxuICAgIHBhZGRpbmctbGVmdDogNXB4O1xyXG4gICAgcGFkZGluZy1yaWdodDogMzRweDtcclxuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5jb2x1bW4tZm9ybWF0LFxyXG4uY29sdW1uLWlzX3ByZXZpZXdhYmxlLFxyXG4uY29sdW1uLXRheG9ub215LXF1ZXN0aW9uLXRhZyB7XHJcbiAgICB3aWR0aDogMTAlO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmluc3RhbGwtbm93OmJlZm9yZSxcclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5kaXNhYmxlLW5vdzpiZWZvcmUsXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4tY2FyZCAuZW5hYmxlLW5vdzpiZWZvcmUge1xyXG4gICAgbWFyZ2luOiAzcHggNXB4IDAgLTJweDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGZvbnQ6IDQwMCAyMHB4LzEgZGFzaGljb25zO1xyXG4gICAgLypzcGVhazogbm9uZTsqL1xyXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XHJcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5pbnN0YWxsLW5vdzpiZWZvcmUge1xyXG4gICAgY29udGVudDogJ1xcZjEwNic7XHJcbiAgICBjb2xvcjogIzAwNzNhYTtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5kaXNhYmxlLW5vdzpiZWZvcmUge1xyXG4gICAgY29udGVudDogJ1xcZjE0Nyc7XHJcbiAgICBjb2xvcjogIzAwNzNhYTtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5lbmFibGUtbm93OmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnXFxmMzM1JztcclxuICAgIGNvbG9yOiAjZDU0ZTIxO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmRpc2FibGUtbm93OmhvdmVyOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnXFxmMzM1JztcclxuICAgIGNvbG9yOiAjZDU0ZTIxO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmVuYWJsZS1ub3c6aG92ZXI6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdcXGYxNDcnO1xyXG4gICAgY29sb3I6ICMwMDczYWE7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4tY2FyZCAuYnV0dG9uLXdvcmtpbmc6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdcXGY0NjMnICFpbXBvcnRhbnQ7XHJcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogbHAtc3Bpbm5lciAycyBpbmZpbml0ZSBsaW5lYXI7XHJcbiAgICBhbmltYXRpb246IGxwLXNwaW5uZXIgMnMgaW5maW5pdGUgbGluZWFyO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmJ1dHRvbi13b3JraW5nIHNwYW4ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1hY3Rpb25zIGEge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLXF1aWNrLWNvbmZpcm0ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogOTk5OTtcclxuICAgIGNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7XHJcbiAgICBwYWRkaW5nOiAycHggOHB4O1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgbGVmdDogLTM5LjYyNXB4O1xyXG4gICAgdG9wOiAyNHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0M5MDIwMjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLXF1aWNrLWNvbmZpcm06aG92ZXIsXHJcbi5sZWFybi1wcmVzcy1xdWljay1jb25maXJtOmhvdmVyOmJlZm9yZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDczYjAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtcXVpY2stY29uZmlybTpiZWZvcmUge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIC8qIGJvcmRlcjogMXB4IHNvbGlkOyAqL1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xyXG4gICAgd2lkdGg6IDdweDtcclxuICAgIGhlaWdodDogN3B4O1xyXG4gICAgdG9wOiAtM3B4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0M5MDIwMjtcclxuICAgIHJpZ2h0OiA3cHg7XHJcbn1cclxuXHJcbi8qIGNvdXJzZSAqL1xyXG4ud3AtY29yZS11aSAubWV0YV9ib3hfYWRkX3NlY3Rpb24sXHJcbi53cC1jb3JlLXVpIC5tZXRhX2JveF9hZGRfbGVzc29uIHtcclxuICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxufVxyXG5cclxuLmhpZGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmhhbmRsZS5kYXNoaWNvbnMge1xyXG4gICAgY3Vyc29yOiBtb3ZlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG59XHJcblxyXG4ubWV0YV9ib3hfcmVtb3ZlIC5kYXNoaWNvbnMge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBpbml0aWFsO1xyXG59XHJcblxyXG4ubWV0YV9ib3hfY291cnNlX2xlc3Nvbl9xdWl6IGxpIGlucHV0LFxyXG4ubWV0YV9ib3hfY291cnNlX2xlc3Nvbl9xdWl6IGxpIHNlbGVjdCB7XHJcbiAgICBtaW4td2lkdGg6IDI1MHB4O1xyXG59XHJcblxyXG4ucndtYi1tZXRhLWJveCBsYWJlbCB7XHJcbiAgICBjb2xvcjogIzIyMjtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW46IDAgMCAxNnB4IDA7XHJcbn1cclxuXHJcbi5kZXNjcmlwdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbn1cclxuXHJcbi5kYXNoZWQtcGxhY2Vob2xkZXIge1xyXG4gICAgYm9yZGVyOiAycHggZGFzaGVkICM5OTk7XHJcbiAgICBwYWRkaW5nOiAxMHB4O1xyXG59XHJcblxyXG4vKlxyXG4gICAgVHVOTiBhZGRlZCAyMSAwMyAyMDE1XHJcbiAgICBNb2RpZmllZCAwMyBBcHIgMjAxNVxyXG4qL1xyXG4vKiBDb3Vyc2UgQ3VycmljdWx1bW4gbWV0YSBib3ggc2VjdGlvbiovXHJcblxyXG4vKioqKioqKioqKioqIHZlcnNpb24gMS4wICoqKioqKioqKioqKioqL1xyXG5cclxuLyogb3JkZXIgKi9cclxuLnBvc3QtdHlwZS1scF9vcmRlciAjcG9zdC1ib2R5LWNvbnRlbnQsXHJcbi5wb3N0LXR5cGUtbHBfb3JkZXIgI29yZGVyX2RldGFpbHMgLmhhbmRsZWRpdixcclxuLnBvc3QtdHlwZS1scF9vcmRlciAjb3JkZXJfZGV0YWlscyAuaG5kbGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLnBvc3QtdHlwZS1scF9vcmRlciAjc3VibWl0cG9zdCAubWlzYy1wdWItc2VjdGlvbiBsYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciB7XHJcbiAgICBtYXJnaW46IDE1cHg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItZGF0YS1udW1iZXIge1xyXG4gICAgZm9udC1zaXplOiAzNnB4O1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciA+IGgzIHtcclxuICAgIG1hcmdpbjogMCAwIDEwcHggMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItZGF0YS1kYXRlLFxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLm9yZGVyLWRhdGEtc3RhdHVzLFxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLm9yZGVyLWRhdGEtcGF5bWVudC1tZXRob2Qge1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgcGFkZGluZzogMCAwIDEwcHggMDtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLW9yZGVyIC51c2VyLWRpc3BsYXktbmFtZSxcclxuI2xlYXJuLXByZXNzLW9yZGVyIC51c2VyLWVtYWlsLFxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLnVzZXItaXAtYWRkcmVzcyB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgbWFyZ2luOiAwIDAgMTBweCAwO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLm9yZGVyLWl0ZW1zIHRhYmxlIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItaXRlbXMgdGFibGUgdGgsXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItaXRlbXMgdGFibGUgdGQge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIHBhZGRpbmc6IDEwcHggMTVweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1pbnN0YWxsLXNhbXBsZS1kYXRhLW5vdGljZSAuaW5zdGFsbC1zYW1wbGUtZGF0YS1sb2FkaW5nIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi8qIGxlYXJuX3ByZXNzX2Rhc2hib2FyZF93aWRnZXQgKi9cclxuI2xlYXJuX3ByZXNzX2Rhc2hib2FyZF93aWRnZXQge1xyXG4gICAgLnN1YnN1YnN1YiB7XHJcbiAgICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qIGlvcyBjaGVja2JveCAqL1xyXG4ubGVhcm4tcHJlc3MtY2hlY2tib3gge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5pbnB1dC5yZWd1bGFyLXRleHRbaWRePVwibGVhcm4tcHJlc3MtZW1haWxzXCJdIHtcclxuICAgIHdpZHRoOiA5NyU7XHJcbn1cclxuXHJcbi5pb3MtdWktc2VsZWN0IHtcclxuICAgIGJhY2tncm91bmQ6ICNkZGRkZGQ7XHJcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIGhlaWdodDogMThweDtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOXB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogOXB4O1xyXG4gICAgd2lkdGg6IDMwcHg7XHJcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG4gICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcclxuICAgIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XHJcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4uaW9zLXVpLXNlbGVjdC5jaGVja2VkIHtcclxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMThweCAjNmRkYzVmO1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMThweCAjNmRkYzVmO1xyXG59XHJcblxyXG4uaW9zLXVpLXNlbGVjdC5jaGVja2VkIC5pbm5lciB7XHJcbiAgICBsZWZ0OiAxM3B4O1xyXG59XHJcblxyXG4uaW9zLXVpLXNlbGVjdCAuaW5uZXIge1xyXG4gICAgd2lkdGg6IDE2cHg7XHJcbiAgICBoZWlnaHQ6IDE2cHg7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDFweDtcclxuICAgIGxlZnQ6IDFweDtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDM1MG1zIGN1YmljLWJlemllcigwLCAwLjg5LCAwLjQ0LCAxKTtcclxuICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDM1MG1zIGN1YmljLWJlemllcigwLCAwLjg5LCAwLjQ0LCAxKTtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAzNTBtcyBjdWJpYy1iZXppZXIoMCwgMC44OSwgMC40NCwgMSk7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgMzUwbXMgY3ViaWMtYmV6aWVyKDAsIDAuODksIDAuNDQsIDEpO1xyXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgM3B4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAzcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG59XHJcblxyXG4ubHAtbGFiZWwtY291bnRlciB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3M0FBO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgIGhlaWdodDogMjFweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWluLXdpZHRoOiAyMXB4O1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbiAgICBwYWRkaW5nOiAwIDVweDtcclxufVxyXG5cclxuLmNvbHVtbi1udW1fb2ZfcXVlc3Rpb24sXHJcbi5jb2x1bW4tcHJldmlldyxcclxuLmNvbHVtbi1kdXJhdGlvbixcclxuLmNvbHVtbi10eXBlLFxyXG4uY29sdW1uLXRheG9ub215LXF1ZXN0aW9uX3RhZyB7XHJcbiAgICB3aWR0aDogMTAwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG59XHJcblxyXG4jbGVhcm5fcHJlc3NfZGFzaGJvYXJkX3dpZGdldCB7XHJcbiAgICAucnNzLXdpZGdldCB7XHJcbiAgICAgICAgdWwge1xyXG4gICAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAucnNzLWRhdGUge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgfVxyXG59XHJcblxyXG4jbGVhcm5fcHJlc3NfZGFzaGJvYXJkX3dpZGdldF9zdGF0dXMge1xyXG4gICAgLmluc2lkZSB7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgIC5sZWFybnByZXNzLXN0YXRpc3RpYy1zdGF0dXMge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgICAgICAgICA+IGEsID4gc3BhbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAmLmZ1bGwtd2lkdGgge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VjZWNlYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlY2VjZWM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCAxMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA+IGEge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ubHAtdGVtcGxhdGUtb3ZlcnJpZGVzIHtcclxuICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICB0aGVhZCB0aCBoNCB7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gICAgdGJvZHkgdGgge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIHAge1xyXG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwIDEwcHg7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHggOHB4O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICAgICAgICAgICAgJi5jdXJyZW50IHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBhYWRjO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLmxwLXRlbXBsYXRlLXZlcnNpb24ge1xyXG4gICAgICAgIHdpZHRoOiAxMDBweDtcclxuICAgICAgICAmLm91dGRhdGVkIHtcclxuICAgICAgICAgICAgY29sb3I6ICNGRjAwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYudXAtdG8tZGF0ZSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMTg1OWZmO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5scC10ZW1wbGF0ZS12ZXJzaW9uLCAubHAtY29yZS12ZXJzaW9uIHtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuICAgIC5scC10ZW1wbGF0ZS1maWxlIHtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gICAgI2xlYXJuLXByZXNzLW5vLXRlbXBsYXRlcyB0ZCBwIHtcclxuICAgICAgICBjb2xvcjogIzAwNzNhYTtcclxuICAgIH1cclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGxwLXNwaW5uZXIge1xyXG4gICAgMCUge1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKTtcclxuICAgIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBscC1zcGlubmVyIHtcclxuICAgIDAlIHtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xyXG4gICAgfVxyXG4gICAgMTAwJSB7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5yd21iLXF1aXpfcXVlc3Rpb25zLXdyYXBwZXIge1xyXG4gICAgYmFja2dyb3VuZDogI0ZGRjtcclxuICAgIC5xdWl6LXF1ZXN0aW9ucy1oZWFkaW5nIHtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGOUY5Rjk7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgY29sb3I6ICM3Nzc7XHJcbiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4IDIwcHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgICAgIGEge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDMycHg7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMDA3M2FhO1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICAmLmRhc2hpY29ucy1hcnJvdy1kb3duIHtcclxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xMHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMGEwZDI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAjbGVhcm4tcHJlc3MtbGlzdC1xdWVzdGlvbnMge1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgICAgICAucXVpei1xdWVzdGlvbiB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCAjREREO1xyXG4gICAgICAgICAgICBtYXJnaW46IC0xcHggMCAwIDA7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAwO1xyXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgybisxKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGQ0ZDO1xyXG4gICAgICAgICAgICAgICAgLnF1ZXN0aW9uLW5hbWUge1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0ZDRkM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLnF1aXotcXVlc3Rpb24taGVhZCB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgICAgICAucXVpei1xdWVzdGlvbi1pY29uIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLnF1ZXN0aW9uLW5hbWUge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC5tb3ZlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzY2NjtcclxuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHVybChcIi4uLy4uL2ltYWdlcy9vcGVuaGFuZC5jdXJcIikgNyA1LCBkZWZhdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICByaWdodDogMTRweDtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA1cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMwMGEwZDI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgLnF1aXotcXVlc3Rpb24tYWN0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmRhc2hpY29ucy1hZG1pbi1wYWdlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC5xdWl6LXF1ZXN0aW9uLWNvbnRlbnQge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ucG9zdC10eXBlLWxwX3F1aXoge1xyXG4gICAgI2dlbmVyYWwtc2V0dGluZ3Mge1xyXG4gICAgICAgIGEge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmxlYXJuLXByZXNzLXRhYnMge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICB1bC5oZWFkaW5nLXRhYnMge1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcclxuICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcclxuXHJcbiAgICAgICAgPiBsaSB7XHJcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDEwcHg7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICByaWdodDogMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTEwcHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLypmb250LXdlaWdodDogYm9sZDsqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMDAyYTNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICAgICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICAgICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC02cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAtNnB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5sZWFybi1wcmVzcy10YWItY29udGVudCB7XHJcbiAgICAgICAgPiBsaSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAxMHB4IDIwcHg7XHJcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcclxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gICAgJi5pbml0aWFsaXplIHtcclxuICAgICAgICAubGVhcm4tcHJlc3MtdGFiLWNvbnRlbnQgPiBsaSB7XHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmxlYXJuLXByZXNzLXRhYi1jb250ZW50IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtdGV4dCk7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMjUlO1xyXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMjBweDtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAjYTBhMGEwO1xyXG5cclxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiBsaW5lYXIgMXM7XHJcbiAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcclxuICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBsZWFybi1wcmVzcy1tZXRhLWJveC10YWJzLWluaXRpYWxpemUtYW5pbWF0aW9uIGxpbmVhciAxcztcclxuICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XHJcbiAgICAgICAgICAgICAgICAtbW96LWFuaW1hdGlvbjogbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiBsaW5lYXIgMXM7XHJcbiAgICAgICAgICAgICAgICAtbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xyXG4gICAgICAgICAgICAgICAgLW8tYW5pbWF0aW9uOiBsZWFybi1wcmVzcy1tZXRhLWJveC10YWJzLWluaXRpYWxpemUtYW5pbWF0aW9uIGxpbmVhciAxcztcclxuICAgICAgICAgICAgICAgIC1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xyXG4gICAgICAgICAgICAgICAgLW1zLWFuaW1hdGlvbjogbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiBsaW5lYXIgMXM7XHJcbiAgICAgICAgICAgICAgICAtbXMtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAmOm5vdCguaW5pdGlhbGl6ZSkge1xyXG4gICAgICAgIC5sZWFybi1wcmVzcy10YWItY29udGVudCA+IGxpIHtcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICA+IHVsIHtcclxuICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vKiBNZXRhYm94IFdpZGdldCAqL1xyXG4jd2lkZ2V0cy1yaWdodCAud2lkZ2V0cy1ob2xkZXItd3JhcCB7XHJcbiAgICAucndtYi1sYWJlbCB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgfVxyXG4gICAgLnJ3bWItaW5wdXR7XHJcbiAgICAgICAgaW5wdXRbdHlwZT1cInRleHRcIl17XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5kZXNjcmlwdGlvbiB7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgZm9udC1zaXplOiBzbWFsbDtcclxuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5vdXRkYXRlZC1yZWFkbW9yZS1saW5re1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtbWVzc2FnZS5ub3RpY2Utd2FybmluZyB7XHJcbiAgICBib3JkZXItbGVmdC1jb2xvcjogI2ZmYjkwMDtcclxufVxyXG5cclxuQGtleWZyYW1lcyBsZWFybi1wcmVzcy1tZXRhLWJveC10YWJzLWluaXRpYWxpemUtYW5pbWF0aW9uIHtcclxuICAgIDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG4gICAgNTAlIHtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG4gICAgMTAwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgIH1cclxufVxyXG5cclxuQC1tb3ota2V5ZnJhbWVzIGxlYXJuLXByZXNzLW1ldGEtYm94LXRhYnMtaW5pdGlhbGl6ZS1hbmltYXRpb24ge1xyXG4gICAgMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbiAgICA1MCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiB7XHJcbiAgICAwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgIH1cclxuICAgIDUwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIDEwMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbkAtby1rZXlmcmFtZXMgbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiB7XHJcbiAgICAwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgIH1cclxuICAgIDUwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIDEwMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbkAtbXMta2V5ZnJhbWVzIGxlYXJuLXByZXNzLW1ldGEtYm94LXRhYnMtaW5pdGlhbGl6ZS1hbmltYXRpb24ge1xyXG4gICAgMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbiAgICA1MCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG59XHJcbiJdLCJmaWxlIjoiYWRtaW4vYWRtaW4uY3NzIn0= */
|
1522 |
.meta_box_course_lesson_quiz li select {
|
1523 |
min-width: 250px;
|
1524 |
}
|
1525 |
+
.rwmb-meta-box {
|
1526 |
+
margin-top: 20px;
|
1527 |
+
}
|
1528 |
.rwmb-meta-box label {
|
1529 |
color: #222;
|
1530 |
font-weight: bold;
|
2030 |
}
|
2031 |
}
|
2032 |
|
2033 |
+
/*# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFJUjtFQUNJO0lBQ0ksVUFBQTs7RUFFSjtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBOzs7QUFJUjtFQUNJO0lBQ0ksVUFBQTs7RUFFSjtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBOzs7QUFJUjtFQUNJO0lBQ0ksVUFBQTs7RUFFSjtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBOzs7QUFJUjtFQUNJO0lBQ0ksVUFBQTs7RUFFSjtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIERlZmluZSBhbGwgc3R5bGVzIGZvciBhZG1pbiBzaWRlXHJcbiAqXHJcbiAqIEBhdXRob3IgVGhpbVByZXNzXHJcbiAqIEB2ZXJzaW9uIDEuMFxyXG4gKi9cclxuLy8gYWRtaW4gdmFyaWFibGVzXHJcbkBwcmltYXJ5LWljb24tY29sb3I6ICM2NjY2NjY7XHJcbkBwcmltYXJ5LWljb24taG92ZXItY29sb3I6ICMwMGEwZDI7XHJcblxyXG5pbnB1dDpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XHJcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxufVxyXG5cclxuaW5wdXQ6Zm9jdXM6Oi1tb3otcGxhY2Vob2xkZXIge1xyXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbmlucHV0OmZvY3VzOi1tb3otcGxhY2Vob2xkZXIge1xyXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5yd21iLWZpZWxkIHtcclxuICAgIG1hcmdpbjogMjBweCAwIDIwcHggMDtcclxuICAgIC5yd21iLWlucHV0IHtcclxuICAgICAgICAucndtYi1sYWJlbCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5kZXNjcmlwdGlvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcclxuICAgICAgICAgICAgJi5vcHRpb24tZGVzYyB7XHJcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luOiA4cHggMCAxMHB4IDI0cHg7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7XHJcbiAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi5scC1uYXYtdGFiLXdyYXBwZXIge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiA5cHggMTVweCAwIDA7XHJcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLXF1aWNrLWFkZC1wYWdlLWlubGluZSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1xdWljay1hZGQtcGFnZS1pbmxpbmUgPiAqIHtcclxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1hZG1pbi1zZXR0aW5ncyB7XHJcbiAgICAjbGVhcm5fcHJlc3NfZW1haWxfZm9ybWF0cyB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuICAgIH1cclxuICAgIC5sZWFybi1wcmVzcy1lbWFpbC12YXJpYWJsZXMge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDVweDtcclxuICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAjMDA4NWJhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLm5hdi10YWItd3JhcHBlciB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgIH1cclxuICAgIC5zdWJzdWJzdWIge1xyXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgIHdpZHRoOiAyNDBweDtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgei1pbmRleDogMTA7XHJcbiAgICAgICAgbWFyZ2luOiAwIC0yNjBweCAwIDIwcHg7XHJcbiAgICAgICAgcGFkZGluZy10b3A6IDExcHg7XHJcbiAgICAgICAgbGkge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLmxlYXJuLXByZXNzLXNldHRpbmdzLXdyYXAge1xyXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgIHBhZGRpbmc6IDFweCAwIDE1cHggMzAwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcclxuICAgICAgICB6LWluZGV4OiAwO1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgICAgaW5wdXRbbmFtZT1cImxlYXJuX3ByZXNzX2F1dG9fcmVkaXJlY3RfbWVzc2FnZVwiXSB7XHJcbiAgICAgICAgICAgIHdpZHRoOiA4MCU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBib3R0b206IDA7XHJcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0RERDtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0zMHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgJi5yZWFkeSB7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICNsZWFybi1wcmVzcy1yZXNldC1zZXR0aW5ncyB7XHJcbiAgICAgICAgICAgIGZsb2F0OiByaWdodDtcclxuICAgICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAmLm5vLXN1YnRhYnMge1xyXG4gICAgICAgIC5sZWFybi1wcmVzcy1zZXR0aW5ncy13cmFwIHtcclxuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7XHJcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDI1cHg7XHJcblxyXG4gICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5zdWJzdWJzdWIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICBsYWJlbCB7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICB9XHJcbiAgICAvKmlucHV0W25hbWU9XCJsZWFybl9wcmVzc19zaW5nbGVfY291cnNlX2ltYWdlX3NpemVbd2lkdGhdXCJdLFxyXG4gICAgaW5wdXRbbmFtZT1cImxlYXJuX3ByZXNzX3NpbmdsZV9jb3Vyc2VfaW1hZ2Vfc2l6ZVtoZWlnaHRdXCJdLFxyXG4gICAgaW5wdXRbbmFtZT1cImxlYXJuX3ByZXNzX2NvdXJzZV90aHVtYm5haWxfaW1hZ2Vfc2l6ZVt3aWR0aF1cIl0sXHJcbiAgICBpbnB1dFtuYW1lPVwibGVhcm5fcHJlc3NfY291cnNlX3RodW1ibmFpbF9pbWFnZV9zaXplW2hlaWdodF1cIl0ge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IC00cHg7XHJcbiAgICB9XHJcbiAgICBpbnB1dFtuYW1lPVwibGVhcm5fcHJlc3Nfc2luZ2xlX2NvdXJzZV9pbWFnZV9zaXplW2Nyb3BdXCJdLFxyXG4gICAgaW5wdXRbbmFtZT1cImxlYXJuX3ByZXNzX2NvdXJzZV90aHVtYm5haWxfaW1hZ2Vfc2l6ZVtjcm9wXVwiXSB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xyXG4gICAgfSovXHJcblxyXG4gICAgaW5wdXRbbmFtZT1cImxlYXJuX3ByZXNzX2NvdXJzZV9iYXNlXCJdIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAzcHg7XHJcbiAgICB9XHJcbiAgICAubHAtZ3JvdXAtdGl0bGUge1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMCAxMHB4O1xyXG4gICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjNTYzZDdjO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICB9XHJcbiAgICBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuICAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcclxuICAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwidGVsXCJdLFxyXG4gICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxyXG4gICAgc2VsZWN0IHtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgfVxyXG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG4gICAgLmxwLXNldHRpbmctZmllbGQge1xyXG4gICAgICAgIHNwYW4ge1xyXG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjRweDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmxwLXNpZ24tdGltZXMge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE5cHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ubGVhcm5wcmVzc19wYWdlX2xlYXJuLXByZXNzLXNldHRpbmdzIHtcclxuICAgIC5zZWxlY3QyLXJlc3VsdCB7XHJcbiAgICAgICAgLnNlbGVjdDItcmVzdWx0LWxhYmVsIHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzIzMjgyZDtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiA4cHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjRkZGO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYubGV2ZWwtMSB7XHJcbiAgICAgICAgICAgIC5zZWxlY3QyLXJlc3VsdC1sYWJlbCB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDM1cHg7XHJcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgJi5sZXZlbC0yIHtcclxuICAgICAgICAgICAgLnNlbGVjdDItcmVzdWx0LWxhYmVsIHtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNjBweDtcclxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAzNXB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYubGV2ZWwtMyB7XHJcbiAgICAgICAgICAgIC5zZWxlY3QyLXJlc3VsdC1sYWJlbCB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDg1cHg7XHJcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogNjBweDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLyogbWVzc2FnZSBib3ggKi9cclxuI2xlYXJuLXByZXNzLW1lc3NhZ2UtYm94LWJsb2NrIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XHJcbiAgICB6LWluZGV4OiA5OTk5OTtcclxuICAgIG9wYWNpdHk6IDAuODtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLW1lc3NhZ2UtYm94LXdpbmRvdyB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICB6LWluZGV4OiAxMDAwMDA7XHJcbiAgICBjb2xvcjogI0ZGRjtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG5cclxuI21lc3NhZ2UtYm94LXdyYXAge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICAvKiB0ZXh0LWFsaWduOiBjZW50ZXI7ICovXHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgbWF4LXdpZHRoOiA3MCU7XHJcbn1cclxuXHJcbi5tZXNzYWdlLWJveC10aXRsZSB7XHJcbiAgICBjb2xvcjogI0ZGRjtcclxuICAgIG1hcmdpbjogMCAwIDQwcHggMDtcclxuICAgIGZvbnQtc2l6ZTogMzRweDtcclxufVxyXG5cclxuLm1lc3NhZ2UtYm94LWNvbnRlbnQge1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLm1lc3NhZ2UtYm94LWFuaW1hdGlvbiB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi9pbWFnZXMvYW5pbWF0aW9uLmdpZlwiKTtcclxuICAgIHdpZHRoOiAyMjBweDtcclxuICAgIGhlaWdodDogMjBweDtcclxuICAgIG1hcmdpbjogMjBweCAwIDA7XHJcbn1cclxuXHJcbi5tZXNzYWdlLWJveC1idXR0b25zIHtcclxuICAgIG1hcmdpbjogMjBweCAwIDA7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgIzkyOTI5MjtcclxuICAgIHBhZGRpbmctdG9wOiAyMHB4O1xyXG59XHJcblxyXG4ubWVzc2FnZS1ib3gtYnV0dG9uIHtcclxuICAgIG1hcmdpbi1yaWdodDogMTBweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ucG9zdC10eXBlLWxwX2xlc3NvbiAuY29sdW1uLWZvcm1hdCAubHAtbGFiZWwge1xyXG4gICAgZm9udC1zaXplOiAxMDAlO1xyXG59XHJcblxyXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4uaGlkZSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4uaGFuZGxlLmRhc2hpY29ucyB7XHJcbiAgICBjdXJzb3I6IG1vdmU7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbn1cclxuXHJcbi5tZXRhX2JveF9yZW1vdmUgLmRhc2hpY29ucyB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IGluaXRpYWw7XHJcbn1cclxuXHJcbi5tZXRhX2JveF9jb3Vyc2VfbGVzc29uX3F1aXogbGkgaW5wdXQsXHJcbi5tZXRhX2JveF9jb3Vyc2VfbGVzc29uX3F1aXogbGkgc2VsZWN0IHtcclxuICAgIG1pbi13aWR0aDogMjUwcHg7XHJcbn1cclxuXHJcbi5kYXNoZWQtcGxhY2Vob2xkZXIge1xyXG4gICAgYm9yZGVyOiAycHggZGFzaGVkICM5OTk7XHJcbiAgICBwYWRkaW5nOiAxMHB4O1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtbWVzc2FnZSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBiYWNrZ3JvdW5kOiAjRkZGO1xyXG4gICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjMDBBMEQyO1xyXG4gICAgcGFkZGluZzogMTBweCAxMHB4IDBweCAxMHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBjb2xvcjogIzc3NztcclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgfVxyXG4gICAgcCB7XHJcbiAgICAgICAgbWFyZ2luOiAwIDAgMTBweDtcclxuICAgIH1cclxuICAgICY6YWZ0ZXIge1xyXG4gICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG4gICAgJi5ub3RpY2Uge1xyXG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjYjNkMjBhO1xyXG4gICAgfVxyXG4gICAgJi5scC1lcnJvcixcclxuICAgICYuZXJyb3Ige1xyXG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjYjgxYzIzO1xyXG4gICAgfVxyXG4gICAgdWwge1xyXG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcclxuICAgIH1cclxuICAgIC5sZWFybi1wcmVzcy1hZG1pbi1ub3RpY2UtZGlzbWlzcyB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDFweCAxcHggI0YxRjFGMTtcclxuICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICByaWdodDogMTBweDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAtMTBweDtcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGRhc2hpY29ucztcclxuICAgICAgICAgICAgY29udGVudDogJ1xcZjMzNSc7XHJcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuKiBDb3Vyc2UgTWV0YWJveFxyXG4qL1xyXG5saS5xdWl6LCBsaS5sZXNzb24sIGxpLnF1aWNrX2xlc3NvbiwgbGkucXVpY2tfcXVpeiB7XHJcbiAgICBtYXJnaW4tbGVmdDogMzBweDtcclxufVxyXG5cclxuLndwLWNvcmUtdWkgLm1ldGFfYm94X2FkZF9zZWN0aW9uLFxyXG4ud3AtY29yZS11aSAubWV0YV9ib3hfYWRkX2xlc3NvbixcclxuLndwLWNvcmUtdWkgLm1ldGFfYm94X2FkZF9xdWl6LFxyXG4ud3AtY29yZS11aSAubWV0YV9ib3hfcXVpY2tfYWRkX2xlc3NvbixcclxuLndwLWNvcmUtdWkgLm1ldGFfYm94X3F1aWNrX2FkZF9xdWl6IHtcclxuICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxufVxyXG5cclxuLmNvbHVtbi10YXhvbm9teS1jb3Vyc2VfY2F0ZWdvcnkge1xyXG4gICAgd2lkdGg6IDE1JTtcclxufVxyXG5cclxuLnRvb2xzLWJ1dHRvbiB7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG5cclxuLypcclxuI2xwci1ibG9jayB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIHotaW5kZXg6IDIwMDtcclxuICAgIG9wYWNpdHk6IDAuMjtcclxufVxyXG5cclxuLmxwci1xdWljay1hZGQtZm9ybSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xyXG4gICAgcGFkZGluZzogNXB4O1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogMjEwO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxufVxyXG5cclxuLmxwci1xdWljay1hZGQtZm9ybSBpbnB1dCB7XHJcbiAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgd2lkdGg6IDM1MHB4O1xyXG59XHJcblxyXG4ubHByLXF1aWNrLWFkZC1mb3JtIGlucHV0LFxyXG4ubHByLXF1aWNrLWFkZC1mb3JtIHNlbGVjdCB7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG59XHJcblxyXG4ubHByLXF1aWNrLWFkZC1mb3JtIC5scHItYWpheGxvYWQge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvc3Bpbm5lci5naWYpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICB3aWR0aDogMzBweDtcclxuICAgIGNvbG9yOiAjRkZGO1xyXG4gICAgbWFyZ2luLXRvcDogNnB4O1xyXG59XHJcblxyXG4ubHByLXF1aWNrLWFkZC1mb3JtLndvcmtpbmcgLmxwci1hamF4bG9hZCB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuXHJcbi5scHItcXVpY2stYWRkLWZvcm0ud29ya2luZyBidXR0b24ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLnBvc3QtdHlwZS1scHJfcXVlc3Rpb24gLmxwci1xdWVzdGlvbi1vcHRpb24tbGFiZWwge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuI2xwci1xdWVzdGlvbi1vcHRpb25zLXdyYXAge1xyXG4gICAgbWFyZ2luLXRvcDogOHB4O1xyXG59XHJcblxyXG4ubHByLXF1ZXN0aW9uIHRyLmxwci1kaXNhYmxlZCAuZGFzaGljb25zLXRyYXNoLFxyXG4ubHByLXF1ZXN0aW9uIHRyLmxwci1kaXNhYmxlZCAuZGFzaGljb25zLXNvcnQge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufSovXHJcblxyXG4vKlxyXG4qIEFkZCBvbiBwYWdlXHJcbiovXHJcbi5sZWFybnByZXNzLWFkdmVydGlzLWFkbWluIHtcclxuXHJcbiAgICBtYXJnaW4tbGVmdDogMTYwcHg7XHJcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG5cclxuICAgID4gLml0ZW0ge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcbiAgICA+IC5pdGVtOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAubGVhcm5wcmVzcy13cmFwLWl0ZW1zIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IHZpc2liaWxpdHkgMXMsIG9wYWNpdHkgMXM7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAxcywgb3BhY2l0eSAxcztcclxuICAgICAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG4gICAgfVxyXG4gICAgLnRoZW1lLXRodW1ibmFpbCB7XHJcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgd2lkdGg6IDM1JTtcclxuICAgIH1cclxuICAgIC50aGVtZS1kZXRhaWwge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAzNSU7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xyXG4gICAgfVxyXG4gICAgLmxlYXJucHJlc3MtaXRlbSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogLTEwMCU7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IHZpc2liaWxpdHkgMC41cyBsaW5lYXIsIG9wYWNpdHkgMC41cyBsaW5lYXI7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAwLjVzIGxpbmVhciwgb3BhY2l0eSAwLjVzIGxpbmVhcjtcclxuXHJcbiAgICB9XHJcbiAgICBpbWcge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgICBmbG9hdDogbm9uZTtcclxuICAgIH1cclxuICAgIC5sZWFybnByZXNzLWFjdGl2ZSB7XHJcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG5cclxuICAgIC5sZWFybnByZXNzLWNvbnRyb2xzIHtcclxuXHJcbiAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgYm90dG9tOiAzMHB4O1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuXHJcbiAgICAgICAgLnByZXYtaXRlbSxcclxuICAgICAgICAubmV4dC1pdGVtIHtcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnZGFzaGljb25zJztcclxuICAgICAgICAgICAgd2lkdGg6IDQwcHg7XHJcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcclxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgICAgY29sb3I6ICMwMDA7XHJcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLnByZXYtaXRlbSB7XHJcbiAgICAgICAgICAgIHJpZ2h0OiA5NXB4O1xyXG4gICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlxcZjM0MVwiO1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLm5leHQtaXRlbSB7XHJcbiAgICAgICAgICAgIHJpZ2h0OiA0NXB4O1xyXG5cclxuICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYzNDVcIjtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjAwcHgpIHtcclxuICAgICAgICAudGhlbWUtdGh1bWJuYWlsIHtcclxuICAgICAgICAgICAgd2lkdGg6IDUwJTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC50aGVtZS1kZXRhaWwge1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNTAlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk2MHB4KSB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDM2cHg7XHJcblxyXG4gICAgICAgIC50aGVtZS10aHVtYm5haWwge1xyXG4gICAgICAgICAgICBmbG9hdDogbm9uZTtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudGhlbWUtZGV0YWlsIHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzgycHgpIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIH1cclxufVxyXG5cclxuLmxwci1hZGQtb25zLXdyYXBwZXIgLmFkZC1vbi1pbmZvIHtcclxuICAgIHdpZHRoOiA2NSU7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuXHJcbi5scHItYWRkLW9ucy13cmFwcGVyIC5hZGQtb24tYWN0aW9uIHtcclxuICAgIGZsb2F0OiByaWdodDtcclxufVxyXG5cclxuLmxwci1hZGQtb25zLXdyYXBwZXIgLmFkZC1vbi1hY3Rpb24gYSB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiA4MHB4O1xyXG4gICAgd2lkdGg6IDEwMHB4O1xyXG4gICAgYmFja2dyb3VuZDogI0VCRUJFQjtcclxuICAgIG1hcmdpbi1yaWdodDogMTAwcHg7XHJcbn1cclxuXHJcbi5scHItYWRkLW9ucy13cmFwcGVyIC5hZGQtb24tYWN0aW9uIC5hZGQtb24tZW5hYmxlZCB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBtYXJnaW46IDQwcHg7XHJcbn1cclxuXHJcbi5scHItYWRkLW9ucy13cmFwcGVyIC5hZGQtb24tYWN0aW9uIC5hZGQtb24tZGlzYWJsZWQge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWFyZ2luOiA0MHB4O1xyXG59XHJcblxyXG4ubHByLWFkZC1vbnMtd3JhcHBlciAuYWRkLW9uLWFjdGlvbiBhOmhvdmVyIHtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS10ZXh0LWRpc2FibGUpO1xyXG59XHJcblxyXG4ubHAtc2VhcmNoLWFkZG9uIHtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHdpZHRoOiAyODBweDtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgcGFkZGluZzogM3B4IDVweDtcclxuICAgIGhlaWdodDogMzJweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMge1xyXG4gICAgbWFyZ2luOiAyMHB4IDAgMDtcclxuXHJcbiAgICAubHAtYWRkb24taGlkZGVuIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICAubHAtYWN0aXZlOm50aC1vZi10eXBlKDJuKzEpIHtcclxuICAgICAgICBjbGVhcjogbm9uZTtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcclxuICAgIH1cclxuICAgIC5scC1hY3RpdmU6bnRoLW9mLXR5cGUoMm4pIHtcclxuICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIH1cclxuXHJcbiAgICAmLmxlYXJucHJlc3MtcHJlbWl1bS1wbHVnaW4ge1xyXG5cclxuICAgICAgICAuY29sdW1uLWRlc2NyaXB0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIHAge1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gICAgICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xyXG4gICAgICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDQ7XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcclxuICAgICAgICAgICAgbWF4LWhlaWdodDogNi40ZW07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9uczphZnRlciB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGNsZWFyOiBib3RoO1xyXG4gICAgY29udGVudDogJyc7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkge1xyXG4gICAgLypmbG9hdDogbGVmdDsqL1xyXG4gICAgLyp3aWR0aDogMjUlOyovXHJcbiAgICAvKnBvc2l0aW9uOiByZWxhdGl2ZTsqL1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24taW5uZXIge1xyXG4gICAgbWFyZ2luOiAwIDIwcHggNDBweCAyMHB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24tdGh1bWJuYWlsIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0UzRTNFMztcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLXRodW1ibmFpbCBpbWcge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24tdGh1bWJuYWlsIC5hZGQtb24tb3ZlcmxheSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjI1cztcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNBREU2RkY7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24tdGh1bWJuYWlsIC5hZGQtb24tZGVzY3JpcHRpb24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMjBweDtcclxuICAgIHJpZ2h0OiAyMHB4O1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4yNXM7XHJcbiAgICBjb2xvcjogIzQ0NDtcclxuICAgIG9wYWNpdHk6IDA7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGk6aG92ZXIgLmFkZC1vbi1vdmVybGF5IHtcclxuICAgIG9wYWNpdHk6IDAuMztcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaTpob3ZlciAuYWRkLW9uLWRlc2NyaXB0aW9uIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkgLmFkZC1vbi1pbmZvIHtcclxuICAgIG1pbi1oZWlnaHQ6IDgwcHg7XHJcbiAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRkZGO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24taW5mbyA+IGgzIHtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkgLmFkZC1vbi1hY3Rpb25zIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJvdHRvbTogNDNweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLWFjdGlvbnMgLmFkZC1vbi1zdGF0ZSB7XHJcbiAgICBmb250LXNpemU6IDM2cHg7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIG1hcmdpbi10b3A6IC04cHg7XHJcbiAgICBjb2xvcjogIzA1QjNGRjtcclxuICAgIG1hcmdpbi1sZWZ0OiAtOXB4O1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24tYWN0aW9ucyAuYWRkLW9uLXN0YXRlLmNoYW5nZSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4tY2FyZC10b3Age1xyXG4gICAgbWluLWhlaWdodDogMTgwcHg7XHJcbn1cclxuXHJcbi5wcmVtaXVtX2FkZF9vbnMuYWN0aXZlIC5jb2x1bW4tZGVzY3JpcHRpb24gcCB7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcclxuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDU7XHJcbiAgICBsaW5lLWhlaWdodDogMS42ZW07XHJcbiAgICBtYXgtaGVpZ2h0OiA4ZW07XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5idXR0b24uc3Bpbm5lciB7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3NwaW5uZXIuZ2lmKSBuby1yZXBlYXQgNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5hY3Rpb24tbGlua3MgPiBzcGFuIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5hY3Rpb24tbGlua3MgPiBzcGFuLmVuYWJsZWQge1xyXG4gICAgY29sb3I6ICM3YWQwM2E7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5hY3Rpb24tbGlua3MgPiBzcGFuLmRpc2FibGVkIHtcclxuICAgIGNvbG9yOiAjRkYwMDAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYWN0aW9uLWxpbmtzIC5wcmljZSB7XHJcbiAgICBjb2xvcjogIzQzOWZkZjtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICBsaW5lLWhlaWdodDogMS42ZW07XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5hY3Rpb24tbGlua3MgLnByaWNlIGRlbCB7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgY29sb3I6ICNhYWE7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4taWNvbiBpbWcge1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3MtYnVuZGxlLWFjdGl2YXRlLWFkZC1vbnMuc3Bpbm5lciB7XHJcbiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLXZlcnNpb24ge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1hZGQtb25zLXdyYXAgI25hbWUge1xyXG4gICAgd2lkdGg6IDMwJTtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgcDpiZWZvcmUge1xyXG4gICAgY29udGVudDogJyc7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1hZGQtb25zLXdyYXAgLnRoZW1lIHtcclxuICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3MtYWRkLW9ucy13cmFwIC50aGVtZS1jb250cm9scyB7XHJcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLWFkZC1vbnMtd3JhcCAudGhlbWUgaDIge1xyXG4gICAgbWFyZ2luOiAwIDAgMjBweCAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLWFkZC1vbnMtd3JhcCAudGhlbWUgaW1nIHtcclxuICAgIHdpZHRoOiA0MDBweDtcclxuICAgIGhlaWdodDogYXV0bztcclxuICAgIG1heC1oZWlnaHQ6IDEwMCU7XHJcbiAgICBmbG9hdDogbGVmdDtcclxuICAgIG1hcmdpbjogMCAyMHB4IDAgMDtcclxufVxyXG5cclxuLnJlbGF0ZWRfdGhlbWVzIHtcclxuICAgIC5wbHVnaW4tY2FyZC10b3Age1xyXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG4gICAgfVxyXG4gICAgLnRoZW1lLWNvbnRlbnQge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuICAgIC5pbWFnZS10aHVtYm5haWwgaW1nIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuICAgIC50aGVtZS1kZXNjcmlwdGlvbiB7XHJcbiAgICAgICAgbWFyZ2luOiAwIDAgMjVweCAwO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcclxuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDY7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xyXG4gICAgICAgIG1heC1oZWlnaHQ6IDkuNmVtO1xyXG5cclxuICAgIH1cclxuICAgIC50aGVtZS10aXRsZSB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMDBweDtcclxuICAgICAgICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS42ZW07XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICAgICAgICBtaW4taGVpZ2h0OiAzLjJlbTtcclxuICAgIH1cclxuICAgIC50aGVtZS10aXRsZSBhIHtcclxuXHJcbiAgICAgICAgY29sb3I6ICM1NDU0NTQ7XHJcbiAgICB9XHJcbiAgICAudGhlbWUtcmF0aW5nIHtcclxuICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gICAgLnN0YXItcmF0aW5nIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB9XHJcbiAgICAuY291bnQtcmF0aW5nIHtcclxuICAgICAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHRvcDogMnB4O1xyXG4gICAgfVxyXG4gICAgLnRoZW1lLWRldGFpbCB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHJpZ2h0OiAzcHg7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcclxuXHJcbiAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudGhlbWUtcHJpY2Uge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgICAgICAgICAgY29sb3I6ICM1NDU0NTQ7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC50aGVtZS1mb290ZXIge1xyXG4gICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMjBweDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0yMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYTtcclxuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogMTI4MHB4KSB7XHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIHtcclxuICAgICAgICAvKndpZHRoOiAzMy4zMyU7Ki9cclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzgycHgpIHtcclxuICAgIC5sZWFybi1wcmVzcy1hZGQtb25zIC5lbmFibGUtbm93IHtcclxuICAgICAgICBwYWRkaW5nOiA1cHg7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC5sZWFybi1wcmVzcy1hZGQtb25zIC5lbmFibGUtbm93OmJlZm9yZSB7XHJcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmxlYXJuLXByZXNzLWFkZC1vbnMgLmVuYWJsZS1ub3c6YmVmb3JlIHtcclxuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAjbGVhcm4tcHJlc3MtYWRkLW9ucy13cmFwIC50aGVtZSBpbWcge1xyXG4gICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcclxuICAgIC5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkge1xyXG4gICAgICAgIC8qd2lkdGg6IDUwJTsqL1xyXG4gICAgfVxyXG5cclxuICAgIC5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkgLmNvbHVtbi1uYW1lIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1MHB4O1xyXG4gICAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcclxuICAgIC5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgICNsZWFybi1wcmVzcy1hZGQtb25zLXdyYXAgLnRoZW1lIGltZyB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgbWFyZ2luOiAwIDAgMjBweCAwO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKiovXHJcblxyXG4jbHByLXF1aXotcXVlc3Rpb25zLXdyYXAgLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZSB7XHJcbiAgICBoZWlnaHQ6IDI5cHg7XHJcbiAgICBwYWRkaW5nLXRvcDogM3B4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcblxyXG4ucG9zdC10aXRsZS5jb2x1bW4tdGl0bGUge1xyXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbn1cclxuXHJcbi5scHItcm93LWFjdGlvbnMge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4ubHByLXJvdy1hY3Rpb24tZHJvcGRvd24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAxMDAlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIG1pbi13aWR0aDogMTUwcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4ubHByLXJvdy1hY3Rpb24tZHJvcGRvd24gPiBsaSB7XHJcbiAgICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi5scHItcm93LWFjdGlvbi1kcm9wZG93biA+IGxpID4gYSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmc6IDVweDtcclxufVxyXG5cclxuLmxwci1yb3ctYWN0aW9ucyA+IGEge1xyXG4gICAgcGFkZGluZy1yaWdodDogMTVweDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmxwci1yb3ctYWN0aW9ucyA+IGE6YWZ0ZXIge1xyXG4gICAgd2lkdGg6IDA7XHJcbiAgICBoZWlnaHQ6IDA7XHJcbiAgICBib3JkZXI6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlci10b3AtY29sb3I6ICNEREQ7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgdG9wOiA2cHg7XHJcbn1cclxuXHJcbi5scHItcm93LWFjdGlvbnM6aG92ZXIgPiB1bCB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLyogYWRkb25zIHBhZ2UgKi9cclxuI2xwci1hZGQtb25zLXdyYXBwZXIge1xyXG59XHJcblxyXG4jbHByLWFkZC1vbnMtd3JhcHBlciAubHByLWFkZC1vbi1ibG9jayB7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICNEREQ7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgICBmbG9hdDogbGVmdDtcclxuICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbn1cclxuXHJcbiNscHItYWRkLW9ucy13cmFwcGVyIC5scHItYWRkLW9uLWJsb2NrOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBjbGVhcjogYm90aDtcclxufVxyXG5cclxuI2xwci1hZGQtb25zLXdyYXBwZXIgLmxwci1hZG1pbi10aHVtYm5haWwge1xyXG4gICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICB3aWR0aDogMjAwcHg7XHJcbn1cclxuXHJcbiNscHItYWRkLW9ucy13cmFwcGVyIC5scHItYWRtaW4tdGh1bWJuYWlsIGltZyB7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG59XHJcblxyXG4jbHByLWFkZC1vbnMtd3JhcHBlciAubHByLWFkZC1vbi1pbmZvIHtcclxuICAgIG1hcmdpbi1sZWZ0OiAyMjBweDtcclxuICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxufVxyXG5cclxuI2xwci1hZGQtb25zLXdyYXBwZXIgLmxwci1hZGQtb24taW5mbyA+IGgzIHtcclxuICAgIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbiNscHItYWRkLW9ucy13cmFwcGVyIC5scHItYWRkLW9uLWluZm8gPiBoMyA+IHNwYW4ge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcGFkZGluZzogMCA1cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN0FEM0ZBO1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XHJcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG59XHJcblxyXG4jbHByLWFkZC1vbnMtd3JhcHBlciAubHByLWFkZC1vbi1hY3Rpb24ge1xyXG4gICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgd2lkdGg6IDEwMHB4O1xyXG59XHJcblxyXG4vKiB0b2dnbGUgKi9cclxuaW5wdXQubHByLWZhbmN5LWNoZWNrYm94IHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5scHItZmFuY3ktY2hlY2tib3gudG9nIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgNHB4IHJnYmEoMCwgMCwgMCwgLjYpO1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDE5cHg7XHJcbiAgICB3aWR0aDogNTBweDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGZvbnQ6IDExcHgvMThweCBhcmlhbDtcclxuICAgIGJhY2tncm91bmQ6ICNjY2M7XHJcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlO1xyXG4gICAgLW8tdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlO1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5scHItZmFuY3ktY2hlY2tib3gudG9nOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgYm94LXNoYWRvdzogMCAycHggMnB4IHJnYmEoMCwgMCwgMCwgLjYpO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgaGVpZ2h0OiAxNXB4O1xyXG4gICAgd2lkdGg6IDE1cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAycHg7XHJcbiAgICBsZWZ0OiAycHg7XHJcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlO1xyXG4gICAgLW8tdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlO1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlO1xyXG59XHJcblxyXG4ubHByLWZhbmN5LWNoZWNrYm94LnRvZzpiZWZvcmUge1xyXG4gICAgY29udGVudDogJ09GRic7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICByaWdodDogN3B4O1xyXG4gICAgdG9wOiAxcHg7XHJcbiAgICBjb2xvcjogI2ZmZjtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2c6aG92ZXI6YWZ0ZXIge1xyXG4gICAgbGVmdDogNXB4O1xyXG59XHJcblxyXG4ubHByLWZhbmN5LWNoZWNrYm94LnRvZy5vbjpiZWZvcmUge1xyXG4gICAgY29udGVudDogJ09OJztcclxuICAgIHJpZ2h0OiAyOHB4O1xyXG59XHJcblxyXG4ubHByLWZhbmN5LWNoZWNrYm94LnRvZy5vbiB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjMDVCM0ZGO1xyXG59XHJcblxyXG4ubHByLWZhbmN5LWNoZWNrYm94LnRvZy5vbjphZnRlciB7XHJcbiAgICBsZWZ0OiAzM3B4O1xyXG59XHJcblxyXG4ubHByLWZhbmN5LWNoZWNrYm94LnRvZy5vbjpob3ZlcjphZnRlciB7XHJcbiAgICBsZWZ0OiAzMHB4O1xyXG59XHJcblxyXG4vKiovXHJcbi5jbGVhcmZpeDphZnRlciB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgY2xlYXI6IGJvdGg7XHJcbn1cclxuXHJcbi5jbGVhciB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGNsZWFyOiBib3RoO1xyXG4gICAgaGVpZ2h0OiAwO1xyXG59XHJcblxyXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiB7XHJcblxyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24ubHAtbGlzdC1vcHRpb24tZW1wdHkgdGQsXHJcbi5scC1saXN0LW9wdGlvbi5scC1saXN0LW9wdGlvbi1lbXB0eSB0aCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJFOUU5O1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24ubHAtbGlzdC1vcHRpb24tZW1wdHkgLmxwLWFuc3dlci1jaGVjayBpbnB1dCxcclxuLmxwLWxpc3Qtb3B0aW9uLmxwLWxpc3Qtb3B0aW9uLWVtcHR5IC5scC1saXN0LW9wdGlvbi1hY3Rpb25zIGkge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uIC5jbG0ge1xyXG5cclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uIC5scC1pdGVtLWNoZWNrYm94IHtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uIC5scC1pdGVtLW5hbWUge1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24gLmxwLWl0ZW0tYWN0aW9ucyB7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbnMgdGhlYWQgdGgge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0ZGRjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNFQUVBRUE7XHJcbiAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuXHJcbiAgICBjb2xvcjogIzAwQTBEMjtcclxuXHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbnMgdGJvZHkgdGgsXHJcbi5scC1saXN0LW9wdGlvbnMgdGJvZHkgdGQge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0ZGRjtcclxuICAgIHBhZGRpbmc6IDEwcHggMTBweDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNUY1O1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIC5scC1hbnN3ZXItY2hlY2sge1xyXG4gICAgd2lkdGg6IDEwMHB4O1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIHRib2R5IHRoIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxyXG4ubHAtbGlzdC1vcHRpb25zIHRib2R5IHRkIGlucHV0W3R5cGU9XCJ0ZXh0XCJdIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbnMgLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIHRkIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uL2ltYWdlcy9zdHJpcGUucG5nXCIpO1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24gLmxwLWFuc3dlci10ZXh0IHtcclxuICAgIGNvbG9yOiAjNzc3O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uIC5scC1hbnN3ZXItdGV4dDphZnRlciB7XHJcbiAgICBmb250LWZhbWlseTogZGFzaGljb25zO1xyXG4gICAgY29udGVudDogJ1xcZjQ2NCc7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiAubHAtYW5zd2VyLXRleHQ6Zm9jdXMsXHJcbi5scC1saXN0LW9wdGlvbjpob3ZlciAubHAtYW5zd2VyLXRleHQge1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbjpob3ZlciAubHAtYW5zd2VyLXRleHQge1xyXG4gICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbi1hY3Rpb25zIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGNvbG9yOiAjMDBBMEQyO1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24tYWN0aW9ucy5scC1tb3ZlLWxpc3Qtb3B0aW9uIHtcclxuICAgIGN1cnNvcjogbW92ZTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uLWFjdGlvbnM6aG92ZXIge1xyXG4gICAgY29sb3I6ICMxNTYwNzc7XHJcbn1cclxuXHJcbi8qIFF1ZXN0aW9uIG1ldGEgYm94ICovXHJcbiNxdWVzdGlvbl9hbnN3ZXIgLnJ3bWItcXVlc3Rpb24td3JhcHBlciB7XHJcbiAgICBtYXJnaW46IDEycHggMCAwIDA7XHJcbn1cclxuXHJcbi5xdWVzdGlvbi1ib3R0b20tYWN0aW9ucyA+ICoge1xyXG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIFF1aXogbWV0YSBib3ggKi9cclxuYm9keS5wb3N0LXR5cGUtbHBfcXVpeiAjcXVlc3Rpb25zLFxyXG5ib2R5LnBvc3QtdHlwZS1scF9xdWVzdGlvbiAjcXVlc3Rpb25fYW5zd2VyXyB7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbmJvZHkucG9zdC10eXBlLWxwX3F1aXogI3F1ZXN0aW9ucyAuaGFuZGxlZGl2LFxyXG5ib2R5LnBvc3QtdHlwZS1scF9xdWVzdGlvbiAjcXVlc3Rpb25fYW5zd2VyXyAuaGFuZGxlZGl2IHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbmJvZHkucG9zdC10eXBlLWxwX3F1aXogI3F1ZXN0aW9ucyAuaG5kbGUsXHJcbmJvZHkucG9zdC10eXBlLWxwX3F1ZXN0aW9uICNxdWVzdGlvbl9hbnN3ZXJfIC5obmRsZSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG5ib2R5LnBvc3QtdHlwZS1scF9xdWl6ICNxdWVzdGlvbnMgLmluc2lkZSxcclxuYm9keS5wb3N0LXR5cGUtbHBfcXVlc3Rpb24gI3F1ZXN0aW9uX2Fuc3dlcl8gLmluc2lkZSB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9ucy1oZWFkaW5nIC5xdWVzdGlvbnMtdG9nZ2xlIHtcclxuICAgIGZsb2F0OiByaWdodDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9ucy1oZWFkaW5nIC5xdWVzdGlvbnMtdG9nZ2xlIGE6aG92ZXIge1xyXG4gICAgY29sb3I6ICMwMGEwZDI7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgI2xlYXJuLXByZXNzLWRyb3Bkb3duLXF1ZXN0aW9ucyB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgI2xlYXJuLXByZXNzLWRyb3Bkb3duLXF1ZXN0aW9ucyA+IHVsIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMTAwJTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0VFRTtcclxuICAgIGJvcmRlci10b3A6IG5vbmU7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgei1pbmRleDogNTA7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgI2xlYXJuLXByZXNzLWRyb3Bkb3duLXF1ZXN0aW9ucyA+IHVsID4gbGkge1xyXG4gICAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy1kcm9wZG93bi1xdWVzdGlvbnMgPiB1bCBsaSA+IGEge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiA1cHg7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtcXVlc3Rpb24tbmFtZSB7XHJcbiAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgICBtaW4td2lkdGg6IDM1MHB4O1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgIGJvcmRlci1jb2xvcjogI0VFRTtcclxuICAgIGNvbG9yOiAjQkJCO1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtdG9nZ2xlLXF1ZXN0aW9ucyB7XHJcbiAgICBoZWlnaHQ6IDMycHg7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNFRUU7XHJcbiAgICB3aWR0aDogMzJweDtcclxuICAgIG1hcmdpbi1sZWZ0OiAtNHB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZm9udC1zaXplOiAzMHB4O1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIGNvbG9yOiAjQ0NDO1xyXG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy10b2dnbGUtcXVlc3Rpb25zOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjQUFBQUFBO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy1idXR0b24tYWRkLXF1ZXN0aW9uIHtcclxuICAgIF92ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIGlucHV0W25hbWU9XCJscC1uZXctcXVlc3Rpb24tbmFtZVwiXSB7XHJcblxyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWVzdGlvbi1hY3Rpb25zIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiA5OTk7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgLnF1aXotcXVlc3Rpb24taGVhZCAucXVpei1xdWVzdGlvbi1hY3Rpb25zIHtcclxuICAgIGZsb2F0OiByaWdodDtcclxuICAgIG1hcmdpbjogMXB4IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgICBwYWRkaW5nLXRvcDogMnB4O1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9uLWhlYWQgLnF1aXotcXVlc3Rpb24tYWN0aW9ucyBhIHtcclxuICAgIG1hcmdpbjogMCAzcHg7XHJcbiAgICBjb2xvcjogQHByaW1hcnktaWNvbi1jb2xvcjtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBib3gtc2hhZG93OiBub25lO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9uLWhlYWQgLnF1aXotcXVlc3Rpb24tYWN0aW9ucyBhOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjMDBhMGQyO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9uLWhlYWQ6aG92ZXIgLnF1aXotcXVlc3Rpb24tYWN0aW9ucyB7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9uLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIHtcclxuICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uL2ltYWdlcy9zdHJpcGUucG5nXCIpO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgLnF1ZXN0aW9uLW5hbWUge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgIHBhZGRpbmctbGVmdDogMDtcclxuICAgIHdpZHRoOiA3MCU7XHJcbiAgICBjb2xvcjogIzc3NztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgLnF1aXotcXVlc3Rpb24taWNvbiBpbWcge1xyXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy1kcm9wZG93bi1xdWVzdGlvbnMgLmFkZGVkIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5scHItY3VycmljdWx1bS1zZWN0aW9uID4gaDMge1xyXG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubHByLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzIC5scHItYWN0aW9uIHtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG59XHJcblxyXG4ubHByLWN1cnJpY3VsdW0tc2VjdGlvbi5scHItZW1wdHkgPiBoMyB7XHJcbiAgICBjdXJzb3I6IGRlZmF1bHQgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmxwci1jdXJyaWN1bHVtLXNlY3Rpb24ubHByLWVtcHR5IC5scHItYWN0aW9uIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmxwci1jb3Vyc2UtY3VycmljdWx1bSBidXR0b24gc3BhbiB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLXN0YXRpc3RpYyB7XHJcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtY2hhcnQge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtY2hhcnQgY2FudmFzIHtcclxuICAgIGhlaWdodDogNzB2aDtcclxuICAgIHdpZHRoOiAxMDB2dztcclxufVxyXG5cclxuLmNoYXJ0LWJ1dHRvbnMgZm9ybSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG59XHJcblxyXG4uY2hhcnQtYnV0dG9ucyBmb3JtIGlucHV0W3R5cGU9XCJ0ZXh0XCJdIHtcclxuICAgIHdpZHRoOiAxMDVweDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIHBhZGRpbmc6IDRweDtcclxufVxyXG5cclxuLmNoYXJ0LWJ1dHRvbnMgZm9ybSBzcGFuIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIHBhZGRpbmc6IDVweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWNoYXJ0LmxvYWRpbmc6YWZ0ZXIge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICB6LWluZGV4OiAxMDtcclxuICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICBvcGFjaXR5OiAwLjU7XHJcbn1cclxuXHJcbi5jaGFydC1kZXNjcmlwdGlvbiB7XHJcblxyXG59XHJcblxyXG4uY2hhcnQtZGVzY3JpcHRpb24gbGkge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xyXG59XHJcblxyXG4uY2hhcnQtZGVzY3JpcHRpb24gbGk6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgd2lkdGg6IDEwcHg7XHJcbiAgICBoZWlnaHQ6IDEwcHg7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbn1cclxuXHJcbi5jaGFydC1kZXNjcmlwdGlvbiBsaSBzcGFuIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuLmNoYXJ0LWRlc2NyaXB0aW9uIGxpLmFsbDpiZWZvcmUge1xyXG4gICAgYmFja2dyb3VuZDogIzJGQTdGRjtcclxufVxyXG5cclxuLmNoYXJ0LWRlc2NyaXB0aW9uIGxpLmluc3RydWN0b3JzOmJlZm9yZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjRUFDNzlCO1xyXG59XHJcblxyXG4uY2hhcnQtZGVzY3JpcHRpb24gbGkuc3R1ZGVudHM6YmVmb3JlIHtcclxuICAgIGJhY2tncm91bmQ6ICNENEQwQ0I7XHJcbn1cclxuXHJcbi5scHItc3RhdHMtdGltZSB7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5scHItaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbiNscHItY3VzdG9tLXRpbWUge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgdG9wOiA0cHg7XHJcbn1cclxuXHJcbi8qIGJsb2NrIHBhZ2UgKi9cclxuI2xwci1wYWdlLWJsb2NrIHtcclxuICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgIHRvcDogMDtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XHJcbiAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgei1pbmRleDogOTk5OTtcclxufVxyXG5cclxuI2Zvcm0tcXVpY2stYWRkLWxlc3Nvbi1saW5rIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxufVxyXG5cclxuI19scHJfY291cnNlX3ByaWNlX2Rlc2NyaXB0aW9uID4gc3BhbiB7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIGZvbnQtc2l6ZTogMTVweDtcclxufVxyXG5cclxuLmxwci1pZ25vcmUsIC5scHItaWdub3JlOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjZGQzZDM2O1xyXG59XHJcblxyXG4ubHByLWlnbm9yZTpob3ZlciB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5scHItcXVpY2stYWRkLXBhZ2UtaW5saW5lLFxyXG4ubHByLXF1aWNrLWFjdGlvbnMtaW5saW5lIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuI2xwci10b2dnbGUtcXVpei1tb2RlIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDc3RkY7XHJcbiAgICBwYWRkaW5nOiAzcHg7XHJcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbn1cclxuXHJcbi5jb2x1bW4tbnVtX29mX3F1ZXN0aW9uIHtcclxuICAgIHdpZHRoOiAxNTBweDtcclxufVxyXG5cclxuLmxwLXNlYXJjaC1pdGVtcyBpbnB1dFtuYW1lPVwibHAtaXRlbS1uYW1lXCJdIHtcclxuICAgIHdpZHRoOiA1MDBweDtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93biB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDI4cHggIWltcG9ydGFudDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHotaW5kZXg6IDk5OTk4O1xyXG59XHJcblxyXG4ubHAtYnV0dG9uLWRyb3Bkb3duIC5scC1kcm9wZG93bi1sYWJlbCB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XHJcbn1cclxuXHJcbi5scC1idXR0b24tZHJvcGRvd24gLmxwLWRyb3Bkb3duLWFycm93IHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIC8qIHdpZHRoOiAyMHB4OyAqL1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgcGFkZGluZzogMCAxMHB4O1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAtMXB4O1xyXG4gICAgYm90dG9tOiAtMXB4O1xyXG59XHJcblxyXG4ubHAtYnV0dG9uLWRyb3Bkb3duIC5scC1kcm9wZG93bi1pdGVtcyB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICAvKiB3aWR0aDogMTAwJTsgKi9cclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XHJcbiAgICB0b3A6IDEwMCU7XHJcbiAgICBtYXJnaW4tdG9wOiAxcHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgcmlnaHQ6IC0xcHg7XHJcbiAgICAvKiByaWdodDogLTFweDsgKi9cclxuICAgIHdpZHRoOiAyMDBweDtcclxuICAgIHotaW5kZXg6IDk5OTk5OTk7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4ubHAtYnV0dG9uLWRyb3Bkb3duIC5scC1kcm9wZG93bi1pdGVtcyBsaSB7XHJcbiAgICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi5scC1idXR0b24tZHJvcGRvd24gLmxwLWRyb3Bkb3duLWl0ZW1zIGxpIGEge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93biAubHAtZHJvcGRvd24taXRlbXMgbGkgYTpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNUY1O1xyXG59XHJcblxyXG4ubHAtYnV0dG9uLWRyb3Bkb3duOm5vdCguZGlzYWJsZWQpOmhvdmVyIHVsLFxyXG4ubHAtYnV0dG9uLWRyb3Bkb3duOm5vdCguZGlzYWJsZWQpIHVsOmhvdmVyIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4uY3VycmljdWx1bS1zZWN0aW9uLmxwLWVtcHR5LXNlY3Rpb24ge1xyXG59XHJcblxyXG4uY3VycmljdWx1bS1zZWN0aW9uIC5scC1jaGVjay1pdGVtcyxcclxuLmN1cnJpY3VsdW0tc2VjdGlvbiAubHAtY2hlY2staXRlbXM6aG92ZXIge1xyXG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAzNHB4O1xyXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuLmNvbHVtbi1mb3JtYXQsXHJcbi5jb2x1bW4taXNfcHJldmlld2FibGUsXHJcbi5jb2x1bW4tdGF4b25vbXktcXVlc3Rpb24tdGFnIHtcclxuICAgIHdpZHRoOiAxMCU7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4tY2FyZCAuaW5zdGFsbC1ub3c6YmVmb3JlLFxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmRpc2FibGUtbm93OmJlZm9yZSxcclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5lbmFibGUtbm93OmJlZm9yZSB7XHJcbiAgICBtYXJnaW46IDNweCA1cHggMCAtMnB4O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgZm9udDogNDAwIDIwcHgvMSBkYXNoaWNvbnM7XHJcbiAgICAvKnNwZWFrOiBub25lOyovXHJcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmluc3RhbGwtbm93OmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnXFxmMTA2JztcclxuICAgIGNvbG9yOiAjMDA3M2FhO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmRpc2FibGUtbm93OmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnXFxmMTQ3JztcclxuICAgIGNvbG9yOiAjMDA3M2FhO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmVuYWJsZS1ub3c6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdcXGYzMzUnO1xyXG4gICAgY29sb3I6ICNkNTRlMjE7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4tY2FyZCAuZGlzYWJsZS1ub3c6aG92ZXI6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdcXGYzMzUnO1xyXG4gICAgY29sb3I6ICNkNTRlMjE7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4tY2FyZCAuZW5hYmxlLW5vdzpob3ZlcjpiZWZvcmUge1xyXG4gICAgY29udGVudDogJ1xcZjE0Nyc7XHJcbiAgICBjb2xvcjogIzAwNzNhYTtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5idXR0b24td29ya2luZzpiZWZvcmUge1xyXG4gICAgY29udGVudDogJ1xcZjQ2MycgIWltcG9ydGFudDtcclxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBscC1zcGlubmVyIDJzIGluZmluaXRlIGxpbmVhcjtcclxuICAgIGFuaW1hdGlvbjogbHAtc3Bpbm5lciAycyBpbmZpbml0ZSBsaW5lYXI7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4tY2FyZCAuYnV0dG9uLXdvcmtpbmcgc3BhbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4ubHAtYnV0dG9uLWFjdGlvbnMgYSB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtcXVpY2stY29uZmlybSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB6LWluZGV4OiA5OTk5O1xyXG4gICAgY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTtcclxuICAgIHBhZGRpbmc6IDJweCA4cHg7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBsZWZ0OiAtMzkuNjI1cHg7XHJcbiAgICB0b3A6IDI0cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQzkwMjAyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtcXVpY2stY29uZmlybTpob3ZlcixcclxuLmxlYXJuLXByZXNzLXF1aWNrLWNvbmZpcm06aG92ZXI6YmVmb3JlIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNkNzNiMDA7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1xdWljay1jb25maXJtOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgLyogYm9yZGVyOiAxcHggc29saWQ7ICovXHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbiAgICB3aWR0aDogN3B4O1xyXG4gICAgaGVpZ2h0OiA3cHg7XHJcbiAgICB0b3A6IC0zcHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQzkwMjAyO1xyXG4gICAgcmlnaHQ6IDdweDtcclxufVxyXG5cclxuLyogY291cnNlICovXHJcbi53cC1jb3JlLXVpIC5tZXRhX2JveF9hZGRfc2VjdGlvbixcclxuLndwLWNvcmUtdWkgLm1ldGFfYm94X2FkZF9sZXNzb24ge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG59XHJcblxyXG4uaGlkZSB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4uaGFuZGxlLmRhc2hpY29ucyB7XHJcbiAgICBjdXJzb3I6IG1vdmU7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbn1cclxuXHJcbi5tZXRhX2JveF9yZW1vdmUgLmRhc2hpY29ucyB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IGluaXRpYWw7XHJcbn1cclxuXHJcbi5tZXRhX2JveF9jb3Vyc2VfbGVzc29uX3F1aXogbGkgaW5wdXQsXHJcbi5tZXRhX2JveF9jb3Vyc2VfbGVzc29uX3F1aXogbGkgc2VsZWN0IHtcclxuICAgIG1pbi13aWR0aDogMjUwcHg7XHJcbn1cclxuXHJcbi5yd21iLW1ldGEtYm94IHtcclxuICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICBsYWJlbCB7XHJcbiAgICAgICAgY29sb3I6ICMyMjI7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgbWFyZ2luOiAwIDAgMTZweCAwO1xyXG4gICAgfVxyXG59XHJcbi5kZXNjcmlwdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbn1cclxuXHJcbi5kYXNoZWQtcGxhY2Vob2xkZXIge1xyXG4gICAgYm9yZGVyOiAycHggZGFzaGVkICM5OTk7XHJcbiAgICBwYWRkaW5nOiAxMHB4O1xyXG59XHJcblxyXG4vKlxyXG4gICAgVHVOTiBhZGRlZCAyMSAwMyAyMDE1XHJcbiAgICBNb2RpZmllZCAwMyBBcHIgMjAxNVxyXG4qL1xyXG4vKiBDb3Vyc2UgQ3VycmljdWx1bW4gbWV0YSBib3ggc2VjdGlvbiovXHJcblxyXG4vKioqKioqKioqKioqIHZlcnNpb24gMS4wICoqKioqKioqKioqKioqL1xyXG5cclxuLyogb3JkZXIgKi9cclxuLnBvc3QtdHlwZS1scF9vcmRlciAjcG9zdC1ib2R5LWNvbnRlbnQsXHJcbi5wb3N0LXR5cGUtbHBfb3JkZXIgI29yZGVyX2RldGFpbHMgLmhhbmRsZWRpdixcclxuLnBvc3QtdHlwZS1scF9vcmRlciAjb3JkZXJfZGV0YWlscyAuaG5kbGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLnBvc3QtdHlwZS1scF9vcmRlciAjc3VibWl0cG9zdCAubWlzYy1wdWItc2VjdGlvbiBsYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciB7XHJcbiAgICBtYXJnaW46IDE1cHg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItZGF0YS1udW1iZXIge1xyXG4gICAgZm9udC1zaXplOiAzNnB4O1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciA+IGgzIHtcclxuICAgIG1hcmdpbjogMCAwIDEwcHggMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItZGF0YS1kYXRlLFxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLm9yZGVyLWRhdGEtc3RhdHVzLFxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLm9yZGVyLWRhdGEtcGF5bWVudC1tZXRob2Qge1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgcGFkZGluZzogMCAwIDEwcHggMDtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLW9yZGVyIC51c2VyLWRpc3BsYXktbmFtZSxcclxuI2xlYXJuLXByZXNzLW9yZGVyIC51c2VyLWVtYWlsLFxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLnVzZXItaXAtYWRkcmVzcyB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgbWFyZ2luOiAwIDAgMTBweCAwO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLm9yZGVyLWl0ZW1zIHRhYmxlIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItaXRlbXMgdGFibGUgdGgsXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItaXRlbXMgdGFibGUgdGQge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIHBhZGRpbmc6IDEwcHggMTVweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1pbnN0YWxsLXNhbXBsZS1kYXRhLW5vdGljZSAuaW5zdGFsbC1zYW1wbGUtZGF0YS1sb2FkaW5nIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi8qIGxlYXJuX3ByZXNzX2Rhc2hib2FyZF93aWRnZXQgKi9cclxuI2xlYXJuX3ByZXNzX2Rhc2hib2FyZF93aWRnZXQge1xyXG4gICAgLnN1YnN1YnN1YiB7XHJcbiAgICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qIGlvcyBjaGVja2JveCAqL1xyXG4ubGVhcm4tcHJlc3MtY2hlY2tib3gge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5pbnB1dC5yZWd1bGFyLXRleHRbaWRePVwibGVhcm4tcHJlc3MtZW1haWxzXCJdIHtcclxuICAgIHdpZHRoOiA5NyU7XHJcbn1cclxuXHJcbi5pb3MtdWktc2VsZWN0IHtcclxuICAgIGJhY2tncm91bmQ6ICNkZGRkZGQ7XHJcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIGhlaWdodDogMThweDtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOXB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogOXB4O1xyXG4gICAgd2lkdGg6IDMwcHg7XHJcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG4gICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcclxuICAgIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XHJcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4uaW9zLXVpLXNlbGVjdC5jaGVja2VkIHtcclxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMThweCAjNmRkYzVmO1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMThweCAjNmRkYzVmO1xyXG59XHJcblxyXG4uaW9zLXVpLXNlbGVjdC5jaGVja2VkIC5pbm5lciB7XHJcbiAgICBsZWZ0OiAxM3B4O1xyXG59XHJcblxyXG4uaW9zLXVpLXNlbGVjdCAuaW5uZXIge1xyXG4gICAgd2lkdGg6IDE2cHg7XHJcbiAgICBoZWlnaHQ6IDE2cHg7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDFweDtcclxuICAgIGxlZnQ6IDFweDtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDM1MG1zIGN1YmljLWJlemllcigwLCAwLjg5LCAwLjQ0LCAxKTtcclxuICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDM1MG1zIGN1YmljLWJlemllcigwLCAwLjg5LCAwLjQ0LCAxKTtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAzNTBtcyBjdWJpYy1iZXppZXIoMCwgMC44OSwgMC40NCwgMSk7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgMzUwbXMgY3ViaWMtYmV6aWVyKDAsIDAuODksIDAuNDQsIDEpO1xyXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgM3B4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAzcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG59XHJcblxyXG4ubHAtbGFiZWwtY291bnRlciB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3M0FBO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgIGhlaWdodDogMjFweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWluLXdpZHRoOiAyMXB4O1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbiAgICBwYWRkaW5nOiAwIDVweDtcclxufVxyXG5cclxuLmNvbHVtbi1udW1fb2ZfcXVlc3Rpb24sXHJcbi5jb2x1bW4tcHJldmlldyxcclxuLmNvbHVtbi1kdXJhdGlvbixcclxuLmNvbHVtbi10eXBlLFxyXG4uY29sdW1uLXRheG9ub215LXF1ZXN0aW9uX3RhZyB7XHJcbiAgICB3aWR0aDogMTAwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG59XHJcblxyXG4jbGVhcm5fcHJlc3NfZGFzaGJvYXJkX3dpZGdldCB7XHJcbiAgICAucnNzLXdpZGdldCB7XHJcbiAgICAgICAgdWwge1xyXG4gICAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAucnNzLWRhdGUge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgfVxyXG59XHJcblxyXG4jbGVhcm5fcHJlc3NfZGFzaGJvYXJkX3dpZGdldF9zdGF0dXMge1xyXG4gICAgLmluc2lkZSB7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgIC5sZWFybnByZXNzLXN0YXRpc3RpYy1zdGF0dXMge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgICAgICAgICA+IGEsID4gc3BhbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAmLmZ1bGwtd2lkdGgge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VjZWNlYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlY2VjZWM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCAxMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA+IGEge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ubHAtdGVtcGxhdGUtb3ZlcnJpZGVzIHtcclxuICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICB0aGVhZCB0aCBoNCB7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gICAgdGJvZHkgdGgge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIHAge1xyXG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwIDEwcHg7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHggOHB4O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICAgICAgICAgICAgJi5jdXJyZW50IHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBhYWRjO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLmxwLXRlbXBsYXRlLXZlcnNpb24ge1xyXG4gICAgICAgIHdpZHRoOiAxMDBweDtcclxuICAgICAgICAmLm91dGRhdGVkIHtcclxuICAgICAgICAgICAgY29sb3I6ICNGRjAwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYudXAtdG8tZGF0ZSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMTg1OWZmO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5scC10ZW1wbGF0ZS12ZXJzaW9uLCAubHAtY29yZS12ZXJzaW9uIHtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuICAgIC5scC10ZW1wbGF0ZS1maWxlIHtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gICAgI2xlYXJuLXByZXNzLW5vLXRlbXBsYXRlcyB0ZCBwIHtcclxuICAgICAgICBjb2xvcjogIzAwNzNhYTtcclxuICAgIH1cclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGxwLXNwaW5uZXIge1xyXG4gICAgMCUge1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKTtcclxuICAgIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBscC1zcGlubmVyIHtcclxuICAgIDAlIHtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xyXG4gICAgfVxyXG4gICAgMTAwJSB7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5yd21iLXF1aXpfcXVlc3Rpb25zLXdyYXBwZXIge1xyXG4gICAgYmFja2dyb3VuZDogI0ZGRjtcclxuICAgIC5xdWl6LXF1ZXN0aW9ucy1oZWFkaW5nIHtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGOUY5Rjk7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgY29sb3I6ICM3Nzc7XHJcbiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4IDIwcHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgICAgIGEge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDMycHg7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMDA3M2FhO1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICAmLmRhc2hpY29ucy1hcnJvdy1kb3duIHtcclxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xMHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMGEwZDI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAjbGVhcm4tcHJlc3MtbGlzdC1xdWVzdGlvbnMge1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgICAgICAucXVpei1xdWVzdGlvbiB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCAjREREO1xyXG4gICAgICAgICAgICBtYXJnaW46IC0xcHggMCAwIDA7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAwO1xyXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgybisxKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGQ0ZDO1xyXG4gICAgICAgICAgICAgICAgLnF1ZXN0aW9uLW5hbWUge1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0ZDRkM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLnF1aXotcXVlc3Rpb24taGVhZCB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgICAgICAucXVpei1xdWVzdGlvbi1pY29uIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLnF1ZXN0aW9uLW5hbWUge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC5tb3ZlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzY2NjtcclxuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHVybChcIi4uLy4uL2ltYWdlcy9vcGVuaGFuZC5jdXJcIikgNyA1LCBkZWZhdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICByaWdodDogMTRweDtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA1cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMwMGEwZDI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgLnF1aXotcXVlc3Rpb24tYWN0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmRhc2hpY29ucy1hZG1pbi1wYWdlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC5xdWl6LXF1ZXN0aW9uLWNvbnRlbnQge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ucG9zdC10eXBlLWxwX3F1aXoge1xyXG4gICAgI2dlbmVyYWwtc2V0dGluZ3Mge1xyXG4gICAgICAgIGEge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmxlYXJuLXByZXNzLXRhYnMge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICB1bC5oZWFkaW5nLXRhYnMge1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcclxuICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcclxuXHJcbiAgICAgICAgPiBsaSB7XHJcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDEwcHg7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICByaWdodDogMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTEwcHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLypmb250LXdlaWdodDogYm9sZDsqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMDAyYTNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICAgICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICAgICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC02cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAtNnB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5sZWFybi1wcmVzcy10YWItY29udGVudCB7XHJcbiAgICAgICAgPiBsaSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAxMHB4IDIwcHg7XHJcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcclxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gICAgJi5pbml0aWFsaXplIHtcclxuICAgICAgICAubGVhcm4tcHJlc3MtdGFiLWNvbnRlbnQgPiBsaSB7XHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmxlYXJuLXByZXNzLXRhYi1jb250ZW50IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtdGV4dCk7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMjUlO1xyXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMjBweDtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAjYTBhMGEwO1xyXG5cclxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiBsaW5lYXIgMXM7XHJcbiAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcclxuICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBsZWFybi1wcmVzcy1tZXRhLWJveC10YWJzLWluaXRpYWxpemUtYW5pbWF0aW9uIGxpbmVhciAxcztcclxuICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XHJcbiAgICAgICAgICAgICAgICAtbW96LWFuaW1hdGlvbjogbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiBsaW5lYXIgMXM7XHJcbiAgICAgICAgICAgICAgICAtbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xyXG4gICAgICAgICAgICAgICAgLW8tYW5pbWF0aW9uOiBsZWFybi1wcmVzcy1tZXRhLWJveC10YWJzLWluaXRpYWxpemUtYW5pbWF0aW9uIGxpbmVhciAxcztcclxuICAgICAgICAgICAgICAgIC1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xyXG4gICAgICAgICAgICAgICAgLW1zLWFuaW1hdGlvbjogbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiBsaW5lYXIgMXM7XHJcbiAgICAgICAgICAgICAgICAtbXMtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAmOm5vdCguaW5pdGlhbGl6ZSkge1xyXG4gICAgICAgIC5sZWFybi1wcmVzcy10YWItY29udGVudCA+IGxpIHtcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICA+IHVsIHtcclxuICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vKiBNZXRhYm94IFdpZGdldCAqL1xyXG4jd2lkZ2V0cy1yaWdodCAud2lkZ2V0cy1ob2xkZXItd3JhcCB7XHJcbiAgICAucndtYi1sYWJlbCB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgfVxyXG4gICAgLnJ3bWItaW5wdXR7XHJcbiAgICAgICAgaW5wdXRbdHlwZT1cInRleHRcIl17XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5kZXNjcmlwdGlvbiB7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgZm9udC1zaXplOiBzbWFsbDtcclxuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5vdXRkYXRlZC1yZWFkbW9yZS1saW5re1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtbWVzc2FnZS5ub3RpY2Utd2FybmluZyB7XHJcbiAgICBib3JkZXItbGVmdC1jb2xvcjogI2ZmYjkwMDtcclxufVxyXG5cclxuQGtleWZyYW1lcyBsZWFybi1wcmVzcy1tZXRhLWJveC10YWJzLWluaXRpYWxpemUtYW5pbWF0aW9uIHtcclxuICAgIDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG4gICAgNTAlIHtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG4gICAgMTAwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgIH1cclxufVxyXG5cclxuQC1tb3ota2V5ZnJhbWVzIGxlYXJuLXByZXNzLW1ldGEtYm94LXRhYnMtaW5pdGlhbGl6ZS1hbmltYXRpb24ge1xyXG4gICAgMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbiAgICA1MCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiB7XHJcbiAgICAwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgIH1cclxuICAgIDUwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIDEwMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbkAtby1rZXlmcmFtZXMgbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiB7XHJcbiAgICAwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgIH1cclxuICAgIDUwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIDEwMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbkAtbXMta2V5ZnJhbWVzIGxlYXJuLXByZXNzLW1ldGEtYm94LXRhYnMtaW5pdGlhbGl6ZS1hbmltYXRpb24ge1xyXG4gICAgMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbiAgICA1MCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG59XHJcbiJdLCJmaWxlIjoiYWRtaW4vYWRtaW4uY3NzIn0= */
|
assets/css/admin/meta-box-course.css
CHANGED
@@ -794,5 +794,3 @@ tr.focus .learn-press-dropdown-item-types > span.learn-press-icon {
|
|
794 |
.lp-course-curriculum-toggle .expand{
|
795 |
display: none;
|
796 |
}*/
|
797 |
-
|
798 |
-
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFkbWluL21ldGEtYm94LWNvdXJzZS5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxzQkFBdUIsTUFBSztBQUM1QixzQkFBdUI7RUFDbkIsd0JBQUE7O0FBRUo7RUFDQyxjQUFBO0VBQWUsbUJBQUE7O0FBRGhCLGtDQUVDO0VBQUUsZ0JBQUE7O0FBRUgsb0JBQ0k7QUFESixvQkFFSTtFQUNJLGtCQUFBOztBQUlSO0VBQ0ksbUJBQUE7O0FBREosMkJBRUk7RUFDSSxrQkFBQTs7QUFIUiwyQkFLSTtFQUNJLFdBQUE7RUFDQSxhQUFBOztBQVBSLDJCQVNJO0VBQ0ksZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7RUFDQSx3QkFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTs7QUFJUjtFQUNJLFlBQUE7RUFDQSw2QkFBQTtFQUNBLGNBQUE7O0FBSUEsb0JBQUU7QUFBZSxvQkFBRTtFQUNmLFVBQUE7O0FBRlIsb0JBS0ksc0JBQXNCLDBCQUEwQixlQUFlLEdBQUU7RUFDN0Qsa0JBQUE7O0FBQ0Esb0JBRkosc0JBQXNCLDBCQUEwQixlQUFlLEdBQUUsbUJBRTVEO0VBQ0csZUFBQTs7QUFNSixvQkFGSixnQkFFSyxlQUNHLGFBQWE7RUFDVCxhQUFBOztBQU9oQixxQkFBc0I7RUFDbEIsa0JBQUE7RUFDQSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsY0FBQTtFQUNBLHNCQUFBOztBQUdKLHFCQUFzQixvQkFBb0I7RUFDdEMsbUJBQUE7RUFDQSxXQUFBO0VBQ0EsY0FBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTs7QUFHSixxQkFBc0Isb0JBQW9CO0VBQ3RDLFlBQUE7RUFDQSxxQkFBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTs7QUFHSixxQkFBc0Isb0JBQW9CLGNBQWM7RUFDcEQsd0JBQUE7RUFDQSxxQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZUFBQTs7QUFJSixxQkFBc0I7RUFDbEIsU0FBQTtFQUNBLHNCQUFBO0VBQ0EsNkJBQUE7O0FBR0oscUJBQXNCO0VBQ2xC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QVFKLG9CQUNJO0FBREosb0JBRUk7RUFDSSxZQUFBO0VBQ0EsaUJBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBtZXRhIGJveCBjb3Vyc2UgKi9cbi5yd21iLWR1cmF0aW9uLXdyYXBwZXIgaW5wdXRbdHlwZT1cInRleHRcIl0sXG4ucndtYi1kdXJhdGlvbi13cmFwcGVyIHNlbGVjdCB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuI2xlYXJuLXByZXNzLXRvZ2dsZS1jb3Vyc2UtcmVzdWx0c3tcblx0ZGlzcGxheTogYmxvY2s7bWFyZ2luLWJvdHRvbToxMHB4O1xuXHRhe2JveC1zaGFkb3c6IG5vbmU7fVxufVxuLnBvc3QtdHlwZS1scF9jb3Vyc2Uge1xuICAgICNwb3N0ZGl2cmljLFxuICAgICNzdWJtaXRwb3N0IHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbn1cblxuI2xlYXJuLXByZXNzLXJldmlldy1tZXNzYWdlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgID4gaDQge1xuICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgfVxuICAgID4gdGV4dGFyZWEge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICB9XG4gICAgLmxwLXBlbmRpbmctcmV2aWV3LW1lc3NhZ2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjYzQ0O1xuICAgICAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgIG1hcmdpbjogLTEwcHggLTEwcHggMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0ge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBtYXJnaW46IDIwcHggMDtcbn1cblxuLnBvc3QtdHlwZS1scF9jb3Vyc2Uge1xuICAgICYgLmNvbHVtbi1wcmljZSwgJiAuY29sdW1uLXN0dWRlbnRzIHtcbiAgICAgICAgd2lkdGg6IDEwJTtcbiAgICB9XG5cbiAgICAjbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtaXRlbS1lbXB0eSB0ZC5zZWN0aW9uLWl0ZW0taW5wdXQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG4gICAgICAgICYuaG92ZXIge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnR5cGUtbHBfY291cnNlIHtcblxuICAgICAgICAmLnN0YXR1cy1wZW5kaW5nIHtcbiAgICAgICAgICAgIC5yb3ctYWN0aW9ucyAudmlldyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0taGVhZGluZyB7XG4gICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1oZWFkaW5nIC5kZXNjcmlwdGlvbiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBjb2xvcjogIzk5OTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDkwJTtcbiAgICBtYXJnaW4tdG9wOiAxMHB4Oztcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLWhlYWRpbmcgLml0ZW1zLXRvZ2dsZSB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbjogLTMzcHggN3B4IDAgMDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0taGVhZGluZyAuaXRlbXMtdG9nZ2xlIGEge1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcbiAgICAtbW96LWJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBmb250LXNpemU6IDMycHg7XG5cbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb25zIHtcbiAgICBtYXJnaW46IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24ge1xuICAgIG1hcmdpbjogLTFweCAwIDAgMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjREREO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24udWktc29ydGFibGUtcGxhY2Vob2xkZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uL2ltYWdlcy9zdHJpcGUucG5nXCIpO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWhlYWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y5RjlGOTtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBjb2xvcjogIzc3NztcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taGVhZCBpbnB1dCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y5RjlGOTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taGVhZCAubHAtc2VjdGlvbi1hY3Rpb25zIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiAxNHB4IDA7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb246bm90KC5scC1lbXB0eS1zZWN0aW9uKSAuY3VycmljdWx1bS1zZWN0aW9uLWhlYWQ6aG92ZXIgLmxwLXNlY3Rpb24tYWN0aW9ucyB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24gLmxwLXNlY3Rpb24tYWN0aW9ucyBhIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGNvbG9yOiAjNjY2NjY2O1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbiAubHAtc2VjdGlvbi1hY3Rpb25zIGFbZGF0YS1hY3Rpb249XCJleHBhbmRcIl0ge1xuICAgIGxpbmUtaGVpZ2h0OiAyOHB4O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbiAubHAtc2VjdGlvbi1hY3Rpb25zIGE6YmVmb3JlIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgZm9udC1zaXplOiAyNHB4O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbiAubHAtc2VjdGlvbi1hY3Rpb25zIGE6aG92ZXIge1xuICAgIGNvbG9yOiAjMDBhMGQyO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbiAuY3VycmljdWx1bS1zZWN0aW9uLWhlYWQgLmxwLXNlY3Rpb24tYWN0aW9ucyAubW92ZSB7XG4gICAgY3Vyc29yOiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL29wZW5oYW5kLmN1clwiKSA3IDUsIGRlZmF1bHQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAtMTVweDtcbiAgICBoZWlnaHQ6IDU3cHg7XG4gICAgdG9wOiAtMTVweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2dyaXBweV9sYXJnZS5wbmdcIikgcmlnaHQgbm8tcmVwZWF0O1xuICAgIHdpZHRoOiAyMHB4O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1jb250ZW50IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi51aS1zb3J0YWJsZS1oZWxwZXIge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjREREO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1oZWFkIC5scC1zZWN0aW9uLW5hbWUge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIHdpZHRoOiA3MCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgaGVpZ2h0OiA1MHB4O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1oZWFkIC5scC1zZWN0aW9uLW5hbWU6Zm9jdXMge1xuICAgIGNvbG9yOiAjNDQ0O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi5scC1lbXB0eS1zZWN0aW9uIC5jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudCB7XG4gICAgX2Rpc3BsYXk6IG5vbmU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWl0ZW1zIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtIHtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgI0RERDtcbiAgICBtYXJnaW46IC0xcHggMCAwIDA7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbTpudGgtY2hpbGQoMm4rMSksXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtOm50aC1jaGlsZCgybisxKSAuc2VjdGlvbi1pdGVtLWlucHV0IGlucHV0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGQ0ZDO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtIC5scC1pdGVtLWFjdGlvbnMge1xuICAgIG1hcmdpbjogMDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtIC5scC1pdGVtLWFjdGlvbnMgYSB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBjb2xvcjogIzY2NjtcbiAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWl0ZW1zIC5scC1zZWN0aW9uLWl0ZW0gLmxwLWl0ZW0tYWN0aW9ucyBhOmhvdmVyIHtcbiAgICBjb2xvcjogIzAwYTBkMjtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbVtkYXRhLWl0ZW1faWQ9XCJcIl0gLmxwLWVkaXQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWl0ZW1zIC5scC1zZWN0aW9uLWl0ZW0ubHAtaXRlbS1lbXB0eSAubHAtaXRlbS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS51aS1zb3J0YWJsZS1oZWxwZXIgdGQge1xuXG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIHRkIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3N0cmlwZS5wbmdcIik7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1pdGVtLWFjdGlvbnMgPiAqIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtaXRlbS1hY3Rpb25zID4gYSB7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuaXRlbS1idWxrLWFjdGlvbnMge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW06bm90KC5scC1pdGVtLWVtcHR5KTpob3ZlciAubHAtaXRlbS1hY3Rpb25zID4gKiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbTpub3QoLmxwLWl0ZW0tZW1wdHkpIC5pdGVtLWNoZWNrYm94IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAzNHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMzJweDtcbiAgICBwYWRkaW5nOiAwIDAgMCAwO1xuICAgIG1hcmdpbjogMCA0cHggMCAxMHB4O1xuICAgIGN1cnNvcjogdXJsKFwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9vcGVuaGFuZC5jdXJcIikgNyA1LCBkZWZhdWx0O1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWl0ZW1zIC5scC1zZWN0aW9uLWl0ZW0gLml0ZW0tY2hlY2tib3ggaW5wdXQge1xuICAgIG9wYWNpdHk6IDAuNDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbTpub3QoLmxwLWl0ZW0tZW1wdHkpOmhvdmVyIC5pdGVtLWNoZWNrYm94IGlucHV0IHtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWl0ZW0tbHBfbGVzc29uIC5oYW5kbGUubGVhcm4tcHJlc3MtaWNvbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTAwXCI7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtaXRlbS1scF9xdWl6IC5oYW5kbGUubGVhcm4tcHJlc3MtaWNvbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTAxXCI7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtLmxwLWl0ZW0tbmV3IC5oYW5kbGUge1xuICAgIGNvbG9yOiAjOTk5O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtOmhvdmVyLFxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbTpob3ZlciBpbnB1dC5scC1pdGVtLW5hbWUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGOUY5Rjk7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtIC5oYW5kbGUge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAgIGNvbG9yOiAjMDBBMEQyO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS5yZW1vdmUgaW5wdXQubHAtaXRlbS1uYW1lIHtcbiAgICBjb2xvcjogI0ZGMDAwMDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW0udWktc29ydGFibGUtaGVscGVyIHtcblxufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbSBpbnB1dC5scC1pdGVtLW5hbWUge1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24tZGVzY3JpYmUge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGNvbG9yOiAjOTk5O1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB3aWR0aDogODAlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbSBpbnB1dC5scC1pdGVtLW5hbWU6Zm9jdXMsXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gaW5wdXQ6Zm9jdXMge1xuICAgIGNvbG9yOiAjNDQ0O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbSAuc2VjdGlvbi1pdGVtLWljb24ge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5scC1zZWN0aW9uLWl0ZW0gLmxlYXJuLXByZXNzLWljb24ge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBmb250LWZhbWlseTogZGFzaGljb25zO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAgIGNvbG9yOiAjREREO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW0gLmxlYXJuLXByZXNzLWljb24uaXRlbS1scF9xdWl6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGY0NjlcIjtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW0gLmxlYXJuLXByZXNzLWljb24uaXRlbS1scF9sZXNzb246YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjMzMFwiO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbSAubGVhcm4tcHJlc3MtaWNvbi5pdGVtLXNlbGVjdGVkLFxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW1bZGF0YS1pdGVtX2lkPVwiXCJdIC5sZWFybi1wcmVzcy1pY29uOmhvdmVyIHtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW0gdGQge1xuICAgIGhlaWdodDogMzBweDtcbn1cblxuI3Bvc3RzdHVmZiAucG9zdGJveC1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuI2NvdXJzZV90YWJzIC5oYW5kbGVkaXYsXG4jY291cnNlX3RhYnMgLmhuZGxlLFxuI2NvdXJzZV90YWJzIC5yd21iLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4jY291cnNlX3RhYnMgLnJ3bWItaW5wdXQge1xuXG59XG5cbiNjb3Vyc2VfdGFicyAuaW5zaWRlIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuI2NvdXJzZV90YWJzIC5yd21iLWNvdXJzZV90YWJzLXdyYXBwZXIge1xuICAgIG1hcmdpbjogMDtcbn1cblxuI2NvdXJzZV90YWJzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbn1cblxuI2NvdXJzZV90YWJzLmZpeGVkIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAzMHB4O1xuICAgIHotaW5kZXg6IDEwMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBsZWZ0OiAxODJweDtcbiAgICByaWdodDogMzIwcHg7XG59XG5cbiNjb3Vyc2VfdGFicy5maXhlZDpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuI2NvdXJzZV90YWJzX3BsYWNlaG9sZGVyIHtcbiAgICBoZWlnaHQ6IDQxcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuI3Bvc3RzdHVmZiBoMyNjb3Vyc2UtdGFicy1oMyB7XG4gICAgcGFkZGluZzogMDtcbn1cblxuI2NvdXJzZS10YWJzLWgzID4gYSB7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0RERDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgX2NvbG9yOiAjQUFBO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5sZWFybi1wcmVzcy1yZXZpZXctbG9ncyB7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgLnJldmlldy1tZXNzYWdlIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICBjb2xvcjogIzk5OTtcbiAgICB9XG4gICAgPiBsaSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI0RERDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnJldmlldy11c2VyIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB9XG4gICAgICAgID4gKiB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAucmV2aWV3LWluZGV4IHtcbiAgICAgICAgd2lkdGg6IDQ2cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogLTExcHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkICNEREQ7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgIGNvbG9yOiAjQ0NDO1xuICAgIH1cbiAgICAucmV2aWV3LWNvbnRlbnQge1xuICAgICAgICBtYXJnaW4tbGVmdDogNjhweDtcbiAgICB9XG4gICAgPiBsaSAubHAtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDEwMCU7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgfVxufVxuXG4ucndtYi1jdXJyaWN1bHVtLXdyYXBwZXIgLnJ3bWItbGFiZWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5yd21iLWN1cnJpY3VsdW0td3JhcHBlciAucndtYi1pbnB1dCB7XG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbm9uZTtcbn1cblxuLmNvbHVtbi1scF9jb3Vyc2UgLnJvdy1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG5cbi5scC1tb2RhbC1zZWFyY2ggbGkuc2VsZWN0ZWQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5scC1zZWFyY2gtaXRlbXMgaW5wdXRbbmFtZT1cImxwLWl0ZW0tbmFtZVwiXSB7XG4gICAgd2lkdGg6IDM1MHB4O1xufVxuXG4ubHAtbW9kYWwtc2VhcmNoIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNUY1O1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubHAtbW9kYWwtc2VhcmNoIHVsIHtcblxufVxuXG4ubHAtaGlnaGxpZ2h0LWNvbG9yIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICBjb2xvcjogIzAwYTBkMjtcbn1cblxuLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXMge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICA+IHVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDBweDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICAgICAgICA+IGxpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxudHJbZGF0YS1pdGVtX2lkPVwiXCJdIC5sZWFybi1wcmVzcy1kcm9wZG93bi1pdGVtLXR5cGVzOmhvdmVyID4gdWwsXG50cltkYXRhLWl0ZW1faWQ9XCJcIl0uZm9jdXMgLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXMgPiB1bCB7XG4gICAgZGlzcGxheTogaW5saW5lLXRhYmxlO1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXM6aG92ZXIgPiBzcGFuLmxlYXJuLXByZXNzLWljb24sXG50ci5mb2N1cyAubGVhcm4tcHJlc3MtZHJvcGRvd24taXRlbS10eXBlcyA+IHNwYW4ubGVhcm4tcHJlc3MtaWNvbiB7XG4gICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICBib3JkZXItY29sb3I6ICNEREQ7XG4gICAgei1pbmRleDogNTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5sZWFybi1wcmVzcy1kcm9wZG93bi1pdGVtLXR5cGVzOmhvdmVyID4gc3Bhbi5sZWFybi1wcmVzcy1pY29uOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNFRUU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogLTEwcHg7XG59XG5cbi5sZWFybi1wcmVzcy1kcm9wZG93bi1pdGVtLXR5cGVzID4gc3Bhbi5sZWFybi1wcmVzcy1pY29uLFxuLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXMgbGk6aG92ZXIgc3Bhbi5sZWFybi1wcmVzcy1pY29uLFxuLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXMgbGkgc3Bhbi5sZWFybi1wcmVzcy1pY29uLml0ZW0tc2VsZWN0ZWQge1xuICAgIGNvbG9yOiAjMDA4NWJhO1xufVxuXG4ubGVhcm4tcHJlc3MtY291cnNlLWF0dHJpYnV0ZXMge1xuICAgIG1hcmdpbjogMjBweCAwO1xuICAgIC5jb3Vyc2UtYXR0cmlidXRlLXRheG9ub215IHtcbiAgICAgICAgbGkge1xuXG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wb3N0LXR5cGUtbHBfY291cnNlIHtcbiAgICAjc3dpdGNoLWNvdXJzZS10YWJzLFxuICAgICN0b2dnbGUtbWV0YS1ib3hlcyB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgfVxufVxuXG4vKlxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1jb3Vyc2UtY3VycmljdWx1bS10b2dnbGV7XG5cdHBhZGRpbmc6IDA7XG5cdG1hcmdpbjogMDtcblx0ZmxvYXQ6IHJpZ2h0O1xufVxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1pdGVtLW5hbWV7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG5cdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGNvbG9yOiAjQkJCO1xufVxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW06aG92ZXIsXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS5ob3Zlcntcblx0YmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtLmxwLWl0ZW0tbHBfbGVzc29uIC5oYW5kbGU6YWZ0ZXJ7XG5cdGNvbnRlbnQ6IFwiXFxmNDk3XCI7XG59XG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS5scC1pdGVtLWxwX3F1aXogLmhhbmRsZTphZnRlcntcblx0Y29udGVudDogXCJcXGYxMzBcIjtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtOmhvdmVyIC5scC1pdGVtLW5hbWUsXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS5ob3ZlciAubHAtaXRlbS1uYW1le1xuXHRib3JkZXI6IDFweCBzb2xpZCAjREREO1xuXHRjb2xvcjogIzMyMzczYztcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1lbXB0eSAubHAtc2VjdGlvbi1pdGVtc3tcblx0ZGlzcGxheTogbm9uZTtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtIC5scC1pdGVtLWFjdGlvbnN7XG5cdGZsb2F0OiByaWdodDtcblx0bWFyZ2luLWxlZnQ6IDVweDtcblx0bWFyZ2luLXRvcDogM3B4O1xufVxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1pdGVtLWVtcHR5IC5scC1pdGVtLWFjdGlvbnMsXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24tZW1wdHkgLmxwLXNlY3Rpb24taGVhZCAubHAtYWN0aW9uLFxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWVtcHR5IC5scC1jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWl0ZW0tZW1wdHl7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtaXRlbS1uZXd7XG5cdGJvcmRlci1jb2xvcjogIzAwQTBEMjtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtaXRlbS1uZXcgLmxwLWl0ZW0tbmFtZXtcblx0Ym9yZGVyLWNvbG9yOiAjMDBBMEQyO1xufVxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWhlYWR7XG5cdHBhZGRpbmc6IDA7XG59XG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiAubHAtdG9nZ2xlIGk6YmVmb3Jle1xuXHRjb250ZW50OiAnXFxmMTMyJztcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uLm9wZW4gLmxwLXRvZ2dsZSBpOmJlZm9yZXtcblx0Y29udGVudDogJ1xcZjQ2MCc7XG59XG4ubHAtbW9kYWwtc2VhcmNoe1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG5cdGJvcmRlci10b3A6IG5vbmU7XG5cdHotaW5kZXg6IDk5OTk7XG5cdG1hcmdpbjogLTFweCAwIDAgMXB4O1xufVxuLmxwLW1vZGFsLXNlYXJjaCB1bHtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuLmxwLW1vZGFsLXNlYXJjaCB1bCBsaXtcblx0bGlzdC1zdHlsZTogbm9uZTtcblx0cGFkZGluZzogNXB4O1xuXHRtYXJnaW46IDA7XG59XG4ubHAtbW9kYWwtc2VhcmNoIGxpLmhpZ2hsaWdodGluZyxcbi5scC1tb2RhbC1zZWFyY2ggbGk6aG92ZXJ7XG5cdGJhY2tncm91bmQtY29sb3I6ICNFQUVBRUE7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cbi5scC1oaWdobGlnaHQtY29sb3J7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLmxwLXNlYXJjaC1uby1yZXN1bHRze1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmxwLWN1cnJpY3VsdW0tc2VjdGlvbnMgLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVye1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG5cdGJvcmRlcjogMnB4IGRhc2hlZCAjREREO1xufVxuLmxwLWN1cnJpY3VsdW0tc2VjdGlvbnMgLmxwLXNvcnRpbmd7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuKi9cbi8qXG5cbi5scC1jb3Vyc2UtY3VycmljdWx1bXt9XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbnN7XG5cbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9ue1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzO1xuXHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAjREREO1xufVxuLmxwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1jdXJyaWN1bHVtLXNlY3Rpb24ubHAtc2VsZWN0ZWQgLmxwLWN1cnJpY3VsdW0tc2VjdGlvbi1jb250ZW50e1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNUY1O1xufVxuLmxwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudCA+IHB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uLmxwLXNlbGVjdGVkID4gaDN7XG5cdF9ib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDN7XG5cdHBhZGRpbmc6IDEwcHggO1xuXHRtYXJnaW46IDA7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XG5cdGhlaWdodDogNjJweDtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRjdXJzb3I6IG1vdmU7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzIC5scC1zZWN0aW9uLW5hbWUtd3JhcHBlcntcblx0dG9wOiA5cHg7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzID4gc3BhbiA+IGlucHV0e1xuXHRib3JkZXI6IDFweCBzb2xpZCAjREREO1xuXHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdGZvbnQtc2l6ZTogMjRweDtcblx0d2lkdGg6IDEwMCU7XG5cdGNvbG9yOiAjNzc3O1xufVxuLmxwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1jdXJyaWN1bHVtLXNlY3Rpb24gPiBoMyA+IHNwYW4ubHAtc2VjdGlvbi1uYW1lLXdyYXBwZXJ7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRyaWdodDogMTM3cHg7XG5cdGxlZnQ6IDcxcHg7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzIC5scC1hY3Rpb257XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGhlaWdodDogNjJweDtcblx0d2lkdGg6IDYycHg7XG5cdGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0RERDtcblx0LXRvcDogLThweDtcblx0LXJpZ2h0OiAtMTFweDtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHRmbG9hdDogcmlnaHQ7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzIC5scC1hY3Rpb24ubHAtc29ydHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDMgLmxwLWFjdGlvbiAuZGFzaGljb25ze1xuXHRmb250LXNpemU6IDMycHg7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdGxpbmUtaGVpZ2h0OiA2MnB4O1xuXHRjb2xvcjogIzAwNzNhYTtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDMgLmxwLWFjdGlvbjpob3ZlciAuZGFzaGljb25ze1xuXHRjb2xvcjogIzAwOUVENztcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDMgLmxwLWFjdGlvbi5scC10b2dnbGV7XG5cdF9yaWdodDogNjJweDtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDMgLmxwLWFjdGlvbi5scC1yZW1vdmV7XG5cdF9yaWdodDogMTI0cHg7XG59XG5cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uLmNsb3NlZCAubHAtY3VycmljdWx1bS1zZWN0aW9uLWNvbnRlbnR7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAuc29ydGluZyAudWktc29ydGFibGUtaGVscGVyIC5scC1jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLmxwLWNvdXJzZS1jdXJyaWN1bHVtIC5zb3J0aW5nIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlcixcbi5scC1zZWN0aW9uLWl0ZW1zLnNvcnRpbmcgLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVye1xuXHRib3JkZXI6IDNweCBkYXNoZWQgI0RERDtcblx0dmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLnNvcnRpbmcgLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyOmFmdGVyLFxuLmxwLXNlY3Rpb24taXRlbXMuc29ydGluZyAudWktc29ydGFibGUtcGxhY2Vob2xkZXI6YWZ0ZXJ7XG5cdGNvbnRlbnQ6ICcnO1xuXHRkaXNwbGF5OiBibG9jaztcblx0d2lkdGg6IDBweDtcblx0aGVpZ2h0OiAwcHg7XG5cdGJvcmRlcjogMjhweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLWxlZnQtY29sb3I6ICM5OTk7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAwO1xuXHRsZWZ0OiAtMzNweDtcblxufVxuXG4ubHAtc2VjdGlvbi1pdGVtcy5zb3J0aW5nIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlcjphZnRlcntcblx0Ym9yZGVyLXdpZHRoOiAxNXB4O1xuXHRsZWZ0OiAtMjBweDtcbn1cbi5scC1jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudHtcblx0YmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcblx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0X2JvcmRlci1ib3R0b206IDJweCBkYXNoZWQgI0RERDtcblx0cGFkZGluZzogMjBweDtcblx0bWFyZ2luLWJvdHRvbTogMHB4O1xuXHRib3JkZXItdG9wOiAxcHggc29saWQgI0RERDtcbn1cbi5scC1keW5hbWljLWZvcm17XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0cGFkZGluZzogMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0ei1pbmRleDogMjEwO1xuXHRcdGhlaWdodDogMTVweDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5scC1jb250YWluZXItZHJvcGRvd257XG5cdGhlaWdodDogMTVweDtcblx0dmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5scC1jb250YWluZXItZHJvcGRvd24gPiBhe1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGRkYgIWltcG9ydGFudDtcbn1cbi5scC1jb250YWluZXItZHJvcGRvd24uc2VsZWN0Mi1kcm9wLWFib3ZlID4gYXtcblx0aGVpZ2h0OiAzcHg7XG59XG4ubHAtc2VsZWN0LWRyb3Bkb3due1xuXHRtYXJnaW4tdG9wOiAtNnB4O1xufVxuLmxwLXNlbGVjdC1kcm9wZG93bi5zZWxlY3QyLWRyb3AtYWJvdmV7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xufVxuXG4ubHAtZW1wdHkgLmxwLWN1cnJpY3VsdW0tc2VjdGlvbi1jb250ZW50e1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5scC1zZWN0aW9uLWl0ZW1ze1xuXHRtaW4taGVpZ2h0OiAyMHB4O1xuXG5cbn1cbi5scC1zZWN0aW9uLWl0ZW1zID4gbGl7XG5cdHBhZGRpbmc6IDVweDtcblx0Ym9yZGVyOjFweCBkYXNoZWQgI0RERDtcblx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0Y3Vyc29yOiBtb3ZlO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubHAtc2VjdGlvbi1pdGVtcyA+IGxpIC5scC10aXRsZXtcblx0Y3Vyc29yOiBhdXRvO1xuXHRwYWRkaW5nOiAzcHggNXB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogODAlO1xuXHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblxufVxuLmxwLXNlY3Rpb24taXRlbXMgPiBsaTpob3ZlciAubHAtdGl0bGUge1xuXHRib3JkZXItY29sb3I6ICNEREQ7XG5cdGN1cnNvcjogdGV4dDtcbn1cbi5scC1zZWN0aW9uLWl0ZW1zID4gbGkgaW5wdXR7XG5cdHdpZHRoOiA3MCU7XG59XG5cbi5scC1zZWN0aW9uLWl0ZW1zID4gbGk6aG92ZXJ7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4ubHAtc2VjdGlvbi1pY29ue1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDowO1xuXHRsZWZ0OjA7XG5cdHdpZHRoOiA2MnB4O1xuXHRoZWlnaHQ6IDYycHg7XG5cdGxpbmUtaGVpZ2h0OiA1NHB4O1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjREREO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cbi5scC1zZWN0aW9uLWljb24gaXtcblx0aGVpZ2h0OiA2MHB4O1xuXHRsaW5lLWhlaWdodDogNjBweDtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAuZGFzaGljb25ze1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uc2VsZWN0Mi1kcm9wLnNlbGVjdDItZHJvcC1hY3RpdmV7XG5cdHBhZGRpbmc6IDVweCAxMHB4O1xufVxuXG4ucndtYi1jb3Vyc2VfbGVzc29uX3F1aXotd3JhcHBlciAucndtYi1sYWJlbHsgZGlzcGxheTogbm9uZTt9XG4ucndtYi1jb3Vyc2VfbGVzc29uX3F1aXotd3JhcHBlciAucndtYi1pbnB1dHsgZmxvYXQ6IG5vbmU7IHdpZHRoOiBhdXRvOyBkaXNwbGF5OiBibG9jazt9XG5cbi5scC1jb3Vyc2UtY3VycmljdWx1bS10b2dnbGV7XG5cbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bS10b2dnbGUgLmV4cGFuZHtcblx0ZGlzcGxheTogbm9uZTtcbn0qLyJdLCJmaWxlIjoiYWRtaW4vbWV0YS1ib3gtY291cnNlLmNzcyJ9 */
|
794 |
.lp-course-curriculum-toggle .expand{
|
795 |
display: none;
|
796 |
}*/
|
|
|
|
assets/css/frontend/form.css
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.learn-press-form .form-fields {
|
2 |
+
list-style: none; }
|
3 |
+
.learn-press-form .form-fields .form-field {
|
4 |
+
margin-bottom: 10px; }
|
5 |
+
|
assets/css/learnpress.css
CHANGED
@@ -200,6 +200,9 @@
|
|
200 |
border-top: 1px solid #FFF;
|
201 |
position: relative;
|
202 |
}
|
|
|
|
|
|
|
203 |
#learn-press-course-curriculum .section-header p {
|
204 |
display: inline-block;
|
205 |
font-weight: normal;
|
@@ -907,7 +910,7 @@ body.course-has-popup {
|
|
907 |
}
|
908 |
.learn-press-content-item-summary {
|
909 |
/*padding: 20px;
|
910 |
-
|
911 |
margin-bottom: 30px;
|
912 |
}
|
913 |
.learn-press-content-item-summary .quiz-question-title {
|
@@ -2892,5 +2895,3 @@ body.content-item-only #learn-press-content-item.expand {
|
|
2892 |
}
|
2893 |
}
|
2894 |
*/
|
2895 |
-
|
2896 |
-
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxlYXJucHJlc3MubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7RUFDSSxhQUFhLFVBQWI7RUFDQSxTQUFTLDhCQUFUO0VBQ0EsU0FBUyxxQ0FBK0IsT0FBTywwQkFDM0MsK0JBQXlCLE9BQU8saUJBQ2hDLGdDQUEwQixPQUFPLGFBQ2pDLHdDQUFrQyxPQUFPLE1BSDdDO0VBSUEsbUJBQUE7RUFDQSxrQkFBQTs7QUFHSjtBQUFxQjs7RUFFakIsYUFBYSxVQUFiO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0VBQ0EsY0FBQTs7RUFHQSxtQ0FBQTtFQUNBLGtDQUFBOztBQUdKLG1CQUFtQjtFQUNmLFNBQVMsT0FBVDs7QUFHSixxQkFBcUI7RUFDakIsU0FBUyxPQUFUOztBQUdKLG1CQUFtQjtFQUNmLFNBQVMsT0FBVDs7QUFHSixtQkFBbUI7RUFDZixTQUFTLE9BQVQ7O0FBR0osaUJBQWlCO0VBQ2IsU0FBUyxPQUFUOztBQUdKLGNBQWM7RUFDVixTQUFTLE9BQVQ7O0FBR0osY0FBYztFQUNWLFNBQVMsT0FBVDs7QUFHSixjQUFjO0VBQ1YsU0FBUyxPQUFUOztBQUdKLGtCQUFrQjtFQUNkLFNBQVMsT0FBVDs7QUFHSixpQkFBaUI7RUFDYixTQUFTLE9BQVQ7O0FBR0osYUFBYTtFQUNULFNBQVMsT0FBVDs7QUFHSixjQUFjO0VBQ1YsU0FBUyxPQUFUOztBQVNKLFNBQVM7RUFDTCxjQUFBO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsV0FBQTs7QUF5REEsbUJBQUM7QUFBUyxtQkFBQztFQUNQLFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxlQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7O0FBRUosbUJBQUM7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosbUJBQUM7RUFDRyxnQkFBQTs7O0FBd0VSO0VBQ0ksd0JBQUE7OztBQUlKO0VBQ0ksZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxVQUFBOztBQUNBLG9CQUFDO0VBQ0csY0FBQTtFQUNBLFNBQVMsRUFBVDtFQUNBLFdBQUE7O0FBUlIsb0JBVUksR0FBRTtFQUNFLHFCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtFQUNBLFVBQUE7RUFDQSxzQkFBQTtFQUNBLHNCQUFBO0VBQ0EsZ0JBQUE7O0FBbEJSLG9CQVVJLEdBQUUsT0FVRTtFQUNJLGVBQUE7RUFDQSxxQkFBQTtFQUNBLGdCQUFBOztBQXZCWixvQkFVSSxHQUFFLE9BZ0JFO0VBQ0ksYUFBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7O0FBOUJaLG9CQVVJLEdBQUUsT0FzQkU7RUFDSSxrQkFBQTs7QUFqQ1osb0JBVUksR0FBRSxPQXNCRSxrQkFFSTtFQUNJLGVBQUE7RUFDQSxZQUFBOztBQUVKLG9CQTVCUixHQUFFLE9Bc0JFLGtCQU1LO0VBQ0csU0FBUyxFQUFUO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLE9BQUE7RUFDQSxNQUFBOztBQTVDaEIsb0JBVUksR0FBRSxPQXFDRTtFQUNJLG9CQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBOztBQWxEWixvQkFVSSxHQUFFLE9BMENFO0VBQ0ksV0FBQTs7QUFyRFosb0JBVUksR0FBRSxPQTZDRTtFQUNJLG1CQUFBOztBQXhEWixvQkFVSSxHQUFFLE9BZ0RFO0VBQ0ksWUFBQTtFQUNBLDZCQUFBO0VBQ0Esa0JBQUE7O0FBN0RaLG9CQVVJLEdBQUUsT0FxREU7RUFDSSxZQUFBO0VBQ0EsY0FBQTs7QUFqRVosb0JBVUksR0FBRSxPQXlERSxhQUFhO0VBQ1QsY0FBQTs7QUFLWjtFQUNJLDZCQUFBO0VBQ0Esa0JBQUE7O0FBR0o7RUFDSSxjQUFBOztBQUdKLG1CQUFvQjtFQUNoQixZQUFBOztBQUdKO0VBQ0ksbUJBQUE7OztBQUtKLDhCQUNJLEdBQUU7QUFETiw4QkFFSSxHQUFFO0VBQ0UsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLHlCQUFBOztBQU5SLDhCQUNJLEdBQUUsb0JBTUUsR0FBRTtBQVBWLDhCQUVJLEdBQUUsZ0JBS0UsR0FBRTtFQUNFLHFCQUFBOztBQVJaLDhCQVdJO0VBQ0ksc0JBQUE7RUFDQSxTQUFBO0VBQ0Esa0JBQUE7RUFDQSwwQkFBQTtFQUNBLGtCQUFBOztBQWhCUiw4QkFXSSxnQkFNSTtFQUNJLHFCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxlQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7RUFDQSxvQkFBQTs7QUFFSiw4QkFoQkosZ0JBZ0JLO0VBQ0csZ0JBQUE7O0FBNUJaLDhCQVdJLGdCQW1CSTtFQUNJLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxTQUFBOztBQW5DWiw4QkFXSSxnQkFtQkksTUFNSTtFQUNJLHFCQUFBO0VBQ0Esa0JBQUE7RUFDQSxhQUFhLFVBQWI7RUFDQSxtQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBOztBQUNBLDhCQXZDWixnQkFtQkksTUFNSSxVQWNLO0VBQ0csU0FBUyxPQUFUO0VBQ0EsY0FBQTs7QUFFSiw4QkEzQ1osZ0JBbUJJLE1BTUksVUFrQks7RUFDRyxlQUFBOztBQUdBLDhCQS9DaEIsZ0JBbUJJLE1BTUksVUFxQkssS0FDSTtFQUNHLFNBQVMsT0FBVDs7QUEzRHhCLDhCQWlFSTtFQUNJLFNBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsNkJBQUE7RUFDQSxrQkFBQTtFQWpTSiwwQ0FBQTtFQUNBLHlDQUFBO0VBQ0EsdUNBQUE7RUFDQSxzQ0FBQTtFQUNBLHFDQUFBO0VBQ0Esa0NBQUE7O0FBc05KLDhCQWlFSSxhQU9JO0FBeEVSLDhCQWlFSSxhQVFJO0VBQ0ksYUFBQTs7QUExRVosOEJBaUVJLGFBV0k7RUFDSSxjQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLFdBQUE7O0FBQ0EsOEJBaEJSLGFBV0ksbUJBS0s7RUFDRyxxQkFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQWEsVUFBYjs7QUFyRmhCLDhCQWlFSSxhQXVCSTtFQUNJLGFBQUE7O0FBekZaLDhCQWlFSSxhQTBCSTtFQUNJLGFBQUE7RUFDQSxzQkFBQTtFQTFVUiwwQkFBQTtFQUNBLHlCQUFBO0VBQ0EsdUJBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0Esa0JBQUE7RUF1VVEsZ0JBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTs7QUFDQSw4QkFqQ1IsYUEwQkksYUFPSztFQUNHLFNBQVMsT0FBVDs7QUFNQSw4QkF4Q1osYUEwQkksYUFhSyxvQkFDSTtFQUNHLFNBQVMsT0FBVDs7QUFHUiw4QkE1Q1IsYUEwQkksYUFrQks7RUFDRyxtQkFBQTtFQUNBLFdBQUE7O0FBQ0EsOEJBL0NaLGFBMEJJLGFBa0JLLHNCQUdJO0VBQ0csU0FBUyxPQUFUOztBQUdSLDhCQW5EUixhQTBCSSxhQXlCSztFQUNHLG1CQUFBO0VBQ0EsV0FBQTs7QUFDQSw4QkF0RFosYUEwQkksYUF5QkssbUJBR0k7RUFDRyxTQUFTLE9BQVQ7O0FBR1IsOEJBMURSLGFBMEJJLGFBZ0NLO0VBQ0csbUJBQUE7RUFDQSxXQUFBOztBQUNBLDhCQTdEWixhQTBCSSxhQWdDSyxtQkFHSTtFQUNHLFNBQVMsT0FBVDs7QUEvSHBCLDhCQWlFSSxhQWtFSTtFQUNJLGFBQUE7O0FBRUosOEJBckVKLGFBcUVLLGdCQUNHO0VBQ0kscUJBQUE7O0FBR1IsOEJBMUVKLGFBMEVLLGdCQUNHO0VBQ0kscUJBQUE7O0FBR1IsOEJBL0VKLGFBK0VLO0VBQ0csZUFBQTs7QUFDQSw4QkFqRlIsYUErRUssU0FFSTtFQUNHLG1CQUFBO0VBOVdaLHdDQUFBO0VBQ0EsdUNBQUE7RUFDQSxxQ0FBQTtFQUNBLG9DQUFBO0VBQ0EsbUNBQUE7RUFDQSxnQ0FBQTs7QUErV1ksOEJBeEZaLGFBc0ZLLGNBQ0csbUJBQ0s7RUFDRyxTQUFTLE9BQVQ7O0FBTUosOEJBL0ZaLGFBNkZLLFlBQ0csbUJBQ0s7RUFDRyxTQUFTLE9BQVQ7O0FBSVosOEJBcEdKLGFBb0dLO0VBQ0csZ0JBQUE7O0FBQ0EsOEJBdEdSLGFBb0dLLGFBRUk7RUFDRyxjQUFBO0VBQ0EsVUFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxPQUFBO0VBQ0EsTUFBQTtFQUNBLFlBQUE7RUFDQSxTQUFTLEVBQVQ7O0FBSVIsOEJBbEhKLGFBa0hLO0VBQ0csbUJBQUE7O0FBQ0EsOEJBcEhSLGFBa0hLLE1BRUk7RUFoWlQsd0JBQUE7RUFDQSx1QkFBQTtFQUNBLHFCQUFBO0VBQ0Esb0JBQUE7RUFDQSxtQkFBQTtFQUNBLGdCQUFBOztBQStZSSw4QkF4SEosYUF3SEs7RUFDRyxjQUFBO0VBQ0EsV0FBQTtFQUNBLFNBQVMsRUFBVDs7QUE1TFosOEJBZ01JO0VBQ0ksY0FBQTtFQUNBLGNBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxlQUFBOztBQXRNUiw4QkFnTUksa0JBT0k7RUFDSSxnQkFBQTs7QUFDQSw4QkFUUixrQkFPSSxxQkFFSztFQUNHLGNBQUE7RUFDQSxtQkFBQTtFQUNBLGdCQUFBO0VBemJaLDBCQUFBO0VBQ0EseUJBQUE7RUFDQSx1QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTs7QUEyYko7RUFDSSxxQkFBQTtFQUNBLGFBQWEsVUFBYjtFQUNBLG1CQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0Esc0JBQUE7O0FBQ0EsUUFBQztFQUNHLFdBQUE7RUFDQSxZQUFBOztBQUtSO0VBQ0kscUJBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7RUFDQSxzQkFBQTtFQUNBLGNBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxZQUFBO0VBMWRBLDBCQUFBO0VBQ0EseUJBQUE7RUFDQSx1QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTs7QUF1ZEEsU0FBQztFQUNHLHlCQUFBOztBQUVKLFNBQUM7RUFDRyx5QkFBQTs7QUFFSixTQUFDO0VBQ0cseUJBQUE7O0FBRUosU0FBQztFQUNHLHlCQUFBOztBQUVKLFNBQUM7RUFDRyx5QkFBQTs7QUFJUjtFQUNJLHlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTs7QUFOSixzQ0FPSTtFQUNJLGtCQUFBO0VBQ0EscUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0Esc0JBQUE7O0FBL2RKLHNDQXlkQSxNQXpkQztBQUNELHNDQXdkQSxNQXhkQztFQUNHLFVBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxxQkFBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFlBQUE7O0FBRUosc0NBOGNBLE1BOWNDO0VBN0JELG1CQThCZSxjQTlCZjtFQUNBLGtCQTZCZSxjQTdCZjtFQUNBLGdCQTRCZSxjQTVCZjtFQUNBLGVBMkJlLGNBM0JmO0VBQ0EsY0EwQmUsY0ExQmY7RUFDQSxXQXlCZSxjQXpCZjs7QUEyQkEsc0NBMmNBLE1BM2NDO0VBaENELG1CQWlDZSxhQWpDZjtFQUNBLGtCQWdDZSxhQWhDZjtFQUNBLGdCQStCZSxhQS9CZjtFQUNBLGVBOEJlLGFBOUJmO0VBQ0EsY0E2QmUsYUE3QmY7RUFDQSxXQTRCZSxhQTVCZjs7O0FBa2ZKO0VBQ0ksbUJBQUE7OztBQUlKLGlCQUNJO0VBQ0ksbUJBQUE7O0FBRlIsaUJBQ0kscUNBRUk7RUFDSSxXQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTs7QUFQWixpQkFDSSxxQ0FRSTtFQUNJLG1CQUFBOztBQVZaLGlCQUNJLHFDQVdJO0VBQ0ksV0FBQTtFQUNBLFVBQUE7O0FBZFosaUJBQ0kscUNBZUk7QUFoQlIsaUJBQ0kscUNBZWE7RUFDTCxxQkFBQTtFQUNBLHNCQUFBO0VBQ0EsY0FBQTtFQUNBLGVBQUE7O0FBcEJaLGlCQUNJLHFDQXFCSTtFQUNJLGdCQUFBOztBQXZCWixpQkFDSSxxQ0F3Qkk7RUFDSSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtFQUNBLGdCQUFBO0VBbGlCUiwwQkFBQTtFQUNBLHlCQUFBO0VBQ0EsdUJBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0Esa0JBQUE7O0FBa2lCUSxpQkFqQ1IscUNBd0JJLE9BU0s7RUFDRyxjQUFBO0VBQ0EsbUJBQUE7O0FBRUosaUJBckNSLHFDQXdCSSxPQWFLO0VBQ0csY0FBQTtFQUNBLG1CQUFBOztBQUdSLGlCQTFDSixxQ0EwQ0s7RUFDRyxjQUFBO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsV0FBQTs7QUFLWjtFQUNJLGtCQUFBOztBQURKLG1CQUVJO0VBQ0ksWUFBQTtFQUNBLGdCQUFBO0VBQ0EscUJBQUE7RUFDQSxnQkFBQTtFQTlqQkosMEJBQUE7RUFDQSx5QkFBQTtFQUNBLHVCQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLGtCQUFBOztBQW1qQkosbUJBRUksaUJBTUk7RUFDSSxVQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBOztBQVhaLG1CQWNJO0VBQ0ksUUFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLFNBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7O0FBQ0EsbUJBUEosd0JBT0s7QUFDRCxtQkFSSix3QkFRSztFQUNHLFNBQVMsRUFBVDtFQUNBLHFCQUFBO0VBQ0EsNkJBQUE7RUFDQSxPQUFBO0VBQ0Esa0JBQUE7O0FBRUosbUJBZkosd0JBZUs7RUFDRyxzQkFBQTs7QUFFSixtQkFsQkosd0JBa0JLO0VBQ0cseUJBQUE7RUFDQSxTQUFBOztBQUtaO0VBQ0ksc0JBQUE7RUFDQSxhQUFBOzs7QUFLSixpQkFDSTtFQUNJLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsNkJBQUE7O0FBTFIsaUJBQ0ksc0JBS0k7RUFDSSxxQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBOztBQVZaLGlCQUNJLHNCQUtJLHFCQUtJO0VBQ0kscUJBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7RUFDQSw2QkFBQTs7QUFFSixpQkFsQlIsc0JBS0kscUJBYUs7RUFDRyxnQ0FBQTs7QUFESixpQkFsQlIsc0JBS0kscUJBYUssT0FFRztFQUNJLGNBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBOztBQUdSLGlCQTFCUixzQkFLSSxxQkFxQkssT0FBTztFQUNKLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLDZCQUFBO0VBQ0EsWUFBQTtFQUNBLFNBQVMsRUFBVDs7QUFNUixpQkFyQ0osc0JBcUNLO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTtFQUNBLFdBQUE7O0FBekNaLGlCQTRDSTtFQUNJLGFBQUE7RUFDQSxtQkFBQTs7QUFDQSxpQkFISix1QkFHSztFQUNHLGNBQUE7O0FBMkJaLDJCQUVJLEVBQUM7RUFDRyxxQkFBQTtFQUNBLGVBQUE7RUFDQSxtQkFBQTtFQUNBLFNBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSx5QkFBeUIsNEJBQXpCO0VBQ0EsZ0JBQUE7RUFDQSwwQkFBQTtFQUNBLGNBQUE7RUFDQSxvQ0FBQTtFQUNBLHlCQUFBOztBQUVBLDJCQWRKLEVBQUMsT0FjSTtFQUNHLG1CQUFBOzs7QUFPWjtFQUNJLDRCQUFBOztBQUdKO0VBQ0ksNEJBQUE7O0FBR0osSUFBSTtFQUNBLGdCQUFBOztBQUdKO0VBQ0ksZUFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTtFQUNBLGVBQUE7O0FBUEosd0JBUUk7RUFDSSxzQkFBQTs7QUFUUix3QkFXSTtFQUNJLFdBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsU0FBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTtFQUNBLDRCQUFBOztBQW5CUix3QkFXSSxlQVNJO0VBQ0ksYUFBQTs7QUFyQlosd0JBV0ksZUFZSTtFQUNJLFNBQUE7RUFDQSxrQkFBQTs7QUF6Qlosd0JBV0ksZUFnQkk7RUFDSSxrQkFBQTtFQUNBLGdCQUFBOztBQTdCWix3QkFXSSxlQWdCSSxxQ0FHSTtBQTlCWix3QkFXSSxlQWdCSSxxQ0FHcUI7RUFDYixXQUFBO0VBQ0Esb0JBQUE7O0FBaENoQix3QkFvQ0k7RUFDSSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxXQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTs7QUExQ1Isd0JBb0NJLFlBT0k7RUFDSSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxZQUFBO0VBQ0EsUUFBQTtFQUNBLFlBQUE7RUFDQSxtQkFBQTtFQUNBLGdDQUFBOztBQWxEWix3QkFvQ0ksWUFPSSxjQVFJO0VBQ0ksa0JBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLCtCQUFBOztBQXZEaEIsd0JBb0NJLFlBT0ksY0FjSTtBQXpEWix3QkFvQ0ksWUFPSSxjQWVJO0FBMURaLHdCQW9DSSxZQU9JLGNBZ0JJO0VBQ0ksV0FBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxlQUFBO0VBQ0EsZUFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBOztBQUNBLHdCQWpDWixZQU9JLGNBY0ksYUFZSztBQUFELHdCQWpDWixZQU9JLGNBZUksa0JBV0s7QUFBRCx3QkFqQ1osWUFPSSxjQWdCSSxrQkFVSztFQUNHLG1CQUFBOztBQXRFcEIsd0JBb0NJLFlBT0ksY0E4Qkk7RUFDSSxPQUFBOztBQTFFaEIsd0JBb0NJLFlBT0ksY0FpQ0k7RUFDSSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7O0FBL0VoQix3QkFvQ0ksWUFPSSxjQXNDSTtFQUNJLFVBQUE7O0FBQ0Esd0JBL0NaLFlBT0ksY0FzQ0ksYUFFSztBQUNELHdCQWhEWixZQU9JLGNBc0NJLGFBR0s7RUFDRyxTQUFTLEVBQVQ7RUFDQSwwQkFBQTtFQUNBLFdBQUE7RUFDQSxxQkFBQTtFQUNBLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFVBQUE7O0FBRUosd0JBekRaLFlBT0ksY0FzQ0ksYUFZSztFQUNHLG1CQUFtQixhQUFuQjs7QUFFSix3QkE1RFosWUFPSSxjQXNDSSxhQWVLO0VBQ0csbUJBQW1CLGNBQW5COztBQUVKLHdCQS9EWixZQU9JLGNBc0NJLGFBa0JLO0VBQ0csbUJBQUE7O0FBQ0Esd0JBakVoQixZQU9JLGNBc0NJLGFBa0JLLE1BRUk7QUFBUyx3QkFqRTFCLFlBT0ksY0FzQ0ksYUFrQkssTUFFYztFQUNQLGtCQUFBOztBQXRHeEIsd0JBb0NJLFlBT0ksY0ErREk7RUFDSSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7O0FBaEhoQix3QkFvQ0ksWUFnRkk7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsT0FBQTtFQUNBLFFBQUE7RUFDQSxjQUFBO0VBQ0EsaURBQUE7O0FBM0haLHdCQW9DSSxZQWdGSSxlQVNJO0VBQ0ksaUJBQUE7O0FBOUhoQix3QkFvQ0ksWUE2Rkk7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLFlBQUE7RUFDQSxtQkFBQTtFQUNBLDBCQUFBOztBQXhJWix3QkFvQ0ksWUE2RkksY0FRSTtFQUNJLGNBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7O0FBQ0Esd0JBM0daLFlBNkZJLGNBUUksZ0JBTUs7RUFDRyxXQUFBOztBQUVKLHdCQTlHWixZQTZGSSxjQVFJLGdCQVNLO0VBQ0csWUFBQTs7QUFuSnBCLHdCQW9DSSxZQW1ISTtBQXZKUix3QkFvQ0ksWUFtSG1CO0VBQ1gsZ0NBQUE7O0FBRUosd0JBdEhKLFlBc0hLO0VBQ0csZUFBQTtFQUNBLE9BQUE7RUFDQSxjQUFBO0VBQ0EsTUFBQTtFQUNBLFNBQUE7O0FBTEosd0JBdEhKLFlBc0hLLE9BTUc7QUFOSix3QkF0SEosWUFzSEssT0FPRztFQUNJLFVBQUE7O0FBUlIsd0JBdEhKLFlBc0hLLE9BVUc7RUFDSSxNQUFBO0VBQ0EsU0FBQTs7QUF0S2hCLHdCQTBLSTtFQUNJLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7O0FBSVI7RUFDSSxtQkFBQTtFQUNBLDZCQUFBO0VBQ0Esb0JBQUE7O0FBQ0EsK0JBQUM7RUEzNUJELGNBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxXQUFBOztBQXk1QkEsK0JBQUMsd0JBQ0c7RUFDSSxXQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBOztBQUpSLCtCQUFDLHdCQU1HO0VBQ0ksWUFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTs7QUFDQSwrQkFiUCx3QkFNRyxnQkFPSztBQUFRLCtCQWJoQix3QkFNRyxnQkFPYztFQUNOLGVBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxPQUFBOztBQUVKLCtCQXRCUCx3QkFNRyxnQkFnQks7RUFDRyxXQUFBOztBQUVKLCtCQXpCUCx3QkFNRyxnQkFtQks7RUFDRyxtQkFBQTtFQUNBLFVBQUE7O0FBR0EsK0JBOUJYLHdCQU1HLGdCQXVCSyxrQkFDSTtFQUNHLG1CQUFBOztBQXp5QmhCLCtCQTB3QkMsd0JBMXdCQTtFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxXQUFBOztBQW13QlIsK0JBNENJO0VBQ0ksWUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtFQUNBLGlCQUFBO0VBQ0Esc0JBQUE7RUFDQSxhQUFBOztBQUlSOzs7RUFHSSxtQkFBQTs7QUFISixpQ0FJSTtFQUNJLG1CQUFBOztBQUxSLGlDQU9JO0FBUEosaUNBT3VDO0VBQy9CLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBOztBQVhSLGlDQU9JLGtDQUtJO0FBWlIsaUNBT3VDLDJCQUsvQjtBQVpSLGlDQU9JLGtDQUtpQjtBQVpyQixpQ0FPdUMsMkJBS2xCO0VBQ1Qsa0JBQUE7O0FBS1o7RUFDSSxZQUFBOztBQUdKLFdBQVksS0FBSTtFQUNaLG1CQUFBOztBQUdKO0VBQ0ksYUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EscUNBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTs7QUFDQSwwQkFBQztBQUFTLDBCQUFDO0FBVGYsMEJBU3VCO0VBQ2Ysa0JBQUE7RUF2K0JKLDBCQUFBO0VBQ0EseUJBQUE7RUFDQSx1QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtFQW8rQkksU0FBQTtFQUNBLFFBQUE7RUFDQSxzQkFBQTs7QUFFSiwwQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLHNCQUFBO0VBQ0EsV0FBQTtFQWo4Qkosd0NBQUE7RUFDQSxxQ0FBQTtFQUNBLGdDQUFBOztBQWs4QkEsMEJBQUM7RUFDRyxVQUFBO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsMEJBQUE7RUFDQSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxVQUFBOztBQTlCUiwwQkFnQ0k7RUFDSSxXQUFBO0VBLzhCSix3Q0FBQTtFQUNBLHFDQUFBO0VBQ0EsZ0NBQUE7O0FBKzhCSSwwQkFISixLQUdLO0VBQ0csU0FBUyxFQUFUO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQW5nQ1IsMEJBQUE7RUFDQSx5QkFBQTtFQUNBLHVCQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLGtCQUFBO0VBZ2dDUSxzQkFBQTs7QUF6V1IsMEJBQUM7RUFDRyxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7O0VBQ0EsbUJBQW1CLCtEQUFuQjs7QUE0VFIsMEJBelRJO0VBQ0ksTUFBTSx5QkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTs7QUFDQSwwQkFOSixLQU1LO0VBQ0csV0FBQTtFQUNBLFlBQUE7O0FBZ1daLElBQUksY0FDQTtFQUNJLGNBQUE7OztBQUtSO0VBQ0ksbUJBQUE7RUFDQSxXQUFBOztBQUdKO0VBQ0ksZ0JBQUE7RUFDQSxVQUFBO0VBQ0EsY0FBQTs7QUFISixXQUlJLEdBQUc7RUFDQyxxQkFBQTs7QUFJUjtFQUNJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLDJCQUFBOztBQUhKLG9CQUlJO0VBQ0ksa0JBQUE7O0FBTFIsb0JBT0k7RUFDSSxpQkFBQTtFQUNBLHFCQUFBO0VBQ0EsZUFBQTs7QUFWUixvQkFZSSxTQUNJO0VBQ0ksaUJBQUE7O0FBZFosb0JBaUJJLE1BQUs7QUFqQlQsb0JBaUI0QixNQUFLO0VBQ3pCLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSx3QkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7O0FBRUksb0JBUlIsTUFBSyxpQkFPQSxRQUNJO0FBQUQsb0JBUmdCLE1BQUssY0FPeEIsUUFDSTtFQUNHLFNBQVMsRUFBVDtFQUNBLHFCQUFBO0VBQ0Esa0JBQUE7O0FBS1Isb0JBREosTUFBSyxpQkFBaUIsUUFDakI7RUFDRyxnQ0FBQTtFQUNBLCtCQUFBO0VBQ0EsbUJBQW1CLGFBQW5CO0VBQ0EsZ0JBQWdCLGFBQWhCO0VBQ0EsZUFBZSxhQUFmO0VBQ0EsY0FBYyxhQUFkO0VBQ0EsV0FBVyxhQUFYO0VBQ0EsVUFBQTtFQUNBLFlBQUE7RUFFQSxTQUFBO0VBQ0EsU0FBQTs7QUFLQSxvQkFGUixNQUFLLGlCQUNBLFNBQ0k7RUFDRyxrQkFBQTs7QUFuRGhCLG9CQXVESSxNQUFLO0VBQ0QsMEJBQUE7RUFDQSx1QkFBQTtFQUNBLGtCQUFBOztBQUVJLG9CQUxSLE1BQUssY0FJQSxRQUNJO0VBQ0csbUJBQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBOztBQUlKLG9CQWpCUixNQUFLLGNBZ0JBLFNBQ0k7RUFDRyxnQkFBQTs7QUFRUixpQkFESixnQkFDSztFQUNHLHNCQUFBO0VBQ0EsZUFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBOztBQUtBLGlCQUZQLFFBQ0csZ0JBQ0s7RUFDRyxTQUFTLE9BQVQ7RUFDQSxjQUFBOztBQU1KLGlCQUZQLFFBQ0csZ0JBQ0s7RUFDRyxTQUFTLE9BQVQ7RUFDQSxjQUFBOztBQU1KLGlCQUZQLFVBQ0csZ0JBQ0s7RUFDRyxTQUFTLE9BQVQ7RUFDQSxjQUFBOztBQUpaLGlCQUFDLFVBT0csbUJBQ0k7RUFDSSw2QkFBQTs7QUFwQ2hCLGlCQXdDSTtFQUNJLGNBQUE7O0FBekNSLGlCQXdDSSxhQUVJO0VBQ0ksbUJBQUE7RUFDQSxjQUFBO0VBQ0EsaUJBQUE7O0FBN0NaLGlCQWdESTtFQUNJLHNCQUFBOztBQUlSLGlCQUVJO0FBREosaUJBQ0k7RUFDSSxtQkFBQTs7QUFJUjtFQUNJLFlBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBOztBQUdKLGVBQ0k7RUFDSSxnQkFBQTtFQUNBLGlDQUFBOztBQUhSLGVBQ0ksaUJBR0k7RUFDSSxjQUFBOztBQUxaLGVBQ0ksaUJBR0ksUUFFSTtFQUNJLGVBQUE7RUFDQSxjQUFBO0VBQ0EsNkJBQUE7RUFDQSxpQkFBQTs7QUFWaEIsZUFDSSxpQkFHSSxRQVFJO0VBQ0ksa0JBQUE7RUFDQSxXQUFBOztBQUdSLGVBaEJKLGlCQWdCSztFQUNHLG1CQUFBO0VBQ0EsMkJBQUE7O0FBS1osY0Fwb0NJO0VBQ0ksWUFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7O0FBK25DUixjQXBvQ0ksaUJBTUk7RUFDSSxTQUFTLEVBQVQ7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxNQUFNLDRCQUFOOztBQXduQ1osY0Fwb0NJLGlCQU1JLFlBT0k7RUFDSSxTQUFTLEVBQVQ7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxNQUFNLHdCQUFOO0VBQ0EsbUJBQUE7RUFDQSxXQUFXLFlBQVg7O0FBR1IsY0F4QkosaUJBd0JLO0VBQ0csU0FBUyxFQUFUO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxnQkFBQTtFQXRHUiwwQkFBQTtFQUNBLHlCQUFBO0VBQ0EsdUJBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0Esa0JBQUE7RUFtR1Esa0JBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxvQkFBQTs7QUFpbUNaLGNBcG9DSSxpQkFxQ0k7RUFDSSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7O0FBRUosY0E3Q0osaUJBNkNLO0VBQ0cseUJBQUE7O0FBREosY0E3Q0osaUJBNkNLLE1BRUc7RUFDSSxNQUFNLHdCQUFOOztBQUhSLGNBN0NKLGlCQTZDSyxNQUtHO0VBQ0ksTUFBTSw0QkFBTjtFQUNBLGdCQUFBOztBQW9sQ2hCLFlBQ0k7RUFFSSxtQkFBQTs7QUFIUixZQUNJLGtCQXpvQ0E7RUFDSSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGtCQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTs7QUFtb0NSLFlBQ0ksa0JBem9DQSxpQkFNSTtFQUNJLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLE1BQU0sNEJBQU47O0FBNG5DWixZQUNJLGtCQXpvQ0EsaUJBTUksWUFPSTtFQUNJLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLE1BQU0sd0JBQU47RUFDQSxtQkFBQTtFQUNBLFdBQVcsWUFBWDs7QUFHUixZQWluQ0osa0JBem9DQSxpQkF3Qks7RUFDRyxTQUFTLEVBQVQ7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGdCQUFBO0VBdEdSLDBCQUFBO0VBQ0EseUJBQUE7RUFDQSx1QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtFQW1HUSxrQkFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBOztBQXFtQ1osWUFDSSxrQkF6b0NBLGlCQXFDSTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTs7QUFFSixZQTRsQ0osa0JBem9DQSxpQkE2Q0s7RUFDRyx5QkFBQTs7QUFESixZQTRsQ0osa0JBem9DQSxpQkE2Q0ssTUFFRztFQUNJLE1BQU0sd0JBQU47O0FBSFIsWUE0bENKLGtCQXpvQ0EsaUJBNkNLLE1BS0c7RUFDSSxNQUFNLDRCQUFOO0VBQ0EsZ0JBQUE7O0FBb2xDaEIsWUFLSTtFQUNJLG1CQUFBO0VBQ0EsZ0JBQUE7O0FBUFIsWUFLSSxxQkFHSTtFQUNJLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxXQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFodUNSLDBCQUFBO0VBQ0EseUJBQUE7RUFDQSx1QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTtFQTZ0Q1EsZ0JBQUE7O0FBaEJaLFlBS0kscUJBR0ksbUJBVUk7QUFsQlosWUFLSSxxQkFHSSxtQkFVVSxLQUFJO0FBQVEsWUFiMUIscUJBR0ksbUJBVXVCO0VBQ2YsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxZQUFBO0VBQ0EsU0FBUyxlQUFUO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLHVCQUFBO0VBQ0Esc0JBQUE7O0FBRUosWUEzQlIscUJBR0ksbUJBd0JLO0VBQ0csU0FBUyxFQUFUO0VBQ0EsVUFBQTs7QUFsQ2hCLFlBS0kscUJBR0ksbUJBNEJJO0VBQ0ksVUFBQTs7QUFyQ2hCLFlBS0kscUJBR0ksbUJBK0JJLEtBQUk7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxXQUFBOztBQUVKLFlBdkNSLHFCQUdJLG1CQW9DSztFQUNHLG1CQUFBOztBQUVKLFlBMUNSLHFCQUdJLG1CQXVDSztFQUNHLG1CQUFBOztBQUVKLFlBN0NSLHFCQUdJLG1CQTBDSztFQUNHLGNBQUE7O0FBbkRoQixZQXVESSxFQUFDO0VBQ0csa0JBQUE7O0FBeERSLFlBMERJLFlBQ0k7RUFDSSxrQkFBQTs7QUE1RFosWUEwREksWUFDSSxFQUVJO0VBQ0ksaUJBQUE7O0FBQ0EsWUFMWixZQUNJLEVBRUksS0FFSztFQUNHLGNBQUE7O0FBRUosWUFSWixZQUNJLEVBRUksS0FLSztFQUNHLGNBQUE7O0FBUWhCLFlBQWEsbUJBQWtCLGdCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixnQkFBb0I7QUFDbkQsZUFBZSxnQkFBbUI7RUFDOUIsU0FBQTs7QUFISixZQUFhLG1CQUFrQixnQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsZ0JBQW9CO0FBQ25ELGVBQWUsZ0JBQW1CO0VBQzlCLFNBQUE7O0FBSEosWUFBYSxtQkFBa0IsZ0JBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGdCQUFvQjtBQUNuRCxlQUFlLGdCQUFtQjtFQUM5QixTQUFBOztBQUhKLFlBQWEsbUJBQWtCLGdCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixnQkFBb0I7QUFDbkQsZUFBZSxnQkFBbUI7RUFDOUIsU0FBQTs7QUFISixZQUFhLG1CQUFrQixnQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsZ0JBQW9CO0FBQ25ELGVBQWUsZ0JBQW1CO0VBQzlCLFNBQUE7O0FBSEosWUFBYSxtQkFBa0IsZ0JBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGdCQUFvQjtBQUNuRCxlQUFlLGdCQUFtQjtFQUM5QixTQUFBOztBQUhKLFlBQWEsbUJBQWtCLGdCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixnQkFBb0I7QUFDbkQsZUFBZSxnQkFBbUI7RUFDOUIsU0FBQTs7QUFISixZQUFhLG1CQUFrQixnQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsZ0JBQW9CO0FBQ25ELGVBQWUsZ0JBQW1CO0VBQzlCLFNBQUE7O0FBSEosWUFBYSxtQkFBa0IsZ0JBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGdCQUFvQjtBQUNuRCxlQUFlLGdCQUFtQjtFQUM5QixTQUFBOztBQUhKLFlBQWEsbUJBQWtCLGdCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixnQkFBb0I7QUFDbkQsZUFBZSxnQkFBbUI7RUFDOUIsU0FBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixpQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0IsaUJBQW9CO0FBQ25ELGVBQWUsaUJBQW1CO0VBQzlCLFVBQUE7O0FBSEosWUFBYSxtQkFBa0IsaUJBQW1CO0FBQ2xELFlBQWEsbUJBQWtCLGlCQUFvQjtBQUNuRCxlQUFlLGlCQUFtQjtFQUM5QixVQUFBOztBQUhKLFlBQWEsbUJBQWtCLGlCQUFtQjtBQUNsRCxZQUFhLG1CQUFrQixpQkFBb0I7QUFDbkQsZUFBZSxpQkFBbUI7RUFDOUIsVUFBQTs7QUFISixZQUFhLG1CQUFrQixrQkFBbUI7QUFDbEQsWUFBYSxtQkFBa0Isa0JBQW9CO0FBQ25ELGVBQWUsa0JBQW1CO0VBQzlCLFdBQUE7OztBQVFSO0VBQ0ksZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FBSEosNkJBSUksS0FBSTtFQUNBLGVBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFoekNKLDBCQUFBO0VBQ0EseUJBQUE7RUFDQSx1QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxrQkFBQTs7QUFteUNKLDZCQUlJLEtBQUksY0FNQTtFQUNJLGNBQUE7O0FBWFosNkJBSUksS0FBSSxjQU1BLFFBRUksTUFBSztBQVpqQiw2QkFJSSxLQUFJLGNBTUEsUUFFNEIsTUFBSztFQUN6QixTQUFBO0VBQ0EsMkJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7O0FBQ0EsNkJBcEJaLEtBQUksY0FNQSxRQUVJLE1BQUssaUJBWUEsUUFBUTtBQUFULDZCQXBCWixLQUFJLGNBTUEsUUFFNEIsTUFBSyxjQVl4QixRQUFRO0VBQ0wsU0FBUyxFQUFUO0VBQ0EseUJBQUE7RUFDQSxxQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSx1QkFBQTtFQWwwQ2hCLG1CQW0wQzJCLGFBbjBDM0I7RUFDQSxrQkFrMEMyQixhQWwwQzNCO0VBQ0EsZ0JBaTBDMkIsYUFqMEMzQjtFQUNBLGVBZzBDMkIsYUFoMEMzQjtFQUNBLGNBK3pDMkIsYUEvekMzQjtFQUNBLFdBOHpDMkIsYUE5ekMzQjs7QUFnMENZLDZCQWxDWixLQUFJLGNBTUEsUUFFSSxNQUFLLGlCQTBCQSxRQUFTO0FBQVYsNkJBbENaLEtBQUksY0FNQSxRQUU0QixNQUFLLGNBMEJ4QixRQUFTO0VBQ04saUJBQUE7RUFDQSxtQkFBQTtFQUNBLFdBQUE7O0FBekNwQiw2QkFJSSxLQUFJLGNBTUEsUUFrQ0ksTUFBSyxpQkFBaUI7QUE1Q2xDLDZCQUlJLEtBQUksY0FNQSxRQWtDc0MsTUFBSyxjQUFjO0VBQ2pELFVBQUE7O0FBN0NoQiw2QkFJSSxLQUFJLGNBTUEsUUFxQ0ksTUFBSztFQXYxQ2IsMEJBQUE7RUFDQSx5QkFBQTtFQUNBLHVCQUFBO0VBQ0Esc0JBQUE7RUFDQSxxQkFBQTtFQUNBLGtCQUFBOztBQW15Q0osNkJBSUksS0FBSSxjQU1BLFFBd0NJO0VBQ0ksZ0JBQUE7RUFDQSwwQkFBQTtFQUNBLFNBQUE7RUFDQSxzQkFBQTtFQUNBLGdCQUFBOztBQUNBLDZCQXBEWixLQUFJLGNBTUEsUUF3Q0ksRUFNSztFQUNHLHNCQUFBO0VBQ0EsaUJBQUE7OztBQTFEcEIsNkJBSUksS0FBSSxjQTBEQSxNQUFNO0VBdDJDViwwQkFBQTtFQUNBLHlCQUFBO0VBQ0EsdUJBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0Esa0JBQUE7O0FBbzJDSSw2QkE3REosS0FBSSxjQTZEQyxZQUFhLE1BQU07RUFDaEIsbUJBQUE7RUFDQSxXQUFBOztBQUVKLDZCQWpFSixLQUFJLGNBaUVDLE1BQU8sTUFBTTtFQUNWLG1CQUFBO0VBQ0EsZUFBQTs7QUFFSiw2QkFyRUosS0FBSSxjQXFFQztFQUNHLG1CQUFBOztBQURKLDZCQXJFSixLQUFJLGNBcUVDLGtCQUVHLFFBQ0ksTUFBSyxpQkFBa0I7QUFIL0IsNkJBckVKLEtBQUksY0FxRUMsa0JBRUcsUUFDZ0MsTUFBSyxjQUFlO0VBQzVDLDZCQUFBO0VBQ0EsY0FBQTtFQUNBLG1CQUFBOztBQS9FcEIsNkJBb0ZJLHNCQUNJLE1BQ0k7RUFDSSxxQkFBQTtFQUNBLFNBQUE7RUFDQSxrQkFBQTs7QUF6RmhCLDZCQW9GSSxzQkFDSSxNQU1JLE1BQUs7RUFDRCxVQUFBOztBQU1oQjtFQUNJLG1CQUFBOztBQUdKO0VBQ0ksbUJBQUE7O0FBREosWUFFSTtFQUNJLGtCQUFBO0VBQ0EsNkJBQUE7O0FBSlIsWUFNSTtFQUNJLGlCQUFBOzs7QUFNUjtFQUNJLG1CQUFBO0VBQ0EsOEJBQUE7RUFDQSwyQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7O0FBTEosb0JBTUk7RUFDSSxZQUFBOztBQVBSLG9CQVNJO0VBQ0ksbUJBQUE7O0FBRUosb0JBQUM7RUFDRyxXQUFBO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSixvQkFBQztFQUNHLDBCQUFBOztBQUVKLG9CQUFDO0VBQ0csMEJBQUE7O0FBckJSLG9CQXVCSTtFQUNJLHFCQUFBOzs7QUFLUjtBQUNBO0VBQ0ksbUJBQUE7O0FBR0osNkJBQ0k7RUFDSSxnQkFBQTtFQUNBLFNBQUE7OztBQUtSLFlBQ0k7RUFDSSxVQUFBOztBQUZSLFlBSUk7RUFDSSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTs7QUFSUixZQVVJO0VBQ0ksbUJBQUE7RUFDQSxlQUFBOztBQUlSO0VBQ0ksZUFBQTtFQUNBLHFCQUFBO0VBQ0Esc0JBQUE7RUFDQSxtQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7O0FBQ0Esb0JBQUM7RUFDRyxTQUFTLEdBQVQ7RUFDQSxjQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7OztBQUtSO0VBQ0ksZ0JBQUE7RUFDQSxrQkFBQTs7QUFGSixtQkFHSTtFQUNJLGdCQUFBO0VBQ0Esa0JBQUE7O0FBTFIsbUJBR0ksZUFHSTtFQUNJLGNBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBOztBQVRaLG1CQUdJLGVBUUkscUJBQXFCO0VBQ2pCLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBOztBQWRaLG1CQUdJLGVBYUk7RUFDSSxjQUFBOztBQUtaLHlCQUNJO0VBQ0ksZ0JBQUE7O0FBRlIseUJBQ0ksdUJBRUk7RUFDSSxZQUFBO0VBQ0EsV0FBQTs7QUFMWix5QkFDSSx1QkFFSSxhQUdJO0VBQ0ksZ0JBQUE7RUFDQSxXQUFBOztBQVJoQix5QkFDSSx1QkFVSTtFQUNJLGtCQUFBOztBQUlKLHlCQURKLGlCQUNLO0VBOWhETCxjQUFBO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsV0FBQTs7QUErSUEseUJBNDRDQSxpQkFDSyxNQTc0Q0o7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBO0VBQ0EsV0FBQTs7QUEwM0NSLHlCQW9CSSxpQkFDSTtFQUNJLGdCQUFBOztBQXRCWix5QkEwQkk7RUFDSSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsNkJBQUE7O0FBQ0EseUJBSkosa0JBSU07RUFDRSxXQUFBO0VBQ0EscUJBQUE7RUFDQSxtQkFBQTs7QUFDQSx5QkFSUixrQkFJTSxLQUlJO0VBQ0UscUJBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7RUFDQSw2QkFBQTs7QUFFSix5QkFoQlIsa0JBSU0sS0FZRztFQUNHLGdDQUFBOztBQURKLHlCQWhCUixrQkFJTSxLQVlHLFFBRUc7RUFDSSxjQUFBO0VBQ0EsbUJBQUE7O0FBTVoseUJBREoscUJBQ007RUFDRSxxQkFBQTtFQUNBLGtCQUFBOztBQUNBLHlCQUpSLHFCQUNNLEtBR0c7RUFDRyxpQkFBQTs7QUF4RGhCLHlCQTRESTtFQUNJLGFBQUE7RUFDQSxtQkFBQTs7QUFDQSx5QkFISiw0QkFHSztFQUNHLGNBQUE7O0FBaEVaLHlCQTRESSw0QkFNSSxHQUFFLE9BQ0U7RUFDSSxvQkFBQTs7QUFwRWhCLHlCQTRESSw0QkFXSTtFQUNJLHFCQUFBOztBQXhFWix5QkE0REksNEJBV0ksaUJBRUk7RUFDSSx5QkFBQTtFQUNBLFNBQUE7O0FBM0VoQix5QkErRUksT0FBTTtFQUNGLGNBQUE7O0FBaEZSLHlCQW1GSSx3QkFFSTtFQUNJLG1CQUFBOztBQXRGWix5QkFtRkksd0JBTUk7RUFDSSxlQUFBOztBQTFGWix5QkFtRkksd0JBVUk7RUFDSSxXQUFBOztBQTlGWix5QkFtRkksd0JBVUksc0JBRUk7QUEvRloseUJBbUZJLHdCQVVJLHNCQUVjO0VBQ04scUJBQUE7O0FBaEdoQix5QkFtRkksd0JBVUksc0JBS0ksZ0JBQ0k7RUFDSSxrQkFBQTs7QUFwR3BCLHlCQW1GSSx3QkFVSSxzQkFVSTtFQUNJLFdBQUE7RUFDQSxrQkFBQTs7QUFFSix5QkF4QlIsd0JBVUksc0JBY0s7RUF6bkRULGNBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxXQUFBOztBQStJQSx5QkFnOUNBLHdCQVVJLHNCQWNLLE1BeCtDUjtFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7RUFDQSxXQUFBOztBQTAzQ1IseUJBbUZJLHdCQTZCSTtFQUNJLGlCQUFBO0VBQ0EsbUJBQUE7O0FBbEhaLHlCQW1GSSx3QkFrQ0k7RUFDSSxtQkFBQTs7QUF0SFoseUJBbUZJLHdCQXNDSSw0QkFDSTtFQUNJLG1CQUFBOztBQTNIaEIseUJBbUZJLHdCQXNDSSw0QkFJSTtFQUNJLGlCQUFBOztBQTlIaEIseUJBbUlJO0VBQ0ksMEJBQUE7RUFDQSxpQkFBQTs7QUFySVIseUJBdUlJO0VBQ0ksY0FBQTs7QUF4SVIseUJBMElJLHFCQUNJO0VBQ0ksYUFBQTs7QUE1SVoseUJBMElJLHFCQUlJO0VBQ0ksV0FBQTs7QUEvSVoseUJBMElJLHFCQU9JO0VBQ0ksY0FBQTs7QUFsSloseUJBcUpJO0VBQ0ksa0JBQUE7RUFDQSxXQUFBO0VBQ0Esc0JBQUE7O0FBeEpSLHlCQXFKSSxtQkFJSTtFQUNJLFdBQUE7RUFDQSxtQkFBQTtFQUNBLFdBQUE7O0FBNUpaLHlCQXFKSSxtQkFJSSxpQkFJSTtFQUNJLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7O0FBRUoseUJBYlIsbUJBSUksaUJBU0s7RUFDRyxhQUFBOztBQW5LaEIseUJBcUpJLG1CQWlCSTtFQUNJLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFdBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBOztBQTNLWix5QkFxSkksbUJBaUJJLDJCQU1JO0VBQ0kscUJBQUE7RUFDQSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxxQkFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7O0FBbExoQix5QkFxSkksbUJBZ0NJO0VBQ0ksa0JBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxRQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLGFBQUE7O0FBN0xaLHlCQXFKSSxtQkFnQ0ksMkJBU0k7RUFDSSxRQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBOztBQWpNaEIseUJBcUpJLG1CQStDSTtFQUNJLGFBQUE7O0FBck1aLHlCQXFKSSxtQkFrREk7RUFDSSxhQUFBOztBQUVKLHlCQXJESixtQkFxREssTUFDRztFQUNJLGNBQUE7O0FBR1IseUJBMURKLG1CQTBESyxVQUNHO0FBRFMseUJBMURqQixtQkEwRGtCLGFBQ1Y7RUFDSSxhQUFBOztBQUZSLHlCQTFESixtQkEwREssVUFJRztBQUpTLHlCQTFEakIsbUJBMERrQixhQUlWO0VBQ0ksY0FBQTs7QUFFSix5QkFqRVIsbUJBMERLLFVBT0k7QUFBRCx5QkFqRVIsbUJBMERrQixhQU9UO0VBQ0csa0JBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLFNBQVMsRUFBVDs7QUFHUix5QkExRUosbUJBMEVLLGFBQ0c7RUFDSSxjQUFBOztBQUdSLHlCQS9FSixtQkErRUssUUFDRztFQUNJLGFBQUE7O0FBRlIseUJBL0VKLG1CQStFSyxRQUlHO0VBQ0ksa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTs7QUFYUix5QkEvRUosbUJBK0VLLFFBSUcsc0JBUUk7RUFDSSxrQkFBQTtFQUNBLFlBQUE7O0FBZFoseUJBL0VKLG1CQStFSyxRQUlHLHNCQVlJO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7O0FBcEJaLHlCQS9FSixtQkErRUssUUFJRyxzQkFZSSxrQkFLSTtFQUNJLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFDQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBOztBQTNCaEIseUJBL0VKLG1CQStFSyxRQUlHLHNCQVlJLGtCQUtJLFNBT0k7RUFDSSxrQkFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTs7QUFoQ3BCLHlCQS9FSixtQkErRUssUUFJRyxzQkFZSSxrQkFLSSxTQU9JLFdBS0k7RUFDSSxxQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EseUJBQUE7RUFDQSxnQkFBQTtFQUNBLGFBQUE7RUFDQSxpQkFBQTs7QUEzQ3hCLHlCQS9FSixtQkErRUssUUFJRyxzQkFZSSxrQkErQkk7RUFDSSxxQkFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RUFDQSxnQkFBQTs7QUFFSix5QkFySWhCLG1CQStFSyxRQUlHLHNCQVlJLGtCQXNDSztFQUNHLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxnQkFBQTtFQUNBLFlBQUE7O0FBS2hCLHlCQWhKSixtQkFnSks7RUFuekRMLGNBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxXQUFBOztBQStJQSx5QkFraERBLG1CQWdKSyxNQWxxREo7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBO0VBQ0EsV0FBQTs7QUFzcURKLElBQUM7RUFDRyx1QkFBQTs7QUFFSixJQUFDO0VBQ0csaUJBQUE7O0FBSVI7RUFDSSxrQkFBQTs7QUFESix1QkFFSTtFQUNJLGdCQUFBOztBQUNBLHVCQUZKLEdBRU07RUFDRSxxQkFBQTs7QUFESix1QkFGSixHQUVNLEtBRUU7RUFDSSxxQkFBQTtFQUNBLGVBQUE7RUFDQSxzQkFBQTtFQUNBLHlCQUFBOztBQU5SLHVCQUZKLEdBRU0sS0FRRTtFQUNJLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLHNCQUFBO0VBQ0Esc0JBQUE7O0FBTWhCLGdDQUNJO0VBQ0ksZ0JBQUE7RUFDQSxVQUFBOztBQUhSLGdDQUNJLEdBR0k7RUFDSSxtQkFBQTs7O0FBTVo7RUFDSSxnQkFBQTs7QUFESixnQkFHSTtFQUNJLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLFNBQUE7O0FBUlIsZ0JBV0k7RUFDSSxhQUFBOztBQVpSLGdCQVdJLGVBRUk7RUFDSSxtQkFBQTs7QUFkWixnQkFrQkk7RUFDSSxrQkFBQTs7QUFJUjtFQUNJLGFBQUE7O0FBRUEsb0NBQUM7RUFDRyxjQUFBOztBQUlSLGlCQUNJLGdCQUNJLFdBQ0k7RUFDSSxhQUFBOztBQUpoQixpQkFRSTtFQUNJLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBOztBQVhSLGlCQVFJLHFCQUtJO0VBQ0kscUJBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxXQUFBOztBQXRCWixpQkFRSSxxQkFnQkk7RUFDSSxxQkFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFFBQUE7RUFDQSxlQUFlLGdCQUFmO0VBQ0EsbUJBQW1CLGdCQUFuQjtFQUNBLFdBQVcsZ0JBQVg7RUFDQSxlQUFBOztBQUVBLGlCQTFCUixxQkFnQkksMkJBVUs7RUFDRyxnQkFBQTtFQUNBLFVBQUE7RUFDQSxTQUFTLE9BQVQ7RUFDQSxzQkFBQTs7O0FBU2hCO0VBQ0ksa0JBQUE7RUFDQSxpQ0FBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTs7O0FBSUosS0FBSztFQUNELFdBQUE7O0FBR0osSUFBSTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTs7QUFGSixJQUFJLGtCQUdBO0VBQ0ksZUFBQTtFQUNBLGdCQUFBO0VBQ0EsT0FBQTtFQUNBLE1BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsY0FBQTtFQUNBLGFBQUE7RUFDQSxTQUFBOztBQWJSLElBQUksa0JBZ0JBO0VBQ0ksWUFBQTtFQUNBLGNBQUE7RUFDQSxrQ0FBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtFQUNBLFVBQUE7O0FBQ0EsSUF2Qkosa0JBZ0JBLDBCQU9LO0VBQ0csaUJBQUE7O0FBTVIsdUJBQUM7QUFBYSx1QkFBQztFQUNYLGVBQUE7O0FBREosdUJBQUMsV0FFRztBQUZVLHVCQUFDLFVBRVg7RUFDSSxxQkFBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7O0FBQ0EsdUJBUlAsV0FFRyxhQU1LO0FBQUQsdUJBUk8sVUFFWCxhQU1LO0VBQ0csU0FBUyxHQUFUOztBQU1KLHVCQUZQLFVBQ0csYUFDSztFQUNHLFNBQVMsR0FBVDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVDaEI7RUFDSSxnQkFBQTs7QUFLSSxZQURKLEtBQUssVUFDQTtBQUFpQixZQUR0QixLQUFLLFVBQ2tCO0VBQ2Ysc0JBQUE7O0FBSFosWUFPSSxpQkFDSSxlQUNJLE1BQUs7RUFDRCw2QkFBQTs7QUFNaEI7RUFDSSxtQkFBQTs7QUFESiwrQkFFSSxNQUFLLG9CQUFvQjtFQUNyQixvQkFBQTtFQUNBLFdBQUE7O0FBSlIsK0JBTUk7RUFDSSxzQkFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7O0FBTUEsYUFESixjQUNLO0VBQ0csY0FBQTs7O0FBTVosaUNBQ0ksa0JBQ0k7QUFGMkIsZ0NBQy9CLGtCQUNJO0FBRjZELGtDQUNqRSxrQkFDSTtFQUNJLHFCQUFBOztBQUNBLGlDQUhSLGtCQUNJLE1BRUs7QUFBRCxnQ0FIUixrQkFDSSxNQUVLO0FBQUQsa0NBSFIsa0JBQ0ksTUFFSztFQUNHLFNBQVMsR0FBVDs7QUFFSixpQ0FOUixrQkFDSSxNQUtLLFdBQVc7QUFBWixnQ0FOUixrQkFDSSxNQUtLLFdBQVc7QUFBWixrQ0FOUixrQkFDSSxNQUtLLFdBQVc7RUFDUixTQUFTLEVBQVQ7O0FBUmhCLGlDQWFJO0FBYitCLGdDQWEvQjtBQWJpRSxrQ0FhakU7RUFDSSxhQUFBOztBQWRSLGlDQWdCSTtBQWhCK0IsZ0NBZ0IvQjtBQWhCaUUsa0NBZ0JqRTtFQUNJLG1CQUFBO0VBQ0EsOEJBQUE7RUFDQSxvQkFBQTs7QUFJUixzQkFDSTtFQUNJLGVBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBOztBQUNBLHNCQUpKLEVBSUs7RUFDRyxTQUFTLE9BQVQ7RUFDQSxzQkFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxjQUFBO0VBQ0EsT0FBQTs7QUFLWjtFQUNJLDBCQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTs7QUFISix1QkFJSSxXQUNJO0VBQ0ksVUFBQTs7QUFOWix1QkFJSSxXQUNJLFVBRUk7RUFDSSxVQUFBOztBQVJoQix1QkFJSSxXQUNJLFVBRUksRUFFSTtFQUNJLGNBQUE7RUFDQSx5QkFBQTtFQUNBLGdCQUFBO0VBQ0EsY0FBQTs7QUFicEIsdUJBSUksV0FDSSxVQUVJLEVBUUk7RUFDSSxVQUFBOztBQUdSLHVCQWZSLFdBQ0ksVUFjSztFQUNHLFdBQUE7O0FBRUosdUJBbEJSLFdBQ0ksVUFpQks7RUFDRyxZQUFBO0VBQ0EsaUJBQUE7O0FBR1IsdUJBdkJKLFdBdUJLO0VBQ0csV0FBQTtFQUNBLGNBQUE7RUFDQSxTQUFTLEVBQVQ7OztBQU1aO0VBQ0ksZ0JBQUE7RUFDQSxjQUFBOztBQUZKLHFCQUdJO0VBQ0ksZ0JBQUE7RUFDQSxtQkFBQTs7QUFMUixxQkFPSTtFQUNJLGdCQUFBO0VBQ0EsY0FBQTs7QUFFSixxQkFBQyxrQkFDRyw0QkFDSTtFQUNJLHFCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7O0FBSVoscUJBQUMsZUFDRyw0QkFDSSxHQUNJLEVBQUM7RUFDRyxzQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxxQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0Esc0JBQUE7RUFDQSxpQkFBQTtFQUNBLFNBQVMsRUFBVDs7QUFFSixxQkFsQlgsZUFDRyw0QkFDSSxHQWdCSyxNQUFPLEVBQUM7RUFDTCxtQkFBQTs7QUFuQmhCLHFCQUFDLGVBQ0csNEJBcUJJLEdBQUUsT0FDRSxFQUFDO0VBQ0csU0FBUyxPQUFUO0VBQ0EsbUJBQUE7O0FBRUoscUJBM0JYLGVBQ0csNEJBcUJJLEdBQUUsT0FLRyxNQUFPLEVBQUM7RUFDTCxTQUFTLE9BQVQ7RUFDQSxtQkFBQTs7QUFPcEI7RUFDSTtJQUNJLGdCQUFnQixhQUFhLGNBQTdCOztFQUVKO0lBQ0ksZ0JBQWdCLGVBQWUsY0FBL0I7OztBQUlSO0VBQ0k7SUFDSSxtQkFBbUIsYUFBYSxjQUFoQzs7RUFFSjtJQUNJLG1CQUFtQixlQUFlLGNBQWxDOzs7QUFJUjtFQUNJO0lBQ0ksbUJBQW1CLGFBQWEsY0FBaEM7SUFDQSxXQUFXLGFBQWEsY0FBeEI7O0VBRUo7SUFDSSxtQkFBbUIsZUFBZSxjQUFsQztJQUNBLFdBQVcsZUFBZSxjQUExQjs7O0FBSVI7RUFDSTtJQUNJLGdCQUFnQixhQUFhLGNBQTdCOztFQUVKO0lBQ0ksZ0JBQWdCLGVBQWUsY0FBL0I7OztBQUlSO0VBQ0k7SUFDSSxtQkFBbUIsYUFBYSxjQUFoQzs7RUFFSjtJQUNJLG1CQUFtQixlQUFlLGNBQWxDOzs7QUFJUjtFQUNJO0lBQ0ksbUJBQW1CLGFBQWEsY0FBaEM7SUFDQSxXQUFXLGFBQWEsY0FBeEI7O0VBRUo7SUFDSSxtQkFBbUIsZUFBZSxjQUFsQztJQUNBLFdBQVcsZUFBZSxjQUExQjs7O0FBSVIsbUJBQXNDO0VBQ2xDLGlCQUFrQixxQ0FDZDtFQURKLGlCQUFrQixxQ0FDRztJQUNiLFdBQUE7SUFDQSxXQUFBOztFQUhSLGlCQUFrQixxQ0FLZDtJQUNJLG1CQUFBOzs7QUFLWixtQkFBcUM7RUFybURqQywwQkFBQztJQUNHLFdBQUE7SUFDQSxZQUFBO0lBQ0Esa0JBQUE7SUFDQSxpQkFBQTs7SUFDQSxtQkFBbUIsK0RBQW5COztFQWltREosMEJBOWxEQTtJQUNJLE1BQU0seUJBQU47SUFDQSxXQUFBO0lBQ0EsWUFBQTtJQUNBLGtCQUFBO0lBQ0EsaUJBQUE7O0VBQ0EsMEJBTkosS0FNSztJQUNHLFdBQUE7SUFDQSxZQUFBOztFQTBsRFIsb0NBQ0k7RUFESixvQ0FDcUI7SUFDYixXQUFBO0lBQ0EsZUFBQTs7O0FBTVosUUFBMEI7RUFHZCxvQkFESixHQUFFLE9BQ0csVUFBVTtJQUNQLFdBQUE7OztBQU1oQixRQUEwQjtFQUN0QjtJQUNJLFNBQUE7OztBQUlSLFFBQTBCLHVCQUF3QjtFQUU5QyxvQkFDSSxHQUFFO0lBQ0UsYUFBQTtJQUNBLG1CQUFBOzs7RUFFQSxvQkFKSixHQUFFLE9BSUcsVUFBVTtJQUNQLFdBQUE7SUFDQSxjQUFBOzs7QUFPaEIsUUFBMEIsdUJBQXdCO0VBRTlDLG9CQUNJLEdBQUU7SUFDRSxVQUFBO0lBQ0EsbUJBQUE7OztFQUVBLG9CQUpKLEdBQUUsT0FJRyxVQUFVO0lBQ1AsV0FBQTtJQUNBLGNBQUE7Ozs7Ozs7Ozs7Ozs7O0FBa0JoQixRQUEwQjtFQUV0QixvQkFDSSxHQUFFO0lBQ0UsV0FBQTtJQUNBLGtCQUFBO0lBQ0EsV0FBQTs7O0FBTVosUUFBMEI7RUFDdEIsd0JBQXlCO0lBQ3JCLFdBQUE7Ozs7QUFLUixtQkFBeUM7RUFDckMsSUFBSSxpQkFDQSxRQUFPLFVBQ0g7SUFDSSxXQUFBOztFQUhaLElBQUksaUJBQ0EsUUFBTyxVQUlIO0lBQ0ksYUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgLSBQUk9HUkVTUyBDSVJDTEVcbiAgICAtIEFyY2hpdmUgY291cnNlc1xuICAgIC0gQ291cnNlIEN1cnJpY3VsdW1cbiAgICAtIEJSRUFEQ1JVTUJcbiAgICAtIENPVVJTRSBQUk9HUkVTU1xuICAgIC0gQ09VUlNFIFRBQlNcbiAgICAtIFBPUFVQIFNUWUxFXG4gICAgLSBDT1VSU0UgUVVJWlxuICAgIC0gRm9ybSBmaWVsZFxuICAgIC0gakFsZXJ0c1xuICAgIC0gdG9vbHRpcFxuICAgIC0gZmlsbCBpbiBibGFua1xuICAgIC0gU2hvcnRjb2RlL1dpZGdldHNcbiAqL1xuXG5AaWNvbi11cmw6ICcuLi9mb250cy9scC1pY29ucyc7XG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ2xwLWljb25zJztcbiAgICBzcmM6IHVybCgnQHtpY29uLXVybH0uZW90P2Y0MW5sJyk7XG4gICAgc3JjOiB1cmwoJ0B7aWNvbi11cmx9LmVvdD9mNDFubCNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICB1cmwoJ0B7aWNvbi11cmx9LnR0Zj9mNDFubCcpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICB1cmwoJ0B7aWNvbi11cmx9LndvZmY/ZjQxbmwnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICB1cmwoJ0B7aWNvbi11cmx9LnN2Zz9mNDFubCNscC1pY29ucycpIGZvcm1hdCgnc3ZnJyk7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbltjbGFzc149XCJscC1pY29uLVwiXSwgW2NsYXNzKj1cIiBscC1pY29uLVwiXSB7XG4gICAgLyogdXNlICFpbXBvcnRhbnQgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBicm93c2VyIGV4dGVuc2lvbnMgdGhhdCBjaGFuZ2UgZm9udHMgKi9cbiAgICBmb250LWZhbWlseTogJ2xwLWljb25zJyAhaW1wb3J0YW50O1xuICAgIHNwZWFrOiBub25lO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLmxwLWljb24tZmlsZS10ZXh0MjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTI2XCI7XG59XG5cbi5scC1pY29uLWZpbGUtcGljdHVyZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTI3XCI7XG59XG5cbi5scC1pY29uLWZpbGUtbXVzaWM6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTkyOFwiO1xufVxuXG4ubHAtaWNvbi1maWxlLXZpZGVvOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU5MmFcIjtcbn1cblxuLmxwLWljb24tZmlsZS16aXA6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTkyYlwiO1xufVxuXG4ubHAtaWNvbi1wYXN0ZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTJkXCI7XG59XG5cbi5scC1pY29uLWFsYXJtOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU5NTBcIjtcbn1cblxuLmxwLWljb24tY3Jvc3M6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZWEwZlwiO1xufVxuXG4ubHAtaWNvbi1jaGVja21hcms6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZWExMFwiO1xufVxuXG4ubHAtaWNvbi1zcGlubmVyMjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTdiXCI7XG59XG5cbi5scC1pY29uLXBsdXM6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZWEwYVwiO1xufVxuXG4ubHAtaWNvbi1taW51czpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlYTBiXCI7XG59XG5cbi5jbGVhcmZpeCgpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiAnJztcbiAgICBjbGVhcjogYm90aDtcbn1cblxuLmNsZWFyZml4OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiAnJztcbiAgICBjbGVhcjogYm90aDtcbn1cblxuLmJvcmRlci1yYWRpdXMoQGFyZ3MpIHtcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IEBhcmd1bWVudHM7XG4gICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IEBhcmd1bWVudHM7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiBAYXJndW1lbnRzO1xuICAgIC1tcy1ib3JkZXItcmFkaXVzOiBAYXJndW1lbnRzO1xuICAgIC1vLWJvcmRlci1yYWRpdXM6IEBhcmd1bWVudHM7XG4gICAgYm9yZGVyLXJhZGl1czogQGFyZ3VtZW50cztcbn1cblxuLnRyYW5zZm9ybShAYXJncykge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBAYXJndW1lbnRzO1xuICAgIC1raHRtbC10cmFuc2Zvcm06IEBhcmd1bWVudHM7XG4gICAgLW1vei10cmFuc2Zvcm06IEBhcmd1bWVudHM7XG4gICAgLW1zLXRyYW5zZm9ybTogQGFyZ3VtZW50cztcbiAgICAtby10cmFuc2Zvcm06IEBhcmd1bWVudHM7XG4gICAgdHJhbnNmb3JtOiBAYXJndW1lbnRzO1xufVxuXG4udHJhbnNpdGlvbihAYXJncykge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogQGFyZ3VtZW50cztcbiAgICAta2h0bWwtdHJhbnNpdGlvbjogQGFyZ3VtZW50cztcbiAgICAtbW96LXRyYW5zaXRpb246IEBhcmd1bWVudHM7XG4gICAgLW1zLXRyYW5zaXRpb246IEBhcmd1bWVudHM7XG4gICAgLW8tdHJhbnNpdGlvbjogQGFyZ3VtZW50cztcbiAgICB0cmFuc2l0aW9uOiBAYXJndW1lbnRzO1xufVxuXG4uY3Jvc3MoQHNpemU6IDMwcHgsIEBib3JkZXI6IDNweCwgQGNvbG9yOiAjMDAwKSB7XG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIHdpZHRoOiBAYm9yZGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiBAY29sb3I7XG4gICAgICAgIGhlaWdodDogQHNpemU7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAoQHNpemUgLSAgQGJvcmRlcikgLyAyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIC50cmFuc2Zvcm0ocm90YXRlKC00NWRlZykpO1xuICAgIH1cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgLnRyYW5zZm9ybShyb3RhdGUoNDVkZWcpKTtcbiAgICB9XG59XG5cbi5hbmltYXRpb24oQGFyZ3MpIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogQGFyZ3VtZW50cztcbiAgICAtbW96LWFuaW1hdGlvbjogQGFyZ3VtZW50cztcbiAgICBhbmltYXRpb246IEBhcmd1bWVudHM7XG59XG5cbi5vdmVybGF5LXByb2Nlc3Npbmcge1xuICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgei1pbmRleDogOTk5OTk5O1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgfVxufVxuXG4vKiBQUk9HUkVTUyBDSVJDTEUgKi9cbi5wcm9ncmVzcy1jaXJjbGUoQHNpemU6IDIwMHB4LCBAYmFja2dyb3VuZDogI0RERCwgQGZpbGw6ICM5NWU2ZjksIEBpbml0aWFsaXplOiAwLCBAaW5zaWRlLXNpemU6IDE3MHB4LCBAaW5zaWRlLWJhY2tncm91bmQ6ICNGRkYpIHtcbiAgICAucHJvZ3Jlc3MtY2lyY2xlIHtcbiAgICAgICAgd2lkdGg6IEBzaXplO1xuICAgICAgICBoZWlnaHQ6IEBzaXplO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICB3aWR0aDogQHNpemU7XG4gICAgICAgICAgICBoZWlnaHQ6IEBzaXplO1xuICAgICAgICAgICAgY2xpcDogcmVjdCgwLCBAc2l6ZSwgQHNpemUsIEBzaXplIC8gMik7XG4gICAgICAgICAgICAuZmlsbCB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBAc2l6ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IEBzaXplO1xuICAgICAgICAgICAgICAgIGNsaXA6IHJlY3QoMCwgQHNpemUgLyAyLCBAc2l6ZSwgMCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogQGZpbGw7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUodW5pdChAaW5pdGlhbGl6ZSozLjYsIGRlZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICB3aWR0aDogQGluc2lkZS1zaXplO1xuICAgICAgICAgICAgaGVpZ2h0OiBAaW5zaWRlLXNpemU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBAaW5zaWRlLWJhY2tncm91bmQ7XG4gICAgICAgICAgICAuYm9yZGVyLXJhZGl1cyg1MCUpO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtQGluc2lkZS1zaXplIC8gMjtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtQGluc2lkZS1zaXplIC8gMjtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5pbnNpZGUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogQHNpemU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmLmd0LTUwIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBmaWxsO1xuICAgICAgICAgICAgLmJhY2tncm91bmQge1xuICAgICAgICAgICAgICAgIGNsaXA6IHJlY3QoMCwgQHNpemUvMiwgQHNpemUsIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmZpbGwge1xuICAgICAgICAgICAgICAgIGNsaXA6IHJlY3QoMCwgQHNpemUsIEBzaXplLCBAc2l6ZS8yKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBAYmFja2dyb3VuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNsZWFyZml4KCkge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbn1cblxuLmhpZGUtaWYtanMge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogQXJjaGl2ZSBjb3Vyc2VzICovXG4ubGVhcm4tcHJlc3MtY291cnNlcyB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBjbGVhcjogYm90aDtcbiAgICBtYXJnaW46IDAgLTMwcHggMCAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgJjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICAgIGxpLmNvdXJzZSB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiAyMyU7XG4gICAgICAgIG1hcmdpbjogMCAyJSAzMHB4IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG5cbiAgICAgICAgLnZpZXctbW9yZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDE1cHg7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS10aHVtYm5haWwge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuY291cnNlLWluZm8ge1xuICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4IDE1cHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG4gICAgICAgIC5jb3Vyc2Utc3R1ZGVudHMge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1pbnN0cnVjdG9yIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1vcmlnaW4tcHJpY2Uge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1wcmljZSB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBjb2xvcjogcmdiKDg0LCAxODEsIDgxKTtcbiAgICAgICAgfVxuICAgICAgICAuY291cnNlLWluZm8gPiAqIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY291cnNlLW9yaWdpbi1wcmljZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgcGFkZGluZy1yaWdodDogNXB4O1xufVxuXG4uY291cnNlLXByaWNlIHtcbiAgICBjb2xvcjogcmdiKDg0LCAxODEsIDgxKTtcbn1cblxuLmxlYXJuLXByZXNzLW5vdGljZSAuYnV0dG9uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5cbi5sZWFybi1wcmVzcy1mb3JtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4vKiBDb3Vyc2UgQ3VycmljdWx1bSAqL1xuXG4jbGVhcm4tcHJlc3MtY291cnNlLWN1cnJpY3VsdW0ge1xuICAgIHVsLmN1cnJpY3VsdW0tc2VjdGlvbnMsXG4gICAgdWwuc2VjdGlvbi1jb250ZW50IHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNUY1O1xuICAgICAgICBsaS5zZWN0aW9uIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMTVweDtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGRkY7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgICAgY29sb3I6IHJnYigxNTMsIDE1MywgMTUzKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0RERDtcbiAgICAgICAgfVxuICAgICAgICAubWV0YSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IDE1cHg7XG4gICAgICAgICAgICB0b3A6IDIwcHg7XG4gICAgICAgICAgICAuY29sbGFwc2Uge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdscC1pY29ucyc7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzk1ZTZmOTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXGVhMGJcIjtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYucGx1cyB7XG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxlYTBhXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmNvdXJzZS1pdGVtIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjU1LCAyNTUsIDI1NSk7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgLnRyYW5zaXRpb24oYmFja2dyb3VuZCBsaW5lYXIgMC41cyk7XG4gICAgICAgIC5scC1sYWJlbC12aWV3aW5nLFxuICAgICAgICAubHAtbGFiZWwtY29tcGxldGVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1pdGVtLXRpdGxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJ2xwLWljb25zJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubHAtaWNvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5pdGVtLXN0YXR1cyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGRhc2hpY29ucztcbiAgICAgICAgICAgIC5ib3JkZXItcmFkaXVzKDRweCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjREREO1xuICAgICAgICAgICAgY29sb3I6ICMyMmI0ZmY7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYxNzdcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuaXRlbS1zdGF0dXMtdmlld2VkIHtcblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5pdGVtLXN0YXR1cy1zdGFydGVkIHtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmNDY5XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5pdGVtLXN0YXR1cy1jb21wbGV0ZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyMmI0ZmY7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlxcZjE0N1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuaXRlbS1zdGF0dXMtcGFzc2VkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMjJiNGZmO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGO1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYxNDdcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLml0ZW0tc3RhdHVzLWZhaWxlZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2NjNTQwZDtcbiAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRjtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmMzM1XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5pdGVtLXJlc3VsdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgICYuaXRlbS1oYXMtc3RhdHVzIHtcbiAgICAgICAgICAgIC5pdGVtLXN0YXR1cyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYuaXRlbS1oYXMtcmVzdWx0IHtcbiAgICAgICAgICAgIC5pdGVtLXJlc3VsdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYudmlld2FibGUge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2U3ZWNmYjtcbiAgICAgICAgICAgICAgICAudHJhbnNpdGlvbihiYWNrZ3JvdW5kIGxpbmVhciAwcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5jb3Vyc2UtbGVzc29uIHtcbiAgICAgICAgICAgIC5jb3Vyc2UtaXRlbS10aXRsZSB7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnXFxlOTI2JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5jb3Vyc2UtcXVpeiB7XG4gICAgICAgICAgICAuY291cnNlLWl0ZW0tdGl0bGUge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ1xcZTk1MCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYuaXRlbS1jdXJyZW50IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDNweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjOTVlNmY5O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmI3MTA7XG4gICAgICAgICAgICAmLm9mZiB7XG4gICAgICAgICAgICAgICAgLnRyYW5zaXRpb24obm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY291cnNlLWl0ZW0tbWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgdG9wOiAxNXB4O1xuICAgICAgICByaWdodDogMTVweDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgIC5pdGVtLWxvb3AtbWV0YS10ZXh0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogc21hbGw7XG4gICAgICAgICAgICAmLml0ZW0tZmluYWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNjYzU0MGQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogM3B4IDhweDtcbiAgICAgICAgICAgICAgICAuYm9yZGVyLXJhZGl1cygzcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubHAtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtZmFtaWx5OiAnbHAtaWNvbnMnO1xuICAgIGJhY2tncm91bmQ6ICM5NWU2Zjk7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgfVxuXG59XG5cbi5scC1sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtc2l6ZTogNzglO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgcGFkZGluZzogMCAxMHB4O1xuICAgIGJhY2tncm91bmQ6ICNEREQ7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIC5ib3JkZXItcmFkaXVzKDRweCk7XG4gICAgJi5scC1sYWJlbC12aWV3aW5nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDU3LCAxNzUsIDI1NSk7XG4gICAgfVxuICAgICYubHAtbGFiZWwtY29tcGxldGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzM5YzdjZTtcbiAgICB9XG4gICAgJi5scC1sYWJlbC1sZXNzb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3O1xuICAgIH1cbiAgICAmLmxwLWxhYmVsLXF1aXoge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTM2NThjO1xuICAgIH1cbiAgICAmLmxwLWxhYmVsLXByZXZpZXcge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDJhN2NlO1xuICAgIH1cbn1cblxuLmxlYXJuLXByZXNzLWNvbnRlbnQtcHJvdGVjdGVkLW1lc3NhZ2Uge1xuICAgIGJvcmRlcjogM3B4IHNvbGlkICNmZjg0ODQ7XG4gICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGNvbG9yOiAjZmY4NDg0O1xuICAgIG1hcmdpbjogMTBweCAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAuaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIC5jcm9zcygzMHB4LCAzcHgsICNmZjg0ODQpO1xuICAgIH1cbn1cblxuLyoqIEJSRUFEQ1JVTUIgKi9cbi5sZWFybi1wcmVzcy1icmVhZGNydW1iIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4vKiogQ09VUlNFIFBST0dSRVNTICoqL1xuLnNpbmdsZS1scF9jb3Vyc2Uge1xuICAgIC5sZWFybi1wcmVzcy1jb3Vyc2UtcmVzdWx0cy1wcm9ncmVzcyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICAgIC5pdGVtcy1wcm9ncmVzcyB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHdpZHRoOiA2OCU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgLmxwLWNvdXJzZS1wcm9ncmVzcy1oZWFkaW5nIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1wcm9ncmVzcyB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHdpZHRoOiAzMCU7XG4gICAgICAgIH1cbiAgICAgICAgLm51bWJlciwgLnBlcmNlbnRhZ2Utc2lnbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLnBlcmNlbnRhZ2Utc2lnbiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5ncmFkZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGNUY1RjU7XG4gICAgICAgICAgICBwYWRkaW5nOiAycHggN3B4O1xuICAgICAgICAgICAgLmJvcmRlci1yYWRpdXMoM3B4KTtcbiAgICAgICAgICAgICYuaW4tcHJvZ3Jlc3Mge1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLnBhc3NlZCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzk1ZTZmOTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuZmFpbGVkIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmY1NDI1O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubHAtY291cnNlLXByb2dyZXNzIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgLmxwLXByb2dyZXNzLWJhciB7XG4gICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgYmFja2dyb3VuZDogI0RERDtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDAgMTVweCAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAuYm9yZGVyLXJhZGl1cygzcHgpO1xuICAgICAgICAubHAtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM5NWU2Zjk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmxwLXBhc3NpbmctY29uZGl0aW9uYWwge1xuICAgICAgICBsZWZ0OiAwJTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgIHRvcDogLTVweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC01cHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBib3JkZXI6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIH1cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogI0RERDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNEREQ7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiNsZWFybi1wcmVzcy1jb250ZW50LWl0ZW0ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgZGlzcGxheTogbm9uZTtcblxufVxuXG4vKiogQ09VUlNFIFRBQlMgKiovXG4ubGVhcm4tcHJlc3MtdGFicyB7XG4gICAgLmxlYXJuLXByZXNzLW5hdi10YWJzIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgLmxlYXJuLXByZXNzLW5hdi10YWIge1xuICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM2ODY4Njg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICMwMDdhY2M7XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMDA3YWNjO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtNHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuYWN0aXZlOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGRkY7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAtMXB4O1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6aG92ZXIge1xuXG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmxlYXJuLXByZXNzLXRhYi1wYW5lbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGVhcm4tcHJlc3MtYmxvY2stY29udGVudC1taXhpbihAdykge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgd2lkdGg6IChAdyk7XG4gICAgICAgIGhlaWdodDogKEB3KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0oQHcvMik7XG4gICAgICAgIG1hcmdpbi10b3A6IC0oQHcvMik7IC8qLTc2cHg7Ki9cbiAgICAgICAgLXdlYmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oMHB4IEB3LCBAdyBAdywgQHcgQHcvMiwgQHcvMiBAdy8yLCBAdy8yIDAsIDAgMCk7XG4gICAgfVxuXG4gICAgc3BhbiB7XG4gICAgICAgIGNsaXA6IHJlY3QoMCwgQHcrNCwgQHcvMisyLCBAdy8yKzIpO1xuICAgICAgICB3aWR0aDogQHcrNDtcbiAgICAgICAgaGVpZ2h0OiBAdys0O1xuICAgICAgICBtYXJnaW4tbGVmdDogLShAdy8yKzIpO1xuICAgICAgICBtYXJnaW4tdG9wOiAtKEB3LzIrMik7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIHdpZHRoOiBAdys0O1xuICAgICAgICAgICAgaGVpZ2h0OiBAdys0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGVhcm4tcHJlc3MtY291cnNlLWJ1dHRvbnMge1xuXG4gICAgYS5idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogIzFhMWExYTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LWZhbWlseTogTW9udHNlcnJhdCwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNDY4NzVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHBhZGRpbmc6IDAuODQzNzVlbSAwLjg3NWVtIDAuNzgxMjVlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDdhY2M7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIFBPUFVQIFNUWUxFICovXG5cbiNwb3B1cF9vdmVybGF5IHtcbiAgICB6LWluZGV4OiAxMDAwMDAwMCAhaW1wb3J0YW50O1xufVxuXG4jcG9wdXBfY29udGFpbmVyIHtcbiAgICB6LWluZGV4OiAxMDAwMDAwMSAhaW1wb3J0YW50O1xufVxuXG5ib2R5LmNvdXJzZS1oYXMtcG9wdXAge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiNjb3Vyc2UtY3VycmljdWx1bS1wb3B1cCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgIHotaW5kZXg6IDk5OTk5OTtcbiAgICAqIHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgI3BvcHVwLXNpZGViYXIge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IDM1MHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNjBweDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0RERDtcbiAgICAgICAgLmNvdXJzZS1jdXJyaWN1bHVtLXRpdGxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmN1cnJpY3VsdW0tc2VjdGlvbnMge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiBzbWFsbGVyO1xuICAgICAgICB9XG4gICAgICAgIC5sZWFybi1wcmVzcy1jb3Vyc2UtcmVzdWx0cy1wcm9ncmVzcyB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDIwcHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgLml0ZW1zLXByb2dyZXNzLCAuY291cnNlLXByb2dyZXNzIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAjcG9wdXAtbWFpbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAzNTBweDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgI3BvcHVwLWhlYWRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAtMzUwcHg7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGhlaWdodDogNjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNjYzU0MGQ7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2FiNGExMDtcbiAgICAgICAgICAgIC5wb3B1cC1tZW51IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzNTBweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjYWI0YTEwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnBvcHVwLWNsb3NlLFxuICAgICAgICAgICAgLnNpZGViYXItaGlkZS1idG4sXG4gICAgICAgICAgICAuc2lkZWJhci1zaG93LWJ0biB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU5cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1OXB4O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzRweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNjBweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNiMzRjMTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNpZGViYXItaGlkZS1idG4ge1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuc2lkZWJhci1zaG93LWJ0biB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMjBweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucG9wdXAtY2xvc2Uge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAzcHggc29saWQgI0ZGRjtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDI5cHg7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDE3cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjYjM0YzEwO1xuICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucG9wdXAtdGl0bGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwIDAgMzUwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgICAjcG9wdXAtY29udGVudCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDYwcHg7XG4gICAgICAgICAgICBib3R0b206IDUwcHg7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRvcCBsaW5lYXIgMC4yNXMsIGJvdHRvbSBsaW5lYXIgMC4yNXM7XG5cbiAgICAgICAgICAgICNwb3B1cC1jb250ZW50LWlubmVyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDIwcHggNDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAjcG9wdXAtZm9vdGVyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGNUY1RjU7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgICAgIC5mb290ZXItY29udHJvbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgICAgICAgICAgICAgICYucHJldi1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYubmV4dC1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAjcG9wdXAtaGVhZGVyLCAjcG9wdXAtZm9vdGVyIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgbGluZWFyIDAuMjVzO1xuICAgICAgICB9XG4gICAgICAgICYuZXhwYW5kIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDIwJTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICNwb3B1cC1oZWFkZXIsXG4gICAgICAgICAgICAjcG9wdXAtZm9vdGVyIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgI3BvcHVwLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWZyYW1lIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgIH1cbn1cblxuLmxlYXJuLXByZXNzLWNvbnRlbnQtaXRlbS10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI0RERDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICAmLmNvbnRlbnQtaXRlbS1xdWl6LXRpdGxlIHtcbiAgICAgICAgaDQge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgICAgIC5xdWl6LWNvdW50ZG93biB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgICY6YWZ0ZXIsICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTNweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBhZGZmO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLndhcm5pbmctdGltZS1vdmVyIHtcbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGMDAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY291bnRkb3duIHtcblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5jbGVhcmZpeCgpO1xuICAgIH1cbiAgICAubHAtZXhwYW5kIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICB3aWR0aDogNDNweDtcbiAgICAgICAgaGVpZ2h0OiA0M3B4O1xuICAgICAgICBsaW5lLWhlaWdodDogNDNweDtcbiAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxufVxuXG4ubGVhcm4tcHJlc3MtY29udGVudC1pdGVtLXN1bW1hcnkge1xuICAgIC8qcGFkZGluZzogMjBweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0RERDsqL1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgLnF1aXotcXVlc3Rpb24tdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cbiAgICAubGVhcm4tcHJlc3MtcXVlc3Rpb24tZXhwbGFuYXRpb24sIC5sZWFybi1wcmVzcy1xdWVzdGlvbi1oaW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4O1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIC5oaW50LXRpdGxlLCAuZXhwbGFuYXRpb24tdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYnV0dG9uLWZpbmlzaC1xdWl6IHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5cbi5sZWFybnByZXNzIGZvcm0ucHVyY2hhc2UtY291cnNlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4jbGVhcm4tcHJlc3MtYmxvY2stY29udGVudCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogZmFkZSgjRkZGLCAyNSUpO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiA5OTk5OTk5OTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICAmOmJlZm9yZSwgJjphZnRlciwgc3BhbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgLmJvcmRlci1yYWRpdXMoNTAlKTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzAwMDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIC5hbmltYXRpb24oc3Bpbi0xMyAxLjVzIGluZmluaXRlKTtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBib3JkZXI6IDEwcHggc29saWQgIzAwMDAwMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC04MHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAtODBweDtcbiAgICAgICAgd2lkdGg6IDE2MHB4O1xuICAgICAgICBoZWlnaHQ6IDE2MHB4O1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICBzcGFuIHtcbiAgICAgICAgei1pbmRleDogMjA7XG4gICAgICAgIC5hbmltYXRpb24oc3Bpbi0xMiAxLjVzIGluZmluaXRlKTtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBib3JkZXI6IDZweCBzb2xpZCAjOTVlNmY5O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgLmJvcmRlci1yYWRpdXMoNTAlKTtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubGVhcm4tcHJlc3MtYmxvY2stY29udGVudC1taXhpbig4MHB4KTtcbn1cblxuYm9keS5ibG9jay1jb250ZW50IHtcbiAgICAjbGVhcm4tcHJlc3MtYmxvY2stY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLyogQ09VUlNFIFFVSVogKi9cbi5xdWl6LWJ1dHRvbnMge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgY2xlYXI6IGJvdGg7XG59XG5cbi5xdWl6LWludHJvIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbGkgbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxufVxuXG4ucXVpei1xdWVzdGlvbnMtbGlzdCB7XG4gICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlO1xuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTBweCAwO1xuICAgIH1cbiAgICAucXVlc3Rpb24tdGl0bGUge1xuICAgICAgICBtYXJnaW46IDAgMCA1cHggMDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxuICAgIC5jdXJyZW50IHtcbiAgICAgICAgLnF1ZXN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSwgaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjMDBiOWViO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzAwYjllYjtcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTRkZWcpO1xuICAgICAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgxNGRlZyk7XG4gICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMTRkZWcpO1xuICAgICAgICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMTRkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzNkZWcpO1xuICAgICAgICAgICAgd2lkdGg6IDhweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcblxuICAgICAgICAgICAgdG9wOiAtNXB4O1xuICAgICAgICAgICAgbGVmdDogNXB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgICY6ZGlzYWJsZWQge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjREREO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwYjllYjtcbiAgICAgICAgICAgICAgICB3aWR0aDogOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogOHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC00cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNEREQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5xdWVzdGlvbi1yZXN1bHRzIHtcbiAgICAucXVlc3Rpb24tdGl0bGUge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBkYXNoaWNvbnM7XG4gICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmLmNvcnJlY3Qge1xuICAgICAgICAucXVlc3Rpb24tdGl0bGUge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJ1xcZjE0Nyc7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMGFkZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5za2lwcGVkIHtcbiAgICAgICAgLnF1ZXN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdcXGY1MzQnO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjYzZjNmM2O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICYuaW5jb3JyZWN0IHtcbiAgICAgICAgLnF1ZXN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdcXGYzMzUnO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmY1NDI1O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC51c2VyLWFuc3dlci1mYWxzZSB7XG4gICAgICAgICAgICAub3B0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuYW5zd2VyLXRydWUge1xuICAgICAgICBjb2xvcjogIzAwN2FjYztcbiAgICAgICAgLm9wdGlvbi10aXRsZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOWQ4O1xuICAgICAgICAgICAgcGFkZGluZzogMCA1cHg7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogLTVweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnB1dCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxufVxuXG4ucXVpei1kZXNjcmlwdGlvbixcbi5xdWVzdGlvbi1jb250ZW50IHtcbiAgICAubGVhcm4tcHJlc3MtcXVlc3Rpb24tdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cbn1cblxuLnF1aXotY291bnRkb3duIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1pbi13aWR0aDogMTUwcHg7XG4gICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIHBhZGRpbmc6IDVweCAwO1xufVxuXG4jcXVpei1jb3VudGRvd24ge1xuICAgIC5wcm9ncmVzcy1jaXJjbGUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgM3B4ICNiZGJkYmQgaW5zZXQ7XG4gICAgICAgIC5pbnNpZGUge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAuY291bnRkb3duIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMwODc5OTg7XG4gICAgICAgICAgICAgICAgX3RleHQtc2hhZG93OiAxcHggMXB4ICM4ZWU1ZmQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHggMCAwIDA7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNEREQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBiOWViO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAjMDk3YTk4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4jcXVpei1wcm9ncmVzcyB7XG4gICAgLnByb2dyZXNzLWNpcmNsZShAc2l6ZTogMjAwcHgsIEBiYWNrZ3JvdW5kOiAjRERELCBAZmlsbDogI0ZGMDAwMCwgQGluaXRpYWxpemU6IDAlLCBAaW5zaWRlLXNpemU6IDE3MHB4LCBAaW5zaWRlLWJhY2tncm91bmQ6ICNGRkYpO1xufVxuXG4ucXVpei1yZXN1bHQge1xuICAgIC5xdWl6LXJlc3VsdC1tYXJrIHtcbiAgICAgICAgLnByb2dyZXNzLWNpcmNsZSgpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cbiAgICAucXVpei1yZXN1bHQtc3VtbWFyeSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgICAgIC5xdWl6LXJlc3VsdC1maWVsZCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCA4cHggMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICAgICAgLmJvcmRlci1yYWRpdXMoNHB4KTtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgICAgIHNwYW4sIHNwYW46YWZ0ZXIsICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS10ZXh0KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRjtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC41cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW46YWZ0ZXIge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogM3B4IDEwcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuY29ycmVjdCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzIyYjRmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYud3Jvbmcge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZjU0MjU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmVtcHR5IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzY1NkQ2RDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwLnF1aXotcmVzdWx0LXRpbWUge1xuICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgfVxuICAgIC5xdWl6LWdyYWRlIHtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAmLnBhc3NlZCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMjJiNGZmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmLmZhaWxlZCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjZmY1NDI1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmVsZW1lbnQtZGF0YS1wZXJjZW50LWxvb3AgKEBpKSB3aGVuIChAaSA8PSAxMDApIHtcbiAgICAuc2luZ2xlLXF1aXogLnF1aXotcmVzdWx0LWZpZWxkW2RhdGEtdmFsdWU9XCJAe2l9XCJdOmJlZm9yZSxcbiAgICAuc2luZ2xlLXF1aXogLnF1aXotcmVzdWx0LWZpZWxkW2RhdGEtdmFsdWU9XCJAe2l9XCJdIHNwYW4sXG4gICAgI3F1aXotY291bnRkb3duW2RhdGEtdmFsdWU9XCJAe2l9XCJdOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IH5cIkB7aX0lXCI7XG4gICAgfVxuICAgIC5lbGVtZW50LWRhdGEtcGVyY2VudC1sb29wKEBpICsgMSk7XG59XG5cbi5lbGVtZW50LWRhdGEtcGVyY2VudC1sb29wICgwKTtcblxuLyogUVVFU1RJT04gKi9cbi5sZWFybi1wcmVzcy1xdWVzdGlvbi1vcHRpb25zIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMCAwIDIwcHggMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgID4gbGkuYW5zd2VyLW9wdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAuYm9yZGVyLXJhZGl1cyg0cHgpO1xuICAgICAgICA+IGxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLCBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMTBweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAxNXB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICAmOmNoZWNrZWQ6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogNHB4IHNvbGlkICMwMGI5ZWI7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAzcHg7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0ocm90YXRlKDM2ZGVnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6Y2hlY2tlZCArIHAge1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwYjllYjtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdW2Rpc2FibGVkXSwgaW5wdXRbdHlwZT1cInJhZGlvXCJdW2Rpc2FibGVkXSB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgICAgICAgICAgICAgLmJvcmRlci1yYWRpdXMoNTAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDIwcHggNXB4IDYwcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICAgICAgICAmLnNpbmdsZS1saW5lcyB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAwIDYwcHg7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4OyAvKiBtaWRkbGUgKi9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWwgcCB7XG4gICAgICAgICAgICAuYm9yZGVyLXJhZGl1cyg0cHgpO1xuICAgICAgICB9XG4gICAgICAgICYuYW5zd2VyLXRydWUgbGFiZWwgcCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBiOWViO1xuICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciBsYWJlbCBwIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNENEQ0RDQ7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgJi51c2VyLWFuc3dlci1mYWxzZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgICAgICAgICAgPiBsYWJlbCB7XG4gICAgICAgICAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdICsgcCwgaW5wdXRbdHlwZT1cInJhZGlvXCJdICsgcCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogI0ZGMDAwMDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmFuc3dlci1vcHRpb24tcmVzdWx0IHtcbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnB1dFtkaXNhYmxlZF0ge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5sZWFybnByZXNzLWNvbnRlbnQge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5jb3Vyc2UtbWV0YSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAuY291cnNlLW9yaWdpbi1wcmljZSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgfVxuICAgIC5jb3Vyc2UtcHJpY2Uge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbn1cblxuLyoqIE1FU1NBR0UgKi9cbi5sZWFybi1wcmVzcy1tZXNzYWdlIHtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzAwQTBEMjtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHggMHB4IDIwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJ1dHRvbiB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gICAgcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAmLm5vdGljZSB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjYjNkMjBhO1xuICAgIH1cbiAgICAmLmVycm9yIHtcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICNiODFjMjM7XG4gICAgfVxuICAgIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgIH1cbn1cblxuLyoqL1xuLmxlYXJuLXByZXNzLWNoZWNrb3V0LWNvbW1lbnQsXG4ubGVhcm4tcHJlc3MtY2hlY2tvdXQtcGF5bWVudCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLmxlYXJuLXByZXNzLWNoZWNrb3V0LXBheW1lbnQge1xuICAgIC5wYXltZW50LW1ldGhvZHMge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuXG4vKiBDT1VSU0UgUVVJWiAqL1xuLnNpbmdsZS1xdWl6IHtcbiAgICAucXVpei1xdWVzdGlvbnMtbGlzdCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuICAgIC5xdWl6LWludHJvIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgICAgICBtYXJnaW46IDAgMCAyMHB4IDA7XG4gICAgfVxuICAgIGg0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgIH1cbn1cblxuLmxlYXJuLXByZXNzLXRvb2x0aXAge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBiYWNrZ3JvdW5kOiAjMGY0OTU2O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICB3aWR0aDogMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCI/XCI7XG4gICAgICAgIGZvbnQtc2l6ZTogN3B4O1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAycHg7XG4gICAgICAgIGxlZnQ6IDNweDtcbiAgICB9XG59XG5cbi8qIEZvcm0gZmllbGQgKi9cbi5scC1mb3JtLWZpZWxkLXdyYXAge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgIC5scC1mb3JtLWZpZWxkIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgICAgICAubHAtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5scC1mb3JtLWZpZWxkLWlucHV0IC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmxwLWZpZWxkLWVycm9yLW1lc3NhZ2Uge1xuICAgICAgICAgICAgY29sb3I6ICNGRjAwMDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5sZWFybi1wcmVzcy11c2VyLXByb2ZpbGUge1xuICAgICNsZWFybi1wcmVzcy11c2VyLWluZm97XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC51c2VyLWF2YXRhciB7XG4gICAgICAgICAgICB3aWR0aDogMTUwcHg7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIC5hdmF0YXIge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnVzZXItYmFzaWMtaW5mb3tcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNzBweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAubHAtZWRpdC1wcm9maWxlIHtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAuY2xlYXJmaXgoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAudXNlci1iYXNpYy1pbmZvIHtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICB9XG4gICAgLmxlYXJuLXByZXNzLXRhYnMge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBtYXJnaW46IDMwcHggMCAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgJiA+IGxpIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgICAgICAgICAgICYgPiBhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAxNXB4O1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzY4Njg2ODtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICMwMDdhY2M7XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMDA3YWNjO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtNHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAubGVhcm4tcHJlc3Mtc3VidGFicyB7XG4gICAgICAgICYgPiBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICAmLmN1cnJlbnQge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5sZWFybi1wcmVzcy1zdWJ0YWItY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgICBsaS5jb3Vyc2Uge1xuICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5wcm9maWxlLWNvdXJzZXMge1xuICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICAgICAgLmxlYXJuLXByZXNzLWNvdXJzZS1yZXN1bHRzLXByb2dyZXNzIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDE1cHggMTVweCAxNXB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBidXR0b24ubGVhcm4tcHJlc3MtY291cnNlLXdpc2hsaXN0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLnVzZXItcHJvZmlsZS1lZGl0LWZvcm0ge1xuXG4gICAgICAgIC5pbmZvLWZpZWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnVzZXItcHJvZmlsZS1waWN0dXJlIHtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICAgICAgLnBpY3R1cmUsIC5jaGFuZ2UtcGljdHVyZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNoYW5nZS1waWN0dXJlIHtcbiAgICAgICAgICAgICAgICAuZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAuY2xlYXJmaXgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9maWxlLWZpZWxkLW5hbWUge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoYW5nZS1wYXNzd29yZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgI3VzZXJfcHJvZmlsZV9wYXNzd29yZF9mb3JtIHtcbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuICAgIC51cGRhdGUtcHJvZmlsZSB7XG4gICAgICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAjREREO1xuICAgICAgICBwYWRkaW5nLXRvcDogMjBweDtcbiAgICB9XG4gICAgLmxlYXJuLXByZXNzLXN1YnRhYi1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgICNscC11c2VyLWVkaXQtYXZhdGFyIHtcbiAgICAgICAgLm1veGllLXNoaW0ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAubHAtZm9ybS1maWVsZC1hdmF0YXIge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgI2xwLWF2YXRhci1hY3Rpb25zIHtcbiAgICAgICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5scC1hdmF0YXItcHJldmlldyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNEREQ7XG4gICAgICAgIC5wcm9maWxlLXBpY3R1cmUge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5wcm9maWxlLWF2YXRhci1oaWRkZW4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmxwLWF2YXRhci1wcmV2aWV3LWFjdGlvbnMge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xNHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5scC1hdmF0YXItdXBsb2FkLXByb2dyZXNzIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC01cHg7XG4gICAgICAgICAgICBsZWZ0OiAxMHB4O1xuICAgICAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgLmxwLWF2YXRhci11cGxvYWQtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNTYzZDdjO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5scC1hdmF0YXItdXBsb2FkLWVycm9yIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmxwLWF2YXRhci1wcmV2aWV3LWFjdGlvbnMge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIC5scC1hdmF0YXItcHJldmlldy1hY3Rpb25zIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmLnVwbG9hZGluZywgJi51cGxvYWQtZXJyb3Ige1xuICAgICAgICAgICAgLmxwLWF2YXRhci1wcmV2aWV3LWFjdGlvbnMge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubHAtYXZhdGFyLXVwbG9hZC1wcm9ncmVzcyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmLnVwbG9hZC1lcnJvciB7XG4gICAgICAgICAgICAubHAtYXZhdGFyLXVwbG9hZC1lcnJvciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5jcm9waW5nIHtcbiAgICAgICAgICAgIC5scC1hdmF0YXItcHJldmlldy1hY3Rpb25zIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmxwLWF2YXRhci1jcm9wLWltYWdlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogbW92ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmxwLWNyb3AtY29udHJvbHMge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgICAgICAgICAgICAgLmxwLXpvb20ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzU2M2Q3YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC51aS1zbGlkZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudWktc2xpZGVyLWhhbmRsZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNTYzZDdhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLmxwLWNhbmNlbC11cGxvYWQge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIC5jbGVhcmZpeCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ib2R5IHtcbiAgICAmLnByb2ZpbGUtZHJhZ2dpbmcge1xuICAgICAgICBjdXJzb3I6IG1vdmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgJi5wcm9maWxlLXJlc2l6aW5nIHtcbiAgICAgICAgY3Vyc29yOiBldy1yZXNpemUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5sZWFybi1wcmVzcy1wYWdpbmF0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdWwge1xuICAgICAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgICAgICAmID4gbGkge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmxlYXJuLXByZXNzLWJlY29tZS10ZWFjaGVyLWZvcm0ge1xuICAgIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogakFsZXJ0cyAqL1xuI3BvcHVwX2NvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogI0ZGRjtcblxuICAgICNwb3B1cF90aXRsZSB7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogIzE4QjZDNztcbiAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgICNwb3B1cF9jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgI3BvcHVwX21lc3NhZ2Uge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNwb3B1cF9wYW5lbCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG59XG5cbi5sZWFybi1wcmVzcy1hdXRvLXJlZGlyZWN0LW5leHQtaXRlbSB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uc2luZ2xlLWxwX2NvdXJzZSB7XG4gICAgLmNvdXJzZS1zdW1tYXJ5IHtcbiAgICAgICAgLmxwX2NvdXJzZSB7XG4gICAgICAgICAgICAuZW50cnktZm9vdGVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5sZWFybi1wcmVzcy1tZXNzYWdlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgbWFyZ2luLXRvcDogMjVweDtcblxuICAgICAgICAubGVhcm4tcHJlc3MtY291bnRkb3duIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxLjVlbTtcbiAgICAgICAgICAgIGhlaWdodDogMS41ZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjY2M1NDBkO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB9XG4gICAgICAgIC5sZWFybnByZXNzLWRpc21pc3Mtbm90aWNlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAxZW07XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICAgICAgICAgICAgY29sb3I6IHJlZDtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlxcZjE1M1wiO1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBkYXNoaWNvbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG4vKiB0b29sdGlwICovXG4ubGVhcm4tcHJlc3MtdG9vbHRpcC1idWJibGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI2LCAyNiwgMjYsIDAuOSk7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgcGFkZGluZzogOHB4IDEwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHotaW5kZXg6IDk5OTk5OTk7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuXG4vKiBmaWxsIGluIGJsYW5rICovXG5pbnB1dC5ibGFuay1maWxsLWNvcnJlY3Qge1xuICAgIHdpZHRoOiBhdXRvO1xufVxuXG5ib2R5LmNvbnRlbnQtaXRlbS1vbmx5IHtcbiAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLmxlYXJuLXByZXNzLWNvbnRlbnQtaXRlbS1vbmx5IHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB6LWluZGV4OiA5OTk5OTk5O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgI2xlYXJuLXByZXNzLWNvbnRlbnQtaXRlbSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRyYW5zaXRpb246IG1heC13aWR0aCBsaW5lYXIgMC4yNXM7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgICAgICAgd2lkdGg6IDkwJTtcbiAgICAgICAgJi5leHBhbmQge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5scC1ncm91cC1oZWFkaW5nLXRpdGxlIHtcbiAgICAmLnRvZ2dsZS1vZmYsICYudG9nZ2xlLW9uIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAudG9nZ2xlLWljb24ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiBsYXJnZXI7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnKyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi50b2dnbGUtb24ge1xuICAgICAgICAudG9nZ2xlLWljb24ge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLypcbi5wYXltZW50LW1ldGhvZC1mb3JtIHtcbiAgICAmLnBheW1lbnRfbWV0aG9kX2F1dGhvcml6ZW5ldCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMjVweDtcbiAgICAgICAgLnJvdy1mbHVpZCB7XG4gICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAyNXB4O1xuICAgICAgICAgICAgLnNwYW42IHtcbiAgICAgICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxN3B4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCwgaW5wdXQge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2VsZWN0LCBpbnB1dCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxlY3QucmVxdWlyZWQge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59Ki9cblxuLnBsYWNlLW9yZGVyLWFjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbn1cblxuLndvb2NvbW1lcmNlIHtcbiAgICBmb3JtIC5mb3JtLXJvdyB7XG4gICAgICAgICYudmFsaWRhdGUtZW1haWwsICYudmFsaWRhdGUtcGhvbmUge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jaGVja291dF9jb3Vwb24ge1xuICAgICAgICAuZm9ybS1yb3ctbGFzdCB7XG4gICAgICAgICAgICBpbnB1dC5idXR0b24ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEzcHggMTBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGVhcm4tcHJlc3Mtc2VhcmNoLWNvdXJzZS1mb3JtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIGlucHV0LnNlYXJjaC1jb3Vyc2UtaW5wdXRbbmFtZT1cInNcIl0ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0yMDBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIC5zZWFyY2gtY291cnNlLWJ1dHRvbiB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG59XG5cbi50YWJsZS1vcmRlcnMge1xuICAgIC5vcmRlci1zdGF0dXMge1xuICAgICAgICAmLm9yZGVyLXN0YXR1cy1yZW1vdmVkIHtcbiAgICAgICAgICAgIGNvbG9yOiAjRkYwMDAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBTaG9ydGNvZGUvV2lkZ2V0cyAqL1xuLndpZGdldF9scC13aWRnZXQtcG9wdWxhci1jb3Vyc2VzLCAud2lkZ2V0X2xwLXdpZGdldC1yZWNlbnQtY291cnNlcywgLndpZGdldF9scC13aWRnZXQtZmVhdHVyZWQtY291cnNlcyB7XG4gICAgLmNvdXJzZS1tZXRhLWRhdGEge1xuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnLyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQ6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG4gICAgLmNvdXJzZS10aXRsZSB7XG4gICAgICAgIG1hcmdpbjogNXB4IDA7XG4gICAgfVxuICAgIC5jb3Vyc2UtZW50cnkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICNEREQ7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICAgIH1cbn1cblxuLmVkaXQtY291cnNlLWl0ZW0tbGluayB7XG4gICAgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCJcXGY0NjRcIjtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBEYXNoaWNvbnM7XG4gICAgICAgICAgICBmb250LXNpemU6IDI2cHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jb3Vyc2UtaXRlbS1uYXZpZ2F0aW9uIHtcbiAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzMzMztcbiAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIC5uYXYtbGlua3Mge1xuICAgICAgICAubmF2LWxpbmsge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgLm1ldGEtbmF2IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjYjliOWI5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAucG9zdC10aXRsZSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5uYXYtcHJldmlvdXMge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5uYXYtbmV4dCB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiB3aWRnZXQgYXR0cmlidXRlcyAqL1xuLmxwLWNvdXJzZS1hdHRyaWJ1dGVzIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIGxpIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB9XG4gICAgLmxwLWNvdXJzZS1hdHRyaWJ1dGUtdmFsdWVzIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICAgICYuY291cnNlLWF0dHJpYnV0ZXMge1xuICAgICAgICAubHAtY291cnNlLWF0dHJpYnV0ZS12YWx1ZXMge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzcHggOHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGMEYwRjA7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCA1cHggNXB4IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5jb3Vyc2UtZmlsdGVycyB7XG4gICAgICAgIC5scC1jb3Vyc2UtYXR0cmlidXRlLXZhbHVlcyB7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgYTpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogZGFzaGljb25zO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNEREQ7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmOmhvdmVyIGE6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzRhY2ZmZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaS5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGE6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYxNDdcIjtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzRhY2ZmZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjpob3ZlciBhOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmMzM1XCI7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNhMjAwMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc3Bpbi0xMiB7XG4gICAgMCUge1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW4tMTIge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc3Bpbi0xMiB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG59XG5cbkAtbW96LWtleWZyYW1lcyBzcGluLTEzIHtcbiAgICAxMDAlIHtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG4gICAgMCUge1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgdHJhbnNsYXRlKDBweCk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbi0xMyB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzcGluLTEzIHtcbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykgdHJhbnNsYXRlKDBweCk7XG4gICAgfVxuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTI1MHB4KSB7XG4gICAgLnNpbmdsZS1scF9jb3Vyc2UgLmxlYXJuLXByZXNzLWNvdXJzZS1yZXN1bHRzLXByb2dyZXNzIHtcbiAgICAgICAgLml0ZW1zLXByb2dyZXNzLCAuY291cnNlLXByb2dyZXNzIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLml0ZW1zLXByb2dyZXNzIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDUwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgI2xlYXJuLXByZXNzLWJsb2NrLWNvbnRlbnQge1xuICAgICAgICAubGVhcm4tcHJlc3MtYmxvY2stY29udGVudC1taXhpbig2MHB4KTtcbiAgICB9XG5cbiAgICAubGVhcm4tcHJlc3MtY291cnNlLXJlc3VsdHMtcHJvZ3Jlc3Mge1xuICAgICAgICAuaXRlbXMtcHJvZ3Jlc3MsIC5jb3Vyc2UtcHJvZ3Jlc3Mge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLmxlYXJuLXByZXNzLWNvdXJzZXMge1xuICAgICAgICBsaS5jb3Vyc2Uge1xuICAgICAgICAgICAgJjpudGgtY2hpbGQoNG4rMSkge1xuICAgICAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcbiAgICAubGVhcm4tcHJlc3MtY291cnNlcyB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkgYW5kIChtaW4td2lkdGg6IDYwMHB4ICkge1xuXG4gICAgLmxlYXJuLXByZXNzLWNvdXJzZXMge1xuICAgICAgICBsaS5jb3Vyc2Uge1xuICAgICAgICAgICAgd2lkdGg6IDMxLjMzJTtcbiAgICAgICAgICAgIG1hcmdpbjogMCAyJSAzMHB4IDA7XG4gICAgICAgICAgICAvKiBwYWRkaW5nOiAwIDIwcHg7ICovXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgzbisxKSB7XG4gICAgICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSBhbmQgKG1pbi13aWR0aDogNDAwcHggKSB7XG5cbiAgICAubGVhcm4tcHJlc3MtY291cnNlcyB7XG4gICAgICAgIGxpLmNvdXJzZSB7XG4gICAgICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDIlIDMwcHggMDtcbiAgICAgICAgICAgIC8qIHBhZGRpbmc6IDAgMjBweDsgKi9cbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICAgICAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vKlxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLndvb2NvbW1lcmNlIHtcbiAgICAgICAgLmNoZWNrb3V0X2NvdXBvbiB7XG4gICAgICAgICAgICAuZm9ybS1yb3cge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA0MDBweCkge1xuXG4gICAgLmxlYXJuLXByZXNzLWNvdXJzZXMge1xuICAgICAgICBsaS5jb3Vyc2Uge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAzMHB4IDA7XG4gICAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMzUwcHgpIHtcbiAgICAjY291cnNlLWN1cnJpY3VsdW0tcG9wdXAgI3BvcHVwLXNpZGViYXIge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbi8qIGZ1bGwgd2lkdGggd2l0aCB0d2VudHlzaXh0ZWVuIHRoZW1lICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MS41NjI1ZW0pIHtcbiAgICBib2R5LnNpbmdsZS1scF9jb3Vyc2Uge1xuICAgICAgICBhcnRpY2xlLmxwX2NvdXJzZSB7XG4gICAgICAgICAgICAuZW50cnktY29udGVudCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZW50cnktZm9vdGVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKlxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjE1cHgpIHtcbiAgICAucGF5bWVudC1tZXRob2QtZm9ybSB7XG4gICAgICAgICYucGF5bWVudF9tZXRob2RfYXV0aG9yaXplbmV0IHtcbiAgICAgICAgICAgIC5yb3ctZmx1aWQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgICAgIC5zcGFuNiB7XG4gICAgICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxN3B4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCwgaW5wdXQge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LCBpbnB1dCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QucmVxdWlyZWQge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMwMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgI2xlYXJuLXByZXNzLWF1dGhvcml6ZW5ldC1wYXltZW50LWV4cG1vbnRoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4qLyJdLCJmaWxlIjoibGVhcm5wcmVzcy5jc3MifQ== */
|
200 |
border-top: 1px solid #FFF;
|
201 |
position: relative;
|
202 |
}
|
203 |
+
#learn-press-course-curriculum .section-header h4 {
|
204 |
+
display: inline;
|
205 |
+
}
|
206 |
#learn-press-course-curriculum .section-header p {
|
207 |
display: inline-block;
|
208 |
font-weight: normal;
|
910 |
}
|
911 |
.learn-press-content-item-summary {
|
912 |
/*padding: 20px;
|
913 |
+
border-top: 1px solid #DDD;*/
|
914 |
margin-bottom: 30px;
|
915 |
}
|
916 |
.learn-press-content-item-summary .quiz-question-title {
|
2895 |
}
|
2896 |
}
|
2897 |
*/
|
|
|
|
assets/js/frontend/profile.js
CHANGED
@@ -78,7 +78,7 @@
|
|
78 |
runtimes : 'html5,flash,silverlight,html4',
|
79 |
browse_button : 'lp-upload-photo',
|
80 |
container : $('#lp-user-edit-avatar').get(0),
|
81 |
-
url : LP_Settings.ajax.addQueryVar('action', 'learnpress_upload-user-avatar'),
|
82 |
filters : {
|
83 |
max_file_size: '10mb',
|
84 |
mime_types : [
|
78 |
runtimes : 'html5,flash,silverlight,html4',
|
79 |
browse_button : 'lp-upload-photo',
|
80 |
container : $('#lp-user-edit-avatar').get(0),
|
81 |
+
url : (LP_Settings.ajax.addQueryVar('action', 'learnpress_upload-user-avatar')).replace(/^[^:]+:/i,''),
|
82 |
filters : {
|
83 |
max_file_size: '10mb',
|
84 |
mime_types : [
|
assets/js/frontend/single-course.js
CHANGED
@@ -448,7 +448,8 @@ if (typeof LearnPress === 'undefined') {
|
|
448 |
if (isNew) {
|
449 |
$content.attr('src', LP.addQueryVar('content-item-only', 'yes', this.currentItem.get('url')));
|
450 |
}
|
451 |
-
$content.unbind('load').load(function
|
|
|
452 |
that.itemLoading = 0;
|
453 |
});
|
454 |
},
|
448 |
if (isNew) {
|
449 |
$content.attr('src', LP.addQueryVar('content-item-only', 'yes', this.currentItem.get('url')));
|
450 |
}
|
451 |
+
$content.unbind('load').load( function() {
|
452 |
+
$target.parent().addClass('item-has-status item-viewed');
|
453 |
that.itemLoading = 0;
|
454 |
});
|
455 |
},
|
assets/less/admin/admin.less
CHANGED
@@ -1808,13 +1808,15 @@ body.post-type-lp_question #question_answer_ .inside {
|
|
1808 |
min-width: 250px;
|
1809 |
}
|
1810 |
|
1811 |
-
.rwmb-meta-box
|
1812 |
-
|
1813 |
-
|
1814 |
-
|
1815 |
-
|
|
|
|
|
|
|
1816 |
}
|
1817 |
-
|
1818 |
.description {
|
1819 |
margin-top: 5px;
|
1820 |
}
|
1808 |
min-width: 250px;
|
1809 |
}
|
1810 |
|
1811 |
+
.rwmb-meta-box {
|
1812 |
+
margin-top: 20px;
|
1813 |
+
label {
|
1814 |
+
color: #222;
|
1815 |
+
font-weight: bold;
|
1816 |
+
display: block;
|
1817 |
+
margin: 0 0 16px 0;
|
1818 |
+
}
|
1819 |
}
|
|
|
1820 |
.description {
|
1821 |
margin-top: 5px;
|
1822 |
}
|
assets/less/learnpress.less
CHANGED
@@ -16,2115 +16,2118 @@
|
|
16 |
|
17 |
@icon-url: '../fonts/lp-icons';
|
18 |
@font-face {
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
}
|
28 |
|
29 |
[class^="lp-icon-"], [class*=" lp-icon-"] {
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
}
|
43 |
|
44 |
.lp-icon-file-text2:before {
|
45 |
-
|
46 |
}
|
47 |
|
48 |
.lp-icon-file-picture:before {
|
49 |
-
|
50 |
}
|
51 |
|
52 |
.lp-icon-file-music:before {
|
53 |
-
|
54 |
}
|
55 |
|
56 |
.lp-icon-file-video:before {
|
57 |
-
|
58 |
}
|
59 |
|
60 |
.lp-icon-file-zip:before {
|
61 |
-
|
62 |
}
|
63 |
|
64 |
.lp-icon-paste:before {
|
65 |
-
|
66 |
}
|
67 |
|
68 |
.lp-icon-alarm:before {
|
69 |
-
|
70 |
}
|
71 |
|
72 |
.lp-icon-cross:before {
|
73 |
-
|
74 |
}
|
75 |
|
76 |
.lp-icon-checkmark:before {
|
77 |
-
|
78 |
}
|
79 |
|
80 |
.lp-icon-spinner2:before {
|
81 |
-
|
82 |
}
|
83 |
|
84 |
.lp-icon-plus:before {
|
85 |
-
|
86 |
}
|
87 |
|
88 |
.lp-icon-minus:before {
|
89 |
-
|
90 |
}
|
91 |
|
92 |
.clearfix() {
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
}
|
97 |
|
98 |
.clearfix:after {
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
}
|
103 |
|
104 |
.border-radius(@args) {
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
}
|
112 |
|
113 |
.transform(@args) {
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
}
|
121 |
|
122 |
.transition(@args) {
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
}
|
130 |
|
131 |
.cross(@size: 30px, @border: 3px, @color: #000) {
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
}
|
150 |
|
151 |
.animation(@args) {
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
}
|
156 |
|
157 |
.overlay-processing {
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
}
|
176 |
|
177 |
/* PROGRESS CIRCLE */
|
178 |
.progress-circle(@size: 200px, @background: #DDD, @fill: #95e6f9, @initialize: 0, @inside-size: 170px, @inside-background: #FFF) {
|
179 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
width: @size;
|
181 |
height: @size;
|
182 |
-
|
183 |
-
background
|
184 |
-
|
185 |
-
|
186 |
-
content: "";
|
187 |
-
position: absolute;
|
188 |
-
border-radius: 50%;
|
189 |
-
width: @size;
|
190 |
-
height: @size;
|
191 |
-
clip: rect(0, @size, @size, @size / 2);
|
192 |
-
.fill {
|
193 |
-
content: "";
|
194 |
-
position: absolute;
|
195 |
-
border-radius: 50%;
|
196 |
-
width: @size;
|
197 |
-
height: @size;
|
198 |
-
clip: rect(0, @size / 2, @size, 0);
|
199 |
-
background: @fill;
|
200 |
-
transform: rotate(unit(@initialize*3.6, deg));
|
201 |
-
}
|
202 |
-
}
|
203 |
-
&:after {
|
204 |
-
content: '';
|
205 |
-
width: @inside-size;
|
206 |
-
height: @inside-size;
|
207 |
-
background: @inside-background;
|
208 |
-
.border-radius(50%);
|
209 |
-
position: absolute;
|
210 |
-
top: 50%;
|
211 |
-
left: 50%;
|
212 |
-
margin-top: -@inside-size / 2;
|
213 |
-
margin-left: -@inside-size / 2;
|
214 |
-
pointer-events: none;
|
215 |
-
}
|
216 |
-
.inside {
|
217 |
-
position: absolute;
|
218 |
-
width: 100%;
|
219 |
-
height: 100%;
|
220 |
-
line-height: @size;
|
221 |
-
text-align: center;
|
222 |
-
z-index: 10;
|
223 |
-
}
|
224 |
-
&.gt-50 {
|
225 |
-
background-color: @fill;
|
226 |
-
.background {
|
227 |
-
clip: rect(0, @size/2, @size, 0);
|
228 |
-
}
|
229 |
-
.fill {
|
230 |
-
clip: rect(0, @size, @size, @size/2);
|
231 |
-
background: @background;
|
232 |
-
}
|
233 |
-
}
|
234 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
}
|
236 |
|
237 |
.clearfix() {
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
}
|
244 |
|
245 |
.hide-if-js {
|
246 |
-
|
247 |
}
|
248 |
|
249 |
/* Archive courses */
|
250 |
.learn-press-courses {
|
251 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
clear: both;
|
253 |
-
|
|
|
|
|
|
|
|
|
|
|
254 |
padding: 0;
|
255 |
-
|
256 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
content: '';
|
258 |
-
|
|
|
|
|
|
|
|
|
|
|
259 |
}
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
.view-more {
|
271 |
-
padding: 0 15px;
|
272 |
-
text-decoration: none;
|
273 |
-
box-shadow: none;
|
274 |
-
}
|
275 |
-
|
276 |
-
h3 {
|
277 |
-
padding: 15px;
|
278 |
-
margin: 0;
|
279 |
-
font-size: 18px;
|
280 |
-
line-height: 1.5;
|
281 |
-
}
|
282 |
-
.course-thumbnail {
|
283 |
-
position: relative;
|
284 |
-
img {
|
285 |
-
max-width: 100%;
|
286 |
-
height: auto;
|
287 |
-
}
|
288 |
-
&:after {
|
289 |
-
content: '';
|
290 |
-
position: absolute;
|
291 |
-
width: 100%;
|
292 |
-
height: 100%;
|
293 |
-
left: 0;
|
294 |
-
top: 0;
|
295 |
-
}
|
296 |
-
}
|
297 |
-
.course-info {
|
298 |
-
padding: 0 15px 15px;
|
299 |
-
font-size: 14px;
|
300 |
-
overflow: hidden;
|
301 |
-
}
|
302 |
-
.course-students {
|
303 |
-
float: left;
|
304 |
-
}
|
305 |
-
.course-instructor {
|
306 |
-
margin-bottom: 20px;
|
307 |
-
}
|
308 |
-
.course-origin-price {
|
309 |
-
float: right;
|
310 |
-
text-decoration: line-through;
|
311 |
-
padding-right: 5px;
|
312 |
-
}
|
313 |
-
.course-price {
|
314 |
-
float: right;
|
315 |
-
color: rgb(84, 181, 81);
|
316 |
-
}
|
317 |
-
.course-info > * {
|
318 |
-
display: block;
|
319 |
-
}
|
320 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
321 |
}
|
322 |
|
323 |
.course-origin-price {
|
324 |
-
|
325 |
-
|
326 |
}
|
327 |
|
328 |
.course-price {
|
329 |
-
|
330 |
}
|
331 |
|
332 |
.learn-press-notice .button {
|
333 |
-
|
334 |
}
|
335 |
|
336 |
.learn-press-form {
|
337 |
-
|
338 |
}
|
339 |
|
340 |
/* Course Curriculum */
|
341 |
|
342 |
#learn-press-course-curriculum {
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
}
|
352 |
}
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
358 |
position: relative;
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
|
|
|
|
|
|
|
|
|
|
368 |
}
|
369 |
&:hover {
|
370 |
-
|
371 |
}
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
right: 15px;
|
377 |
-
top: 20px;
|
378 |
-
.collapse {
|
379 |
-
display: inline-block;
|
380 |
-
position: relative;
|
381 |
-
font-family: 'lp-icons';
|
382 |
-
background: #95e6f9;
|
383 |
-
width: 24px;
|
384 |
-
height: 24px;
|
385 |
-
line-height: 24px;
|
386 |
-
text-align: center;
|
387 |
-
color: #FFF;
|
388 |
-
border-radius: 5px;
|
389 |
-
vertical-align: middle;
|
390 |
-
margin-left: 5px;
|
391 |
-
font-size: 10px;
|
392 |
-
&:before {
|
393 |
-
content: "\ea0b";
|
394 |
-
margin: 0 auto;
|
395 |
-
}
|
396 |
-
&:hover {
|
397 |
-
cursor: pointer;
|
398 |
-
}
|
399 |
-
&.plus {
|
400 |
-
&:before {
|
401 |
-
content: "\ea0a";
|
402 |
-
}
|
403 |
-
}
|
404 |
-
}
|
405 |
}
|
|
|
406 |
}
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
}
|
451 |
-
&.item-status-completed {
|
452 |
-
background: #22b4ff;
|
453 |
-
color: #FFF;
|
454 |
-
&:before {
|
455 |
-
content: "\f147";
|
456 |
-
}
|
457 |
-
}
|
458 |
-
&.item-status-passed {
|
459 |
-
background: #22b4ff;
|
460 |
-
color: #FFF;
|
461 |
-
&:before {
|
462 |
-
content: "\f147";
|
463 |
-
}
|
464 |
-
}
|
465 |
-
&.item-status-failed {
|
466 |
-
background: #cc540d;
|
467 |
-
color: #FFF;
|
468 |
-
&:before {
|
469 |
-
content: "\f335";
|
470 |
-
}
|
471 |
-
}
|
472 |
-
}
|
473 |
-
.item-result {
|
474 |
-
display: none;
|
475 |
-
}
|
476 |
-
&.item-has-status {
|
477 |
-
.item-status {
|
478 |
-
display: inline-block;
|
479 |
-
}
|
480 |
}
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
|
|
|
|
485 |
}
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
}
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
}
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
506 |
}
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
position: absolute;
|
514 |
-
left: 0;
|
515 |
-
top: 0;
|
516 |
-
height: 100%;
|
517 |
-
content: '';
|
518 |
-
}
|
519 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
520 |
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
}
|
532 |
}
|
|
|
533 |
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
}
|
550 |
}
|
|
|
551 |
}
|
552 |
|
553 |
.lp-icon {
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
|
569 |
}
|
570 |
|
571 |
.lp-label {
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
}
|
597 |
|
598 |
.learn-press-content-protected-message {
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
}
|
615 |
|
616 |
/** BREADCRUMB */
|
617 |
.learn-press-breadcrumb {
|
618 |
-
|
619 |
}
|
620 |
|
621 |
/** COURSE PROGRESS **/
|
622 |
.single-lp_course {
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
}
|
665 |
-
&:after {
|
666 |
-
display: block;
|
667 |
-
content: '';
|
668 |
-
clear: both;
|
669 |
-
}
|
670 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
671 |
}
|
672 |
|
673 |
.lp-course-progress {
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
686 |
}
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
cursor: pointer;
|
694 |
-
&:before,
|
695 |
-
&:after {
|
696 |
-
content: '';
|
697 |
-
display: inline-block;
|
698 |
-
border: 5px solid transparent;
|
699 |
-
left: 0;
|
700 |
-
position: absolute;
|
701 |
-
}
|
702 |
-
&:before {
|
703 |
-
border-top-color: #DDD;
|
704 |
-
}
|
705 |
-
&:after {
|
706 |
-
border-bottom-color: #DDD;
|
707 |
-
bottom: 0;
|
708 |
-
}
|
709 |
}
|
|
|
710 |
}
|
711 |
|
712 |
#learn-press-content-item {
|
713 |
-
|
714 |
-
|
715 |
|
716 |
}
|
717 |
|
718 |
/** COURSE TABS **/
|
719 |
.learn-press-tabs {
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
724 |
border-bottom: 1px solid #DDD;
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
margin-bottom: -4px;
|
744 |
-
}
|
745 |
-
}
|
746 |
-
&.active:after {
|
747 |
-
position: absolute;
|
748 |
-
width: 100%;
|
749 |
-
border-bottom: 1px solid #FFF;
|
750 |
-
bottom: -1px;
|
751 |
-
content: '';
|
752 |
-
}
|
753 |
-
}
|
754 |
-
&:hover {
|
755 |
|
756 |
-
}
|
757 |
-
&:after {
|
758 |
-
content: '';
|
759 |
-
display: block;
|
760 |
-
clear: both;
|
761 |
-
}
|
762 |
}
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
display: block;
|
768 |
-
}
|
769 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
770 |
}
|
771 |
|
772 |
.learn-press-block-content-mixin(@w) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
773 |
&:before {
|
774 |
-
|
775 |
-
|
776 |
-
margin-left: -(@w/2);
|
777 |
-
margin-top: -(@w/2); /*-76px;*/
|
778 |
-
-webkit-clip-path: polygon(0px @w, @w @w, @w @w/2, @w/2 @w/2, @w/2 0, 0 0);
|
779 |
-
}
|
780 |
-
|
781 |
-
span {
|
782 |
-
clip: rect(0, @w+4, @w/2+2, @w/2+2);
|
783 |
-
width: @w+4;
|
784 |
-
height: @w+4;
|
785 |
-
margin-left: -(@w/2+2);
|
786 |
-
margin-top: -(@w/2+2);
|
787 |
-
&:before {
|
788 |
-
width: @w+4;
|
789 |
-
height: @w+4;
|
790 |
-
}
|
791 |
}
|
|
|
792 |
}
|
793 |
|
794 |
.learn-press-course-buttons {
|
795 |
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
|
810 |
-
|
811 |
-
|
812 |
-
}
|
813 |
}
|
|
|
814 |
}
|
815 |
|
816 |
/* POPUP STYLE */
|
817 |
|
818 |
#popup_overlay {
|
819 |
-
|
820 |
}
|
821 |
|
822 |
#popup_container {
|
823 |
-
|
824 |
}
|
825 |
|
826 |
body.course-has-popup {
|
827 |
-
|
828 |
}
|
829 |
|
830 |
#course-curriculum-popup {
|
831 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
832 |
top: 0;
|
833 |
-
left:
|
834 |
right: 0;
|
835 |
bottom: 0;
|
836 |
-
background: #
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
|
|
|
|
844 |
position: absolute;
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
margin: 0;
|
855 |
-
font-size: smaller;
|
856 |
-
}
|
857 |
-
.learn-press-course-results-progress {
|
858 |
-
padding: 15px 20px;
|
859 |
-
margin-bottom: 0;
|
860 |
-
.items-progress, .course-progress {
|
861 |
-
width: 100%;
|
862 |
-
margin: 0 !important;
|
863 |
-
}
|
864 |
-
}
|
865 |
-
}
|
866 |
-
#popup-main {
|
867 |
position: absolute;
|
868 |
top: 0;
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
#
|
874 |
-
|
875 |
-
|
876 |
-
left: -350px;
|
877 |
-
right: 0;
|
878 |
-
height: 60px;
|
879 |
-
background: #cc540d;
|
880 |
-
border-bottom: 1px solid #ab4a10;
|
881 |
-
.popup-menu {
|
882 |
-
position: absolute;
|
883 |
-
height: 60px;
|
884 |
-
width: 350px;
|
885 |
-
border-right: 1px solid #ab4a10;
|
886 |
-
}
|
887 |
-
.popup-close,
|
888 |
-
.sidebar-hide-btn,
|
889 |
-
.sidebar-show-btn {
|
890 |
-
width: 59px;
|
891 |
-
height: 59px;
|
892 |
-
position: absolute;
|
893 |
-
top: 0;
|
894 |
-
cursor: pointer;
|
895 |
-
font-size: 34px;
|
896 |
-
line-height: 60px;
|
897 |
-
text-align: center;
|
898 |
-
color: #FFF;
|
899 |
-
&:hover {
|
900 |
-
background: #b34c10;
|
901 |
-
}
|
902 |
-
}
|
903 |
-
.sidebar-hide-btn {
|
904 |
-
left: 0;
|
905 |
-
}
|
906 |
-
.sidebar-show-btn {
|
907 |
-
position: relative;
|
908 |
-
margin-left: -20px;
|
909 |
-
margin-right: 20px;
|
910 |
-
}
|
911 |
-
.popup-close {
|
912 |
-
right: 0px;
|
913 |
-
&:before,
|
914 |
-
&:after {
|
915 |
-
content: '';
|
916 |
-
border-top: 3px solid #FFF;
|
917 |
-
width: 30px;
|
918 |
-
display: inline-block;
|
919 |
-
position: absolute;
|
920 |
-
top: 29px;
|
921 |
-
left: 17px;
|
922 |
-
}
|
923 |
-
&:before {
|
924 |
-
-webkit-transform: rotate(45deg);
|
925 |
-
}
|
926 |
-
&:after {
|
927 |
-
-webkit-transform: rotate(-45deg);
|
928 |
-
}
|
929 |
-
&:hover {
|
930 |
-
background: #b34c10;
|
931 |
-
&:before, &:after {
|
932 |
-
border-color: #FFF;
|
933 |
-
}
|
934 |
-
}
|
935 |
-
}
|
936 |
-
.popup-title {
|
937 |
-
margin: 0 0 0 350px;
|
938 |
-
height: 60px;
|
939 |
-
line-height: 60px;
|
940 |
-
padding: 0 20px;
|
941 |
-
color: #FFF;
|
942 |
-
position: relative;
|
943 |
-
}
|
944 |
-
|
945 |
}
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
958 |
}
|
959 |
-
|
960 |
-
|
961 |
-
bottom: 0;
|
962 |
-
left: 0;
|
963 |
-
right: 0;
|
964 |
-
height: 50px;
|
965 |
-
background: #F5F5F5;
|
966 |
-
border-top: 1px solid #DDD;
|
967 |
-
.footer-control {
|
968 |
-
display: block;
|
969 |
-
height: 50px;
|
970 |
-
line-height: 50px;
|
971 |
-
padding: 0 20px;
|
972 |
-
background: #FFF;
|
973 |
-
&.prev-item {
|
974 |
-
float: left;
|
975 |
-
}
|
976 |
-
&.next-item {
|
977 |
-
float: right;
|
978 |
-
}
|
979 |
-
}
|
980 |
}
|
981 |
-
|
982 |
-
|
983 |
}
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
998 |
}
|
|
|
999 |
}
|
1000 |
-
|
1001 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1002 |
top: 0;
|
1003 |
-
|
1004 |
-
|
1005 |
-
width: 100%;
|
1006 |
-
border: none;
|
1007 |
-
margin: 0;
|
1008 |
-
background: #FFF;
|
1009 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1010 |
}
|
1011 |
|
1012 |
.learn-press-content-item-title {
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1021 |
}
|
1022 |
-
|
1023 |
-
|
1024 |
-
position: relative;
|
1025 |
-
min-width: 100px;
|
1026 |
-
background: #F5F5F5;
|
1027 |
-
text-align: center;
|
1028 |
-
font-size: 18px;
|
1029 |
-
&:after, &:before {
|
1030 |
-
padding: 0 10px;
|
1031 |
-
height: 3px;
|
1032 |
-
position: absolute;
|
1033 |
-
bottom: -3px;
|
1034 |
-
background: #000;
|
1035 |
-
content: '';
|
1036 |
-
left: 0;
|
1037 |
-
}
|
1038 |
-
&:before {
|
1039 |
-
width: 100%;
|
1040 |
-
}
|
1041 |
-
&:after {
|
1042 |
-
background: #00adff;
|
1043 |
-
padding: 0;
|
1044 |
-
}
|
1045 |
-
&.warning-time-over {
|
1046 |
-
&:after {
|
1047 |
-
background: #FF0000;
|
1048 |
-
}
|
1049 |
-
}
|
1050 |
-
.countdown {
|
1051 |
|
1052 |
-
|
1053 |
-
}
|
1054 |
-
.clearfix();
|
1055 |
-
}
|
1056 |
-
.lp-expand {
|
1057 |
-
float: right;
|
1058 |
-
width: 43px;
|
1059 |
-
height: 43px;
|
1060 |
-
line-height: 43px;
|
1061 |
-
background: #F5F5F5;
|
1062 |
-
margin-left: 10px;
|
1063 |
-
border: 1px solid #DDD;
|
1064 |
-
outline: none;
|
1065 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1066 |
}
|
1067 |
|
1068 |
.learn-press-content-item-summary {
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
}
|
1083 |
}
|
|
|
1084 |
}
|
1085 |
|
1086 |
.button-finish-quiz {
|
1087 |
-
|
1088 |
}
|
1089 |
|
1090 |
.learnpress form.purchase-course {
|
1091 |
-
|
1092 |
}
|
1093 |
|
1094 |
#learn-press-block-content {
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1110 |
&:before {
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
&:after {
|
1117 |
-
z-index: 0;
|
1118 |
-
content: '';
|
1119 |
-
border: 10px solid #000000;
|
1120 |
-
margin-left: -80px;
|
1121 |
-
margin-top: -80px;
|
1122 |
-
width: 160px;
|
1123 |
-
height: 160px;
|
1124 |
-
opacity: 0;
|
1125 |
-
}
|
1126 |
-
span {
|
1127 |
-
z-index: 20;
|
1128 |
-
.animation(spin-12 1.5s infinite);
|
1129 |
-
&:before {
|
1130 |
-
content: '';
|
1131 |
-
border: 6px solid #95e6f9;
|
1132 |
-
position: absolute;
|
1133 |
-
.border-radius(50%);
|
1134 |
-
box-sizing: border-box;
|
1135 |
-
}
|
1136 |
}
|
|
|
1137 |
|
1138 |
-
|
1139 |
}
|
1140 |
|
1141 |
body.block-content {
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
}
|
1146 |
|
1147 |
/* COURSE QUIZ */
|
1148 |
.quiz-buttons {
|
1149 |
-
|
1150 |
-
|
1151 |
}
|
1152 |
|
1153 |
.quiz-intro {
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
}
|
1161 |
|
1162 |
.quiz-questions-list {
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1169 |
.question-title {
|
1170 |
-
|
1171 |
-
display: inline-block;
|
1172 |
-
font-size: 14px;
|
1173 |
}
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
content: '';
|
1189 |
-
display: inline-block;
|
1190 |
-
position: absolute;
|
1191 |
-
}
|
1192 |
-
}
|
1193 |
-
}
|
1194 |
-
input[type="checkbox"]:checked {
|
1195 |
-
&:after {
|
1196 |
-
border-bottom: 3px solid #00b9eb;
|
1197 |
-
border-right: 1px solid #00b9eb;
|
1198 |
-
-webkit-transform: rotate(14deg);
|
1199 |
-
-moz-transform: rotate(14deg);
|
1200 |
-
-ms-transform: rotate(14deg);
|
1201 |
-
-o-transform: rotate(14deg);
|
1202 |
-
transform: rotate(33deg);
|
1203 |
-
width: 8px;
|
1204 |
-
height: 16px;
|
1205 |
-
|
1206 |
-
top: -5px;
|
1207 |
-
left: 5px;
|
1208 |
-
}
|
1209 |
-
}
|
1210 |
-
input[type="checkbox"] {
|
1211 |
-
&:disabled {
|
1212 |
-
&:after {
|
1213 |
-
border-color: #DDD;
|
1214 |
-
}
|
1215 |
-
}
|
1216 |
}
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1220 |
border-radius: 50%;
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
}
|
1232 |
-
}
|
1233 |
-
&:disabled {
|
1234 |
-
&:after {
|
1235 |
-
background: #DDD;
|
1236 |
-
}
|
1237 |
-
}
|
1238 |
}
|
|
|
1239 |
}
|
1240 |
|
1241 |
.question-results {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1242 |
.question-title {
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
display: inline-block;
|
1248 |
-
text-align: center;
|
1249 |
-
margin-left: 5px;
|
1250 |
-
}
|
1251 |
-
}
|
1252 |
-
&.correct {
|
1253 |
-
.question-title {
|
1254 |
-
&:after {
|
1255 |
-
content: '\f147';
|
1256 |
-
color: #00adff;
|
1257 |
-
}
|
1258 |
-
}
|
1259 |
-
}
|
1260 |
-
&.skipped {
|
1261 |
-
.question-title {
|
1262 |
-
&:after {
|
1263 |
-
content: '\f534';
|
1264 |
-
color: #c6c6c6;
|
1265 |
-
}
|
1266 |
-
}
|
1267 |
}
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
.user-answer-false {
|
1276 |
-
.option-title {
|
1277 |
-
text-decoration: line-through;
|
1278 |
-
}
|
1279 |
-
}
|
1280 |
-
}
|
1281 |
-
.answer-true {
|
1282 |
-
color: #007acc;
|
1283 |
-
.option-title {
|
1284 |
-
background: #fff9d8;
|
1285 |
-
padding: 0 5px;
|
1286 |
-
margin-left: -5px;
|
1287 |
-
}
|
1288 |
}
|
1289 |
-
|
1290 |
-
|
|
|
|
|
|
|
|
|
|
|
1291 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1292 |
}
|
1293 |
|
1294 |
.quiz-description,
|
1295 |
.question-content {
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
}
|
1300 |
|
1301 |
.quiz-countdown {
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
}
|
1310 |
|
1311 |
#quiz-countdown {
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
}
|
1328 |
-
&:after {
|
1329 |
-
background: #00b9eb;
|
1330 |
-
box-shadow: 0 0 6px #097a98;
|
1331 |
-
}
|
1332 |
}
|
|
|
|
|
|
|
|
|
|
|
1333 |
}
|
1334 |
|
1335 |
#quiz-progress {
|
1336 |
-
|
1337 |
}
|
1338 |
|
1339 |
.quiz-result {
|
1340 |
-
|
1341 |
-
|
1342 |
-
|
1343 |
-
|
1344 |
-
|
1345 |
-
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
|
1364 |
-
|
1365 |
-
|
1366 |
-
|
1367 |
-
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
|
1383 |
-
|
1384 |
-
|
1385 |
-
|
1386 |
-
|
1387 |
-
|
1388 |
-
|
1389 |
-
|
1390 |
-
|
1391 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1392 |
}
|
1393 |
-
|
1394 |
-
|
1395 |
-
margin: 0 0 10px 0;
|
1396 |
-
}
|
1397 |
-
.quiz-grade {
|
1398 |
-
p {
|
1399 |
-
margin: 0 0 10px 0;
|
1400 |
-
span {
|
1401 |
-
font-weight: bold;
|
1402 |
-
&.passed {
|
1403 |
-
color: #22b4ff;
|
1404 |
-
}
|
1405 |
-
&.failed {
|
1406 |
-
color: #ff5425;
|
1407 |
-
}
|
1408 |
-
}
|
1409 |
}
|
|
|
1410 |
}
|
|
|
1411 |
}
|
1412 |
|
1413 |
.element-data-percent-loop (@i) when (@i <= 100) {
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
1419 |
-
|
1420 |
}
|
1421 |
|
1422 |
.element-data-percent-loop (0);
|
1423 |
|
1424 |
/* QUESTION */
|
1425 |
.learn-press-question-options {
|
1426 |
-
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
|
1433 |
-
|
1434 |
-
|
1435 |
-
|
1436 |
-
|
1437 |
-
|
1438 |
-
|
1439 |
-
|
1440 |
-
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
1446 |
-
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
-
|
1457 |
-
|
1458 |
-
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
|
1464 |
-
|
1465 |
-
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
-
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
1484 |
-
|
1485 |
-
|
1486 |
-
|
1487 |
-
|
1488 |
-
|
1489 |
-
|
1490 |
-
|
1491 |
-
|
1492 |
-
|
1493 |
-
|
1494 |
-
|
1495 |
-
|
1496 |
-
|
1497 |
-
|
1498 |
-
|
1499 |
-
|
1500 |
-
|
1501 |
-
|
1502 |
-
|
1503 |
-
|
1504 |
-
|
1505 |
-
|
1506 |
-
|
1507 |
-
|
1508 |
-
|
1509 |
-
|
1510 |
-
|
1511 |
-
|
1512 |
-
|
1513 |
-
|
1514 |
-
|
1515 |
-
|
1516 |
-
|
1517 |
-
|
1518 |
-
|
1519 |
-
}
|
1520 |
}
|
|
|
1521 |
}
|
1522 |
|
1523 |
.learnpress-content {
|
1524 |
-
|
1525 |
}
|
1526 |
|
1527 |
.course-meta {
|
1528 |
-
|
1529 |
-
|
1530 |
-
|
1531 |
-
|
1532 |
-
|
1533 |
-
|
1534 |
-
|
1535 |
-
|
1536 |
|
1537 |
}
|
1538 |
|
1539 |
/** MESSAGE */
|
1540 |
.learn-press-message {
|
1541 |
-
|
1542 |
-
|
1543 |
-
|
1544 |
-
|
1545 |
-
|
1546 |
-
|
1547 |
-
|
1548 |
-
|
1549 |
-
|
1550 |
-
|
1551 |
-
|
1552 |
-
|
1553 |
-
|
1554 |
-
|
1555 |
-
|
1556 |
-
|
1557 |
-
|
1558 |
-
|
1559 |
-
|
1560 |
-
|
1561 |
-
|
1562 |
-
|
1563 |
-
|
1564 |
-
|
1565 |
-
|
1566 |
}
|
1567 |
|
1568 |
/**/
|
1569 |
.learn-press-checkout-comment,
|
1570 |
.learn-press-checkout-payment {
|
1571 |
-
|
1572 |
}
|
1573 |
|
1574 |
.learn-press-checkout-payment {
|
1575 |
-
|
1576 |
-
|
1577 |
-
|
1578 |
-
|
1579 |
}
|
1580 |
|
1581 |
/* COURSE QUIZ */
|
1582 |
.single-quiz {
|
1583 |
-
|
1584 |
-
|
1585 |
-
|
1586 |
-
|
1587 |
-
|
1588 |
-
|
1589 |
-
|
1590 |
-
|
1591 |
-
|
1592 |
-
|
1593 |
-
|
1594 |
-
|
1595 |
-
|
1596 |
}
|
1597 |
|
1598 |
.learn-press-tooltip {
|
1599 |
-
|
1600 |
-
|
1601 |
-
|
1602 |
-
|
1603 |
-
|
1604 |
-
|
1605 |
-
|
1606 |
-
|
1607 |
-
|
1608 |
-
|
1609 |
-
|
1610 |
-
|
1611 |
-
|
1612 |
-
|
1613 |
-
|
1614 |
-
|
1615 |
-
|
1616 |
-
|
1617 |
-
|
1618 |
}
|
1619 |
|
1620 |
/* Form field */
|
1621 |
.lp-form-field-wrap {
|
|
|
|
|
|
|
1622 |
list-style: none;
|
1623 |
margin: 0 0 20px 0;
|
1624 |
-
.lp-form-field {
|
1625 |
-
|
1626 |
-
|
1627 |
-
|
1628 |
-
|
1629 |
-
|
1630 |
-
|
1631 |
-
|
1632 |
-
|
1633 |
-
|
1634 |
-
|
1635 |
-
|
1636 |
-
}
|
1637 |
-
.lp-field-error-message {
|
1638 |
-
color: #FF0000;
|
1639 |
-
}
|
1640 |
}
|
|
|
1641 |
}
|
1642 |
|
1643 |
.learn-press-user-profile {
|
1644 |
-
|
1645 |
-
|
1646 |
-
|
1647 |
-
|
1648 |
-
|
1649 |
-
|
1650 |
-
|
1651 |
-
|
1652 |
-
|
1653 |
-
}
|
1654 |
-
.user-basic-info{
|
1655 |
-
margin-left: 170px;
|
1656 |
-
}
|
1657 |
-
}
|
1658 |
-
.lp-edit-profile {
|
1659 |
-
&:after {
|
1660 |
-
.clearfix();
|
1661 |
-
}
|
1662 |
}
|
1663 |
.user-basic-info {
|
1664 |
-
|
1665 |
-
margin-top: 10px;
|
1666 |
-
}
|
1667 |
-
|
1668 |
}
|
1669 |
-
|
1670 |
-
|
1671 |
-
|
1672 |
-
|
1673 |
-
& > li {
|
1674 |
-
float: left;
|
1675 |
-
list-style-type: none;
|
1676 |
-
margin-bottom: -1px;
|
1677 |
-
& > a {
|
1678 |
-
display: inline-block;
|
1679 |
-
padding: 10px 15px;
|
1680 |
-
outline: none;
|
1681 |
-
box-shadow: none;
|
1682 |
-
color: #686868;
|
1683 |
-
border-bottom: 1px solid #DDD;
|
1684 |
-
}
|
1685 |
-
&.current {
|
1686 |
-
border-bottom: 4px solid #007acc;
|
1687 |
-
a {
|
1688 |
-
color: #007acc;
|
1689 |
-
margin-bottom: -4px;
|
1690 |
-
}
|
1691 |
-
}
|
1692 |
-
}
|
1693 |
}
|
1694 |
-
|
1695 |
-
|
1696 |
-
|
1697 |
-
|
1698 |
-
&.current {
|
1699 |
-
font-weight: bold;
|
1700 |
-
}
|
1701 |
-
}
|
1702 |
}
|
1703 |
-
|
1704 |
-
|
1705 |
-
|
1706 |
-
|
1707 |
-
|
1708 |
-
|
1709 |
-
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
1713 |
-
|
1714 |
-
|
1715 |
-
|
1716 |
-
|
1717 |
-
|
1718 |
-
|
1719 |
-
|
1720 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1721 |
}
|
1722 |
-
|
1723 |
-
|
|
|
|
|
|
|
|
|
1724 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1725 |
|
1726 |
-
|
1727 |
-
|
1728 |
-
.info-field {
|
1729 |
-
margin-bottom: 20px;
|
1730 |
-
}
|
1731 |
|
1732 |
-
|
1733 |
-
|
1734 |
-
|
1735 |
|
1736 |
-
|
1737 |
-
|
1738 |
-
|
1739 |
-
display: inline-block;
|
1740 |
-
}
|
1741 |
-
.change-picture {
|
1742 |
-
.description {
|
1743 |
-
margin: 0 0 10px 0;
|
1744 |
-
}
|
1745 |
-
}
|
1746 |
-
img {
|
1747 |
-
float: left;
|
1748 |
-
margin-right: 20px;
|
1749 |
-
}
|
1750 |
-
&:after {
|
1751 |
-
.clearfix();
|
1752 |
-
}
|
1753 |
-
}
|
1754 |
|
1755 |
-
|
1756 |
-
|
1757 |
-
|
|
|
|
|
|
|
|
|
|
|
1758 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1759 |
|
1760 |
-
|
1761 |
-
|
1762 |
-
|
|
|
1763 |
|
1764 |
-
|
1765 |
-
|
1766 |
-
|
1767 |
-
}
|
1768 |
-
.description {
|
1769 |
-
margin-top: -15px;
|
1770 |
-
}
|
1771 |
-
}
|
1772 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1773 |
}
|
1774 |
-
|
1775 |
-
|
1776 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1777 |
}
|
1778 |
-
|
|
|
|
|
|
|
|
|
1779 |
display: block;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1780 |
}
|
1781 |
-
|
1782 |
-
|
1783 |
-
|
1784 |
-
|
1785 |
-
.lp-form-field-avatar {
|
1786 |
-
float: left;
|
1787 |
-
}
|
1788 |
-
#lp-avatar-actions {
|
1789 |
-
margin: 20px 0;
|
1790 |
-
}
|
1791 |
}
|
1792 |
-
|
1793 |
-
|
1794 |
-
|
1795 |
-
|
1796 |
-
|
1797 |
-
|
1798 |
-
|
1799 |
-
|
1800 |
-
|
1801 |
-
|
1802 |
-
|
1803 |
-
|
1804 |
-
|
1805 |
-
|
1806 |
-
|
1807 |
-
|
1808 |
-
|
1809 |
-
|
1810 |
-
|
1811 |
-
|
1812 |
-
|
1813 |
-
|
1814 |
-
text-align: center;
|
1815 |
-
a {
|
1816 |
-
text-decoration: none;
|
1817 |
-
font-size: 12px;
|
1818 |
-
background: #FFF;
|
1819 |
-
display: inline-block;
|
1820 |
-
box-shadow: none;
|
1821 |
-
padding: 5px 10px;
|
1822 |
-
}
|
1823 |
-
}
|
1824 |
-
.lp-avatar-upload-progress {
|
1825 |
position: absolute;
|
1826 |
height: 10px;
|
1827 |
-
|
1828 |
-
top: 50%;
|
1829 |
-
margin-top: -5px;
|
1830 |
left: 10px;
|
1831 |
-
right:
|
1832 |
-
|
1833 |
-
.
|
1834 |
-
|
1835 |
-
|
1836 |
-
|
1837 |
-
|
1838 |
-
|
1839 |
-
|
1840 |
-
|
1841 |
-
|
1842 |
-
.lp-avatar-preview-actions {
|
1843 |
-
display: none;
|
1844 |
-
}
|
1845 |
-
&:hover {
|
1846 |
-
.lp-avatar-preview-actions {
|
1847 |
-
display: block;
|
1848 |
-
}
|
1849 |
-
}
|
1850 |
-
&.uploading, &.upload-error {
|
1851 |
-
.lp-avatar-preview-actions {
|
1852 |
-
display: none;
|
1853 |
-
}
|
1854 |
-
.lp-avatar-upload-progress {
|
1855 |
-
display: block;
|
1856 |
-
}
|
1857 |
-
&:before {
|
1858 |
-
position: absolute;
|
1859 |
-
width: 100%;
|
1860 |
-
height: 100%;
|
1861 |
background: #FFF;
|
1862 |
-
opacity: 0.4;
|
1863 |
-
content: '';
|
1864 |
-
}
|
1865 |
-
}
|
1866 |
-
&.upload-error {
|
1867 |
-
.lp-avatar-upload-error {
|
1868 |
-
display: block;
|
1869 |
-
}
|
1870 |
-
}
|
1871 |
-
&.croping {
|
1872 |
-
.lp-avatar-preview-actions {
|
1873 |
-
display: none;
|
1874 |
-
}
|
1875 |
-
.lp-avatar-crop-image {
|
1876 |
position: absolute;
|
1877 |
-
top:
|
1878 |
-
|
1879 |
-
|
1880 |
-
|
1881 |
-
|
1882 |
-
|
1883 |
-
img {
|
1884 |
-
max-width: inherit;
|
1885 |
-
cursor: move;
|
1886 |
-
}
|
1887 |
-
.lp-crop-controls {
|
1888 |
-
position: absolute;
|
1889 |
-
bottom: 0;
|
1890 |
-
width: 100%;
|
1891 |
-
height: 30px;
|
1892 |
-
.lp-zoom {
|
1893 |
-
position: absolute;
|
1894 |
-
height: 10px;
|
1895 |
-
bottom: 10px;
|
1896 |
-
left: 10px;
|
1897 |
-
right: 30px;
|
1898 |
-
background: #563d7a;
|
1899 |
-
.ui-slider {
|
1900 |
-
position: absolute;
|
1901 |
-
left: 0;
|
1902 |
-
right: 10px;
|
1903 |
-
height: 100%;
|
1904 |
-
.ui-slider-handle {
|
1905 |
-
display: inline-block;
|
1906 |
-
width: 10px;
|
1907 |
-
height: 14px;
|
1908 |
-
background: #FFF;
|
1909 |
-
position: absolute;
|
1910 |
-
margin-top: -2px;
|
1911 |
-
border: 1px solid #563d7a;
|
1912 |
-
box-shadow: none;
|
1913 |
-
outline: none;
|
1914 |
-
cursor: ew-resize;
|
1915 |
-
}
|
1916 |
-
}
|
1917 |
-
}
|
1918 |
-
.lp-cancel-upload {
|
1919 |
-
text-decoration: none;
|
1920 |
-
position: absolute;
|
1921 |
-
bottom: 5px;
|
1922 |
-
right: 5px;
|
1923 |
-
box-shadow: none;
|
1924 |
-
}
|
1925 |
-
&:before {
|
1926 |
-
position: absolute;
|
1927 |
-
height: 30px;
|
1928 |
-
width: 100%;
|
1929 |
-
content: '';
|
1930 |
-
background: #FFF;
|
1931 |
-
opacity: 0.4;
|
1932 |
-
}
|
1933 |
-
}
|
1934 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1935 |
}
|
1936 |
-
|
1937 |
-
.clearfix();
|
1938 |
-
}
|
1939 |
}
|
|
|
|
|
|
|
|
|
1940 |
}
|
1941 |
|
1942 |
body {
|
1943 |
-
|
1944 |
-
|
1945 |
-
|
1946 |
-
|
1947 |
-
|
1948 |
-
|
1949 |
}
|
1950 |
|
1951 |
.learn-press-pagination {
|
1952 |
-
|
1953 |
-
|
1954 |
-
|
1955 |
-
|
1956 |
-
|
1957 |
-
|
1958 |
-
|
1959 |
-
|
1960 |
-
|
1961 |
-
|
1962 |
-
|
1963 |
-
|
1964 |
-
|
1965 |
-
|
1966 |
-
|
1967 |
-
|
1968 |
-
|
1969 |
-
}
|
1970 |
}
|
|
|
1971 |
}
|
1972 |
|
1973 |
.learn-press-become-teacher-form {
|
1974 |
-
|
1975 |
-
|
1976 |
-
|
1977 |
-
|
1978 |
-
|
1979 |
-
}
|
1980 |
}
|
|
|
1981 |
}
|
1982 |
|
1983 |
/* jAlerts */
|
1984 |
#popup_container {
|
1985 |
-
|
1986 |
|
1987 |
-
|
1988 |
-
|
1989 |
-
|
1990 |
-
|
1991 |
-
|
1992 |
-
|
1993 |
-
|
1994 |
|
1995 |
-
|
1996 |
-
|
1997 |
-
|
1998 |
-
|
1999 |
-
}
|
2000 |
}
|
|
|
2001 |
|
2002 |
-
|
2003 |
-
|
2004 |
-
|
2005 |
}
|
2006 |
|
2007 |
.learn-press-auto-redirect-next-item {
|
2008 |
-
|
2009 |
|
2010 |
-
|
2011 |
-
|
2012 |
-
|
2013 |
}
|
2014 |
|
2015 |
.single-lp_course {
|
2016 |
-
|
2017 |
-
|
2018 |
-
|
2019 |
-
|
2020 |
-
|
2021 |
-
}
|
2022 |
}
|
2023 |
-
|
2024 |
-
|
2025 |
-
|
2026 |
-
|
2027 |
-
|
2028 |
-
|
2029 |
-
|
2030 |
-
|
2031 |
-
|
2032 |
-
|
2033 |
-
|
2034 |
-
|
2035 |
-
|
2036 |
-
|
2037 |
-
|
2038 |
-
|
2039 |
-
|
2040 |
-
|
2041 |
-
|
2042 |
-
|
2043 |
-
|
2044 |
-
|
2045 |
-
|
2046 |
-
|
2047 |
-
|
2048 |
-
|
2049 |
-
&:before {
|
2050 |
-
font-size: 1.2em;
|
2051 |
-
color: red;
|
2052 |
-
content: "\f153";
|
2053 |
-
font-family: dashicons;
|
2054 |
-
}
|
2055 |
-
}
|
2056 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2057 |
}
|
2058 |
|
|
|
|
|
2059 |
}
|
2060 |
|
2061 |
/* tooltip */
|
2062 |
.learn-press-tooltip-bubble {
|
2063 |
-
|
2064 |
-
|
2065 |
-
|
2066 |
-
|
2067 |
-
|
2068 |
-
|
2069 |
-
|
2070 |
-
|
2071 |
}
|
2072 |
|
2073 |
/* fill in blank */
|
2074 |
input.blank-fill-correct {
|
2075 |
-
|
2076 |
}
|
2077 |
|
2078 |
body.content-item-only {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2079 |
background: #FFF;
|
2080 |
-
|
2081 |
-
|
2082 |
-
|
2083 |
-
|
2084 |
-
left: 0;
|
2085 |
-
top: 0;
|
2086 |
-
width: 100%;
|
2087 |
-
height: 100%;
|
2088 |
-
background: #FFF;
|
2089 |
-
overflow: auto;
|
2090 |
-
padding: 20px;
|
2091 |
-
margin: 0;
|
2092 |
-
}
|
2093 |
|
2094 |
-
|
2095 |
-
|
2096 |
-
|
2097 |
-
|
2098 |
-
|
2099 |
-
|
2100 |
-
|
2101 |
-
|
2102 |
-
|
2103 |
-
}
|
2104 |
}
|
|
|
2105 |
}
|
2106 |
|
2107 |
.lp-group-heading-title {
|
2108 |
-
|
2109 |
-
|
2110 |
-
|
2111 |
-
|
2112 |
-
|
2113 |
-
|
2114 |
-
|
2115 |
-
|
2116 |
-
|
2117 |
-
|
2118 |
-
|
2119 |
-
|
2120 |
-
|
2121 |
-
|
2122 |
-
|
2123 |
-
|
2124 |
-
|
2125 |
-
|
2126 |
-
|
2127 |
-
|
2128 |
}
|
2129 |
|
2130 |
/*
|
@@ -2161,311 +2164,311 @@ body.content-item-only {
|
|
2161 |
}*/
|
2162 |
|
2163 |
.place-order-action {
|
2164 |
-
|
2165 |
}
|
2166 |
|
2167 |
.woocommerce {
|
2168 |
-
|
2169 |
-
|
2170 |
-
|
2171 |
-
}
|
2172 |
}
|
|
|
2173 |
|
2174 |
-
|
2175 |
-
|
2176 |
-
|
2177 |
-
|
2178 |
-
|
2179 |
-
}
|
2180 |
}
|
|
|
2181 |
}
|
2182 |
|
2183 |
.learn-press-search-course-form {
|
2184 |
-
|
2185 |
-
|
2186 |
-
|
2187 |
-
|
2188 |
-
|
2189 |
-
|
2190 |
-
|
2191 |
-
|
2192 |
-
|
2193 |
-
|
2194 |
-
|
2195 |
}
|
2196 |
|
2197 |
.table-orders {
|
2198 |
-
|
2199 |
-
|
2200 |
-
|
2201 |
-
}
|
2202 |
}
|
|
|
2203 |
}
|
2204 |
|
2205 |
/* Shortcode/Widgets */
|
2206 |
.widget_lp-widget-popular-courses, .widget_lp-widget-recent-courses, .widget_lp-widget-featured-courses {
|
2207 |
-
|
2208 |
-
|
2209 |
-
|
2210 |
-
|
2211 |
-
|
2212 |
-
|
2213 |
-
|
2214 |
-
|
2215 |
-
|
2216 |
-
}
|
2217 |
-
|
2218 |
-
}
|
2219 |
-
.course-title {
|
2220 |
-
margin: 5px 0;
|
2221 |
-
}
|
2222 |
-
.course-entry {
|
2223 |
-
margin-bottom: 20px;
|
2224 |
-
border-bottom: 1px dashed #DDD;
|
2225 |
-
padding-bottom: 20px;
|
2226 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2227 |
}
|
2228 |
|
2229 |
.edit-course-item-link {
|
2230 |
-
|
2231 |
-
|
2232 |
-
|
2233 |
-
|
2234 |
-
|
2235 |
-
|
2236 |
-
|
2237 |
-
|
2238 |
-
|
2239 |
-
|
2240 |
-
|
2241 |
-
|
2242 |
-
}
|
2243 |
}
|
|
|
2244 |
}
|
2245 |
|
2246 |
.course-item-navigation {
|
2247 |
-
|
2248 |
-
|
2249 |
-
|
2250 |
-
|
2251 |
-
|
2252 |
-
|
2253 |
-
|
2254 |
-
|
2255 |
-
|
2256 |
-
|
2257 |
-
|
2258 |
-
|
2259 |
-
|
2260 |
-
|
2261 |
-
|
2262 |
-
|
2263 |
-
|
2264 |
-
|
2265 |
-
|
2266 |
-
|
2267 |
-
|
2268 |
-
|
2269 |
-
|
2270 |
-
|
2271 |
-
|
2272 |
-
|
2273 |
-
|
2274 |
-
|
2275 |
-
|
2276 |
-
|
2277 |
-
}
|
2278 |
}
|
|
|
2279 |
}
|
2280 |
|
2281 |
/* widget attributes */
|
2282 |
.lp-course-attributes {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2283 |
list-style: none;
|
2284 |
margin-left: 0;
|
2285 |
-
|
2286 |
-
|
2287 |
-
margin-bottom: 10px;
|
2288 |
-
}
|
2289 |
.lp-course-attribute-values {
|
2290 |
-
|
2291 |
-
|
2292 |
-
|
2293 |
-
|
2294 |
-
|
2295 |
-
|
2296 |
-
|
2297 |
-
|
2298 |
-
|
2299 |
-
|
2300 |
-
|
2301 |
-
|
2302 |
-
|
2303 |
-
|
2304 |
-
|
2305 |
-
|
2306 |
-
|
2307 |
-
|
2308 |
-
|
2309 |
-
|
2310 |
-
|
2311 |
-
|
2312 |
-
|
2313 |
-
|
2314 |
-
|
2315 |
-
|
2316 |
-
|
2317 |
-
|
2318 |
-
|
2319 |
-
|
2320 |
-
|
2321 |
-
|
2322 |
-
|
2323 |
-
|
2324 |
-
|
2325 |
-
|
2326 |
-
|
2327 |
-
|
2328 |
-
|
2329 |
-
|
2330 |
-
|
2331 |
-
|
2332 |
-
|
2333 |
-
background: #a20000;
|
2334 |
-
}
|
2335 |
-
}
|
2336 |
-
}
|
2337 |
-
}
|
2338 |
}
|
2339 |
|
2340 |
@-moz-keyframes spin-12 {
|
2341 |
-
|
2342 |
-
|
2343 |
-
|
2344 |
-
|
2345 |
-
|
2346 |
-
|
2347 |
}
|
2348 |
|
2349 |
@-webkit-keyframes spin-12 {
|
2350 |
-
|
2351 |
-
|
2352 |
-
|
2353 |
-
|
2354 |
-
|
2355 |
-
|
2356 |
}
|
2357 |
|
2358 |
@keyframes spin-12 {
|
2359 |
-
|
2360 |
-
|
2361 |
-
|
2362 |
-
|
2363 |
-
|
2364 |
-
|
2365 |
-
|
2366 |
-
|
2367 |
}
|
2368 |
|
2369 |
@-moz-keyframes spin-13 {
|
2370 |
-
|
2371 |
-
|
2372 |
-
|
2373 |
-
|
2374 |
-
|
2375 |
-
|
2376 |
}
|
2377 |
|
2378 |
@-webkit-keyframes spin-13 {
|
2379 |
-
|
2380 |
-
|
2381 |
-
|
2382 |
-
|
2383 |
-
|
2384 |
-
|
2385 |
}
|
2386 |
|
2387 |
@keyframes spin-13 {
|
2388 |
-
|
2389 |
-
|
2390 |
-
|
2391 |
-
|
2392 |
-
|
2393 |
-
|
2394 |
-
|
2395 |
-
|
2396 |
}
|
2397 |
|
2398 |
@media screen and (max-width: 1250px) {
|
2399 |
-
|
2400 |
-
|
2401 |
-
|
2402 |
-
|
2403 |
-
}
|
2404 |
-
.items-progress {
|
2405 |
-
margin-bottom: 50px;
|
2406 |
-
}
|
2407 |
}
|
|
|
|
|
|
|
|
|
2408 |
}
|
2409 |
|
2410 |
@media screen and (max-width: 768px) {
|
2411 |
-
|
2412 |
-
|
2413 |
-
|
2414 |
|
2415 |
-
|
2416 |
-
|
2417 |
-
|
2418 |
-
|
2419 |
-
}
|
2420 |
}
|
|
|
2421 |
|
2422 |
}
|
2423 |
|
2424 |
@media (min-width: 992px) {
|
2425 |
-
|
2426 |
-
|
2427 |
-
|
2428 |
-
|
2429 |
-
|
2430 |
-
}
|
2431 |
}
|
|
|
2432 |
}
|
2433 |
|
2434 |
@media (max-width: 992px) {
|
2435 |
-
|
2436 |
-
|
2437 |
-
|
2438 |
}
|
2439 |
|
2440 |
@media (max-width: 992px) and (min-width: 600px ) {
|
2441 |
|
2442 |
-
|
2443 |
-
|
2444 |
-
|
2445 |
-
|
2446 |
-
|
2447 |
-
|
2448 |
-
|
2449 |
-
|
2450 |
-
|
2451 |
-
}
|
2452 |
}
|
|
|
2453 |
|
2454 |
}
|
2455 |
|
2456 |
@media (max-width: 600px) and (min-width: 400px ) {
|
2457 |
|
2458 |
-
|
2459 |
-
|
2460 |
-
|
2461 |
-
|
2462 |
-
|
2463 |
-
|
2464 |
-
|
2465 |
-
|
2466 |
-
|
2467 |
-
}
|
2468 |
}
|
|
|
2469 |
|
2470 |
}
|
2471 |
|
@@ -2482,34 +2485,34 @@ body.content-item-only {
|
|
2482 |
*/
|
2483 |
@media (max-width: 400px) {
|
2484 |
|
2485 |
-
|
2486 |
-
|
2487 |
-
|
2488 |
-
|
2489 |
-
|
2490 |
-
}
|
2491 |
}
|
|
|
2492 |
|
2493 |
}
|
2494 |
|
2495 |
@media (max-width: 350px) {
|
2496 |
-
|
2497 |
-
|
2498 |
-
|
2499 |
}
|
2500 |
|
2501 |
/* full width with twentysixteen theme */
|
2502 |
@media screen and (min-width: 61.5625em) {
|
2503 |
-
|
2504 |
-
|
2505 |
-
|
2506 |
-
|
2507 |
-
|
2508 |
-
|
2509 |
-
|
2510 |
-
|
2511 |
-
}
|
2512 |
}
|
|
|
2513 |
}
|
2514 |
|
2515 |
/*
|
16 |
|
17 |
@icon-url: '../fonts/lp-icons';
|
18 |
@font-face {
|
19 |
+
font-family: 'lp-icons';
|
20 |
+
src: url('@{icon-url}.eot?f41nl');
|
21 |
+
src: url('@{icon-url}.eot?f41nl#iefix') format('embedded-opentype'),
|
22 |
+
url('@{icon-url}.ttf?f41nl') format('truetype'),
|
23 |
+
url('@{icon-url}.woff?f41nl') format('woff'),
|
24 |
+
url('@{icon-url}.svg?f41nl#lp-icons') format('svg');
|
25 |
+
font-weight: normal;
|
26 |
+
font-style: normal;
|
27 |
}
|
28 |
|
29 |
[class^="lp-icon-"], [class*=" lp-icon-"] {
|
30 |
+
/* use !important to prevent issues with browser extensions that change fonts */
|
31 |
+
font-family: 'lp-icons' !important;
|
32 |
+
speak: none;
|
33 |
+
font-style: normal;
|
34 |
+
font-weight: normal;
|
35 |
+
font-variant: normal;
|
36 |
+
text-transform: none;
|
37 |
+
line-height: 1;
|
38 |
|
39 |
+
/* Better Font Rendering =========== */
|
40 |
+
-webkit-font-smoothing: antialiased;
|
41 |
+
-moz-osx-font-smoothing: grayscale;
|
42 |
}
|
43 |
|
44 |
.lp-icon-file-text2:before {
|
45 |
+
content: "\e926";
|
46 |
}
|
47 |
|
48 |
.lp-icon-file-picture:before {
|
49 |
+
content: "\e927";
|
50 |
}
|
51 |
|
52 |
.lp-icon-file-music:before {
|
53 |
+
content: "\e928";
|
54 |
}
|
55 |
|
56 |
.lp-icon-file-video:before {
|
57 |
+
content: "\e92a";
|
58 |
}
|
59 |
|
60 |
.lp-icon-file-zip:before {
|
61 |
+
content: "\e92b";
|
62 |
}
|
63 |
|
64 |
.lp-icon-paste:before {
|
65 |
+
content: "\e92d";
|
66 |
}
|
67 |
|
68 |
.lp-icon-alarm:before {
|
69 |
+
content: "\e950";
|
70 |
}
|
71 |
|
72 |
.lp-icon-cross:before {
|
73 |
+
content: "\ea0f";
|
74 |
}
|
75 |
|
76 |
.lp-icon-checkmark:before {
|
77 |
+
content: "\ea10";
|
78 |
}
|
79 |
|
80 |
.lp-icon-spinner2:before {
|
81 |
+
content: "\e97b";
|
82 |
}
|
83 |
|
84 |
.lp-icon-plus:before {
|
85 |
+
content: "\ea0a";
|
86 |
}
|
87 |
|
88 |
.lp-icon-minus:before {
|
89 |
+
content: "\ea0b";
|
90 |
}
|
91 |
|
92 |
.clearfix() {
|
93 |
+
display: block;
|
94 |
+
content: '';
|
95 |
+
clear: both;
|
96 |
}
|
97 |
|
98 |
.clearfix:after {
|
99 |
+
display: block;
|
100 |
+
content: '';
|
101 |
+
clear: both;
|
102 |
}
|
103 |
|
104 |
.border-radius(@args) {
|
105 |
+
-webkit-border-radius: @arguments;
|
106 |
+
-khtml-border-radius: @arguments;
|
107 |
+
-moz-border-radius: @arguments;
|
108 |
+
-ms-border-radius: @arguments;
|
109 |
+
-o-border-radius: @arguments;
|
110 |
+
border-radius: @arguments;
|
111 |
}
|
112 |
|
113 |
.transform(@args) {
|
114 |
+
-webkit-transform: @arguments;
|
115 |
+
-khtml-transform: @arguments;
|
116 |
+
-moz-transform: @arguments;
|
117 |
+
-ms-transform: @arguments;
|
118 |
+
-o-transform: @arguments;
|
119 |
+
transform: @arguments;
|
120 |
}
|
121 |
|
122 |
.transition(@args) {
|
123 |
+
-webkit-transition: @arguments;
|
124 |
+
-khtml-transition: @arguments;
|
125 |
+
-moz-transition: @arguments;
|
126 |
+
-ms-transition: @arguments;
|
127 |
+
-o-transition: @arguments;
|
128 |
+
transition: @arguments;
|
129 |
}
|
130 |
|
131 |
.cross(@size: 30px, @border: 3px, @color: #000) {
|
132 |
+
&:before,
|
133 |
+
&:after {
|
134 |
+
width: @border;
|
135 |
+
background: @color;
|
136 |
+
height: @size;
|
137 |
+
content: '';
|
138 |
+
display: inline-block;
|
139 |
+
position: absolute;
|
140 |
+
top: 0;
|
141 |
+
left: (@size - @border) / 2;
|
142 |
+
}
|
143 |
+
&:before {
|
144 |
+
.transform(rotate(-45deg));
|
145 |
+
}
|
146 |
+
&:after {
|
147 |
+
.transform(rotate(45deg));
|
148 |
+
}
|
149 |
}
|
150 |
|
151 |
.animation(@args) {
|
152 |
+
-webkit-animation: @arguments;
|
153 |
+
-moz-animation: @arguments;
|
154 |
+
animation: @arguments;
|
155 |
}
|
156 |
|
157 |
.overlay-processing {
|
158 |
+
&:before, &:after {
|
159 |
+
content: '';
|
160 |
+
display: block;
|
161 |
+
position: fixed;
|
162 |
+
top: 0;
|
163 |
+
left: 0;
|
164 |
+
width: 100%;
|
165 |
+
height: 100%;
|
166 |
+
z-index: 999999;
|
167 |
+
}
|
168 |
+
&:before {
|
169 |
+
background: #000;
|
170 |
+
opacity: 0.5;
|
171 |
+
}
|
172 |
+
&:after {
|
173 |
+
background: #FFF;
|
174 |
+
}
|
175 |
}
|
176 |
|
177 |
/* PROGRESS CIRCLE */
|
178 |
.progress-circle(@size: 200px, @background: #DDD, @fill: #95e6f9, @initialize: 0, @inside-size: 170px, @inside-background: #FFF) {
|
179 |
+
.progress-circle {
|
180 |
+
width: @size;
|
181 |
+
height: @size;
|
182 |
+
border-radius: 50%;
|
183 |
+
background-color: @background;
|
184 |
+
position: relative;
|
185 |
+
.background {
|
186 |
+
content: "";
|
187 |
+
position: absolute;
|
188 |
+
border-radius: 50%;
|
189 |
+
width: @size;
|
190 |
+
height: @size;
|
191 |
+
clip: rect(0, @size, @size, @size / 2);
|
192 |
+
.fill {
|
193 |
+
content: "";
|
194 |
+
position: absolute;
|
195 |
+
border-radius: 50%;
|
196 |
width: @size;
|
197 |
height: @size;
|
198 |
+
clip: rect(0, @size / 2, @size, 0);
|
199 |
+
background: @fill;
|
200 |
+
transform: rotate(unit(@initialize*3.6, deg));
|
201 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
}
|
203 |
+
&:after {
|
204 |
+
content: '';
|
205 |
+
width: @inside-size;
|
206 |
+
height: @inside-size;
|
207 |
+
background: @inside-background;
|
208 |
+
.border-radius(50%);
|
209 |
+
position: absolute;
|
210 |
+
top: 50%;
|
211 |
+
left: 50%;
|
212 |
+
margin-top: -@inside-size / 2;
|
213 |
+
margin-left: -@inside-size / 2;
|
214 |
+
pointer-events: none;
|
215 |
+
}
|
216 |
+
.inside {
|
217 |
+
position: absolute;
|
218 |
+
width: 100%;
|
219 |
+
height: 100%;
|
220 |
+
line-height: @size;
|
221 |
+
text-align: center;
|
222 |
+
z-index: 10;
|
223 |
+
}
|
224 |
+
&.gt-50 {
|
225 |
+
background-color: @fill;
|
226 |
+
.background {
|
227 |
+
clip: rect(0, @size/2, @size, 0);
|
228 |
+
}
|
229 |
+
.fill {
|
230 |
+
clip: rect(0, @size, @size, @size/2);
|
231 |
+
background: @background;
|
232 |
+
}
|
233 |
+
}
|
234 |
+
}
|
235 |
}
|
236 |
|
237 |
.clearfix() {
|
238 |
+
&:after {
|
239 |
+
content: '';
|
240 |
+
display: block;
|
241 |
+
clear: both;
|
242 |
+
}
|
243 |
}
|
244 |
|
245 |
.hide-if-js {
|
246 |
+
display: none !important;
|
247 |
}
|
248 |
|
249 |
/* Archive courses */
|
250 |
.learn-press-courses {
|
251 |
+
list-style: none;
|
252 |
+
clear: both;
|
253 |
+
margin: 0 -30px 0 0;
|
254 |
+
padding: 0;
|
255 |
+
&:after {
|
256 |
+
display: block;
|
257 |
+
content: '';
|
258 |
clear: both;
|
259 |
+
}
|
260 |
+
li.course {
|
261 |
+
list-style-type: none;
|
262 |
+
float: left;
|
263 |
+
width: 23%;
|
264 |
+
margin: 0 2% 30px 0;
|
265 |
padding: 0;
|
266 |
+
box-sizing: border-box;
|
267 |
+
border: 1px solid #DDD;
|
268 |
+
background: #FFF;
|
269 |
+
|
270 |
+
.view-more {
|
271 |
+
padding: 0 15px;
|
272 |
+
text-decoration: none;
|
273 |
+
box-shadow: none;
|
274 |
+
}
|
275 |
+
|
276 |
+
h3 {
|
277 |
+
padding: 15px;
|
278 |
+
margin: 0;
|
279 |
+
font-size: 18px;
|
280 |
+
line-height: 1.5;
|
281 |
+
}
|
282 |
+
.course-thumbnail {
|
283 |
+
position: relative;
|
284 |
+
img {
|
285 |
+
max-width: 100%;
|
286 |
+
height: auto;
|
287 |
+
}
|
288 |
+
&:after {
|
289 |
content: '';
|
290 |
+
position: absolute;
|
291 |
+
width: 100%;
|
292 |
+
height: 100%;
|
293 |
+
left: 0;
|
294 |
+
top: 0;
|
295 |
+
}
|
296 |
}
|
297 |
+
.course-info {
|
298 |
+
padding: 0 15px 15px;
|
299 |
+
font-size: 14px;
|
300 |
+
overflow: hidden;
|
301 |
+
}
|
302 |
+
.course-students {
|
303 |
+
float: left;
|
304 |
+
}
|
305 |
+
.course-instructor {
|
306 |
+
margin-bottom: 20px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
}
|
308 |
+
.course-origin-price {
|
309 |
+
float: right;
|
310 |
+
text-decoration: line-through;
|
311 |
+
padding-right: 5px;
|
312 |
+
}
|
313 |
+
.course-price {
|
314 |
+
float: right;
|
315 |
+
color: rgb(84, 181, 81);
|
316 |
+
}
|
317 |
+
.course-info > * {
|
318 |
+
display: block;
|
319 |
+
}
|
320 |
+
}
|
321 |
}
|
322 |
|
323 |
.course-origin-price {
|
324 |
+
text-decoration: line-through;
|
325 |
+
padding-right: 5px;
|
326 |
}
|
327 |
|
328 |
.course-price {
|
329 |
+
color: rgb(84, 181, 81);
|
330 |
}
|
331 |
|
332 |
.learn-press-notice .button {
|
333 |
+
float: right;
|
334 |
}
|
335 |
|
336 |
.learn-press-form {
|
337 |
+
margin-bottom: 20px;
|
338 |
}
|
339 |
|
340 |
/* Course Curriculum */
|
341 |
|
342 |
#learn-press-course-curriculum {
|
343 |
+
ul.curriculum-sections,
|
344 |
+
ul.section-content {
|
345 |
+
list-style: none;
|
346 |
+
margin: 0;
|
347 |
+
padding: 0;
|
348 |
+
background-color: #F5F5F5;
|
349 |
+
li.section {
|
350 |
+
list-style-type: none;
|
|
|
351 |
}
|
352 |
+
}
|
353 |
+
.section-header {
|
354 |
+
h4 {
|
355 |
+
display: inline;
|
356 |
+
}
|
357 |
+
background-color: #EEE;
|
358 |
+
margin: 0;
|
359 |
+
padding: 20px 15px;
|
360 |
+
border-top: 1px solid #FFF;
|
361 |
+
position: relative;
|
362 |
+
p {
|
363 |
+
display: inline-block;
|
364 |
+
font-weight: normal;
|
365 |
+
font-style: italic;
|
366 |
+
color: rgb(153, 153, 153);
|
367 |
+
font-size: 14px;
|
368 |
+
margin: 0;
|
369 |
+
padding: 10px 0;
|
370 |
+
text-transform: none;
|
371 |
+
}
|
372 |
+
&:hover {
|
373 |
+
background: #DDD;
|
374 |
+
}
|
375 |
+
.meta {
|
376 |
+
font-size: smaller;
|
377 |
+
font-weight: normal;
|
378 |
+
position: absolute;
|
379 |
+
right: 15px;
|
380 |
+
top: 20px;
|
381 |
+
.collapse {
|
382 |
+
display: inline-block;
|
383 |
position: relative;
|
384 |
+
font-family: 'lp-icons';
|
385 |
+
background: #95e6f9;
|
386 |
+
width: 24px;
|
387 |
+
height: 24px;
|
388 |
+
line-height: 24px;
|
389 |
+
text-align: center;
|
390 |
+
color: #FFF;
|
391 |
+
border-radius: 5px;
|
392 |
+
vertical-align: middle;
|
393 |
+
margin-left: 5px;
|
394 |
+
font-size: 10px;
|
395 |
+
&:before {
|
396 |
+
content: "\ea0b";
|
397 |
+
margin: 0 auto;
|
398 |
}
|
399 |
&:hover {
|
400 |
+
cursor: pointer;
|
401 |
}
|
402 |
+
&.plus {
|
403 |
+
&:before {
|
404 |
+
content: "\ea0a";
|
405 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
406 |
}
|
407 |
+
}
|
408 |
}
|
409 |
+
}
|
410 |
+
.course-item {
|
411 |
+
margin: 0;
|
412 |
+
list-style: none;
|
413 |
+
padding: 10px 15px;
|
414 |
+
border-top: 1px solid rgb(255, 255, 255);
|
415 |
+
position: relative;
|
416 |
+
.transition(background linear 0.5s);
|
417 |
+
.lp-label-viewing,
|
418 |
+
.lp-label-completed {
|
419 |
+
display: none;
|
420 |
+
}
|
421 |
+
.course-item-title {
|
422 |
+
display: block;
|
423 |
+
box-shadow: none;
|
424 |
+
text-align: justify;
|
425 |
+
float: left;
|
426 |
+
&:before {
|
427 |
+
display: inline-block;
|
428 |
+
font-size: 16px;
|
429 |
+
margin-right: 10px;
|
430 |
+
font-family: 'lp-icons';
|
431 |
+
}
|
432 |
+
}
|
433 |
+
.lp-icon {
|
434 |
+
display: none;
|
435 |
+
}
|
436 |
+
.item-status {
|
437 |
+
display: none;
|
438 |
+
font-family: dashicons;
|
439 |
+
.border-radius(4px);
|
440 |
+
background: #DDD;
|
441 |
+
color: #22b4ff;
|
442 |
+
font-size: 18px;
|
443 |
+
&:before {
|
444 |
+
content: "\f177";
|
445 |
+
}
|
446 |
+
&.item-status-viewed {
|
447 |
+
|
448 |
+
}
|
449 |
+
&.item-status-started {
|
450 |
+
&:before {
|
451 |
+
content: "\f469";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
452 |
}
|
453 |
+
}
|
454 |
+
&.item-status-completed {
|
455 |
+
background: #22b4ff;
|
456 |
+
color: #FFF;
|
457 |
+
&:before {
|
458 |
+
content: "\f147";
|
459 |
}
|
460 |
+
}
|
461 |
+
&.item-status-passed {
|
462 |
+
background: #22b4ff;
|
463 |
+
color: #FFF;
|
464 |
+
&:before {
|
465 |
+
content: "\f147";
|
466 |
}
|
467 |
+
}
|
468 |
+
&.item-status-failed {
|
469 |
+
background: #cc540d;
|
470 |
+
color: #FFF;
|
471 |
+
&:before {
|
472 |
+
content: "\f335";
|
473 |
}
|
474 |
+
}
|
475 |
+
}
|
476 |
+
.item-result {
|
477 |
+
display: none;
|
478 |
+
}
|
479 |
+
&.item-has-status {
|
480 |
+
.item-status {
|
481 |
+
display: inline-block;
|
482 |
+
}
|
483 |
+
}
|
484 |
+
&.item-has-result {
|
485 |
+
.item-result {
|
486 |
+
display: inline-block;
|
487 |
+
}
|
488 |
+
}
|
489 |
+
&.viewable {
|
490 |
+
cursor: pointer;
|
491 |
+
&:hover {
|
492 |
+
background: #e7ecfb;
|
493 |
+
.transition(background linear 0s);
|
494 |
+
}
|
495 |
+
}
|
496 |
+
&.course-lesson {
|
497 |
+
.course-item-title {
|
498 |
+
&:before {
|
499 |
+
content: '\e926';
|
500 |
}
|
501 |
+
}
|
502 |
+
}
|
503 |
+
&.course-quiz {
|
504 |
+
.course-item-title {
|
505 |
+
&:before {
|
506 |
+
content: '\e950';
|
|
|
|
|
|
|
|
|
|
|
|
|
507 |
}
|
508 |
+
}
|
509 |
+
}
|
510 |
+
&.item-current {
|
511 |
+
background: #FFF;
|
512 |
+
&:before {
|
513 |
+
display: block;
|
514 |
+
width: 3px;
|
515 |
+
background: #95e6f9;
|
516 |
+
position: absolute;
|
517 |
+
left: 0;
|
518 |
+
top: 0;
|
519 |
+
height: 100%;
|
520 |
+
content: '';
|
521 |
+
}
|
522 |
+
}
|
523 |
|
524 |
+
&.focus {
|
525 |
+
background: #ffb710;
|
526 |
+
&.off {
|
527 |
+
.transition(none);
|
528 |
+
}
|
529 |
+
}
|
530 |
+
&:after {
|
531 |
+
display: block;
|
532 |
+
clear: both;
|
533 |
+
content: '';
|
|
|
534 |
}
|
535 |
+
}
|
536 |
|
537 |
+
.course-item-meta {
|
538 |
+
display: block;
|
539 |
+
line-height: 1;
|
540 |
+
top: 15px;
|
541 |
+
right: 15px;
|
542 |
+
float: right;
|
543 |
+
margin-top: 5px;
|
544 |
+
.item-loop-meta-text {
|
545 |
+
font-size: small;
|
546 |
+
&.item-final {
|
547 |
+
color: #ffffff;
|
548 |
+
background: #cc540d;
|
549 |
+
padding: 3px 8px;
|
550 |
+
.border-radius(3px);
|
551 |
+
}
|
|
|
552 |
}
|
553 |
+
}
|
554 |
}
|
555 |
|
556 |
.lp-icon {
|
557 |
+
display: inline-block;
|
558 |
+
font-family: 'lp-icons';
|
559 |
+
background: #95e6f9;
|
560 |
+
width: 24px;
|
561 |
+
height: 24px;
|
562 |
+
line-height: 24px;
|
563 |
+
text-align: center;
|
564 |
+
color: #FFF;
|
565 |
+
border-radius: 5px;
|
566 |
+
vertical-align: middle;
|
567 |
+
&:before {
|
568 |
+
width: 32px;
|
569 |
+
height: 32px;
|
570 |
+
}
|
571 |
|
572 |
}
|
573 |
|
574 |
.lp-label {
|
575 |
+
display: inline-block;
|
576 |
+
line-height: 24px;
|
577 |
+
font-size: 78%;
|
578 |
+
vertical-align: middle;
|
579 |
+
color: #ffffff;
|
580 |
+
padding: 0 10px;
|
581 |
+
background: #DDD;
|
582 |
+
height: 24px;
|
583 |
+
.border-radius(4px);
|
584 |
+
&.lp-label-viewing {
|
585 |
+
background-color: rgb(57, 175, 255);
|
586 |
+
}
|
587 |
+
&.lp-label-completed {
|
588 |
+
background-color: #39c7ce;
|
589 |
+
}
|
590 |
+
&.lp-label-lesson {
|
591 |
+
background-color: #337ab7;
|
592 |
+
}
|
593 |
+
&.lp-label-quiz {
|
594 |
+
background-color: #53658c;
|
595 |
+
}
|
596 |
+
&.lp-label-preview {
|
597 |
+
background-color: #02a7ce;
|
598 |
+
}
|
599 |
}
|
600 |
|
601 |
.learn-press-content-protected-message {
|
602 |
+
border: 3px solid #ff8484;
|
603 |
+
background: #FFF;
|
604 |
+
padding: 20px;
|
605 |
+
color: #ff8484;
|
606 |
+
margin: 10px 0;
|
607 |
+
border-radius: 6px;
|
608 |
+
.icon {
|
609 |
+
position: relative;
|
610 |
+
display: inline-block;
|
611 |
+
width: 30px;
|
612 |
+
height: 30px;
|
613 |
+
margin-right: 10px;
|
614 |
+
vertical-align: middle;
|
615 |
+
.cross(30px, 3px, #ff8484);
|
616 |
+
}
|
617 |
}
|
618 |
|
619 |
/** BREADCRUMB */
|
620 |
.learn-press-breadcrumb {
|
621 |
+
margin-bottom: 20px;
|
622 |
}
|
623 |
|
624 |
/** COURSE PROGRESS **/
|
625 |
.single-lp_course {
|
626 |
+
.learn-press-course-results-progress {
|
627 |
+
margin-bottom: 40px;
|
628 |
+
.items-progress {
|
629 |
+
float: left;
|
630 |
+
width: 68%;
|
631 |
+
margin-right: 2%;
|
632 |
+
clear: left;
|
633 |
+
}
|
634 |
+
.lp-course-progress-heading {
|
635 |
+
margin-bottom: 10px;
|
636 |
+
}
|
637 |
+
.course-progress {
|
638 |
+
float: left;
|
639 |
+
width: 30%;
|
640 |
+
}
|
641 |
+
.number, .percentage-sign {
|
642 |
+
display: inline-block;
|
643 |
+
vertical-align: bottom;
|
644 |
+
line-height: 1;
|
645 |
+
font-size: 25px;
|
646 |
+
}
|
647 |
+
.percentage-sign {
|
648 |
+
margin-left: 5px;
|
649 |
+
}
|
650 |
+
.grade {
|
651 |
+
font-size: 12px;
|
652 |
+
font-weight: bold;
|
653 |
+
background: #F5F5F5;
|
654 |
+
padding: 2px 7px;
|
655 |
+
.border-radius(3px);
|
656 |
+
&.in-progress {
|
657 |
+
|
658 |
+
}
|
659 |
+
&.passed {
|
660 |
+
color: #ffffff;
|
661 |
+
background: #95e6f9;
|
662 |
+
}
|
663 |
+
&.failed {
|
664 |
+
color: #ffffff;
|
665 |
+
background: #ff5425;
|
666 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
667 |
}
|
668 |
+
&:after {
|
669 |
+
display: block;
|
670 |
+
content: '';
|
671 |
+
clear: both;
|
672 |
+
}
|
673 |
+
}
|
674 |
}
|
675 |
|
676 |
.lp-course-progress {
|
677 |
+
position: relative;
|
678 |
+
.lp-progress-bar {
|
679 |
+
height: 15px;
|
680 |
+
background: #DDD;
|
681 |
+
margin: 10px 0 15px 0;
|
682 |
+
overflow: hidden;
|
683 |
+
.border-radius(3px);
|
684 |
+
.lp-progress-value {
|
685 |
+
width: 50%;
|
686 |
+
height: 15px;
|
687 |
+
background: #95e6f9;
|
688 |
+
}
|
689 |
+
}
|
690 |
+
.lp-passing-conditional {
|
691 |
+
left: 0%;
|
692 |
+
position: absolute;
|
693 |
+
height: 25px;
|
694 |
+
top: -5px;
|
695 |
+
margin-left: -5px;
|
696 |
+
cursor: pointer;
|
697 |
+
&:before,
|
698 |
+
&:after {
|
699 |
+
content: '';
|
700 |
+
display: inline-block;
|
701 |
+
border: 5px solid transparent;
|
702 |
+
left: 0;
|
703 |
+
position: absolute;
|
704 |
}
|
705 |
+
&:before {
|
706 |
+
border-top-color: #DDD;
|
707 |
+
}
|
708 |
+
&:after {
|
709 |
+
border-bottom-color: #DDD;
|
710 |
+
bottom: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
711 |
}
|
712 |
+
}
|
713 |
}
|
714 |
|
715 |
#learn-press-content-item {
|
716 |
+
border: 1px solid #DDD;
|
717 |
+
display: none;
|
718 |
|
719 |
}
|
720 |
|
721 |
/** COURSE TABS **/
|
722 |
.learn-press-tabs {
|
723 |
+
.learn-press-nav-tabs {
|
724 |
+
list-style: none;
|
725 |
+
padding: 0;
|
726 |
+
margin: 0 0 20px 0;
|
727 |
+
border-bottom: 1px solid #DDD;
|
728 |
+
.learn-press-nav-tab {
|
729 |
+
list-style-type: none;
|
730 |
+
float: left;
|
731 |
+
margin-bottom: -1px;
|
732 |
+
position: relative;
|
733 |
+
a {
|
734 |
+
display: inline-block;
|
735 |
+
padding: 10px 15px;
|
736 |
+
outline: none;
|
737 |
+
box-shadow: none;
|
738 |
+
color: #686868;
|
739 |
border-bottom: 1px solid #DDD;
|
740 |
+
}
|
741 |
+
&.active {
|
742 |
+
border-bottom: 4px solid #007acc;
|
743 |
+
a {
|
744 |
+
color: #007acc;
|
745 |
+
border-bottom: none;
|
746 |
+
margin-bottom: -4px;
|
747 |
+
}
|
748 |
+
}
|
749 |
+
&.active:after {
|
750 |
+
position: absolute;
|
751 |
+
width: 100%;
|
752 |
+
border-bottom: 1px solid #FFF;
|
753 |
+
bottom: -1px;
|
754 |
+
content: '';
|
755 |
+
}
|
756 |
+
}
|
757 |
+
&:hover {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
758 |
|
|
|
|
|
|
|
|
|
|
|
|
|
759 |
}
|
760 |
+
&:after {
|
761 |
+
content: '';
|
762 |
+
display: block;
|
763 |
+
clear: both;
|
|
|
|
|
764 |
}
|
765 |
+
}
|
766 |
+
.learn-press-tab-panel {
|
767 |
+
display: none;
|
768 |
+
margin-bottom: 20px;
|
769 |
+
&.active {
|
770 |
+
display: block;
|
771 |
+
}
|
772 |
+
}
|
773 |
}
|
774 |
|
775 |
.learn-press-block-content-mixin(@w) {
|
776 |
+
&:before {
|
777 |
+
width: (@w);
|
778 |
+
height: (@w);
|
779 |
+
margin-left: -(@w/2);
|
780 |
+
margin-top: -(@w/2); /*-76px;*/
|
781 |
+
-webkit-clip-path: polygon(0px @w, @w @w, @w @w/2, @w/2 @w/2, @w/2 0, 0 0);
|
782 |
+
}
|
783 |
+
|
784 |
+
span {
|
785 |
+
clip: rect(0, @w+4, @w/2+2, @w/2+2);
|
786 |
+
width: @w+4;
|
787 |
+
height: @w+4;
|
788 |
+
margin-left: -(@w/2+2);
|
789 |
+
margin-top: -(@w/2+2);
|
790 |
&:before {
|
791 |
+
width: @w+4;
|
792 |
+
height: @w+4;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
793 |
}
|
794 |
+
}
|
795 |
}
|
796 |
|
797 |
.learn-press-course-buttons {
|
798 |
|
799 |
+
a.button {
|
800 |
+
display: inline-block;
|
801 |
+
font-size: 16px;
|
802 |
+
background: #1a1a1a;
|
803 |
+
border: 0;
|
804 |
+
border-radius: 2px;
|
805 |
+
color: #fff;
|
806 |
+
font-family: Montserrat, "Helvetica Neue", sans-serif;
|
807 |
+
font-weight: 700;
|
808 |
+
letter-spacing: 0.046875em;
|
809 |
+
line-height: 1;
|
810 |
+
padding: 0.84375em 0.875em 0.78125em;
|
811 |
+
text-transform: uppercase;
|
812 |
|
813 |
+
&:hover {
|
814 |
+
background: #007acc;
|
|
|
815 |
}
|
816 |
+
}
|
817 |
}
|
818 |
|
819 |
/* POPUP STYLE */
|
820 |
|
821 |
#popup_overlay {
|
822 |
+
z-index: 10000000 !important;
|
823 |
}
|
824 |
|
825 |
#popup_container {
|
826 |
+
z-index: 10000001 !important;
|
827 |
}
|
828 |
|
829 |
body.course-has-popup {
|
830 |
+
overflow: hidden;
|
831 |
}
|
832 |
|
833 |
#course-curriculum-popup {
|
834 |
+
position: fixed;
|
835 |
+
top: 0;
|
836 |
+
left: 0;
|
837 |
+
right: 0;
|
838 |
+
bottom: 0;
|
839 |
+
background: #000;
|
840 |
+
z-index: 999999;
|
841 |
+
* {
|
842 |
+
box-sizing: border-box;
|
843 |
+
}
|
844 |
+
#popup-sidebar {
|
845 |
+
float: left;
|
846 |
+
width: 350px;
|
847 |
+
position: absolute;
|
848 |
+
top: 60px;
|
849 |
+
bottom: 0;
|
850 |
+
overflow: auto;
|
851 |
+
background: #FFF;
|
852 |
+
border-right: 1px solid #DDD;
|
853 |
+
.course-curriculum-title {
|
854 |
+
display: none;
|
855 |
+
}
|
856 |
+
.curriculum-sections {
|
857 |
+
margin: 0;
|
858 |
+
font-size: smaller;
|
859 |
+
}
|
860 |
+
.learn-press-course-results-progress {
|
861 |
+
padding: 15px 20px;
|
862 |
+
margin-bottom: 0;
|
863 |
+
.items-progress, .course-progress {
|
864 |
+
width: 100%;
|
865 |
+
margin: 0 !important;
|
866 |
+
}
|
867 |
+
}
|
868 |
+
}
|
869 |
+
#popup-main {
|
870 |
+
position: absolute;
|
871 |
top: 0;
|
872 |
+
left: 350px;
|
873 |
right: 0;
|
874 |
bottom: 0;
|
875 |
+
background: #FFF;
|
876 |
+
#popup-header {
|
877 |
+
position: absolute;
|
878 |
+
top: 0;
|
879 |
+
left: -350px;
|
880 |
+
right: 0;
|
881 |
+
height: 60px;
|
882 |
+
background: #cc540d;
|
883 |
+
border-bottom: 1px solid #ab4a10;
|
884 |
+
.popup-menu {
|
885 |
position: absolute;
|
886 |
+
height: 60px;
|
887 |
+
width: 350px;
|
888 |
+
border-right: 1px solid #ab4a10;
|
889 |
+
}
|
890 |
+
.popup-close,
|
891 |
+
.sidebar-hide-btn,
|
892 |
+
.sidebar-show-btn {
|
893 |
+
width: 59px;
|
894 |
+
height: 59px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
895 |
position: absolute;
|
896 |
top: 0;
|
897 |
+
cursor: pointer;
|
898 |
+
font-size: 34px;
|
899 |
+
line-height: 60px;
|
900 |
+
text-align: center;
|
901 |
+
color: #FFF;
|
902 |
+
&:hover {
|
903 |
+
background: #b34c10;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
904 |
}
|
905 |
+
}
|
906 |
+
.sidebar-hide-btn {
|
907 |
+
left: 0;
|
908 |
+
}
|
909 |
+
.sidebar-show-btn {
|
910 |
+
position: relative;
|
911 |
+
margin-left: -20px;
|
912 |
+
margin-right: 20px;
|
913 |
+
}
|
914 |
+
.popup-close {
|
915 |
+
right: 0px;
|
916 |
+
&:before,
|
917 |
+
&:after {
|
918 |
+
content: '';
|
919 |
+
border-top: 3px solid #FFF;
|
920 |
+
width: 30px;
|
921 |
+
display: inline-block;
|
922 |
+
position: absolute;
|
923 |
+
top: 29px;
|
924 |
+
left: 17px;
|
925 |
}
|
926 |
+
&:before {
|
927 |
+
-webkit-transform: rotate(45deg);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
928 |
}
|
929 |
+
&:after {
|
930 |
+
-webkit-transform: rotate(-45deg);
|
931 |
}
|
932 |
+
&:hover {
|
933 |
+
background: #b34c10;
|
934 |
+
&:before, &:after {
|
935 |
+
border-color: #FFF;
|
936 |
+
}
|
937 |
+
}
|
938 |
+
}
|
939 |
+
.popup-title {
|
940 |
+
margin: 0 0 0 350px;
|
941 |
+
height: 60px;
|
942 |
+
line-height: 60px;
|
943 |
+
padding: 0 20px;
|
944 |
+
color: #FFF;
|
945 |
+
position: relative;
|
946 |
+
}
|
947 |
+
|
948 |
+
}
|
949 |
+
#popup-content {
|
950 |
+
position: absolute;
|
951 |
+
top: 60px;
|
952 |
+
bottom: 50px;
|
953 |
+
left: 0;
|
954 |
+
right: 0;
|
955 |
+
overflow: auto;
|
956 |
+
transition: top linear 0.25s, bottom linear 0.25s;
|
957 |
+
|
958 |
+
#popup-content-inner {
|
959 |
+
margin: 20px 40px;
|
960 |
+
}
|
961 |
+
}
|
962 |
+
#popup-footer {
|
963 |
+
position: absolute;
|
964 |
+
bottom: 0;
|
965 |
+
left: 0;
|
966 |
+
right: 0;
|
967 |
+
height: 50px;
|
968 |
+
background: #F5F5F5;
|
969 |
+
border-top: 1px solid #DDD;
|
970 |
+
.footer-control {
|
971 |
+
display: block;
|
972 |
+
height: 50px;
|
973 |
+
line-height: 50px;
|
974 |
+
padding: 0 20px;
|
975 |
+
background: #FFF;
|
976 |
+
&.prev-item {
|
977 |
+
float: left;
|
978 |
+
}
|
979 |
+
&.next-item {
|
980 |
+
float: right;
|
981 |
}
|
982 |
+
}
|
983 |
}
|
984 |
+
#popup-header, #popup-footer {
|
985 |
+
transition: opacity linear 0.25s;
|
986 |
+
}
|
987 |
+
&.expand {
|
988 |
+
position: fixed;
|
989 |
+
left: 0;
|
990 |
+
padding: 0 20%;
|
991 |
+
top: 0;
|
992 |
+
bottom: 0;
|
993 |
+
#popup-header,
|
994 |
+
#popup-footer {
|
995 |
+
opacity: 0;
|
996 |
+
}
|
997 |
+
#popup-content {
|
998 |
top: 0;
|
999 |
+
bottom: 0;
|
1000 |
+
}
|
|
|
|
|
|
|
|
|
1001 |
}
|
1002 |
+
}
|
1003 |
+
iframe {
|
1004 |
+
position: absolute;
|
1005 |
+
top: 0;
|
1006 |
+
left: 0;
|
1007 |
+
height: 100%;
|
1008 |
+
width: 100%;
|
1009 |
+
border: none;
|
1010 |
+
margin: 0;
|
1011 |
+
background: #FFF;
|
1012 |
+
}
|
1013 |
}
|
1014 |
|
1015 |
.learn-press-content-item-title {
|
1016 |
+
margin-bottom: 20px;
|
1017 |
+
border-bottom: 2px solid #DDD;
|
1018 |
+
padding-bottom: 20px;
|
1019 |
+
&.content-item-quiz-title {
|
1020 |
+
h4 {
|
1021 |
+
float: left;
|
1022 |
+
font-size: 24px;
|
1023 |
+
margin-bottom: 0;
|
1024 |
+
}
|
1025 |
+
.quiz-countdown {
|
1026 |
+
float: right;
|
1027 |
+
position: relative;
|
1028 |
+
min-width: 100px;
|
1029 |
+
background: #F5F5F5;
|
1030 |
+
text-align: center;
|
1031 |
+
font-size: 18px;
|
1032 |
+
&:after, &:before {
|
1033 |
+
padding: 0 10px;
|
1034 |
+
height: 3px;
|
1035 |
+
position: absolute;
|
1036 |
+
bottom: -3px;
|
1037 |
+
background: #000;
|
1038 |
+
content: '';
|
1039 |
+
left: 0;
|
1040 |
+
}
|
1041 |
+
&:before {
|
1042 |
+
width: 100%;
|
1043 |
+
}
|
1044 |
+
&:after {
|
1045 |
+
background: #00adff;
|
1046 |
+
padding: 0;
|
1047 |
+
}
|
1048 |
+
&.warning-time-over {
|
1049 |
+
&:after {
|
1050 |
+
background: #FF0000;
|
1051 |
}
|
1052 |
+
}
|
1053 |
+
.countdown {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1054 |
|
1055 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1056 |
}
|
1057 |
+
.clearfix();
|
1058 |
+
}
|
1059 |
+
.lp-expand {
|
1060 |
+
float: right;
|
1061 |
+
width: 43px;
|
1062 |
+
height: 43px;
|
1063 |
+
line-height: 43px;
|
1064 |
+
background: #F5F5F5;
|
1065 |
+
margin-left: 10px;
|
1066 |
+
border: 1px solid #DDD;
|
1067 |
+
outline: none;
|
1068 |
+
}
|
1069 |
}
|
1070 |
|
1071 |
.learn-press-content-item-summary {
|
1072 |
+
/*padding: 20px;
|
1073 |
+
border-top: 1px solid #DDD;*/
|
1074 |
+
margin-bottom: 30px;
|
1075 |
+
.quiz-question-title {
|
1076 |
+
margin-bottom: 20px;
|
1077 |
+
}
|
1078 |
+
.learn-press-question-explanation, .learn-press-question-hint {
|
1079 |
+
background: #F5F5F5;
|
1080 |
+
padding: 15px 20px;
|
1081 |
+
font-style: italic;
|
1082 |
+
margin-bottom: 20px;
|
1083 |
+
.hint-title, .explanation-title {
|
1084 |
+
font-style: normal;
|
|
|
1085 |
}
|
1086 |
+
}
|
1087 |
}
|
1088 |
|
1089 |
.button-finish-quiz {
|
1090 |
+
float: right;
|
1091 |
}
|
1092 |
|
1093 |
.learnpress form.purchase-course {
|
1094 |
+
margin-bottom: 20px;
|
1095 |
}
|
1096 |
|
1097 |
#learn-press-block-content {
|
1098 |
+
display: none;
|
1099 |
+
width: 100%;
|
1100 |
+
height: 100%;
|
1101 |
+
background: fade(#FFF, 25%);
|
1102 |
+
position: fixed;
|
1103 |
+
z-index: 99999999;
|
1104 |
+
top: 0;
|
1105 |
+
left: 0;
|
1106 |
+
&:before, &:after, span {
|
1107 |
+
position: absolute;
|
1108 |
+
.border-radius(50%);
|
1109 |
+
left: 50%;
|
1110 |
+
top: 50%;
|
1111 |
+
box-sizing: border-box;
|
1112 |
+
}
|
1113 |
+
&:before {
|
1114 |
+
content: '';
|
1115 |
+
border: 2px solid #000;
|
1116 |
+
z-index: 10;
|
1117 |
+
.animation(spin-13 1.5s infinite);
|
1118 |
+
}
|
1119 |
+
&:after {
|
1120 |
+
z-index: 0;
|
1121 |
+
content: '';
|
1122 |
+
border: 10px solid #000000;
|
1123 |
+
margin-left: -80px;
|
1124 |
+
margin-top: -80px;
|
1125 |
+
width: 160px;
|
1126 |
+
height: 160px;
|
1127 |
+
opacity: 0;
|
1128 |
+
}
|
1129 |
+
span {
|
1130 |
+
z-index: 20;
|
1131 |
+
.animation(spin-12 1.5s infinite);
|
1132 |
&:before {
|
1133 |
+
content: '';
|
1134 |
+
border: 6px solid #95e6f9;
|
1135 |
+
position: absolute;
|
1136 |
+
.border-radius(50%);
|
1137 |
+
box-sizing: border-box;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1138 |
}
|
1139 |
+
}
|
1140 |
|
1141 |
+
.learn-press-block-content-mixin(80px);
|
1142 |
}
|
1143 |
|
1144 |
body.block-content {
|
1145 |
+
#learn-press-block-content {
|
1146 |
+
display: block;
|
1147 |
+
}
|
1148 |
}
|
1149 |
|
1150 |
/* COURSE QUIZ */
|
1151 |
.quiz-buttons {
|
1152 |
+
margin-bottom: 20px;
|
1153 |
+
clear: both;
|
1154 |
}
|
1155 |
|
1156 |
.quiz-intro {
|
1157 |
+
list-style: none;
|
1158 |
+
padding: 0;
|
1159 |
+
margin-left: 0;
|
1160 |
+
li label {
|
1161 |
+
display: inline-block;
|
1162 |
+
}
|
1163 |
}
|
1164 |
|
1165 |
.quiz-questions-list {
|
1166 |
+
margin: 0 0 20px 0;
|
1167 |
+
padding: 0;
|
1168 |
+
list-style-position: inside;
|
1169 |
+
li {
|
1170 |
+
margin: 0 0 10px 0;
|
1171 |
+
}
|
1172 |
+
.question-title {
|
1173 |
+
margin: 0 0 5px 0;
|
1174 |
+
display: inline-block;
|
1175 |
+
font-size: 14px;
|
1176 |
+
}
|
1177 |
+
.current {
|
1178 |
.question-title {
|
1179 |
+
font-weight: bold;
|
|
|
|
|
1180 |
}
|
1181 |
+
}
|
1182 |
+
input[type="checkbox"], input[type="radio"] {
|
1183 |
+
border: 1px solid #DDD;
|
1184 |
+
display: inline-block;
|
1185 |
+
-webkit-appearance: none;
|
1186 |
+
width: 18px;
|
1187 |
+
height: 18px;
|
1188 |
+
position: relative;
|
1189 |
+
&:checked {
|
1190 |
+
&:after {
|
1191 |
+
content: '';
|
1192 |
+
display: inline-block;
|
1193 |
+
position: absolute;
|
1194 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1195 |
}
|
1196 |
+
}
|
1197 |
+
input[type="checkbox"]:checked {
|
1198 |
+
&:after {
|
1199 |
+
border-bottom: 3px solid #00b9eb;
|
1200 |
+
border-right: 1px solid #00b9eb;
|
1201 |
+
-webkit-transform: rotate(14deg);
|
1202 |
+
-moz-transform: rotate(14deg);
|
1203 |
+
-ms-transform: rotate(14deg);
|
1204 |
+
-o-transform: rotate(14deg);
|
1205 |
+
transform: rotate(33deg);
|
1206 |
+
width: 8px;
|
1207 |
+
height: 16px;
|
1208 |
+
|
1209 |
+
top: -5px;
|
1210 |
+
left: 5px;
|
1211 |
+
}
|
1212 |
+
}
|
1213 |
+
input[type="checkbox"] {
|
1214 |
+
&:disabled {
|
1215 |
+
&:after {
|
1216 |
+
border-color: #DDD;
|
1217 |
+
}
|
1218 |
+
}
|
1219 |
+
}
|
1220 |
+
input[type="radio"] {
|
1221 |
+
-webkit-border-radius: 50%;
|
1222 |
+
-moz-border-radius: 50%;
|
1223 |
+
border-radius: 50%;
|
1224 |
+
&:checked {
|
1225 |
+
&:after {
|
1226 |
+
background: #00b9eb;
|
1227 |
+
width: 8px;
|
1228 |
+
height: 8px;
|
1229 |
border-radius: 50%;
|
1230 |
+
top: 50%;
|
1231 |
+
left: 50%;
|
1232 |
+
margin-left: -4px;
|
1233 |
+
margin-top: -4px;
|
1234 |
+
}
|
1235 |
+
}
|
1236 |
+
&:disabled {
|
1237 |
+
&:after {
|
1238 |
+
background: #DDD;
|
1239 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1240 |
}
|
1241 |
+
}
|
1242 |
}
|
1243 |
|
1244 |
.question-results {
|
1245 |
+
.question-title {
|
1246 |
+
&:after {
|
1247 |
+
font-family: dashicons;
|
1248 |
+
font-size: 24px;
|
1249 |
+
vertical-align: middle;
|
1250 |
+
display: inline-block;
|
1251 |
+
text-align: center;
|
1252 |
+
margin-left: 5px;
|
1253 |
+
}
|
1254 |
+
}
|
1255 |
+
&.correct {
|
1256 |
.question-title {
|
1257 |
+
&:after {
|
1258 |
+
content: '\f147';
|
1259 |
+
color: #00adff;
|
1260 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1261 |
}
|
1262 |
+
}
|
1263 |
+
&.skipped {
|
1264 |
+
.question-title {
|
1265 |
+
&:after {
|
1266 |
+
content: '\f534';
|
1267 |
+
color: #c6c6c6;
|
1268 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1269 |
}
|
1270 |
+
}
|
1271 |
+
&.incorrect {
|
1272 |
+
.question-title {
|
1273 |
+
&:after {
|
1274 |
+
content: '\f335';
|
1275 |
+
color: #ff5425;
|
1276 |
+
}
|
1277 |
}
|
1278 |
+
.user-answer-false {
|
1279 |
+
.option-title {
|
1280 |
+
text-decoration: line-through;
|
1281 |
+
}
|
1282 |
+
}
|
1283 |
+
}
|
1284 |
+
.answer-true {
|
1285 |
+
color: #007acc;
|
1286 |
+
.option-title {
|
1287 |
+
background: #fff9d8;
|
1288 |
+
padding: 0 5px;
|
1289 |
+
margin-left: -5px;
|
1290 |
+
}
|
1291 |
+
}
|
1292 |
+
input {
|
1293 |
+
vertical-align: middle;
|
1294 |
+
}
|
1295 |
}
|
1296 |
|
1297 |
.quiz-description,
|
1298 |
.question-content {
|
1299 |
+
.learn-press-question-title {
|
1300 |
+
margin-bottom: 20px;
|
1301 |
+
}
|
1302 |
}
|
1303 |
|
1304 |
.quiz-countdown {
|
1305 |
+
float: right;
|
1306 |
+
position: relative;
|
1307 |
+
min-width: 150px;
|
1308 |
+
background: #F5F5F5;
|
1309 |
+
text-align: center;
|
1310 |
+
font-size: 18px;
|
1311 |
+
padding: 5px 0;
|
1312 |
}
|
1313 |
|
1314 |
#quiz-countdown {
|
1315 |
+
.progress-circle {
|
1316 |
+
overflow: hidden;
|
1317 |
+
box-shadow: 0 0 3px #bdbdbd inset;
|
1318 |
+
.inside {
|
1319 |
+
line-height: 1;
|
1320 |
+
.countdown {
|
1321 |
+
font-size: 48px;
|
1322 |
+
color: #087998;
|
1323 |
+
_text-shadow: 1px 1px #8ee5fd;
|
1324 |
+
margin-top: 110px;
|
1325 |
+
}
|
1326 |
+
p {
|
1327 |
+
margin: 10px 0 0 0;
|
1328 |
+
color: #DDD;
|
1329 |
+
}
|
|
|
|
|
|
|
|
|
|
|
1330 |
}
|
1331 |
+
&:after {
|
1332 |
+
background: #00b9eb;
|
1333 |
+
box-shadow: 0 0 6px #097a98;
|
1334 |
+
}
|
1335 |
+
}
|
1336 |
}
|
1337 |
|
1338 |
#quiz-progress {
|
1339 |
+
.progress-circle(@size: 200px, @background: #DDD, @fill: #FF0000, @initialize: 0%, @inside-size: 170px, @inside-background: #FFF);
|
1340 |
}
|
1341 |
|
1342 |
.quiz-result {
|
1343 |
+
.quiz-result-mark {
|
1344 |
+
.progress-circle();
|
1345 |
+
margin-bottom: 20px;
|
1346 |
+
}
|
1347 |
+
.quiz-result-summary {
|
1348 |
+
margin-bottom: 20px;
|
1349 |
+
max-width: 500px;
|
1350 |
+
.quiz-result-field {
|
1351 |
+
position: relative;
|
1352 |
+
background: #F5F5F5;
|
1353 |
+
color: #fff;
|
1354 |
+
margin: 0 0 8px 0;
|
1355 |
+
font-size: 12px;
|
1356 |
+
padding: 5px 10px;
|
1357 |
+
.border-radius(4px);
|
1358 |
+
overflow: hidden;
|
1359 |
+
|
1360 |
+
span, span:after, &:before {
|
1361 |
+
display: block;
|
1362 |
+
position: absolute;
|
1363 |
+
top: 0;
|
1364 |
+
left: 0;
|
1365 |
+
height: 100%;
|
1366 |
+
content: attr(data-text);
|
1367 |
+
color: #FFF;
|
1368 |
+
white-space: nowrap;
|
1369 |
+
overflow: hidden;
|
1370 |
+
padding: 3px 10px;
|
1371 |
+
background: transparent;
|
1372 |
+
transition: width 0.5s;
|
1373 |
+
}
|
1374 |
+
&:before {
|
1375 |
+
content: '';
|
1376 |
+
padding: 0;
|
1377 |
+
}
|
1378 |
+
span {
|
1379 |
+
padding: 0;
|
1380 |
+
}
|
1381 |
+
span:after {
|
1382 |
+
margin: 3px 10px;
|
1383 |
+
padding: 0;
|
1384 |
+
width: 100%;
|
1385 |
+
}
|
1386 |
+
&.correct {
|
1387 |
+
background: #22b4ff;
|
1388 |
+
}
|
1389 |
+
&.wrong {
|
1390 |
+
background: #ff5425;
|
1391 |
+
}
|
1392 |
+
&.empty {
|
1393 |
+
color: #656D6D;
|
1394 |
+
}
|
1395 |
+
}
|
1396 |
+
}
|
1397 |
+
p.quiz-result-time {
|
1398 |
+
margin: 0 0 10px 0;
|
1399 |
+
}
|
1400 |
+
.quiz-grade {
|
1401 |
+
p {
|
1402 |
+
margin: 0 0 10px 0;
|
1403 |
+
span {
|
1404 |
+
font-weight: bold;
|
1405 |
+
&.passed {
|
1406 |
+
color: #22b4ff;
|
1407 |
}
|
1408 |
+
&.failed {
|
1409 |
+
color: #ff5425;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1410 |
}
|
1411 |
+
}
|
1412 |
}
|
1413 |
+
}
|
1414 |
}
|
1415 |
|
1416 |
.element-data-percent-loop (@i) when (@i <= 100) {
|
1417 |
+
.single-quiz .quiz-result-field[data-value="@{i}"]:before,
|
1418 |
+
.single-quiz .quiz-result-field[data-value="@{i}"] span,
|
1419 |
+
#quiz-countdown[data-value="@{i}"]:after {
|
1420 |
+
width: ~"@{i}%";
|
1421 |
+
}
|
1422 |
+
.element-data-percent-loop(@i + 1);
|
1423 |
}
|
1424 |
|
1425 |
.element-data-percent-loop (0);
|
1426 |
|
1427 |
/* QUESTION */
|
1428 |
.learn-press-question-options {
|
1429 |
+
list-style: none;
|
1430 |
+
margin: 0 0 20px 0;
|
1431 |
+
padding: 0;
|
1432 |
+
> li.answer-option {
|
1433 |
+
font-size: 16px;
|
1434 |
+
background: #F5F5F5;
|
1435 |
+
margin-bottom: 20px;
|
1436 |
+
position: relative;
|
1437 |
+
.border-radius(4px);
|
1438 |
+
> label {
|
1439 |
+
display: block;
|
1440 |
+
input[type="checkbox"], input[type="radio"] {
|
1441 |
+
border: 0;
|
1442 |
+
-webkit-appearance: initial;
|
1443 |
+
width: 30px;
|
1444 |
+
height: 30px;
|
1445 |
+
background: #fff;
|
1446 |
+
border-radius: 4px;
|
1447 |
+
outline: none;
|
1448 |
+
position: absolute;
|
1449 |
+
top: 10px;
|
1450 |
+
left: 15px;
|
1451 |
+
margin: 0;
|
1452 |
+
&:checked:before {
|
1453 |
+
content: '';
|
1454 |
+
border: 4px solid #00b9eb;
|
1455 |
+
display: inline-block;
|
1456 |
+
width: 10px;
|
1457 |
+
height: 15px;
|
1458 |
+
border-top: none;
|
1459 |
+
border-left: none;
|
1460 |
+
position: absolute;
|
1461 |
+
top: 3px;
|
1462 |
+
left: 8px;
|
1463 |
+
box-sizing: content-box;
|
1464 |
+
.transform(rotate(36deg));
|
1465 |
+
}
|
1466 |
+
&:checked + p {
|
1467 |
+
font-weight: bold;
|
1468 |
+
background: #00b9eb;
|
1469 |
+
color: #FFF;
|
1470 |
+
}
|
1471 |
+
}
|
1472 |
+
input[type="checkbox"][disabled], input[type="radio"][disabled] {
|
1473 |
+
opacity: 1;
|
1474 |
+
}
|
1475 |
+
input[type="radio"] {
|
1476 |
+
.border-radius(50%);
|
1477 |
+
}
|
1478 |
+
p {
|
1479 |
+
min-height: 50px;
|
1480 |
+
padding: 5px 20px 5px 60px;
|
1481 |
+
margin: 0;
|
1482 |
+
box-sizing: border-box;
|
1483 |
+
line-height: 1.5;
|
1484 |
+
&.single-lines {
|
1485 |
+
padding: 0 20px 0 60px;
|
1486 |
+
line-height: 50px; /* middle */
|
1487 |
+
}
|
1488 |
+
}
|
1489 |
+
}
|
1490 |
+
label p {
|
1491 |
+
.border-radius(4px);
|
1492 |
+
}
|
1493 |
+
&.answer-true label p {
|
1494 |
+
background: #00b9eb;
|
1495 |
+
color: #FFF;
|
1496 |
+
}
|
1497 |
+
&:hover label p {
|
1498 |
+
background: #D4D4D4;
|
1499 |
+
cursor: pointer;
|
1500 |
+
}
|
1501 |
+
&.user-answer-false {
|
1502 |
+
background: #F5F5F5;
|
1503 |
+
> label {
|
1504 |
+
input[type="checkbox"] + p, input[type="radio"] + p {
|
1505 |
+
text-decoration: line-through;
|
1506 |
+
color: #FF0000;
|
1507 |
+
background: #F5F5F5;
|
1508 |
+
}
|
1509 |
+
}
|
1510 |
+
}
|
1511 |
+
}
|
1512 |
+
.answer-option-result {
|
1513 |
+
label {
|
1514 |
+
p {
|
1515 |
+
display: inline-block;
|
1516 |
+
margin: 0;
|
1517 |
+
font-size: smaller;
|
1518 |
+
}
|
1519 |
+
input[disabled] {
|
1520 |
+
opacity: 1;
|
1521 |
+
}
|
|
|
1522 |
}
|
1523 |
+
}
|
1524 |
}
|
1525 |
|
1526 |
.learnpress-content {
|
1527 |
+
margin-bottom: 20px;
|
1528 |
}
|
1529 |
|
1530 |
.course-meta {
|
1531 |
+
margin-bottom: 20px;
|
1532 |
+
.course-origin-price {
|
1533 |
+
padding-right: 5px;
|
1534 |
+
text-decoration: line-through;
|
1535 |
+
}
|
1536 |
+
.course-price {
|
1537 |
+
font-weight: bold;
|
1538 |
+
}
|
1539 |
|
1540 |
}
|
1541 |
|
1542 |
/** MESSAGE */
|
1543 |
.learn-press-message {
|
1544 |
+
background: #F5F5F5;
|
1545 |
+
border-left: 5px solid #00A0D2;
|
1546 |
+
padding: 10px 20px 0px 20px;
|
1547 |
+
margin-bottom: 20px;
|
1548 |
+
overflow: hidden;
|
1549 |
+
button {
|
1550 |
+
float: right;
|
1551 |
+
}
|
1552 |
+
p {
|
1553 |
+
margin-bottom: 10px;
|
1554 |
+
}
|
1555 |
+
&:after {
|
1556 |
+
clear: both;
|
1557 |
+
content: '';
|
1558 |
+
display: block;
|
1559 |
+
}
|
1560 |
+
&.notice {
|
1561 |
+
border-left-color: #b3d20a;
|
1562 |
+
}
|
1563 |
+
&.error {
|
1564 |
+
border-left-color: #b81c23;
|
1565 |
+
}
|
1566 |
+
ul {
|
1567 |
+
list-style-type: none;
|
1568 |
+
}
|
1569 |
}
|
1570 |
|
1571 |
/**/
|
1572 |
.learn-press-checkout-comment,
|
1573 |
.learn-press-checkout-payment {
|
1574 |
+
margin-bottom: 20px;
|
1575 |
}
|
1576 |
|
1577 |
.learn-press-checkout-payment {
|
1578 |
+
.payment-methods {
|
1579 |
+
list-style: none;
|
1580 |
+
margin: 0;
|
1581 |
+
}
|
1582 |
}
|
1583 |
|
1584 |
/* COURSE QUIZ */
|
1585 |
.single-quiz {
|
1586 |
+
.quiz-questions-list {
|
1587 |
+
padding: 0;
|
1588 |
+
}
|
1589 |
+
.quiz-intro {
|
1590 |
+
list-style: none;
|
1591 |
+
padding: 10px 20px;
|
1592 |
+
background: #F5F5F5;
|
1593 |
+
margin: 0 0 20px 0;
|
1594 |
+
}
|
1595 |
+
h4 {
|
1596 |
+
margin-bottom: 10px;
|
1597 |
+
font-size: 18px;
|
1598 |
+
}
|
1599 |
}
|
1600 |
|
1601 |
.learn-press-tooltip {
|
1602 |
+
font-size: 20px;
|
1603 |
+
display: inline-block;
|
1604 |
+
vertical-align: middle;
|
1605 |
+
background: #0f4956;
|
1606 |
+
cursor: pointer;
|
1607 |
+
line-height: 1;
|
1608 |
+
width: 10px;
|
1609 |
+
height: 10px;
|
1610 |
+
border-radius: 50%;
|
1611 |
+
font-weight: 700;
|
1612 |
+
position: relative;
|
1613 |
+
&:before {
|
1614 |
+
content: "?";
|
1615 |
+
font-size: 7px;
|
1616 |
+
color: white;
|
1617 |
+
position: absolute;
|
1618 |
+
top: 2px;
|
1619 |
+
left: 3px;
|
1620 |
+
}
|
1621 |
}
|
1622 |
|
1623 |
/* Form field */
|
1624 |
.lp-form-field-wrap {
|
1625 |
+
list-style: none;
|
1626 |
+
margin: 0 0 20px 0;
|
1627 |
+
.lp-form-field {
|
1628 |
list-style: none;
|
1629 |
margin: 0 0 20px 0;
|
1630 |
+
.lp-form-field-label {
|
1631 |
+
display: block;
|
1632 |
+
font-weight: bold;
|
1633 |
+
margin-bottom: 5px;
|
1634 |
+
}
|
1635 |
+
.lp-form-field-input .description {
|
1636 |
+
font-size: smaller;
|
1637 |
+
font-style: italic;
|
1638 |
+
margin-top: 5px;
|
1639 |
+
}
|
1640 |
+
.lp-field-error-message {
|
1641 |
+
color: #FF0000;
|
|
|
|
|
|
|
|
|
1642 |
}
|
1643 |
+
}
|
1644 |
}
|
1645 |
|
1646 |
.learn-press-user-profile {
|
1647 |
+
#learn-press-user-info {
|
1648 |
+
overflow: hidden;
|
1649 |
+
.user-avatar {
|
1650 |
+
width: 150px;
|
1651 |
+
float: left;
|
1652 |
+
.avatar {
|
1653 |
+
border-radius: 0;
|
1654 |
+
width: 100%;
|
1655 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1656 |
}
|
1657 |
.user-basic-info {
|
1658 |
+
margin-left: 170px;
|
|
|
|
|
|
|
1659 |
}
|
1660 |
+
}
|
1661 |
+
.lp-edit-profile {
|
1662 |
+
&:after {
|
1663 |
+
.clearfix();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1664 |
}
|
1665 |
+
}
|
1666 |
+
.user-basic-info {
|
1667 |
+
p {
|
1668 |
+
margin-top: 10px;
|
|
|
|
|
|
|
|
|
1669 |
}
|
1670 |
+
|
1671 |
+
}
|
1672 |
+
.learn-press-tabs {
|
1673 |
+
list-style: none;
|
1674 |
+
margin: 30px 0 20px;
|
1675 |
+
border-bottom: 1px solid #DDD;
|
1676 |
+
& > li {
|
1677 |
+
float: left;
|
1678 |
+
list-style-type: none;
|
1679 |
+
margin-bottom: -1px;
|
1680 |
+
& > a {
|
1681 |
+
display: inline-block;
|
1682 |
+
padding: 10px 15px;
|
1683 |
+
outline: none;
|
1684 |
+
box-shadow: none;
|
1685 |
+
color: #686868;
|
1686 |
+
border-bottom: 1px solid #DDD;
|
1687 |
+
}
|
1688 |
+
&.current {
|
1689 |
+
border-bottom: 4px solid #007acc;
|
1690 |
+
a {
|
1691 |
+
color: #007acc;
|
1692 |
+
margin-bottom: -4px;
|
1693 |
+
}
|
1694 |
+
}
|
1695 |
+
}
|
1696 |
+
}
|
1697 |
+
.learn-press-subtabs {
|
1698 |
+
& > li {
|
1699 |
+
display: inline-block;
|
1700 |
+
margin-right: 10px;
|
1701 |
+
&.current {
|
1702 |
+
font-weight: bold;
|
1703 |
+
}
|
1704 |
}
|
1705 |
+
}
|
1706 |
+
.learn-press-subtab-content {
|
1707 |
+
display: none;
|
1708 |
+
margin-bottom: 20px;
|
1709 |
+
&.current {
|
1710 |
+
display: block;
|
1711 |
}
|
1712 |
+
li.course {
|
1713 |
+
h3 {
|
1714 |
+
padding-bottom: 10px;
|
1715 |
+
}
|
1716 |
+
}
|
1717 |
+
.profile-courses {
|
1718 |
+
list-style-type: none;
|
1719 |
+
.learn-press-course-results-progress {
|
1720 |
+
padding: 0 15px 15px 15px;
|
1721 |
+
margin: 0;
|
1722 |
+
}
|
1723 |
+
}
|
1724 |
+
}
|
1725 |
+
button.learn-press-course-wishlist {
|
1726 |
+
display: block;
|
1727 |
+
}
|
1728 |
|
1729 |
+
.user-profile-edit-form {
|
|
|
|
|
|
|
|
|
1730 |
|
1731 |
+
.info-field {
|
1732 |
+
margin-bottom: 20px;
|
1733 |
+
}
|
1734 |
|
1735 |
+
.description {
|
1736 |
+
margin-top: 5px;
|
1737 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1738 |
|
1739 |
+
.user-profile-picture {
|
1740 |
+
clear: both;
|
1741 |
+
.picture, .change-picture {
|
1742 |
+
display: inline-block;
|
1743 |
+
}
|
1744 |
+
.change-picture {
|
1745 |
+
.description {
|
1746 |
+
margin: 0 0 10px 0;
|
1747 |
}
|
1748 |
+
}
|
1749 |
+
img {
|
1750 |
+
float: left;
|
1751 |
+
margin-right: 20px;
|
1752 |
+
}
|
1753 |
+
&:after {
|
1754 |
+
.clearfix();
|
1755 |
+
}
|
1756 |
+
}
|
1757 |
|
1758 |
+
.profile-field-name {
|
1759 |
+
font-weight: bold;
|
1760 |
+
margin-bottom: 10px;
|
1761 |
+
}
|
1762 |
|
1763 |
+
.change-password {
|
1764 |
+
margin-bottom: 10px;
|
1765 |
+
}
|
|
|
|
|
|
|
|
|
|
|
1766 |
|
1767 |
+
#user_profile_password_form {
|
1768 |
+
input {
|
1769 |
+
margin-bottom: 20px;
|
1770 |
+
}
|
1771 |
+
.description {
|
1772 |
+
margin-top: -15px;
|
1773 |
+
}
|
1774 |
+
}
|
1775 |
+
|
1776 |
+
}
|
1777 |
+
.update-profile {
|
1778 |
+
border-top: 2px solid #DDD;
|
1779 |
+
padding-top: 20px;
|
1780 |
+
}
|
1781 |
+
.learn-press-subtab-content {
|
1782 |
+
display: block;
|
1783 |
+
}
|
1784 |
+
#lp-user-edit-avatar {
|
1785 |
+
.moxie-shim {
|
1786 |
+
display: none;
|
1787 |
+
}
|
1788 |
+
.lp-form-field-avatar {
|
1789 |
+
float: left;
|
1790 |
}
|
1791 |
+
#lp-avatar-actions {
|
1792 |
+
margin: 20px 0;
|
1793 |
+
}
|
1794 |
+
}
|
1795 |
+
.lp-avatar-preview {
|
1796 |
+
position: relative;
|
1797 |
+
float: left;
|
1798 |
+
background-color: #DDD;
|
1799 |
+
.profile-picture {
|
1800 |
+
float: left;
|
1801 |
+
margin-right: -100%;
|
1802 |
+
width: 100%;
|
1803 |
+
img {
|
1804 |
+
width: 100%;
|
1805 |
+
height: 100%;
|
1806 |
+
border-radius: 0;
|
1807 |
+
}
|
1808 |
+
&.profile-avatar-hidden {
|
1809 |
+
display: none;
|
1810 |
+
}
|
1811 |
+
}
|
1812 |
+
.lp-avatar-preview-actions {
|
1813 |
+
position: absolute;
|
1814 |
+
top: 50%;
|
1815 |
+
width: 100%;
|
1816 |
+
margin-top: -14px;
|
1817 |
+
text-align: center;
|
1818 |
+
a {
|
1819 |
+
text-decoration: none;
|
1820 |
+
font-size: 12px;
|
1821 |
+
background: #FFF;
|
1822 |
+
display: inline-block;
|
1823 |
+
box-shadow: none;
|
1824 |
+
padding: 5px 10px;
|
1825 |
+
}
|
1826 |
+
}
|
1827 |
+
.lp-avatar-upload-progress {
|
1828 |
+
position: absolute;
|
1829 |
+
height: 10px;
|
1830 |
+
background: #FFF;
|
1831 |
+
top: 50%;
|
1832 |
+
margin-top: -5px;
|
1833 |
+
left: 10px;
|
1834 |
+
right: 10px;
|
1835 |
+
display: none;
|
1836 |
+
.lp-avatar-upload-progress-value {
|
1837 |
+
width: 0;
|
1838 |
+
height: 10px;
|
1839 |
+
background: #563d7c;
|
1840 |
+
}
|
1841 |
+
}
|
1842 |
+
.lp-avatar-upload-error {
|
1843 |
+
display: none;
|
1844 |
+
}
|
1845 |
+
.lp-avatar-preview-actions {
|
1846 |
+
display: none;
|
1847 |
+
}
|
1848 |
+
&:hover {
|
1849 |
+
.lp-avatar-preview-actions {
|
1850 |
+
display: block;
|
1851 |
+
}
|
1852 |
}
|
1853 |
+
&.uploading, &.upload-error {
|
1854 |
+
.lp-avatar-preview-actions {
|
1855 |
+
display: none;
|
1856 |
+
}
|
1857 |
+
.lp-avatar-upload-progress {
|
1858 |
display: block;
|
1859 |
+
}
|
1860 |
+
&:before {
|
1861 |
+
position: absolute;
|
1862 |
+
width: 100%;
|
1863 |
+
height: 100%;
|
1864 |
+
background: #FFF;
|
1865 |
+
opacity: 0.4;
|
1866 |
+
content: '';
|
1867 |
+
}
|
1868 |
}
|
1869 |
+
&.upload-error {
|
1870 |
+
.lp-avatar-upload-error {
|
1871 |
+
display: block;
|
1872 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
1873 |
}
|
1874 |
+
&.croping {
|
1875 |
+
.lp-avatar-preview-actions {
|
1876 |
+
display: none;
|
1877 |
+
}
|
1878 |
+
.lp-avatar-crop-image {
|
1879 |
+
position: absolute;
|
1880 |
+
top: 0;
|
1881 |
+
left: 0;
|
1882 |
+
width: 100%;
|
1883 |
+
height: 100%;
|
1884 |
+
background: #000;
|
1885 |
+
overflow: hidden;
|
1886 |
+
img {
|
1887 |
+
max-width: inherit;
|
1888 |
+
cursor: move;
|
1889 |
+
}
|
1890 |
+
.lp-crop-controls {
|
1891 |
+
position: absolute;
|
1892 |
+
bottom: 0;
|
1893 |
+
width: 100%;
|
1894 |
+
height: 30px;
|
1895 |
+
.lp-zoom {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1896 |
position: absolute;
|
1897 |
height: 10px;
|
1898 |
+
bottom: 10px;
|
|
|
|
|
1899 |
left: 10px;
|
1900 |
+
right: 30px;
|
1901 |
+
background: #563d7a;
|
1902 |
+
.ui-slider {
|
1903 |
+
position: absolute;
|
1904 |
+
left: 0;
|
1905 |
+
right: 10px;
|
1906 |
+
height: 100%;
|
1907 |
+
.ui-slider-handle {
|
1908 |
+
display: inline-block;
|
1909 |
+
width: 10px;
|
1910 |
+
height: 14px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1911 |
background: #FFF;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1912 |
position: absolute;
|
1913 |
+
margin-top: -2px;
|
1914 |
+
border: 1px solid #563d7a;
|
1915 |
+
box-shadow: none;
|
1916 |
+
outline: none;
|
1917 |
+
cursor: ew-resize;
|
1918 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1919 |
}
|
1920 |
+
}
|
1921 |
+
.lp-cancel-upload {
|
1922 |
+
text-decoration: none;
|
1923 |
+
position: absolute;
|
1924 |
+
bottom: 5px;
|
1925 |
+
right: 5px;
|
1926 |
+
box-shadow: none;
|
1927 |
+
}
|
1928 |
+
&:before {
|
1929 |
+
position: absolute;
|
1930 |
+
height: 30px;
|
1931 |
+
width: 100%;
|
1932 |
+
content: '';
|
1933 |
+
background: #FFF;
|
1934 |
+
opacity: 0.4;
|
1935 |
+
}
|
1936 |
}
|
1937 |
+
}
|
|
|
|
|
1938 |
}
|
1939 |
+
&:after {
|
1940 |
+
.clearfix();
|
1941 |
+
}
|
1942 |
+
}
|
1943 |
}
|
1944 |
|
1945 |
body {
|
1946 |
+
&.profile-dragging {
|
1947 |
+
cursor: move !important;
|
1948 |
+
}
|
1949 |
+
&.profile-resizing {
|
1950 |
+
cursor: ew-resize !important;
|
1951 |
+
}
|
1952 |
}
|
1953 |
|
1954 |
.learn-press-pagination {
|
1955 |
+
text-align: center;
|
1956 |
+
ul {
|
1957 |
+
list-style: disc;
|
1958 |
+
& > li {
|
1959 |
+
display: inline-block;
|
1960 |
+
span {
|
1961 |
+
display: inline-block;
|
1962 |
+
padding: 0 10px;
|
1963 |
+
border: 1px solid #DDD;
|
1964 |
+
background-color: #F5F5F5;
|
1965 |
+
}
|
1966 |
+
a {
|
1967 |
+
display: inline-block;
|
1968 |
+
padding: 0 10px;
|
1969 |
+
border: 1px solid #DDD;
|
1970 |
+
background-color: #FFF;
|
1971 |
+
}
|
|
|
1972 |
}
|
1973 |
+
}
|
1974 |
}
|
1975 |
|
1976 |
.learn-press-become-teacher-form {
|
1977 |
+
ul {
|
1978 |
+
list-style: none;
|
1979 |
+
padding: 0;
|
1980 |
+
li {
|
1981 |
+
margin-bottom: 20px;
|
|
|
1982 |
}
|
1983 |
+
}
|
1984 |
}
|
1985 |
|
1986 |
/* jAlerts */
|
1987 |
#popup_container {
|
1988 |
+
background: #FFF;
|
1989 |
|
1990 |
+
#popup_title {
|
1991 |
+
padding: 10px 20px;
|
1992 |
+
background: #18B6C7;
|
1993 |
+
color: #FFF;
|
1994 |
+
font-size: 18px;
|
1995 |
+
margin: 0;
|
1996 |
+
}
|
1997 |
|
1998 |
+
#popup_content {
|
1999 |
+
padding: 20px;
|
2000 |
+
#popup_message {
|
2001 |
+
margin-bottom: 20px;
|
|
|
2002 |
}
|
2003 |
+
}
|
2004 |
|
2005 |
+
#popup_panel {
|
2006 |
+
text-align: center;
|
2007 |
+
}
|
2008 |
}
|
2009 |
|
2010 |
.learn-press-auto-redirect-next-item {
|
2011 |
+
display: none;
|
2012 |
|
2013 |
+
&.active {
|
2014 |
+
display: block;
|
2015 |
+
}
|
2016 |
}
|
2017 |
|
2018 |
.single-lp_course {
|
2019 |
+
.course-summary {
|
2020 |
+
.lp_course {
|
2021 |
+
.entry-footer {
|
2022 |
+
display: none;
|
2023 |
+
}
|
|
|
2024 |
}
|
2025 |
+
}
|
2026 |
+
.learn-press-message {
|
2027 |
+
position: relative;
|
2028 |
+
clear: both;
|
2029 |
+
margin-top: 25px;
|
2030 |
+
|
2031 |
+
.learn-press-countdown {
|
2032 |
+
display: inline-block;
|
2033 |
+
width: 1.5em;
|
2034 |
+
height: 1.5em;
|
2035 |
+
background: #cc540d;
|
2036 |
+
text-align: center;
|
2037 |
+
border-radius: 50%;
|
2038 |
+
line-height: 1.5em;
|
2039 |
+
font-size: 0.8em;
|
2040 |
+
color: #fff;
|
2041 |
+
}
|
2042 |
+
.learnpress-dismiss-notice {
|
2043 |
+
display: inline-block;
|
2044 |
+
position: absolute;
|
2045 |
+
right: 1em;
|
2046 |
+
top: 50%;
|
2047 |
+
-ms-transform: translateY(-50%);
|
2048 |
+
-webkit-transform: translateY(-50%);
|
2049 |
+
transform: translateY(-50%);
|
2050 |
+
cursor: pointer;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2051 |
|
2052 |
+
&:before {
|
2053 |
+
font-size: 1.2em;
|
2054 |
+
color: red;
|
2055 |
+
content: "\f153";
|
2056 |
+
font-family: dashicons;
|
2057 |
+
}
|
2058 |
}
|
2059 |
|
2060 |
+
}
|
2061 |
+
|
2062 |
}
|
2063 |
|
2064 |
/* tooltip */
|
2065 |
.learn-press-tooltip-bubble {
|
2066 |
+
position: absolute;
|
2067 |
+
background: rgba(26, 26, 26, 0.9);
|
2068 |
+
color: #ffffff;
|
2069 |
+
padding: 8px 10px;
|
2070 |
+
font-size: 12px;
|
2071 |
+
z-index: 9999999;
|
2072 |
+
line-height: 1;
|
2073 |
+
border-radius: 3px;
|
2074 |
}
|
2075 |
|
2076 |
/* fill in blank */
|
2077 |
input.blank-fill-correct {
|
2078 |
+
width: auto;
|
2079 |
}
|
2080 |
|
2081 |
body.content-item-only {
|
2082 |
+
background: #FFF;
|
2083 |
+
opacity: 0;
|
2084 |
+
.learn-press-content-item-only {
|
2085 |
+
position: fixed;
|
2086 |
+
z-index: 9999999;
|
2087 |
+
left: 0;
|
2088 |
+
top: 0;
|
2089 |
+
width: 100%;
|
2090 |
+
height: 100%;
|
2091 |
background: #FFF;
|
2092 |
+
overflow: auto;
|
2093 |
+
padding: 20px;
|
2094 |
+
margin: 0;
|
2095 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2096 |
|
2097 |
+
#learn-press-content-item {
|
2098 |
+
border: none;
|
2099 |
+
display: block;
|
2100 |
+
transition: max-width linear 0.25s;
|
2101 |
+
margin: 0 auto;
|
2102 |
+
max-width: 1000px;
|
2103 |
+
width: 90%;
|
2104 |
+
&.expand {
|
2105 |
+
max-width: 1200px;
|
|
|
2106 |
}
|
2107 |
+
}
|
2108 |
}
|
2109 |
|
2110 |
.lp-group-heading-title {
|
2111 |
+
&.toggle-off, &.toggle-on {
|
2112 |
+
cursor: pointer;
|
2113 |
+
.toggle-icon {
|
2114 |
+
display: inline-block;
|
2115 |
+
font-size: larger;
|
2116 |
+
line-height: 1;
|
2117 |
+
font-weight: bold;
|
2118 |
+
margin-left: 5px;
|
2119 |
+
&:before {
|
2120 |
+
content: '+';
|
2121 |
+
}
|
2122 |
+
}
|
2123 |
+
}
|
2124 |
+
&.toggle-on {
|
2125 |
+
.toggle-icon {
|
2126 |
+
&:before {
|
2127 |
+
content: '-';
|
2128 |
+
}
|
2129 |
+
}
|
2130 |
+
}
|
2131 |
}
|
2132 |
|
2133 |
/*
|
2164 |
}*/
|
2165 |
|
2166 |
.place-order-action {
|
2167 |
+
margin-top: 20px;
|
2168 |
}
|
2169 |
|
2170 |
.woocommerce {
|
2171 |
+
form .form-row {
|
2172 |
+
&.validate-email, &.validate-phone {
|
2173 |
+
width: 100% !important;
|
|
|
2174 |
}
|
2175 |
+
}
|
2176 |
|
2177 |
+
.checkout_coupon {
|
2178 |
+
.form-row-last {
|
2179 |
+
input.button {
|
2180 |
+
padding: 13px 10px !important;
|
2181 |
+
}
|
|
|
2182 |
}
|
2183 |
+
}
|
2184 |
}
|
2185 |
|
2186 |
.learn-press-search-course-form {
|
2187 |
+
margin-bottom: 20px;
|
2188 |
+
input.search-course-input[name="s"] {
|
2189 |
+
margin-right: -200px;
|
2190 |
+
width: 100%;
|
2191 |
+
}
|
2192 |
+
.search-course-button {
|
2193 |
+
vertical-align: middle;
|
2194 |
+
float: right;
|
2195 |
+
z-index: 10;
|
2196 |
+
position: relative;
|
2197 |
+
}
|
2198 |
}
|
2199 |
|
2200 |
.table-orders {
|
2201 |
+
.order-status {
|
2202 |
+
&.order-status-removed {
|
2203 |
+
color: #FF0000;
|
|
|
2204 |
}
|
2205 |
+
}
|
2206 |
}
|
2207 |
|
2208 |
/* Shortcode/Widgets */
|
2209 |
.widget_lp-widget-popular-courses, .widget_lp-widget-recent-courses, .widget_lp-widget-featured-courses {
|
2210 |
+
.course-meta-data {
|
2211 |
+
> div {
|
2212 |
+
display: inline-block;
|
2213 |
+
&:after {
|
2214 |
+
content: '/';
|
2215 |
+
}
|
2216 |
+
&:last-child:after {
|
2217 |
+
content: '';
|
2218 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2219 |
}
|
2220 |
+
|
2221 |
+
}
|
2222 |
+
.course-title {
|
2223 |
+
margin: 5px 0;
|
2224 |
+
}
|
2225 |
+
.course-entry {
|
2226 |
+
margin-bottom: 20px;
|
2227 |
+
border-bottom: 1px dashed #DDD;
|
2228 |
+
padding-bottom: 20px;
|
2229 |
+
}
|
2230 |
}
|
2231 |
|
2232 |
.edit-course-item-link {
|
2233 |
+
a {
|
2234 |
+
font-size: 14px;
|
2235 |
+
position: relative;
|
2236 |
+
padding-left: 25px;
|
2237 |
+
&:after {
|
2238 |
+
content: "\f464";
|
2239 |
+
font-family: Dashicons;
|
2240 |
+
font-size: 26px;
|
2241 |
+
position: absolute;
|
2242 |
+
bottom: 0;
|
2243 |
+
line-height: 1;
|
2244 |
+
left: 0;
|
|
|
2245 |
}
|
2246 |
+
}
|
2247 |
}
|
2248 |
|
2249 |
.course-item-navigation {
|
2250 |
+
border-top: 4px solid #333;
|
2251 |
+
padding-top: 10px;
|
2252 |
+
margin-top: 20px;
|
2253 |
+
.nav-links {
|
2254 |
+
.nav-link {
|
2255 |
+
opacity: 1;
|
2256 |
+
a {
|
2257 |
+
opacity: 1;
|
2258 |
+
.meta-nav {
|
2259 |
+
display: block;
|
2260 |
+
text-transform: uppercase;
|
2261 |
+
font-size: small;
|
2262 |
+
color: #b9b9b9;
|
2263 |
+
}
|
2264 |
+
.post-title {
|
2265 |
+
opacity: 1;
|
2266 |
+
}
|
2267 |
+
}
|
2268 |
+
&.nav-previous {
|
2269 |
+
float: left;
|
2270 |
+
}
|
2271 |
+
&.nav-next {
|
2272 |
+
float: right;
|
2273 |
+
text-align: right;
|
2274 |
+
}
|
2275 |
+
}
|
2276 |
+
&:after {
|
2277 |
+
clear: both;
|
2278 |
+
display: block;
|
2279 |
+
content: '';
|
|
|
2280 |
}
|
2281 |
+
}
|
2282 |
}
|
2283 |
|
2284 |
/* widget attributes */
|
2285 |
.lp-course-attributes {
|
2286 |
+
list-style: none;
|
2287 |
+
margin-left: 0;
|
2288 |
+
li {
|
2289 |
+
list-style: none;
|
2290 |
+
margin-bottom: 10px;
|
2291 |
+
}
|
2292 |
+
.lp-course-attribute-values {
|
2293 |
list-style: none;
|
2294 |
margin-left: 0;
|
2295 |
+
}
|
2296 |
+
&.course-attributes {
|
|
|
|
|
2297 |
.lp-course-attribute-values {
|
2298 |
+
li {
|
2299 |
+
display: inline-block;
|
2300 |
+
padding: 3px 8px;
|
2301 |
+
background: #F0F0F0;
|
2302 |
+
border-radius: 4px;
|
2303 |
+
margin: 0 5px 5px 0;
|
2304 |
+
}
|
2305 |
+
}
|
2306 |
+
}
|
2307 |
+
&.course-filters {
|
2308 |
+
.lp-course-attribute-values {
|
2309 |
+
li {
|
2310 |
+
a:before {
|
2311 |
+
font-family: dashicons;
|
2312 |
+
border-radius: 50%;
|
2313 |
+
background: #DDD;
|
2314 |
+
display: inline-block;
|
2315 |
+
width: 16px;
|
2316 |
+
height: 16px;
|
2317 |
+
text-align: center;
|
2318 |
+
line-height: 16px;
|
2319 |
+
color: #FFF;
|
2320 |
+
font-size: 16px;
|
2321 |
+
vertical-align: middle;
|
2322 |
+
margin-right: 5px;
|
2323 |
+
content: '';
|
2324 |
+
}
|
2325 |
+
&:hover a:before {
|
2326 |
+
background: #4acfff;
|
2327 |
+
}
|
2328 |
+
}
|
2329 |
+
li.active {
|
2330 |
+
a:before {
|
2331 |
+
content: "\f147";
|
2332 |
+
background: #4acfff;
|
2333 |
+
}
|
2334 |
+
&:hover a:before {
|
2335 |
+
content: "\f335";
|
2336 |
+
background: #a20000;
|
2337 |
+
}
|
2338 |
+
}
|
2339 |
+
}
|
2340 |
+
}
|
|
|
|
|
|
|
|
|
|
|
2341 |
}
|
2342 |
|
2343 |
@-moz-keyframes spin-12 {
|
2344 |
+
0% {
|
2345 |
+
-moz-transform: rotate(0deg) translate(0px);
|
2346 |
+
}
|
2347 |
+
100% {
|
2348 |
+
-moz-transform: rotate(360deg) translate(0px);
|
2349 |
+
}
|
2350 |
}
|
2351 |
|
2352 |
@-webkit-keyframes spin-12 {
|
2353 |
+
0% {
|
2354 |
+
-webkit-transform: rotate(0deg) translate(0px);
|
2355 |
+
}
|
2356 |
+
100% {
|
2357 |
+
-webkit-transform: rotate(360deg) translate(0px);
|
2358 |
+
}
|
2359 |
}
|
2360 |
|
2361 |
@keyframes spin-12 {
|
2362 |
+
0% {
|
2363 |
+
-webkit-transform: rotate(0deg) translate(0px);
|
2364 |
+
transform: rotate(0deg) translate(0px);
|
2365 |
+
}
|
2366 |
+
100% {
|
2367 |
+
-webkit-transform: rotate(360deg) translate(0px);
|
2368 |
+
transform: rotate(360deg) translate(0px);
|
2369 |
+
}
|
2370 |
}
|
2371 |
|
2372 |
@-moz-keyframes spin-13 {
|
2373 |
+
100% {
|
2374 |
+
-moz-transform: rotate(0deg) translate(0px);
|
2375 |
+
}
|
2376 |
+
0% {
|
2377 |
+
-moz-transform: rotate(360deg) translate(0px);
|
2378 |
+
}
|
2379 |
}
|
2380 |
|
2381 |
@-webkit-keyframes spin-13 {
|
2382 |
+
0% {
|
2383 |
+
-webkit-transform: rotate(0deg) translate(0px);
|
2384 |
+
}
|
2385 |
+
100% {
|
2386 |
+
-webkit-transform: rotate(360deg) translate(0px);
|
2387 |
+
}
|
2388 |
}
|
2389 |
|
2390 |
@keyframes spin-13 {
|
2391 |
+
100% {
|
2392 |
+
-webkit-transform: rotate(0deg) translate(0px);
|
2393 |
+
transform: rotate(0deg) translate(0px);
|
2394 |
+
}
|
2395 |
+
0% {
|
2396 |
+
-webkit-transform: rotate(360deg) translate(0px);
|
2397 |
+
transform: rotate(360deg) translate(0px);
|
2398 |
+
}
|
2399 |
}
|
2400 |
|
2401 |
@media screen and (max-width: 1250px) {
|
2402 |
+
.single-lp_course .learn-press-course-results-progress {
|
2403 |
+
.items-progress, .course-progress {
|
2404 |
+
float: none;
|
2405 |
+
width: 100%;
|
|
|
|
|
|
|
|
|
2406 |
}
|
2407 |
+
.items-progress {
|
2408 |
+
margin-bottom: 50px;
|
2409 |
+
}
|
2410 |
+
}
|
2411 |
}
|
2412 |
|
2413 |
@media screen and (max-width: 768px) {
|
2414 |
+
#learn-press-block-content {
|
2415 |
+
.learn-press-block-content-mixin(60px);
|
2416 |
+
}
|
2417 |
|
2418 |
+
.learn-press-course-results-progress {
|
2419 |
+
.items-progress, .course-progress {
|
2420 |
+
width: 100%;
|
2421 |
+
margin-right: 0;
|
|
|
2422 |
}
|
2423 |
+
}
|
2424 |
|
2425 |
}
|
2426 |
|
2427 |
@media (min-width: 992px) {
|
2428 |
+
.learn-press-courses {
|
2429 |
+
li.course {
|
2430 |
+
&:nth-child(4n+1) {
|
2431 |
+
clear: left;
|
2432 |
+
}
|
|
|
2433 |
}
|
2434 |
+
}
|
2435 |
}
|
2436 |
|
2437 |
@media (max-width: 992px) {
|
2438 |
+
.learn-press-courses {
|
2439 |
+
margin: 0;
|
2440 |
+
}
|
2441 |
}
|
2442 |
|
2443 |
@media (max-width: 992px) and (min-width: 600px ) {
|
2444 |
|
2445 |
+
.learn-press-courses {
|
2446 |
+
li.course {
|
2447 |
+
width: 31.33%;
|
2448 |
+
margin: 0 2% 30px 0;
|
2449 |
+
/* padding: 0 20px; */
|
2450 |
+
&:nth-child(3n+1) {
|
2451 |
+
clear: left;
|
2452 |
+
margin-left: 0;
|
2453 |
+
}
|
|
|
2454 |
}
|
2455 |
+
}
|
2456 |
|
2457 |
}
|
2458 |
|
2459 |
@media (max-width: 600px) and (min-width: 400px ) {
|
2460 |
|
2461 |
+
.learn-press-courses {
|
2462 |
+
li.course {
|
2463 |
+
width: 48%;
|
2464 |
+
margin: 0 2% 30px 0;
|
2465 |
+
/* padding: 0 20px; */
|
2466 |
+
&:nth-child(2n+1) {
|
2467 |
+
clear: left;
|
2468 |
+
margin-left: 0;
|
2469 |
+
}
|
|
|
2470 |
}
|
2471 |
+
}
|
2472 |
|
2473 |
}
|
2474 |
|
2485 |
*/
|
2486 |
@media (max-width: 400px) {
|
2487 |
|
2488 |
+
.learn-press-courses {
|
2489 |
+
li.course {
|
2490 |
+
width: 100%;
|
2491 |
+
margin: 0 0 30px 0;
|
2492 |
+
clear: left;
|
|
|
2493 |
}
|
2494 |
+
}
|
2495 |
|
2496 |
}
|
2497 |
|
2498 |
@media (max-width: 350px) {
|
2499 |
+
#course-curriculum-popup #popup-sidebar {
|
2500 |
+
width: 100%;
|
2501 |
+
}
|
2502 |
}
|
2503 |
|
2504 |
/* full width with twentysixteen theme */
|
2505 |
@media screen and (min-width: 61.5625em) {
|
2506 |
+
body.single-lp_course {
|
2507 |
+
article.lp_course {
|
2508 |
+
.entry-content {
|
2509 |
+
width: 100%;
|
2510 |
+
}
|
2511 |
+
.entry-footer {
|
2512 |
+
display: none;
|
2513 |
+
}
|
|
|
2514 |
}
|
2515 |
+
}
|
2516 |
}
|
2517 |
|
2518 |
/*
|
inc/admin/class-lp-admin-ajax.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
if ( !defined( 'ABSPATH' ) ) {
|
4 |
exit; // Exit if accessed directly
|
5 |
}
|
6 |
-
if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
7 |
|
8 |
/**
|
9 |
* Class LP_Admin_Ajax
|
@@ -55,8 +55,8 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
55 |
'duplicate_question' => false,
|
56 |
// Remove Notice
|
57 |
'remove_notice_popup' => false,
|
58 |
-
|
59 |
-
|
60 |
);
|
61 |
foreach ( $ajaxEvents as $ajaxEvent => $nopriv ) {
|
62 |
add_action( 'wp_ajax_learnpress_' . $ajaxEvent, array( __CLASS__, $ajaxEvent ) );
|
@@ -77,7 +77,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
77 |
}
|
78 |
|
79 |
public static function load_chart() {
|
80 |
-
if ( !class_exists( '' ) ) {
|
81 |
require_once LP_PLUGIN_PATH . '/inc/admin/sub-menus/statistics.php';
|
82 |
}
|
83 |
LP_Admin_Submenu_Statistic::instance()->load_chart();
|
@@ -86,13 +86,13 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
86 |
public static function search_course() {
|
87 |
global $wpdb;
|
88 |
$sql = "SELECT ID id, post_title text "
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
if ( current_user_can( LP_TEACHER_ROLE ) ) {
|
94 |
$user_id = learn_press_get_current_user_id();
|
95 |
-
$sql
|
96 |
}
|
97 |
$s = '%' . filter_input( INPUT_GET, 'q' ) . '%';
|
98 |
$query = $wpdb->prepare( $sql, $s );
|
@@ -105,10 +105,10 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
105 |
public static function search_course_category() {
|
106 |
global $wpdb;
|
107 |
$sql = "SELECT `t`.`term_id` as `id`, "
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
$s = '%' . filter_input( INPUT_GET, 'q' ) . '%';
|
113 |
$query = $wpdb->prepare( $sql, $s );
|
114 |
$items = $wpdb->get_results( $query );
|
@@ -138,7 +138,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
138 |
}
|
139 |
|
140 |
public static function search_users() {
|
141 |
-
if ( !current_user_can( 'edit_lp_orders' ) ) {
|
142 |
die( - 1 );
|
143 |
}
|
144 |
|
@@ -163,7 +163,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
163 |
|
164 |
$customers = $customers_query->get_results();
|
165 |
|
166 |
-
if ( !empty( $customers ) ) {
|
167 |
foreach ( $customers as $customer ) {
|
168 |
$found_customers[] = array(
|
169 |
'label' => $customer->display_name . ' (#' . $customer->ID . ' – ' . sanitize_email( $customer->user_email ) . ')',
|
@@ -186,7 +186,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
186 |
$term = like_escape( $term );
|
187 |
}
|
188 |
|
189 |
-
$query->query_from
|
190 |
$query->query_where .= $wpdb->prepare( " OR user_name.meta_value LIKE %s ", '%' . $term . '%' );
|
191 |
}
|
192 |
|
@@ -230,7 +230,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
230 |
* @param $exclude
|
231 |
* @param $type
|
232 |
* @param string $context
|
233 |
-
* @param null
|
234 |
*
|
235 |
* @return array
|
236 |
*/
|
@@ -274,11 +274,11 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
274 |
public static function add_item_to_section() {
|
275 |
global $wpdb;
|
276 |
$section = learn_press_get_request( 'section' );
|
277 |
-
if (
|
278 |
wp_die( __( 'Error', 'learnpress' ) );
|
279 |
}
|
280 |
$items = (array) learn_press_get_request( 'item' );
|
281 |
-
if (
|
282 |
$max_order = $wpdb->get_var( $wpdb->prepare( "SELECT max() FROM {$wpdb}learnpress_section_items WHERE section_id = %d", $section ) );
|
283 |
foreach ( $items as $item ) {
|
284 |
|
@@ -289,100 +289,75 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
289 |
public static function modal_search_items() {
|
290 |
global $wpdb;
|
291 |
|
292 |
-
$user
|
293 |
-
$term
|
294 |
-
$type
|
295 |
-
$context
|
296 |
-
$context_id
|
297 |
-
$current_items_in_order =
|
298 |
-
$current_items
|
299 |
|
300 |
-
|
301 |
-
|
302 |
-
$sql = "SELECT meta_value
|
303 |
FROM {$wpdb->prefix}learnpress_order_itemmeta
|
304 |
WHERE meta_key = '_course_id'
|
305 |
AND learnpress_order_item_id = $item";
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
|
310 |
-
$exclude
|
311 |
|
312 |
-
if ( !empty( $_GET['exclude'] ) ) {
|
313 |
$exclude = array_map( 'intval', $_GET['exclude'] );
|
314 |
}
|
|
|
|
|
|
|
315 |
$exclude = array_unique( (array) apply_filters( 'learn_press_modal_search_items_exclude', $exclude, $type, $context, $context_id ) );
|
316 |
$exclude = array_map( 'intval', $exclude );
|
317 |
-
|
|
|
318 |
'post_type' => array( $type ),
|
319 |
'posts_per_page' => - 1,
|
320 |
'post_status' => 'publish',
|
321 |
'order' => 'ASC',
|
322 |
'orderby' => 'parent title',
|
|
|
323 |
'exclude' => $exclude
|
324 |
);
|
325 |
-
if ( !$user->is_admin() ) {
|
326 |
-
$args['author'] = $user->id;
|
327 |
-
}
|
328 |
|
329 |
-
if ( $context && $context_id ) {
|
330 |
-
switch ( $context ) {
|
331 |
-
/**
|
332 |
-
* If is search lesson/quiz for course only search the items of course's author
|
333 |
-
*/
|
334 |
-
case 'course-items':
|
335 |
-
if ( get_post_type( $context_id ) == 'lp_course' ) {
|
336 |
-
$post_author = get_post_field( 'post_author', $context_id );
|
337 |
-
$authors = array($post_author);
|
338 |
-
if($post_author != $user->id ){
|
339 |
-
$authors[] =$user->id;
|
340 |
-
}
|
341 |
-
$args['author'] = $authors;
|
342 |
-
}
|
343 |
-
break;
|
344 |
-
/**
|
345 |
-
* If is search question for quiz only search the items of course's author
|
346 |
-
*/
|
347 |
-
case 'quiz-items':
|
348 |
-
if ( get_post_type( $context_id ) == 'lp_quiz' ) {
|
349 |
-
$post_author = get_post_field( 'post_author', $context_id );
|
350 |
-
$authors = array($post_author);
|
351 |
-
if($post_author != $user->id ){
|
352 |
-
$authors[] =$user->id;
|
353 |
-
}
|
354 |
-
$args['author'] = $authors;
|
355 |
-
//$args['author'] = get_post_field( 'post_author', $context_id );
|
356 |
-
}
|
357 |
-
break;
|
358 |
-
}
|
359 |
-
}
|
360 |
if ( $term ) {
|
361 |
$args['s'] = $term;
|
362 |
}
|
363 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
364 |
$posts = get_posts( $args );
|
365 |
$found_items = array();
|
366 |
|
367 |
-
if ( !empty( $posts ) ) {
|
368 |
-
if ($current_items_in_order) {
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
}
|
383 |
|
384 |
|
385 |
-
|
386 |
ob_start();
|
387 |
if ( $found_items ) {
|
388 |
foreach ( $found_items as $id => $item ) {
|
@@ -419,7 +394,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
419 |
global $wpdb;
|
420 |
$quiz_id = learn_press_get_request( 'quiz_id' );
|
421 |
$question_id = learn_press_get_request( 'question_id' );
|
422 |
-
if ( !wp_verify_nonce( learn_press_get_request( 'remove-nonce' ), 'remove_quiz_question' ) ) {
|
423 |
wp_die( __( 'Error', 'learnpress' ) );
|
424 |
}
|
425 |
$query = $wpdb->prepare( "
|
@@ -433,10 +408,10 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
433 |
$user_id = get_current_user_id();
|
434 |
$type = get_post_meta( $question_id, '_lp_type', true );
|
435 |
if ( $type ) {
|
436 |
-
$question_types
|
437 |
-
$question_types
|
438 |
-
$counter
|
439 |
-
$question_types[$type] = $counter ? $counter -- : 0;
|
440 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
441 |
}
|
442 |
// end trigger change user memorize question types
|
@@ -448,13 +423,13 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
448 |
|
449 |
$quiz_id = learn_press_get_request( 'quiz_id' );
|
450 |
$user = learn_press_get_current_user();
|
451 |
-
if (
|
452 |
wp_die( __( 'You have no permission to access this section.', 'learnpress' ) );
|
453 |
}
|
454 |
$term = (string) ( stripslashes( learn_press_get_request( 'term' ) ) );
|
455 |
$exclude = array();
|
456 |
|
457 |
-
if ( !empty( $_GET['exclude'] ) ) {
|
458 |
$exclude = array_map( 'intval', $_GET['exclude'] );
|
459 |
}
|
460 |
|
@@ -478,7 +453,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
478 |
'orderby' => 'parent title',
|
479 |
'exclude' => $exclude
|
480 |
);
|
481 |
-
if (
|
482 |
$args['author'] = $user->id;
|
483 |
}
|
484 |
if ( $term ) {
|
@@ -487,9 +462,9 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
487 |
$posts = get_posts( $args );
|
488 |
$found_questions = array();
|
489 |
|
490 |
-
if ( !empty( $posts ) ) {
|
491 |
foreach ( $posts as $post ) {
|
492 |
-
$found_questions[$post->ID] = !empty( $post->post_title ) ? $post->post_title : sprintf( '(%s)', __( 'Untitled', 'learnpress' ) );
|
493 |
}
|
494 |
}
|
495 |
|
@@ -531,26 +506,26 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
531 |
*/
|
532 |
public static function remove_order_item() {
|
533 |
// ensure that user has permission
|
534 |
-
if ( !current_user_can( 'edit_lp_orders' ) ) {
|
535 |
die( __( 'Permission denied', 'learnpress' ) );
|
536 |
}
|
537 |
|
538 |
// verify nonce
|
539 |
$nonce = learn_press_get_request( 'remove_nonce' );
|
540 |
-
if ( !wp_verify_nonce( $nonce, 'remove_order_item' ) ) {
|
541 |
die( __( 'Check nonce failed', 'learnpress' ) );
|
542 |
}
|
543 |
|
544 |
// validate order
|
545 |
$order_id = learn_press_get_request( 'order_id' );
|
546 |
-
if ( !is_numeric( $order_id ) || get_post_type( $order_id ) != 'lp_order' ) {
|
547 |
die( __( 'Order invalid', 'learnpress' ) );
|
548 |
}
|
549 |
|
550 |
// validate item
|
551 |
$item_id = learn_press_get_request( 'item_id' );
|
552 |
$post = get_post( learn_press_get_order_item_meta( $item_id, '_course_id' ) );
|
553 |
-
if (
|
554 |
die( __( 'Course invalid', 'learnpress' ) );
|
555 |
}
|
556 |
|
@@ -576,7 +551,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
576 |
public static function add_item_to_order() {
|
577 |
|
578 |
// ensure that user has permission
|
579 |
-
if ( !current_user_can( 'edit_lp_orders' ) ) {
|
580 |
die( __( 'Permission denied', 'learnpress' ) );
|
581 |
}
|
582 |
|
@@ -588,7 +563,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
588 |
|
589 |
// validate order
|
590 |
$order_id = learn_press_get_request( 'order_id' );
|
591 |
-
if ( !is_numeric( $order_id ) || get_post_type( $order_id ) != 'lp_order' ) {
|
592 |
die( __( 'Order invalid', 'learnpress' ) );
|
593 |
}
|
594 |
|
@@ -602,7 +577,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
602 |
// exit(''.__LINE__);
|
603 |
foreach ( $item_ids as $item_id ):
|
604 |
$post = get_post( $item_id );
|
605 |
-
if (
|
606 |
continue;
|
607 |
// die( __( 'Course invalid', 'learnpress' ) );
|
608 |
}
|
@@ -656,7 +631,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
656 |
|
657 |
public static function search_courses() {
|
658 |
$nonce = learn_press_get_request( 'nonce' );
|
659 |
-
if ( !wp_verify_nonce( $nonce, 'search_item_term' ) ) {
|
660 |
LP_Debug::exception( __( 'Verify nonce failed', 'learnpress' ) );
|
661 |
}
|
662 |
|
@@ -670,9 +645,9 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
670 |
)
|
671 |
);
|
672 |
$found_courses = array();
|
673 |
-
if ( !empty( $posts ) ) {
|
674 |
foreach ( $posts as $post ) {
|
675 |
-
$found_courses[$post] = array(
|
676 |
'title' => get_the_title( $post ),
|
677 |
'permalink' => get_the_permalink( $post )
|
678 |
);
|
@@ -785,7 +760,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
785 |
* Create a new page with the title passed via $_REQUEST
|
786 |
*/
|
787 |
public static function create_page() {
|
788 |
-
$page_name = !empty( $_REQUEST['page_name'] ) ? $_REQUEST['page_name'] : '';
|
789 |
$response = array();
|
790 |
if ( $page_name ) {
|
791 |
$args = array(
|
@@ -801,7 +776,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
801 |
preg_match_all( '!value=\"([0-9]+)\"!', $html, $matches );
|
802 |
$response['positions'] = $matches[1];
|
803 |
$response['html'] = '<a href="' . get_edit_post_link( $page_id ) . '" target="_blank">' . __( 'Edit Page', 'learnpress' ) . '</a> ';
|
804 |
-
$response['html']
|
805 |
} else {
|
806 |
$response['error'] = __( 'Error! Create page failed. Please try again!', 'learnpress' );
|
807 |
}
|
@@ -824,7 +799,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
824 |
);
|
825 |
$post = get_post( $quiz_id );
|
826 |
setup_postdata( $post );
|
827 |
-
if (
|
828 |
$args_item = array(
|
829 |
'post_title' => $name,
|
830 |
'post_type' => LP_QUESTION_CPT,
|
@@ -855,10 +830,10 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
855 |
$response['html'] = ob_get_clean();
|
856 |
|
857 |
// trigger change user memorize question types
|
858 |
-
$question_types
|
859 |
-
$question_types
|
860 |
-
$type
|
861 |
-
$question_types[$type] = !empty ( $question_types[$type] ) ? absint( $question_types[$type] ) + 1 : 1;
|
862 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
863 |
// end trigger change user memorize question types
|
864 |
}
|
@@ -875,10 +850,10 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
875 |
$question = LP_Question_Factory::get_question( $question_id, array( 'type' => $to ) );
|
876 |
|
877 |
// trigger change user memorize question types
|
878 |
-
$user_id
|
879 |
-
$question_types
|
880 |
-
$question_types[$from] = !empty( $question_types[$from] ) && $question_types[$from] ? absint( $question_types[$from] ) - 1 : 0;
|
881 |
-
$question_types[$to] = !empty( $question_types[$to] ) && $question_types[$to] ? absint( $question_types[$to] ) + 1 : 1;
|
882 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
883 |
// end trigger change user memorize question types
|
884 |
if ( 'auto-draft' === $question->post->post_status ) {
|
@@ -903,7 +878,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
903 |
* Install sample data or dismiss the notice depending on user's option
|
904 |
*/
|
905 |
public static function install_sample_data() {
|
906 |
-
$yes = !empty( $_REQUEST['yes'] ) ? $_REQUEST['yes'] : '';
|
907 |
$response = array( 'result' => 'fail' );
|
908 |
$retry_button = sprintf( '<a href="" class="button yes" data-action="yes">%s</a>', __( 'Try again!', 'learnpress' ) );
|
909 |
$dismiss_button = sprintf( '<a href="" class="button disabled no" data-action="no">%s</a>', __( 'Cancel', 'learnpress' ) );
|
@@ -954,7 +929,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
954 |
include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
|
955 |
$response = array( 'addons' => array() );
|
956 |
|
957 |
-
if ( !current_user_can( 'activate_plugins' ) ) {
|
958 |
$response['error'] = __( 'You do not have sufficient permissions to deactivate plugins for this site.', 'learnpress' );
|
959 |
} else {
|
960 |
|
@@ -962,7 +937,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
962 |
|
963 |
if ( $add_ons ) {
|
964 |
foreach ( $add_ons as $slug ) {
|
965 |
-
$response['addons'][$slug] = learn_press_install_and_active_add_on( $slug );
|
966 |
}
|
967 |
}
|
968 |
}
|
@@ -975,27 +950,27 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
975 |
public static function bundle_activate_add_on() {
|
976 |
$response = array();
|
977 |
include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
|
978 |
-
if ( !current_user_can( 'activate_plugins' ) ) {
|
979 |
$response['error'] = __( 'You do not have sufficient permissions to deactivate plugins for this site.', 'learnpress' );
|
980 |
} else {
|
981 |
-
$slug
|
982 |
-
$response[$slug] = learn_press_install_and_active_add_on( $slug );
|
983 |
}
|
984 |
learn_press_send_json( $response );
|
985 |
}
|
986 |
|
987 |
public static function plugin_install() {
|
988 |
-
$plugin_name = !empty( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
|
989 |
$response = learn_press_install_add_on( $plugin_name );
|
990 |
learn_press_send_json( $response );
|
991 |
die();
|
992 |
}
|
993 |
|
994 |
public static function update_add_on_status() {
|
995 |
-
$plugin = !empty( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
|
996 |
-
$t = !empty( $_REQUEST['t'] ) ? $_REQUEST['t'] : '';
|
997 |
$response = array();
|
998 |
-
if ( !current_user_can( 'activate_plugins' ) ) {
|
999 |
$response['error'] = __( 'You do not have sufficient permissions to deactivate plugins for this site.', 'learnpress' );
|
1000 |
}
|
1001 |
if ( $plugin && $t ) {
|
@@ -1016,7 +991,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1016 |
* Output the image to browser with text and params passed via $_GET
|
1017 |
*/
|
1018 |
public static function dummy_image() {
|
1019 |
-
$text = !empty( $_REQUEST['text'] ) ? $_REQUEST['text'] : '';
|
1020 |
learn_press_text_image( $text, $_GET );
|
1021 |
die();
|
1022 |
}
|
@@ -1025,10 +1000,12 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1025 |
* Get edit|view link of a page
|
1026 |
*/
|
1027 |
public static function get_page_permalink() {
|
1028 |
-
$page_id = !empty( $_REQUEST['page_id'] ) ? $_REQUEST['page_id'] : '';
|
1029 |
?>
|
1030 |
-
|
1031 |
-
|
|
|
|
|
1032 |
<?php
|
1033 |
die();
|
1034 |
}
|
@@ -1038,8 +1015,8 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1038 |
*
|
1039 |
*/
|
1040 |
public function custom_stats() {
|
1041 |
-
$from = !empty( $_REQUEST['from'] ) ? $_REQUEST['from'] : 0;
|
1042 |
-
$to = !empty( $_REQUEST['to'] ) ? $_REQUEST['to'] : 0;
|
1043 |
$date_diff = strtotime( $to ) - strtotime( $from );
|
1044 |
if ( $date_diff <= 0 || $from == 0 || $to == 0 ) {
|
1045 |
die();
|
@@ -1120,12 +1097,12 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1120 |
}
|
1121 |
|
1122 |
public static function duplicate_course() {
|
1123 |
-
if ( empty( $_POST['course_id'] ) || empty( $_POST['_nonce'] ) || !wp_verify_nonce( $_POST['_nonce'], 'lp-duplicate-course' ) ) {
|
1124 |
return;
|
1125 |
}
|
1126 |
global $wpdb;
|
1127 |
$course_id = absint( $_POST['course_id'] );
|
1128 |
-
$force = !empty( $_POST['content'] ) && $_POST['content'] ? true : false;
|
1129 |
|
1130 |
$results = array(
|
1131 |
'redirect' => admin_url( 'edit.php?post_type=' . LP_COURSE_CPT )
|
@@ -1143,7 +1120,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1143 |
}
|
1144 |
|
1145 |
public static function duplicate_question() {
|
1146 |
-
if ( empty( $_POST['_nonce'] ) || !wp_verify_nonce( $_POST['_nonce'], 'duplicate-question' ) ) {
|
1147 |
return;
|
1148 |
}
|
1149 |
global $wpdb;
|
@@ -1152,7 +1129,7 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1152 |
$user_id = learn_press_get_current_user_id();
|
1153 |
|
1154 |
$new_question_id = learn_press_duplicate_question( $question_id, $quiz_id );
|
1155 |
-
if ( !is_wp_error( $new_question_id ) ) {
|
1156 |
ob_start();
|
1157 |
$question = LP_Question_Factory::get_question( $new_question_id );
|
1158 |
$post = get_post( $quiz_id );
|
@@ -1162,10 +1139,10 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1162 |
$response['html'] = ob_get_clean();
|
1163 |
|
1164 |
// trigger change user memorize question types
|
1165 |
-
$question_types
|
1166 |
-
$question_types
|
1167 |
-
$type
|
1168 |
-
$question_types[$type] = !empty ( $question_types[$type] ) ? absint( $question_types[$type] ) + 1 : 1;
|
1169 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
1170 |
// end trigger change user memorize question types
|
1171 |
learn_press_send_json( $response );
|
@@ -1178,8 +1155,8 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1178 |
public static function remove_notice_popup() {
|
1179 |
|
1180 |
if ( isset( $_POST['action'] ) && $_POST['action'] === 'learnpress_remove_notice_popup'
|
1181 |
-
|
1182 |
-
|
1183 |
) {
|
1184 |
|
1185 |
$slug = 'learnpress_notice_' . $_POST['slug'] . '_' . $_POST['user'];
|
@@ -1191,22 +1168,22 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1191 |
|
1192 |
}
|
1193 |
|
1194 |
-
public static function update_order_status
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
|
1204 |
-
|
1205 |
|
1206 |
-
|
1207 |
|
1208 |
-
|
1209 |
-
|
1210 |
|
1211 |
}
|
1212 |
}
|
1 |
<?php
|
2 |
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
exit; // Exit if accessed directly
|
5 |
}
|
6 |
+
if ( ! class_exists( 'LP_Admin_Ajax' ) ) {
|
7 |
|
8 |
/**
|
9 |
* Class LP_Admin_Ajax
|
55 |
'duplicate_question' => false,
|
56 |
// Remove Notice
|
57 |
'remove_notice_popup' => false,
|
58 |
+
// Update order status
|
59 |
+
'update_order_status' => false,
|
60 |
);
|
61 |
foreach ( $ajaxEvents as $ajaxEvent => $nopriv ) {
|
62 |
add_action( 'wp_ajax_learnpress_' . $ajaxEvent, array( __CLASS__, $ajaxEvent ) );
|
77 |
}
|
78 |
|
79 |
public static function load_chart() {
|
80 |
+
if ( ! class_exists( '' ) ) {
|
81 |
require_once LP_PLUGIN_PATH . '/inc/admin/sub-menus/statistics.php';
|
82 |
}
|
83 |
LP_Admin_Submenu_Statistic::instance()->load_chart();
|
86 |
public static function search_course() {
|
87 |
global $wpdb;
|
88 |
$sql = "SELECT ID id, post_title text "
|
89 |
+
. " FROM {$wpdb->posts} "
|
90 |
+
. " WHERE post_type='lp_course' "
|
91 |
+
. " AND post_status in ('publish') "
|
92 |
+
. " AND post_title like %s";
|
93 |
if ( current_user_can( LP_TEACHER_ROLE ) ) {
|
94 |
$user_id = learn_press_get_current_user_id();
|
95 |
+
$sql .= " AND post_author=" . intval( $user_id ) . " ";
|
96 |
}
|
97 |
$s = '%' . filter_input( INPUT_GET, 'q' ) . '%';
|
98 |
$query = $wpdb->prepare( $sql, $s );
|
105 |
public static function search_course_category() {
|
106 |
global $wpdb;
|
107 |
$sql = "SELECT `t`.`term_id` as `id`, "
|
108 |
+
. " `t`.`name` `text` "
|
109 |
+
. " FROM {$wpdb->terms} t "
|
110 |
+
. " INNER JOIN {$wpdb->term_taxonomy} tt ON t.term_id = tt.term_id AND taxonomy='course_category' "
|
111 |
+
. " WHERE `t`.`name` LIKE %s";
|
112 |
$s = '%' . filter_input( INPUT_GET, 'q' ) . '%';
|
113 |
$query = $wpdb->prepare( $sql, $s );
|
114 |
$items = $wpdb->get_results( $query );
|
138 |
}
|
139 |
|
140 |
public static function search_users() {
|
141 |
+
if ( ! current_user_can( 'edit_lp_orders' ) ) {
|
142 |
die( - 1 );
|
143 |
}
|
144 |
|
163 |
|
164 |
$customers = $customers_query->get_results();
|
165 |
|
166 |
+
if ( ! empty( $customers ) ) {
|
167 |
foreach ( $customers as $customer ) {
|
168 |
$found_customers[] = array(
|
169 |
'label' => $customer->display_name . ' (#' . $customer->ID . ' – ' . sanitize_email( $customer->user_email ) . ')',
|
186 |
$term = like_escape( $term );
|
187 |
}
|
188 |
|
189 |
+
$query->query_from .= " INNER JOIN {$wpdb->usermeta} AS user_name ON {$wpdb->users}.ID = user_name.user_id AND ( user_name.meta_key = 'first_name' OR user_name.meta_key = 'last_name' ) ";
|
190 |
$query->query_where .= $wpdb->prepare( " OR user_name.meta_value LIKE %s ", '%' . $term . '%' );
|
191 |
}
|
192 |
|
230 |
* @param $exclude
|
231 |
* @param $type
|
232 |
* @param string $context
|
233 |
+
* @param null $context_id
|
234 |
*
|
235 |
* @return array
|
236 |
*/
|
274 |
public static function add_item_to_section() {
|
275 |
global $wpdb;
|
276 |
$section = learn_press_get_request( 'section' );
|
277 |
+
if ( ! $section ) {
|
278 |
wp_die( __( 'Error', 'learnpress' ) );
|
279 |
}
|
280 |
$items = (array) learn_press_get_request( 'item' );
|
281 |
+
if ( ! $items ) {
|
282 |
$max_order = $wpdb->get_var( $wpdb->prepare( "SELECT max() FROM {$wpdb}learnpress_section_items WHERE section_id = %d", $section ) );
|
283 |
foreach ( $items as $item ) {
|
284 |
|
289 |
public static function modal_search_items() {
|
290 |
global $wpdb;
|
291 |
|
292 |
+
$user = learn_press_get_current_user();
|
293 |
+
$term = (string) ( stripslashes( learn_press_get_request( 'term' ) ) );
|
294 |
+
$type = (string) ( stripslashes( learn_press_get_request( 'type' ) ) );
|
295 |
+
$context = (string) ( stripslashes( learn_press_get_request( 'context' ) ) );
|
296 |
+
$context_id = (string) ( stripslashes( learn_press_get_request( 'context_id' ) ) );
|
297 |
+
$current_items_in_order = learn_press_get_request( 'current_items' );
|
298 |
+
$current_items = array();
|
299 |
|
300 |
+
foreach ( $current_items_in_order as $item ) {
|
301 |
+
$sql = "SELECT meta_value
|
|
|
302 |
FROM {$wpdb->prefix}learnpress_order_itemmeta
|
303 |
WHERE meta_key = '_course_id'
|
304 |
AND learnpress_order_item_id = $item";
|
305 |
+
$id = $wpdb->get_results( $sql, OBJECT );
|
306 |
+
array_push( $current_items, $id[0]->meta_value );
|
307 |
+
}
|
308 |
|
309 |
+
$exclude = array();
|
310 |
|
311 |
+
if ( ! empty( $_GET['exclude'] ) ) {
|
312 |
$exclude = array_map( 'intval', $_GET['exclude'] );
|
313 |
}
|
314 |
+
|
315 |
+
$author_id = get_post_field( 'post_author', $context_id );
|
316 |
+
|
317 |
$exclude = array_unique( (array) apply_filters( 'learn_press_modal_search_items_exclude', $exclude, $type, $context, $context_id ) );
|
318 |
$exclude = array_map( 'intval', $exclude );
|
319 |
+
|
320 |
+
$args = array(
|
321 |
'post_type' => array( $type ),
|
322 |
'posts_per_page' => - 1,
|
323 |
'post_status' => 'publish',
|
324 |
'order' => 'ASC',
|
325 |
'orderby' => 'parent title',
|
326 |
+
'author' => $author_id,
|
327 |
'exclude' => $exclude
|
328 |
);
|
|
|
|
|
|
|
329 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
if ( $term ) {
|
331 |
$args['s'] = $term;
|
332 |
}
|
333 |
+
|
334 |
+
// allow super admin can search course of other user
|
335 |
+
if( is_super_admin() && $context == 'course-items' && $type=='lp_course' ) {
|
336 |
+
unset( $args['author'] );
|
337 |
+
}
|
338 |
+
|
339 |
+
$args = apply_filters( 'learn_press_filter_admin_ajax_modal_search_items_args', $args, $context, $context_id );
|
340 |
$posts = get_posts( $args );
|
341 |
$found_items = array();
|
342 |
|
343 |
+
if ( ! empty( $posts ) ) {
|
344 |
+
if ( $current_items_in_order ) {
|
345 |
+
foreach ( $posts as $post ) {
|
346 |
+
if ( in_array( $post->ID, $current_items ) ) {
|
347 |
+
continue;
|
348 |
+
}
|
349 |
+
$found_items[ $post->ID ] = $post;
|
350 |
+
$found_items[ $post->ID ]->post_title = ! empty( $post->post_title ) ? $post->post_title : sprintf( '(%s)', __( 'Untitled', 'learnpress' ) );
|
351 |
+
}
|
352 |
+
} else {
|
353 |
+
foreach ( $posts as $post ) {
|
354 |
+
$found_items[ $post->ID ] = $post;
|
355 |
+
$found_items[ $post->ID ]->post_title = ! empty( $post->post_title ) ? $post->post_title : sprintf( '(%s)', __( 'Untitled', 'learnpress' ) );
|
356 |
+
}
|
357 |
+
}
|
358 |
}
|
359 |
|
360 |
|
|
|
361 |
ob_start();
|
362 |
if ( $found_items ) {
|
363 |
foreach ( $found_items as $id => $item ) {
|
394 |
global $wpdb;
|
395 |
$quiz_id = learn_press_get_request( 'quiz_id' );
|
396 |
$question_id = learn_press_get_request( 'question_id' );
|
397 |
+
if ( ! wp_verify_nonce( learn_press_get_request( 'remove-nonce' ), 'remove_quiz_question' ) ) {
|
398 |
wp_die( __( 'Error', 'learnpress' ) );
|
399 |
}
|
400 |
$query = $wpdb->prepare( "
|
408 |
$user_id = get_current_user_id();
|
409 |
$type = get_post_meta( $question_id, '_lp_type', true );
|
410 |
if ( $type ) {
|
411 |
+
$question_types = get_user_meta( $user_id, '_learn_press_memorize_question_types', true );
|
412 |
+
$question_types = ! $question_types ? array() : $question_types;
|
413 |
+
$counter = ! empty ( $question_types[ $type ] ) && $question_types[ $type ] ? absint( $question_types[ $type ] ) : 0;
|
414 |
+
$question_types[ $type ] = $counter ? $counter -- : 0;
|
415 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
416 |
}
|
417 |
// end trigger change user memorize question types
|
423 |
|
424 |
$quiz_id = learn_press_get_request( 'quiz_id' );
|
425 |
$user = learn_press_get_current_user();
|
426 |
+
if ( ! $user->is_admin() && get_post_field( 'post_author', $quiz_id ) != get_current_user_id() ) {
|
427 |
wp_die( __( 'You have no permission to access this section.', 'learnpress' ) );
|
428 |
}
|
429 |
$term = (string) ( stripslashes( learn_press_get_request( 'term' ) ) );
|
430 |
$exclude = array();
|
431 |
|
432 |
+
if ( ! empty( $_GET['exclude'] ) ) {
|
433 |
$exclude = array_map( 'intval', $_GET['exclude'] );
|
434 |
}
|
435 |
|
453 |
'orderby' => 'parent title',
|
454 |
'exclude' => $exclude
|
455 |
);
|
456 |
+
if ( ! $user->is_admin() ) {
|
457 |
$args['author'] = $user->id;
|
458 |
}
|
459 |
if ( $term ) {
|
462 |
$posts = get_posts( $args );
|
463 |
$found_questions = array();
|
464 |
|
465 |
+
if ( ! empty( $posts ) ) {
|
466 |
foreach ( $posts as $post ) {
|
467 |
+
$found_questions[ $post->ID ] = ! empty( $post->post_title ) ? $post->post_title : sprintf( '(%s)', __( 'Untitled', 'learnpress' ) );
|
468 |
}
|
469 |
}
|
470 |
|
506 |
*/
|
507 |
public static function remove_order_item() {
|
508 |
// ensure that user has permission
|
509 |
+
if ( ! current_user_can( 'edit_lp_orders' ) ) {
|
510 |
die( __( 'Permission denied', 'learnpress' ) );
|
511 |
}
|
512 |
|
513 |
// verify nonce
|
514 |
$nonce = learn_press_get_request( 'remove_nonce' );
|
515 |
+
if ( ! wp_verify_nonce( $nonce, 'remove_order_item' ) ) {
|
516 |
die( __( 'Check nonce failed', 'learnpress' ) );
|
517 |
}
|
518 |
|
519 |
// validate order
|
520 |
$order_id = learn_press_get_request( 'order_id' );
|
521 |
+
if ( ! is_numeric( $order_id ) || get_post_type( $order_id ) != 'lp_order' ) {
|
522 |
die( __( 'Order invalid', 'learnpress' ) );
|
523 |
}
|
524 |
|
525 |
// validate item
|
526 |
$item_id = learn_press_get_request( 'item_id' );
|
527 |
$post = get_post( learn_press_get_order_item_meta( $item_id, '_course_id' ) );
|
528 |
+
if ( ! $post || ( 'lp_course' !== $post->post_type ) ) {
|
529 |
die( __( 'Course invalid', 'learnpress' ) );
|
530 |
}
|
531 |
|
551 |
public static function add_item_to_order() {
|
552 |
|
553 |
// ensure that user has permission
|
554 |
+
if ( ! current_user_can( 'edit_lp_orders' ) ) {
|
555 |
die( __( 'Permission denied', 'learnpress' ) );
|
556 |
}
|
557 |
|
563 |
|
564 |
// validate order
|
565 |
$order_id = learn_press_get_request( 'order_id' );
|
566 |
+
if ( ! is_numeric( $order_id ) || get_post_type( $order_id ) != 'lp_order' ) {
|
567 |
die( __( 'Order invalid', 'learnpress' ) );
|
568 |
}
|
569 |
|
577 |
// exit(''.__LINE__);
|
578 |
foreach ( $item_ids as $item_id ):
|
579 |
$post = get_post( $item_id );
|
580 |
+
if ( ! $post || ( 'lp_course' !== $post->post_type ) ) {
|
581 |
continue;
|
582 |
// die( __( 'Course invalid', 'learnpress' ) );
|
583 |
}
|
631 |
|
632 |
public static function search_courses() {
|
633 |
$nonce = learn_press_get_request( 'nonce' );
|
634 |
+
if ( ! wp_verify_nonce( $nonce, 'search_item_term' ) ) {
|
635 |
LP_Debug::exception( __( 'Verify nonce failed', 'learnpress' ) );
|
636 |
}
|
637 |
|
645 |
)
|
646 |
);
|
647 |
$found_courses = array();
|
648 |
+
if ( ! empty( $posts ) ) {
|
649 |
foreach ( $posts as $post ) {
|
650 |
+
$found_courses[ $post ] = array(
|
651 |
'title' => get_the_title( $post ),
|
652 |
'permalink' => get_the_permalink( $post )
|
653 |
);
|
760 |
* Create a new page with the title passed via $_REQUEST
|
761 |
*/
|
762 |
public static function create_page() {
|
763 |
+
$page_name = ! empty( $_REQUEST['page_name'] ) ? $_REQUEST['page_name'] : '';
|
764 |
$response = array();
|
765 |
if ( $page_name ) {
|
766 |
$args = array(
|
776 |
preg_match_all( '!value=\"([0-9]+)\"!', $html, $matches );
|
777 |
$response['positions'] = $matches[1];
|
778 |
$response['html'] = '<a href="' . get_edit_post_link( $page_id ) . '" target="_blank">' . __( 'Edit Page', 'learnpress' ) . '</a> ';
|
779 |
+
$response['html'] .= '<a href="' . get_permalink( $page_id ) . '" target="_blank">' . __( 'View Page', 'learnpress' ) . '</a>';
|
780 |
} else {
|
781 |
$response['error'] = __( 'Error! Create page failed. Please try again!', 'learnpress' );
|
782 |
}
|
799 |
);
|
800 |
$post = get_post( $quiz_id );
|
801 |
setup_postdata( $post );
|
802 |
+
if ( ! $id ) {
|
803 |
$args_item = array(
|
804 |
'post_title' => $name,
|
805 |
'post_type' => LP_QUESTION_CPT,
|
830 |
$response['html'] = ob_get_clean();
|
831 |
|
832 |
// trigger change user memorize question types
|
833 |
+
$question_types = get_user_meta( $user_id, '_learn_press_memorize_question_types', true );
|
834 |
+
$question_types = ! $question_types ? array() : $question_types;
|
835 |
+
$type = get_post_meta( $id, '_lp_type', true );
|
836 |
+
$question_types[ $type ] = ! empty ( $question_types[ $type ] ) ? absint( $question_types[ $type ] ) + 1 : 1;
|
837 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
838 |
// end trigger change user memorize question types
|
839 |
}
|
850 |
$question = LP_Question_Factory::get_question( $question_id, array( 'type' => $to ) );
|
851 |
|
852 |
// trigger change user memorize question types
|
853 |
+
$user_id = get_current_user_id();
|
854 |
+
$question_types = get_user_meta( $user_id, '_learn_press_memorize_question_types', true );
|
855 |
+
$question_types[ $from ] = ! empty( $question_types[ $from ] ) && $question_types[ $from ] ? absint( $question_types[ $from ] ) - 1 : 0;
|
856 |
+
$question_types[ $to ] = ! empty( $question_types[ $to ] ) && $question_types[ $to ] ? absint( $question_types[ $to ] ) + 1 : 1;
|
857 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
858 |
// end trigger change user memorize question types
|
859 |
if ( 'auto-draft' === $question->post->post_status ) {
|
878 |
* Install sample data or dismiss the notice depending on user's option
|
879 |
*/
|
880 |
public static function install_sample_data() {
|
881 |
+
$yes = ! empty( $_REQUEST['yes'] ) ? $_REQUEST['yes'] : '';
|
882 |
$response = array( 'result' => 'fail' );
|
883 |
$retry_button = sprintf( '<a href="" class="button yes" data-action="yes">%s</a>', __( 'Try again!', 'learnpress' ) );
|
884 |
$dismiss_button = sprintf( '<a href="" class="button disabled no" data-action="no">%s</a>', __( 'Cancel', 'learnpress' ) );
|
929 |
include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
|
930 |
$response = array( 'addons' => array() );
|
931 |
|
932 |
+
if ( ! current_user_can( 'activate_plugins' ) ) {
|
933 |
$response['error'] = __( 'You do not have sufficient permissions to deactivate plugins for this site.', 'learnpress' );
|
934 |
} else {
|
935 |
|
937 |
|
938 |
if ( $add_ons ) {
|
939 |
foreach ( $add_ons as $slug ) {
|
940 |
+
$response['addons'][ $slug ] = learn_press_install_and_active_add_on( $slug );
|
941 |
}
|
942 |
}
|
943 |
}
|
950 |
public static function bundle_activate_add_on() {
|
951 |
$response = array();
|
952 |
include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
|
953 |
+
if ( ! current_user_can( 'activate_plugins' ) ) {
|
954 |
$response['error'] = __( 'You do not have sufficient permissions to deactivate plugins for this site.', 'learnpress' );
|
955 |
} else {
|
956 |
+
$slug = ! empty( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : null;
|
957 |
+
$response[ $slug ] = learn_press_install_and_active_add_on( $slug );
|
958 |
}
|
959 |
learn_press_send_json( $response );
|
960 |
}
|
961 |
|
962 |
public static function plugin_install() {
|
963 |
+
$plugin_name = ! empty( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
|
964 |
$response = learn_press_install_add_on( $plugin_name );
|
965 |
learn_press_send_json( $response );
|
966 |
die();
|
967 |
}
|
968 |
|
969 |
public static function update_add_on_status() {
|
970 |
+
$plugin = ! empty( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
|
971 |
+
$t = ! empty( $_REQUEST['t'] ) ? $_REQUEST['t'] : '';
|
972 |
$response = array();
|
973 |
+
if ( ! current_user_can( 'activate_plugins' ) ) {
|
974 |
$response['error'] = __( 'You do not have sufficient permissions to deactivate plugins for this site.', 'learnpress' );
|
975 |
}
|
976 |
if ( $plugin && $t ) {
|
991 |
* Output the image to browser with text and params passed via $_GET
|
992 |
*/
|
993 |
public static function dummy_image() {
|
994 |
+
$text = ! empty( $_REQUEST['text'] ) ? $_REQUEST['text'] : '';
|
995 |
learn_press_text_image( $text, $_GET );
|
996 |
die();
|
997 |
}
|
1000 |
* Get edit|view link of a page
|
1001 |
*/
|
1002 |
public static function get_page_permalink() {
|
1003 |
+
$page_id = ! empty( $_REQUEST['page_id'] ) ? $_REQUEST['page_id'] : '';
|
1004 |
?>
|
1005 |
+
<a href="<?php echo get_edit_post_link( $page_id ); ?>"
|
1006 |
+
target="_blank"><?php _e( 'Edit Page', 'learnpress' ); ?></a>
|
1007 |
+
<a href="<?php echo get_permalink( $page_id ); ?>"
|
1008 |
+
target="_blank"><?php _e( 'View Page', 'learnpress' ); ?></a>
|
1009 |
<?php
|
1010 |
die();
|
1011 |
}
|
1015 |
*
|
1016 |
*/
|
1017 |
public function custom_stats() {
|
1018 |
+
$from = ! empty( $_REQUEST['from'] ) ? $_REQUEST['from'] : 0;
|
1019 |
+
$to = ! empty( $_REQUEST['to'] ) ? $_REQUEST['to'] : 0;
|
1020 |
$date_diff = strtotime( $to ) - strtotime( $from );
|
1021 |
if ( $date_diff <= 0 || $from == 0 || $to == 0 ) {
|
1022 |
die();
|
1097 |
}
|
1098 |
|
1099 |
public static function duplicate_course() {
|
1100 |
+
if ( empty( $_POST['course_id'] ) || empty( $_POST['_nonce'] ) || ! wp_verify_nonce( $_POST['_nonce'], 'lp-duplicate-course' ) ) {
|
1101 |
return;
|
1102 |
}
|
1103 |
global $wpdb;
|
1104 |
$course_id = absint( $_POST['course_id'] );
|
1105 |
+
$force = ! empty( $_POST['content'] ) && $_POST['content'] ? true : false;
|
1106 |
|
1107 |
$results = array(
|
1108 |
'redirect' => admin_url( 'edit.php?post_type=' . LP_COURSE_CPT )
|
1120 |
}
|
1121 |
|
1122 |
public static function duplicate_question() {
|
1123 |
+
if ( empty( $_POST['_nonce'] ) || ! wp_verify_nonce( $_POST['_nonce'], 'duplicate-question' ) ) {
|
1124 |
return;
|
1125 |
}
|
1126 |
global $wpdb;
|
1129 |
$user_id = learn_press_get_current_user_id();
|
1130 |
|
1131 |
$new_question_id = learn_press_duplicate_question( $question_id, $quiz_id );
|
1132 |
+
if ( ! is_wp_error( $new_question_id ) ) {
|
1133 |
ob_start();
|
1134 |
$question = LP_Question_Factory::get_question( $new_question_id );
|
1135 |
$post = get_post( $quiz_id );
|
1139 |
$response['html'] = ob_get_clean();
|
1140 |
|
1141 |
// trigger change user memorize question types
|
1142 |
+
$question_types = get_user_meta( $user_id, '_learn_press_memorize_question_types', true );
|
1143 |
+
$question_types = ! $question_types ? array() : $question_types;
|
1144 |
+
$type = get_post_meta( $new_question_id, '_lp_type', true );
|
1145 |
+
$question_types[ $type ] = ! empty ( $question_types[ $type ] ) ? absint( $question_types[ $type ] ) + 1 : 1;
|
1146 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
1147 |
// end trigger change user memorize question types
|
1148 |
learn_press_send_json( $response );
|
1155 |
public static function remove_notice_popup() {
|
1156 |
|
1157 |
if ( isset( $_POST['action'] ) && $_POST['action'] === 'learnpress_remove_notice_popup'
|
1158 |
+
&& isset( $_POST['slug'] ) && ! empty( $_POST['slug'] )
|
1159 |
+
&& isset( $_POST['user'] ) && ! empty( $_POST['user'] )
|
1160 |
) {
|
1161 |
|
1162 |
$slug = 'learnpress_notice_' . $_POST['slug'] . '_' . $_POST['user'];
|
1168 |
|
1169 |
}
|
1170 |
|
1171 |
+
public static function update_order_status() {
|
1172 |
+
global $wpdb;
|
1173 |
+
$order_id = learn_press_get_request( 'order_id' );
|
1174 |
+
$value = learn_press_get_request( 'value' );
|
1175 |
|
1176 |
+
$order = array(
|
1177 |
+
'ID' => $order_id,
|
1178 |
+
'post_status' => $value,
|
1179 |
+
);
|
1180 |
|
1181 |
+
wp_update_post( $order ) ? $response['success'] = true : $response['success'] = false;
|
1182 |
|
1183 |
+
learn_press_send_json( $response );
|
1184 |
|
1185 |
+
die();
|
1186 |
+
}
|
1187 |
|
1188 |
}
|
1189 |
}
|
inc/admin/views/question/html-base-option.php
DELETED
@@ -1,137 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Admin template for displaying multi choice option
|
4 |
-
*
|
5 |
-
* @package LearnPress/Templates/Admin
|
6 |
-
*/
|
7 |
-
defined( 'ABSPATH' ) or exit();
|
8 |
-
if ( ! isset( $question ) ) {
|
9 |
-
$question = learn_press_get_question( get_the_ID() );
|
10 |
-
}
|
11 |
-
|
12 |
-
if ( ! $question ) {
|
13 |
-
}
|
14 |
-
$default_answer = array( 'value' => '', 'text' => '', 'is_true' => false );
|
15 |
-
|
16 |
-
if ( isset( $answer ) ) {
|
17 |
-
$answer = wp_parse_args( $answer, $default_answer );
|
18 |
-
} else {
|
19 |
-
$answer = $default_answer;
|
20 |
-
}
|
21 |
-
|
22 |
-
$type = $question->get_type();
|
23 |
-
$option_headings = $question->get_admin_option_headings();
|
24 |
-
$value = $question->get_option_value( $answer['value'] );
|
25 |
-
$id = $question->get_id();
|
26 |
-
$input_type = $type == 'multi_choice' ? 'checkbox' : 'radio';
|
27 |
-
|
28 |
-
do_action( 'learn_press_before_question_answer_option', $id );
|
29 |
-
|
30 |
-
$template_data = array_merge(
|
31 |
-
array(
|
32 |
-
'id' => $question->get_id(),
|
33 |
-
'answer_option' => array(
|
34 |
-
'value' => $value,
|
35 |
-
'text' => $answer['text'],
|
36 |
-
'is_true' => $answer['is_true']
|
37 |
-
)
|
38 |
-
),
|
39 |
-
$question->get_option_template_data()
|
40 |
-
);
|
41 |
-
|
42 |
-
?>
|
43 |
-
<tr class="lp-list-option lp-row lp-list-option-<?php echo $template_data['answer_option']['value']; ?>"
|
44 |
-
data-id="<?php echo $template_data['answer_option']['value']; ?>">
|
45 |
-
<?php foreach ( $option_headings as $heading => $title ) { ?>
|
46 |
-
<?php
|
47 |
-
$classes = array( 'lp-column', 'lp-column-' . $heading );
|
48 |
-
$tooltip = '';
|
49 |
-
ob_start();
|
50 |
-
switch ( $heading ) {
|
51 |
-
case 'sort':
|
52 |
-
echo '<i class="fa fa-bars"></i>';
|
53 |
-
break;
|
54 |
-
case 'order':
|
55 |
-
echo '<span answer-option-order></span>';
|
56 |
-
break;
|
57 |
-
case 'answer_text':
|
58 |
-
?>
|
59 |
-
<input class="lp-answer-text no-submit key-nav" type="text"
|
60 |
-
name="learn_press_question[<?php echo $template_data['id']; ?>][answer_options][text][]"
|
61 |
-
value="<?php echo esc_attr( $template_data['answer_option']['text'] ); ?>"
|
62 |
-
placeholder="<?php esc_attr_e( 'Type name of option', 'learnpress' ); ?>"
|
63 |
-
autocomplete="off"
|
64 |
-
ng-keypress="onOptionKeyEvent($event)"
|
65 |
-
ng-keyup="onOptionKeyEvent($event)"
|
66 |
-
ng-keydown="onOptionKeyEvent($event)"
|
67 |
-
/>
|
68 |
-
<?php
|
69 |
-
break;
|
70 |
-
case 'answer_correct':
|
71 |
-
$classes[] = 'lp-answer-check';
|
72 |
-
?>
|
73 |
-
<input type="hidden"
|
74 |
-
name="learn_press_question[<?php echo $template_data['id']; ?>][answer_options][value][]"
|
75 |
-
value="<?php echo $template_data['answer_option']['value']; ?>"
|
76 |
-
class="lp-answer-value"/>
|
77 |
-
<input type="hidden"
|
78 |
-
name="learn_press_question[<?php echo $template_data['id']; ?>][answer_options][checked][]"
|
79 |
-
value=""
|
80 |
-
class="<?php echo $template_data['answer_option']['is_true'] == 'yes' ? 'abc-xyz' : ''; ?>"
|
81 |
-
/>
|
82 |
-
<input type="<?php echo $input_type; ?>"
|
83 |
-
name="learn_press_question[<?php echo $template_data['id']; ?>][answer_options][checked][]"
|
84 |
-
<?php checked( $template_data['answer_option']['is_true'] == 'yes', true ); ?>
|
85 |
-
value="<?php echo $template_data['answer_option']['value']; ?>"
|
86 |
-
onchange=""
|
87 |
-
class="def-123 <?php echo $template_data['answer_option']['is_true'] == 'yes' ? '' : 'abc-xyz'; ?>"
|
88 |
-
/>
|
89 |
-
<?php
|
90 |
-
break;
|
91 |
-
case 'actions':
|
92 |
-
$classes[] = 'lp-toolbar-buttons';
|
93 |
-
?>
|
94 |
-
<div class="lp-toolbar-btn lp-btn-remove lp-toolbar-btn-dropdown">
|
95 |
-
<a data-tooltip="<?php esc_attr_e( 'Remove this option', 'learnpress' ); ?>"
|
96 |
-
class="lp-btn-icon dashicons dashicons-trash learn-press-tooltip" ng-click="removeOption($event)"></a>
|
97 |
-
<ul>
|
98 |
-
<li><a class="learn-press-tooltip"
|
99 |
-
data-tooltip="<?php esc_attr__( 'Delete permanently this option', 'learnpress' ); ?>"
|
100 |
-
ng-click="removeOption($event)" data-delete-permanently="yes">
|
101 |
-
<?php esc_html_e( 'Delete permanently', 'learnpress' ); ?>
|
102 |
-
</a>
|
103 |
-
</li>
|
104 |
-
</ul>
|
105 |
-
</div>
|
106 |
-
<!--
|
107 |
-
<span class="learn-press-tooltip lp-toolbar-btn lp-btn-remove"
|
108 |
-
data-tooltip="<?php esc_attr_e( 'Remove this option', 'learnpress' ); ?>"
|
109 |
-
ng-click="removeOption($event)">
|
110 |
-
<a class="lp-btn-icon dashicons dashicons-trash">
|
111 |
-
|
112 |
-
</a>
|
113 |
-
</span><!--
|
114 |
-
--><span class="learn-press-tooltip lp-toolbar-btn lp-btn-move"
|
115 |
-
data-tooltip="<?php esc_attr_e( 'Drag and drop to change answer\'s position', 'learnpress' ); ?>">
|
116 |
-
<a class="lp-btn-icon dashicons dashicons-sort"></a>
|
117 |
-
</span><?php
|
118 |
-
break;
|
119 |
-
}
|
120 |
-
if ( $tooltip ) {
|
121 |
-
$classes[] = 'learn-press-tooltip';
|
122 |
-
}
|
123 |
-
$classes = apply_filters( "learn-press/question/{$type}/admin-option-column-class", $classes, $heading, $answer, $template_data, $id );
|
124 |
-
$classes = array_filter( $classes );
|
125 |
-
$classes = array_unique( $classes );
|
126 |
-
?>
|
127 |
-
<?php do_action( "learn-press/question/{$type}/admin-option-column-" . $heading . '-content', $answer, $template_data, $id ); ?>
|
128 |
-
<?php do_action( "learn-press/question/{$type}/admin-option-columns-content", $heading, $answer, $template_data, $id ); ?>
|
129 |
-
<?php $html = ob_get_clean(); ?>
|
130 |
-
<td class="<?php echo join( ' ', $classes ); ?>"<?php if ( $tooltip ) {
|
131 |
-
echo ' data-tooltip="' . $tooltip . '"';
|
132 |
-
} ?>>
|
133 |
-
<?php echo $html; ?>
|
134 |
-
</td>
|
135 |
-
<?php } ?>
|
136 |
-
</tr>
|
137 |
-
<?php do_action( 'learn_press_after_question_answer_option', $id ); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/class-lp-page-controller.php
CHANGED
@@ -139,7 +139,10 @@ class LP_Page_Controller {
|
|
139 |
}
|
140 |
$post->post_content = '[learn_press_confirm_order]';
|
141 |
} elseif ( ( $page_id = learn_press_get_page_id( 'become_a_teacher' ) ) && is_page( $page_id ) && $page_id == $queried_object_id ) {
|
142 |
-
|
|
|
|
|
|
|
143 |
} else {
|
144 |
if ( learn_press_is_courses() || learn_press_is_course_tag() || learn_press_is_course_category() || learn_press_is_search() ) {
|
145 |
$file = 'archive-course.php';
|
139 |
}
|
140 |
$post->post_content = '[learn_press_confirm_order]';
|
141 |
} elseif ( ( $page_id = learn_press_get_page_id( 'become_a_teacher' ) ) && is_page( $page_id ) && $page_id == $queried_object_id ) {
|
142 |
+
preg_match( '#\[learn_press_become_teacher_form\]#i' , $post->post_content, $m);
|
143 |
+
if(empty($m)){
|
144 |
+
$post->post_content .= '[learn_press_become_teacher_form]';
|
145 |
+
}
|
146 |
} else {
|
147 |
if ( learn_press_is_courses() || learn_press_is_course_tag() || learn_press_is_course_category() || learn_press_is_search() ) {
|
148 |
$file = 'archive-course.php';
|
inc/class-lp-schedules.php
CHANGED
@@ -30,14 +30,14 @@ class LP_Schedules {
|
|
30 |
public function auto_complete_course( $template ) {
|
31 |
if ( learn_press_is_course() && is_user_logged_in() ) {
|
32 |
$course = learn_press_get_course();
|
33 |
-
$duration = $course->get_duration();
|
34 |
$user = learn_press_get_current_user();
|
35 |
-
|
|
|
|
|
36 |
$this->schedule_update_user_items();
|
37 |
wp_redirect( get_permalink( $course->id ) );
|
38 |
}
|
39 |
}
|
40 |
-
|
41 |
return $template;
|
42 |
}
|
43 |
|
@@ -46,7 +46,6 @@ class LP_Schedules {
|
|
46 |
'interval' => 600,
|
47 |
'display' => 'Once Every 10 Minutes'
|
48 |
);
|
49 |
-
|
50 |
return (array) $schedules;
|
51 |
}
|
52 |
|
@@ -63,7 +62,7 @@ class LP_Schedules {
|
|
63 |
$sql,
|
64 |
$wpdb->esc_like( '_transient_' ) . '%',
|
65 |
$wpdb->esc_like( '_transient_timeout_' ) . '%',
|
66 |
-
$wpdb->esc_like( '_transient_learn_press_user_guest_' . '%'
|
67 |
$time
|
68 |
)
|
69 |
);
|
@@ -80,12 +79,12 @@ class LP_Schedules {
|
|
80 |
$sql,
|
81 |
$wpdb->esc_like( '_site_transient_' ) . '%',
|
82 |
$wpdb->esc_like( '_site_transient_timeout_' ) . '%',
|
83 |
-
$wpdb->esc_like( '_site_transient_learn_press_user_guest_' . '%'
|
84 |
$time
|
85 |
)
|
86 |
);
|
87 |
}
|
88 |
-
learn_press_reset_auto_increment(
|
89 |
}
|
90 |
|
91 |
public function schedule_update_user_items() {
|
@@ -95,8 +94,11 @@ class LP_Schedules {
|
|
95 |
|
96 |
/**
|
97 |
* Auto finished course when time is expired for users
|
|
|
|
|
|
|
98 |
*/
|
99 |
-
private function _update_user_course_expired() {
|
100 |
global $wpdb;
|
101 |
/**
|
102 |
* Find all courses that user did not finish yet
|
@@ -119,6 +121,19 @@ class LP_Schedules {
|
|
119 |
)
|
120 |
LIMIT 0, 10
|
121 |
", '0000-00-00 00:00:00', 'lp_course' );*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
|
123 |
$query = $wpdb->prepare( "
|
124 |
SELECT *
|
@@ -129,7 +144,8 @@ class LP_Schedules {
|
|
129 |
WHERE end_time = %s
|
130 |
AND item_type = %s
|
131 |
AND status <> %s
|
132 |
-
|
|
|
133 |
)
|
134 |
LIMIT 0, 10
|
135 |
", '0000-00-00 00:00:00', 'lp_course', 'finished' );
|
@@ -154,7 +170,7 @@ class LP_Schedules {
|
|
154 |
|
155 |
$user = learn_press_get_user( $row->user_id );
|
156 |
if ( ! $user ) {
|
157 |
-
|
158 |
}
|
159 |
$this->_update_user_course_items_expired( $course, $user );
|
160 |
$item_meta_id = $user->finish_course( $course->id );
|
30 |
public function auto_complete_course( $template ) {
|
31 |
if ( learn_press_is_course() && is_user_logged_in() ) {
|
32 |
$course = learn_press_get_course();
|
|
|
33 |
$user = learn_press_get_current_user();
|
34 |
+
$duration = $course->get_duration();
|
35 |
+
if( $duration && $user->has_enrolled_course( $course->id, true ) && !$user->has_finished_course( $course->id, true ) && $course->is_expired( $user->id ) <= 0 ) {
|
36 |
+
$user->finish_course($course->id);
|
37 |
$this->schedule_update_user_items();
|
38 |
wp_redirect( get_permalink( $course->id ) );
|
39 |
}
|
40 |
}
|
|
|
41 |
return $template;
|
42 |
}
|
43 |
|
46 |
'interval' => 600,
|
47 |
'display' => 'Once Every 10 Minutes'
|
48 |
);
|
|
|
49 |
return (array) $schedules;
|
50 |
}
|
51 |
|
62 |
$sql,
|
63 |
$wpdb->esc_like( '_transient_' ) . '%',
|
64 |
$wpdb->esc_like( '_transient_timeout_' ) . '%',
|
65 |
+
$wpdb->esc_like( '_transient_learn_press_user_guest_' ) . '%',
|
66 |
$time
|
67 |
)
|
68 |
);
|
79 |
$sql,
|
80 |
$wpdb->esc_like( '_site_transient_' ) . '%',
|
81 |
$wpdb->esc_like( '_site_transient_timeout_' ) . '%',
|
82 |
+
$wpdb->esc_like( '_site_transient_learn_press_user_guest_' ) . '%',
|
83 |
$time
|
84 |
)
|
85 |
);
|
86 |
}
|
87 |
+
learn_press_reset_auto_increment( 'options' );
|
88 |
}
|
89 |
|
90 |
public function schedule_update_user_items() {
|
94 |
|
95 |
/**
|
96 |
* Auto finished course when time is expired for users
|
97 |
+
*
|
98 |
+
* @param int|array $course_id
|
99 |
+
* @param int|array $user_id
|
100 |
*/
|
101 |
+
private function _update_user_course_expired( $course_id = 0, $user_id = 0 ) {
|
102 |
global $wpdb;
|
103 |
/**
|
104 |
* Find all courses that user did not finish yet
|
121 |
)
|
122 |
LIMIT 0, 10
|
123 |
", '0000-00-00 00:00:00', 'lp_course' );*/
|
124 |
+
$where = '';
|
125 |
+
if ( $user_id ) {
|
126 |
+
$where .= $wpdb->prepare( "AND user_id = %d", $user_id );
|
127 |
+
}
|
128 |
+
|
129 |
+
if ( $course_id ) {
|
130 |
+
$where .= $wpdb->prepare( " AND item_id = %d", $course_id );
|
131 |
+
}
|
132 |
+
|
133 |
+
$groupby = '';
|
134 |
+
if ( ! $user_id && ! $course_id ) {
|
135 |
+
$groupby = 'GROUP BY item_id, user_id';
|
136 |
+
}
|
137 |
|
138 |
$query = $wpdb->prepare( "
|
139 |
SELECT *
|
144 |
WHERE end_time = %s
|
145 |
AND item_type = %s
|
146 |
AND status <> %s
|
147 |
+
{$where}
|
148 |
+
{$groupby}
|
149 |
)
|
150 |
LIMIT 0, 10
|
151 |
", '0000-00-00 00:00:00', 'lp_course', 'finished' );
|
170 |
|
171 |
$user = learn_press_get_user( $row->user_id );
|
172 |
if ( ! $user ) {
|
173 |
+
continue;
|
174 |
}
|
175 |
$this->_update_user_course_items_expired( $course, $user );
|
176 |
$item_meta_id = $user->finish_course( $course->id );
|
inc/class-lp-shortcodes.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
|
8 |
-
if ( !defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
10 |
}
|
11 |
|
@@ -39,25 +39,25 @@ class LP_Shortcodes {
|
|
39 |
public static function auto_shortcode( $template ) {
|
40 |
if ( is_page() ) {
|
41 |
global $post, $wp_query, $wp;
|
42 |
-
$page_id = !empty( $wp_query->queried_object_id ) ?
|
43 |
$wp_query->queried_object_id :
|
44 |
-
( !empty( $wp_query->query_vars['page_id'] ) ? $wp_query->query_vars['page_id'] : - 1 );
|
45 |
if ( $page_id == learn_press_get_page_id( 'checkout' ) ) {
|
46 |
-
if ( !preg_match( '/\[learn_press_checkout\s?(.*)\]/', $post->post_content ) ) {
|
47 |
$post->post_content .= '[learn_press_checkout]';
|
48 |
}
|
49 |
} elseif ( $page_id == learn_press_get_page_id( 'profile' ) ) {
|
50 |
if ( empty( $wp->query_vars['user'] ) ) {
|
51 |
$current_user = wp_get_current_user();
|
52 |
-
if ( !empty( $current_user->user_login ) ) {
|
53 |
$redirect = learn_press_get_endpoint_url( '', $current_user->user_login, learn_press_get_page_link( 'profile' ) );
|
54 |
-
if ( $redirect && !learn_press_is_current_url( $redirect ) ) {
|
55 |
wp_redirect( $redirect );
|
56 |
die();
|
57 |
}
|
58 |
} else {
|
59 |
-
if ( !preg_match( '/\[learn_press_login_form\s?(.*)\]/', $post->post_content ) ) {
|
60 |
-
if ( !empty( $_REQUEST['redirect_to'] ) ) {
|
61 |
$redirect = $_REQUEST['redirect_to'];
|
62 |
} else {
|
63 |
$redirect = '';
|
@@ -70,7 +70,7 @@ class LP_Shortcodes {
|
|
70 |
parse_str( $wp->matched_query, $query );
|
71 |
if ( empty( $query['view'] ) ) {
|
72 |
$redirect = learn_press_user_profile_link( $wp->query_vars['user'] );
|
73 |
-
if ( !empty( $redirect ) ) {
|
74 |
wp_redirect( $redirect );
|
75 |
die();
|
76 |
}
|
@@ -81,37 +81,38 @@ class LP_Shortcodes {
|
|
81 |
$endpoints = learn_press_get_profile_endpoints();
|
82 |
foreach ( $query as $k => $v ) {
|
83 |
if ( ( $k == 'view' ) ) {
|
84 |
-
if (
|
85 |
$v = reset( $endpoints );
|
86 |
}
|
87 |
-
if ( !in_array( $v, $endpoints) ) {
|
88 |
learn_press_is_404();
|
89 |
}
|
90 |
}
|
91 |
-
if ( !empty( $v ) ) {
|
92 |
-
$wp->query_vars[$k] = $v;
|
93 |
}
|
94 |
}
|
95 |
}
|
96 |
-
if ( !preg_match( '/\[learn_press_profile\s?(.*)\]/', $post->post_content ) ) {
|
97 |
$post->post_content .= '[learn_press_profile]';
|
98 |
}
|
99 |
|
100 |
}
|
101 |
|
102 |
} elseif ( $page_id == learn_press_get_page_id( 'become_a_teacher' ) ) {
|
103 |
-
if ( !preg_match( '/\[learn_press_become_teacher_form\s?(.*)\]/', $post->post_content ) ) {
|
104 |
$post->post_content .= '[learn_press_become_teacher_form]';
|
105 |
}
|
106 |
}
|
107 |
|
108 |
do_action( 'learn_press_auto_shortcode', $post, $template );
|
109 |
}
|
|
|
110 |
return $template;
|
111 |
}
|
112 |
|
113 |
public static function _login_form_bottom( $content, $args ) {
|
114 |
-
if ( !( !empty( $args['context'] ) && $args['context'] == 'learn-press-login' ) ) {
|
115 |
return;
|
116 |
}
|
117 |
}
|
@@ -120,6 +121,7 @@ class LP_Shortcodes {
|
|
120 |
ob_start();
|
121 |
learn_press_print_messages();
|
122 |
$html = ob_get_clean();
|
|
|
123 |
return '<div class="learnpress">' . $html . $content . '</div>';
|
124 |
}
|
125 |
|
@@ -151,6 +153,7 @@ class LP_Shortcodes {
|
|
151 |
learn_press_get_template( 'checkout/form.php', array( 'checkout' => LP()->checkout() ) );
|
152 |
}
|
153 |
}
|
|
|
154 |
return self::wrapper_shortcode( ob_get_clean() );
|
155 |
}
|
156 |
|
@@ -171,7 +174,7 @@ class LP_Shortcodes {
|
|
171 |
$arr_orders = array( 'DESC', 'ASC' );
|
172 |
$order = strtoupper( $order );
|
173 |
|
174 |
-
if ( !in_array( $order_by, $arr_orders_by ) || !in_array( 'post_' . $order_by, $arr_orders_by ) ) {
|
175 |
$order_by = 'post_date';
|
176 |
} else {
|
177 |
if ( $order_by !== 'comment_count' ) {
|
@@ -179,10 +182,10 @@ class LP_Shortcodes {
|
|
179 |
}
|
180 |
}
|
181 |
|
182 |
-
if ( !in_array( $order, $arr_orders ) ) {
|
183 |
$order = 'DESC';
|
184 |
}
|
185 |
-
if ( !absint( $limit ) ) {
|
186 |
$limit = 10;
|
187 |
}
|
188 |
|
@@ -228,7 +231,7 @@ class LP_Shortcodes {
|
|
228 |
$arr_orders = array( 'DESC', 'ASC' );
|
229 |
$order = strtoupper( $order );
|
230 |
|
231 |
-
if ( !in_array( $order_by, $arr_orders_by ) || !in_array( 'post_' . $order_by, $arr_orders_by ) ) {
|
232 |
$order_by = 'post_date';
|
233 |
} else {
|
234 |
if ( $order_by !== 'comment_count' ) {
|
@@ -236,10 +239,10 @@ class LP_Shortcodes {
|
|
236 |
}
|
237 |
}
|
238 |
|
239 |
-
if ( !in_array( $order, $arr_orders ) ) {
|
240 |
$order = 'DESC';
|
241 |
}
|
242 |
-
if ( !absint( $limit ) ) {
|
243 |
$limit = 10;
|
244 |
}
|
245 |
|
@@ -282,10 +285,10 @@ class LP_Shortcodes {
|
|
282 |
$arr_orders = array( 'DESC', 'ASC' );
|
283 |
$order = strtoupper( $order );
|
284 |
|
285 |
-
if ( !in_array( $order, $arr_orders ) ) {
|
286 |
$order = 'DESC';
|
287 |
}
|
288 |
-
if ( !absint( $limit ) ) {
|
289 |
$limit = 10;
|
290 |
}
|
291 |
|
@@ -323,7 +326,7 @@ class LP_Shortcodes {
|
|
323 |
|
324 |
public static function render_shortcode_archive( $lp_posts = array() ) {
|
325 |
global $post;
|
326 |
-
if ( !empty( $lp_posts ) ) {
|
327 |
do_action( 'learn_press_before_courses_loop' );
|
328 |
|
329 |
learn_press_begin_courses_loop();
|
@@ -350,13 +353,15 @@ class LP_Shortcodes {
|
|
350 |
|
351 |
// Get the order
|
352 |
$order_id = absint( $order_id );
|
353 |
-
$order_key = !empty( $_GET['key'] ) ? $_GET['key'] : '';
|
354 |
|
355 |
if ( $order_id > 0 && ( $order = learn_press_get_order( $order_id ) ) && $order->post->post_status != 'trash' ) {
|
356 |
-
if ( $order->order_key != $order_key )
|
357 |
unset( $order );
|
|
|
358 |
} else {
|
359 |
learn_press_display_message( __( 'Invalid order!', 'learnpress' ), 'error' );
|
|
|
360 |
return;
|
361 |
}
|
362 |
|
@@ -375,7 +380,7 @@ class LP_Shortcodes {
|
|
375 |
public static function confirm_order( $atts = null ) {
|
376 |
$atts = shortcode_atts(
|
377 |
array(
|
378 |
-
'order_id' => !empty( $_REQUEST['order_id'] ) ? intval( $_REQUEST['order_id'] ) : 0
|
379 |
),
|
380 |
$atts
|
381 |
);
|
@@ -406,7 +411,7 @@ class LP_Shortcodes {
|
|
406 |
$message = '';
|
407 |
$code = 0;
|
408 |
|
409 |
-
if ( !is_user_logged_in() ) {
|
410 |
$message = __( "Please login to fill in this form.", 'learnpress' );
|
411 |
$code = 1;
|
412 |
} elseif ( in_array( LP_TEACHER_ROLE, $user->user->roles ) ) {
|
@@ -420,7 +425,7 @@ class LP_Shortcodes {
|
|
420 |
$code = 4;
|
421 |
}
|
422 |
|
423 |
-
if ( !apply_filters( 'learn_press_become_a_teacher_display_form', true, $code, $message ) ) {
|
424 |
return;
|
425 |
}
|
426 |
|
@@ -465,7 +470,7 @@ class LP_Shortcodes {
|
|
465 |
$output = '';
|
466 |
|
467 |
ob_start();
|
468 |
-
if (
|
469 |
if ( empty( $wp_query->query['user'] ) ) {
|
470 |
|
471 |
} else {
|
@@ -475,22 +480,22 @@ class LP_Shortcodes {
|
|
475 |
} else {
|
476 |
$user = LP_User_Factory::get_user( $user->ID );
|
477 |
$tabs = learn_press_user_profile_tabs( $user );
|
478 |
-
if ( !empty( $wp->query_vars['view'] ) ) {
|
479 |
$current = $wp->query_vars['view'];
|
480 |
} else {
|
481 |
$current = '';
|
482 |
}
|
483 |
-
if ( empty( $tabs[$current] ) && empty( $wp->query_vars['view'] ) ) {
|
484 |
$tab_keys = array_keys( $tabs );
|
485 |
$current = reset( $tab_keys );
|
486 |
}
|
487 |
$_REQUEST['tab'] = $current;
|
488 |
$_POST['tab'] = $current;
|
489 |
$_GET['tab'] = $current;
|
490 |
-
if ( !learn_press_current_user_can_view_profile_section( $current, $user ) ) {
|
491 |
learn_press_get_template( 'profile/private-area.php' );
|
492 |
} else {
|
493 |
-
if ( !empty( $tabs ) && !empty( $tabs[$current] ) ) :
|
494 |
learn_press_get_template( 'profile/index.php',
|
495 |
array(
|
496 |
'user' => $user,
|
@@ -501,11 +506,11 @@ class LP_Shortcodes {
|
|
501 |
else:
|
502 |
if ( $wp->query_vars['view'] == LP()->settings->get( 'profile_endpoints.profile-order-details' ) ) {
|
503 |
$order_id = 0;
|
504 |
-
if ( !empty( $wp->query_vars['id'] ) ) {
|
505 |
$order_id = $wp->query_vars['id'];
|
506 |
}
|
507 |
$order = learn_press_get_order( $order_id );
|
508 |
-
if (
|
509 |
learn_press_display_message( __( 'Invalid order!', 'learnpress' ), 'error' );
|
510 |
} else {
|
511 |
learn_press_get_template( 'profile/order-details.php',
|
@@ -532,18 +537,20 @@ class LP_Shortcodes {
|
|
532 |
$atts
|
533 |
);
|
534 |
add_filter( 'login_form_bottom', array( __CLASS__, 'login_form_bottom' ), 10, 2 );
|
|
|
535 |
return self::wrapper_shortcode( learn_press_get_template_content( 'profile/login-form.php', $atts ) );
|
536 |
}
|
537 |
|
538 |
-
public static function login_form_bottom
|
539 |
ob_start();
|
540 |
?>
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
<?php $html .= ob_get_clean();
|
|
|
547 |
return $html;
|
548 |
}
|
549 |
}
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
10 |
}
|
11 |
|
39 |
public static function auto_shortcode( $template ) {
|
40 |
if ( is_page() ) {
|
41 |
global $post, $wp_query, $wp;
|
42 |
+
$page_id = ! empty( $wp_query->queried_object_id ) ?
|
43 |
$wp_query->queried_object_id :
|
44 |
+
( ! empty( $wp_query->query_vars['page_id'] ) ? $wp_query->query_vars['page_id'] : - 1 );
|
45 |
if ( $page_id == learn_press_get_page_id( 'checkout' ) ) {
|
46 |
+
if ( ! preg_match( '/\[learn_press_checkout\s?(.*)\]/', $post->post_content ) ) {
|
47 |
$post->post_content .= '[learn_press_checkout]';
|
48 |
}
|
49 |
} elseif ( $page_id == learn_press_get_page_id( 'profile' ) ) {
|
50 |
if ( empty( $wp->query_vars['user'] ) ) {
|
51 |
$current_user = wp_get_current_user();
|
52 |
+
if ( ! empty( $current_user->user_login ) ) {
|
53 |
$redirect = learn_press_get_endpoint_url( '', $current_user->user_login, learn_press_get_page_link( 'profile' ) );
|
54 |
+
if ( $redirect && ! learn_press_is_current_url( $redirect ) ) {
|
55 |
wp_redirect( $redirect );
|
56 |
die();
|
57 |
}
|
58 |
} else {
|
59 |
+
if ( ! preg_match( '/\[learn_press_login_form\s?(.*)\]/', $post->post_content ) ) {
|
60 |
+
if ( ! empty( $_REQUEST['redirect_to'] ) ) {
|
61 |
$redirect = $_REQUEST['redirect_to'];
|
62 |
} else {
|
63 |
$redirect = '';
|
70 |
parse_str( $wp->matched_query, $query );
|
71 |
if ( empty( $query['view'] ) ) {
|
72 |
$redirect = learn_press_user_profile_link( $wp->query_vars['user'] );
|
73 |
+
if ( ! empty( $redirect ) ) {
|
74 |
wp_redirect( $redirect );
|
75 |
die();
|
76 |
}
|
81 |
$endpoints = learn_press_get_profile_endpoints();
|
82 |
foreach ( $query as $k => $v ) {
|
83 |
if ( ( $k == 'view' ) ) {
|
84 |
+
if ( ! $v ) {
|
85 |
$v = reset( $endpoints );
|
86 |
}
|
87 |
+
if ( ! in_array( $v, $endpoints ) ) {
|
88 |
learn_press_is_404();
|
89 |
}
|
90 |
}
|
91 |
+
if ( ! empty( $v ) ) {
|
92 |
+
$wp->query_vars[ $k ] = $v;
|
93 |
}
|
94 |
}
|
95 |
}
|
96 |
+
if ( ! preg_match( '/\[learn_press_profile\s?(.*)\]/', $post->post_content ) ) {
|
97 |
$post->post_content .= '[learn_press_profile]';
|
98 |
}
|
99 |
|
100 |
}
|
101 |
|
102 |
} elseif ( $page_id == learn_press_get_page_id( 'become_a_teacher' ) ) {
|
103 |
+
if ( ! preg_match( '/\[learn_press_become_teacher_form\s?(.*)\]/', $post->post_content ) ) {
|
104 |
$post->post_content .= '[learn_press_become_teacher_form]';
|
105 |
}
|
106 |
}
|
107 |
|
108 |
do_action( 'learn_press_auto_shortcode', $post, $template );
|
109 |
}
|
110 |
+
|
111 |
return $template;
|
112 |
}
|
113 |
|
114 |
public static function _login_form_bottom( $content, $args ) {
|
115 |
+
if ( ! ( ! empty( $args['context'] ) && $args['context'] == 'learn-press-login' ) ) {
|
116 |
return;
|
117 |
}
|
118 |
}
|
121 |
ob_start();
|
122 |
learn_press_print_messages();
|
123 |
$html = ob_get_clean();
|
124 |
+
|
125 |
return '<div class="learnpress">' . $html . $content . '</div>';
|
126 |
}
|
127 |
|
153 |
learn_press_get_template( 'checkout/form.php', array( 'checkout' => LP()->checkout() ) );
|
154 |
}
|
155 |
}
|
156 |
+
|
157 |
return self::wrapper_shortcode( ob_get_clean() );
|
158 |
}
|
159 |
|
174 |
$arr_orders = array( 'DESC', 'ASC' );
|
175 |
$order = strtoupper( $order );
|
176 |
|
177 |
+
if ( ! in_array( $order_by, $arr_orders_by ) || ! in_array( 'post_' . $order_by, $arr_orders_by ) ) {
|
178 |
$order_by = 'post_date';
|
179 |
} else {
|
180 |
if ( $order_by !== 'comment_count' ) {
|
182 |
}
|
183 |
}
|
184 |
|
185 |
+
if ( ! in_array( $order, $arr_orders ) ) {
|
186 |
$order = 'DESC';
|
187 |
}
|
188 |
+
if ( ! absint( $limit ) ) {
|
189 |
$limit = 10;
|
190 |
}
|
191 |
|
231 |
$arr_orders = array( 'DESC', 'ASC' );
|
232 |
$order = strtoupper( $order );
|
233 |
|
234 |
+
if ( ! in_array( $order_by, $arr_orders_by ) || ! in_array( 'post_' . $order_by, $arr_orders_by ) ) {
|
235 |
$order_by = 'post_date';
|
236 |
} else {
|
237 |
if ( $order_by !== 'comment_count' ) {
|
239 |
}
|
240 |
}
|
241 |
|
242 |
+
if ( ! in_array( $order, $arr_orders ) ) {
|
243 |
$order = 'DESC';
|
244 |
}
|
245 |
+
if ( ! absint( $limit ) ) {
|
246 |
$limit = 10;
|
247 |
}
|
248 |
|
285 |
$arr_orders = array( 'DESC', 'ASC' );
|
286 |
$order = strtoupper( $order );
|
287 |
|
288 |
+
if ( ! in_array( $order, $arr_orders ) ) {
|
289 |
$order = 'DESC';
|
290 |
}
|
291 |
+
if ( ! absint( $limit ) ) {
|
292 |
$limit = 10;
|
293 |
}
|
294 |
|
326 |
|
327 |
public static function render_shortcode_archive( $lp_posts = array() ) {
|
328 |
global $post;
|
329 |
+
if ( ! empty( $lp_posts ) ) {
|
330 |
do_action( 'learn_press_before_courses_loop' );
|
331 |
|
332 |
learn_press_begin_courses_loop();
|
353 |
|
354 |
// Get the order
|
355 |
$order_id = absint( $order_id );
|
356 |
+
$order_key = ! empty( $_GET['key'] ) ? $_GET['key'] : '';
|
357 |
|
358 |
if ( $order_id > 0 && ( $order = learn_press_get_order( $order_id ) ) && $order->post->post_status != 'trash' ) {
|
359 |
+
if ( $order->order_key != $order_key ) {
|
360 |
unset( $order );
|
361 |
+
}
|
362 |
} else {
|
363 |
learn_press_display_message( __( 'Invalid order!', 'learnpress' ), 'error' );
|
364 |
+
|
365 |
return;
|
366 |
}
|
367 |
|
380 |
public static function confirm_order( $atts = null ) {
|
381 |
$atts = shortcode_atts(
|
382 |
array(
|
383 |
+
'order_id' => ! empty( $_REQUEST['order_id'] ) ? intval( $_REQUEST['order_id'] ) : 0
|
384 |
),
|
385 |
$atts
|
386 |
);
|
411 |
$message = '';
|
412 |
$code = 0;
|
413 |
|
414 |
+
if ( ! is_user_logged_in() ) {
|
415 |
$message = __( "Please login to fill in this form.", 'learnpress' );
|
416 |
$code = 1;
|
417 |
} elseif ( in_array( LP_TEACHER_ROLE, $user->user->roles ) ) {
|
425 |
$code = 4;
|
426 |
}
|
427 |
|
428 |
+
if ( ! apply_filters( 'learn_press_become_a_teacher_display_form', true, $code, $message ) ) {
|
429 |
return;
|
430 |
}
|
431 |
|
470 |
$output = '';
|
471 |
|
472 |
ob_start();
|
473 |
+
if ( ! $user ) {
|
474 |
if ( empty( $wp_query->query['user'] ) ) {
|
475 |
|
476 |
} else {
|
480 |
} else {
|
481 |
$user = LP_User_Factory::get_user( $user->ID );
|
482 |
$tabs = learn_press_user_profile_tabs( $user );
|
483 |
+
if ( ! empty( $wp->query_vars['view'] ) ) {
|
484 |
$current = $wp->query_vars['view'];
|
485 |
} else {
|
486 |
$current = '';
|
487 |
}
|
488 |
+
if ( empty( $tabs[ $current ] ) && empty( $wp->query_vars['view'] ) ) {
|
489 |
$tab_keys = array_keys( $tabs );
|
490 |
$current = reset( $tab_keys );
|
491 |
}
|
492 |
$_REQUEST['tab'] = $current;
|
493 |
$_POST['tab'] = $current;
|
494 |
$_GET['tab'] = $current;
|
495 |
+
if ( ! learn_press_current_user_can_view_profile_section( $current, $user ) ) {
|
496 |
learn_press_get_template( 'profile/private-area.php' );
|
497 |
} else {
|
498 |
+
if ( ! empty( $tabs ) && ! empty( $tabs[ $current ] ) ) :
|
499 |
learn_press_get_template( 'profile/index.php',
|
500 |
array(
|
501 |
'user' => $user,
|
506 |
else:
|
507 |
if ( $wp->query_vars['view'] == LP()->settings->get( 'profile_endpoints.profile-order-details' ) ) {
|
508 |
$order_id = 0;
|
509 |
+
if ( ! empty( $wp->query_vars['id'] ) ) {
|
510 |
$order_id = $wp->query_vars['id'];
|
511 |
}
|
512 |
$order = learn_press_get_order( $order_id );
|
513 |
+
if ( ! $order ) {
|
514 |
learn_press_display_message( __( 'Invalid order!', 'learnpress' ), 'error' );
|
515 |
} else {
|
516 |
learn_press_get_template( 'profile/order-details.php',
|
537 |
$atts
|
538 |
);
|
539 |
add_filter( 'login_form_bottom', array( __CLASS__, 'login_form_bottom' ), 10, 2 );
|
540 |
+
|
541 |
return self::wrapper_shortcode( learn_press_get_template_content( 'profile/login-form.php', $atts ) );
|
542 |
}
|
543 |
|
544 |
+
public static function login_form_bottom( $html, $args ) {
|
545 |
ob_start();
|
546 |
?>
|
547 |
+
<p>
|
548 |
+
<a href="<?php echo wp_lostpassword_url(); ?>"><?php _e( 'Forgot password?', 'learnpress' ); ?></a>
|
549 |
+
|
|
550 |
+
<a href="<?php echo wp_registration_url(); ?>"><?php _e( 'Create new account', 'learnpress' ); ?></a>
|
551 |
+
</p>
|
552 |
<?php $html .= ob_get_clean();
|
553 |
+
|
554 |
return $html;
|
555 |
}
|
556 |
}
|
inc/course/abstract-lp-course.php
CHANGED
@@ -67,8 +67,8 @@ abstract class LP_Abstract_Course {
|
|
67 |
$this->id = absint( $course->ID );
|
68 |
$this->post = get_post( $course->ID );
|
69 |
}
|
70 |
-
if ( empty( self::$_lessons[$this->id] ) ) {
|
71 |
-
self::$_lessons[$this->id] = array();
|
72 |
}
|
73 |
if ( $user ) {
|
74 |
$this->init_for_user( $user );
|
@@ -105,7 +105,7 @@ abstract class LP_Abstract_Course {
|
|
105 |
$value = false;
|
106 |
switch ( $key ) {
|
107 |
case 'current_item':
|
108 |
-
if ( !empty( LP()->global['course-item'] ) ) {
|
109 |
$value = LP()->global['course-item'];
|
110 |
}
|
111 |
|
@@ -123,7 +123,7 @@ abstract class LP_Abstract_Course {
|
|
123 |
$value = get_post_meta( $this->id, '_lp_' . $key, true );
|
124 |
$duration = learn_press_get_course_duration_support();
|
125 |
$duration_keys = array_keys( $duration );
|
126 |
-
if ( !preg_match_all( '!([0-9]+)\s(' . join( '|', $duration_keys ) . ')!', $value, $matches ) ) {
|
127 |
$a1 = absint( $value );
|
128 |
$a2 = end( $duration_keys );
|
129 |
$value = $a1 . ' ' . $a2;
|
@@ -145,11 +145,12 @@ abstract class LP_Abstract_Course {
|
|
145 |
}
|
146 |
|
147 |
}
|
148 |
-
if ( !empty( $value ) ) {
|
149 |
$this->$key = $value;
|
150 |
}
|
151 |
}
|
152 |
-
|
|
|
153 |
}
|
154 |
|
155 |
/**
|
@@ -173,7 +174,7 @@ abstract class LP_Abstract_Course {
|
|
173 |
} elseif ( ( $parent_id = wp_get_post_parent_id( $this->id ) ) && has_post_thumbnail( $parent_id ) ) {
|
174 |
$image = get_the_post_thumbnail( $parent_id, $size, $attr );
|
175 |
}
|
176 |
-
if (
|
177 |
if ( 'course_thumbnail' == $size ) {
|
178 |
$image = LP()->image( 'placeholder-400x250' );
|
179 |
} else {
|
@@ -181,6 +182,7 @@ abstract class LP_Abstract_Course {
|
|
181 |
}
|
182 |
$image = sprintf( '<img src="%s" %s />', $image, '' );
|
183 |
}
|
|
|
184 |
return apply_filters( 'learn_press_course_image', $image, $this->id, $size, $attr );
|
185 |
}
|
186 |
|
@@ -194,16 +196,17 @@ abstract class LP_Abstract_Course {
|
|
194 |
|
195 |
public function get_request_item( $field = 'id' ) {
|
196 |
$return = LP()->global['course-item'];
|
197 |
-
if ( !empty( $_REQUEST['course-item'] ) ) {
|
198 |
$type = $_REQUEST['course-item'];
|
199 |
if ( $field == 'type' ) {
|
200 |
$return = $type;
|
201 |
} elseif ( $field == 'id' ) {
|
202 |
-
$return = !empty( $_REQUEST[$type . '_id'] ) ? $_REQUEST[$type . '_id'] : 0;
|
203 |
} elseif ( $field == 'name' ) {
|
204 |
-
$return = !empty( $_REQUEST[$type] ) ? $_REQUEST[$type] : false;
|
205 |
}
|
206 |
}
|
|
|
207 |
return $return;
|
208 |
}
|
209 |
|
@@ -224,16 +227,20 @@ abstract class LP_Abstract_Course {
|
|
224 |
$enrollable = true;
|
225 |
|
226 |
// Products must exist of course
|
227 |
-
if (
|
228 |
$enrollable = false;
|
229 |
// Check the product is published
|
230 |
-
} elseif ( $this->post->post_status !== 'publish' && !current_user_can( 'edit_post', $this->id ) ) {
|
231 |
$enrollable = false;
|
232 |
}
|
233 |
|
234 |
return apply_filters( 'learn_press_is_enrollable', $enrollable, $this );
|
235 |
}
|
236 |
|
|
|
|
|
|
|
|
|
237 |
/**
|
238 |
* Course is exists if the post is not empty
|
239 |
*
|
@@ -279,6 +286,7 @@ abstract class LP_Abstract_Course {
|
|
279 |
FROM {$wpdb->posts}
|
280 |
WHERE ID IN(" . join( ',', $ids ) . ")
|
281 |
" );
|
|
|
282 |
return $posts;
|
283 |
}
|
284 |
|
@@ -299,18 +307,19 @@ abstract class LP_Abstract_Course {
|
|
299 |
* @return mixed
|
300 |
*/
|
301 |
public function get_curriculum( $section_id = 0, $force = false ) {
|
302 |
-
if (
|
303 |
return false;
|
304 |
}
|
305 |
$curriculum = _learn_press_get_course_curriculum( $this->id, $force );
|
306 |
$return = false;
|
307 |
if ( $section_id ) {
|
308 |
-
if ( !empty( $curriculum[$section_id] ) ) {
|
309 |
-
$return = $curriculum[$section_id];
|
310 |
}
|
311 |
} else {
|
312 |
$return = $curriculum;
|
313 |
}
|
|
|
314 |
return apply_filters( 'learn_press_course_curriculum', $return, $this->id, $section_id );
|
315 |
}
|
316 |
|
@@ -337,6 +346,7 @@ abstract class LP_Abstract_Course {
|
|
337 |
$enrolled = $real_enrolled;
|
338 |
}
|
339 |
}
|
|
|
340 |
return apply_filters( 'learn_press_count_users_enrolled', $enrolled, $this );
|
341 |
}
|
342 |
|
@@ -349,6 +359,7 @@ abstract class LP_Abstract_Course {
|
|
349 |
*/
|
350 |
public function get_users_enrolled( $force = false ) {
|
351 |
$this->_count_users = LP_Cache::get_enrolled_courses( $this->id );
|
|
|
352 |
return $this->_count_users;
|
353 |
/*
|
354 |
if ( ( $this->_count_users === null && !array_key_exists( $this->id, self::$course_users ) ) || $force ) {
|
@@ -387,6 +398,7 @@ abstract class LP_Abstract_Course {
|
|
387 |
else:
|
388 |
$output = apply_filters( 'learn_press_no_student_enrolled_html', __( 'No student enrolled', 'learnpress' ), $this );
|
389 |
endif;
|
|
|
390 |
return $output;
|
391 |
}
|
392 |
|
@@ -396,6 +408,7 @@ abstract class LP_Abstract_Course {
|
|
396 |
if ( $user_data ) {
|
397 |
$author_name = $user_data->display_name;
|
398 |
}
|
|
|
399 |
return apply_filters( 'learn_press_course_instructor', $author_name, $this->id );
|
400 |
}
|
401 |
|
@@ -406,14 +419,16 @@ abstract class LP_Abstract_Course {
|
|
406 |
learn_press_user_profile_link( $this->post->post_author ),
|
407 |
$instructor
|
408 |
);
|
|
|
409 |
return apply_filters( 'learn_press_course_instructor_html', $html, $this->post->post_author, $this->id );
|
410 |
}
|
411 |
|
412 |
public function get_course_info( $user_id = null ) {
|
413 |
-
if (
|
414 |
$user_id = get_current_user_id();
|
415 |
}
|
416 |
$user = learn_press_get_user( $user_id );
|
|
|
417 |
return $user->get_course_info( $this->id );
|
418 |
}
|
419 |
|
@@ -424,6 +439,7 @@ abstract class LP_Abstract_Course {
|
|
424 |
*/
|
425 |
public function is_free() {
|
426 |
$is_free = ( 'no' == $this->payment || ( 0 >= $this->get_price() ) );
|
|
|
427 |
return apply_filters( 'learn_press_is_free_course', $is_free, $this );
|
428 |
}
|
429 |
|
@@ -433,11 +449,12 @@ abstract class LP_Abstract_Course {
|
|
433 |
*/
|
434 |
public function get_origin_price() {
|
435 |
$price = $this->price;
|
436 |
-
if (
|
437 |
$price = 0;
|
438 |
} else {
|
439 |
$price = floatval( $price );
|
440 |
}
|
|
|
441 |
return $price;
|
442 |
}
|
443 |
|
@@ -455,10 +472,11 @@ abstract class LP_Abstract_Course {
|
|
455 |
$now = current_time( 'timestamp' );
|
456 |
$end = strtotime( $end_date );
|
457 |
$start = strtotime( $start_date );
|
458 |
-
if ( ( $now >= $start ||
|
459 |
$res = $sale_price;
|
460 |
}
|
461 |
}
|
|
|
462 |
return $res;
|
463 |
}
|
464 |
|
@@ -473,7 +491,7 @@ abstract class LP_Abstract_Course {
|
|
473 |
*/
|
474 |
public function get_price() {
|
475 |
$price = $this->price;
|
476 |
-
if (
|
477 |
$price = 0;
|
478 |
} else {
|
479 |
$price = floatval( $price );
|
@@ -482,6 +500,7 @@ abstract class LP_Abstract_Course {
|
|
482 |
$price = $sale_price;
|
483 |
}
|
484 |
}
|
|
|
485 |
return apply_filters( 'learn_press_course_price', $price, $this );
|
486 |
}
|
487 |
|
@@ -499,6 +518,7 @@ abstract class LP_Abstract_Course {
|
|
499 |
$price = learn_press_format_price( $price, true );
|
500 |
$price_html = apply_filters( 'learn_press_course_price_html', $price, $this );
|
501 |
}
|
|
|
502 |
return $price_html;
|
503 |
}
|
504 |
|
@@ -515,6 +535,7 @@ abstract class LP_Abstract_Course {
|
|
515 |
$origin_price = learn_press_format_price( $origin_price, true );
|
516 |
$origin_price_html = apply_filters( 'learn_press_course_origin_price_html', $origin_price, $this );
|
517 |
}
|
|
|
518 |
//}
|
519 |
return $origin_price_html;
|
520 |
}
|
@@ -526,10 +547,14 @@ abstract class LP_Abstract_Course {
|
|
526 |
* @return array list enrolled students
|
527 |
*/
|
528 |
public function get_students_list( $force = false, $limit = - 1 ) {
|
529 |
-
if (
|
|
|
|
|
530 |
|
531 |
global $wpdb;
|
532 |
-
if ( $limit < 0 )
|
|
|
|
|
533 |
if ( $this->_students_list === null || $force ) {
|
534 |
$query = $wpdb->prepare( "
|
535 |
SELECT DISTINCT u.*
|
@@ -541,6 +566,7 @@ abstract class LP_Abstract_Course {
|
|
541 |
", $this->id, LP_COURSE_CPT, $limit );
|
542 |
$this->_students_list = $wpdb->get_results( $query );
|
543 |
}
|
|
|
544 |
return $this->_students_list;
|
545 |
}
|
546 |
|
@@ -560,7 +586,8 @@ abstract class LP_Abstract_Course {
|
|
560 |
'field' => $field
|
561 |
)
|
562 |
);
|
563 |
-
$quizzes = !empty( $items['quizzes'] ) ? $items['quizzes'] : false;
|
|
|
564 |
return apply_filters( 'learn_press_course_quizzes', $quizzes, $this );
|
565 |
}
|
566 |
|
@@ -586,7 +613,8 @@ abstract class LP_Abstract_Course {
|
|
586 |
$args
|
587 |
);
|
588 |
$items = $this->get_curriculum_items( $curriculum_args );
|
589 |
-
$lessons = !empty( $items['lessons'] ) ? $items['lessons'] : false;
|
|
|
590 |
return apply_filters( 'learn_press_course_lessons', $lessons, $this );
|
591 |
}
|
592 |
|
@@ -626,10 +654,10 @@ abstract class LP_Abstract_Course {
|
|
626 |
// overwrite default values with params passed
|
627 |
extract( $args );
|
628 |
$items = array();
|
629 |
-
if (
|
630 |
$curriculum = $this->get_curriculum( null, $force );
|
631 |
$index = 0;
|
632 |
-
if ( !empty( $field ) ) {
|
633 |
if ( is_string( $field ) ) {
|
634 |
$field = explode( '![\s]+!', $field );
|
635 |
}
|
@@ -637,7 +665,7 @@ abstract class LP_Abstract_Course {
|
|
637 |
} else {
|
638 |
$field = false;
|
639 |
}
|
640 |
-
if ( !empty( $field_map ) ) {
|
641 |
if ( is_string( $field_map ) ) {
|
642 |
$field_map = explode( '![\s]+!', $field_map );
|
643 |
}
|
@@ -645,7 +673,7 @@ abstract class LP_Abstract_Course {
|
|
645 |
} else {
|
646 |
$field_map = false;
|
647 |
}
|
648 |
-
if ( !empty( $field_format ) ) {
|
649 |
if ( is_string( $field_format ) ) {
|
650 |
$field_format = explode( '![\s]+!', $field_format );
|
651 |
}
|
@@ -710,24 +738,26 @@ abstract class LP_Abstract_Course {
|
|
710 |
} else {
|
711 |
// combine lessons and quizzes as it should be in curriculum
|
712 |
for ( $i = 0, $n = sizeof( $quizzes ) + sizeof( $lessons ); $i < $n; $i ++ ) {
|
713 |
-
if ( !empty( $quizzes[$i] ) ) {
|
714 |
-
$items[] = $quizzes[$i];
|
715 |
-
} elseif ( !empty( $lessons[$i] ) ) {
|
716 |
-
$items[] = $lessons[$i];
|
717 |
}
|
718 |
}
|
719 |
}
|
720 |
}
|
|
|
721 |
return apply_filters( 'learn_press_get_course_items', $items, $this );
|
722 |
}
|
723 |
|
724 |
public function is_viewing( $content = '' ) {
|
725 |
|
726 |
-
$item_type = !empty( $_REQUEST['course-item'] ) ? $_REQUEST['course-item'] : '';
|
727 |
$viewing = apply_filters( 'learn_press_course_is_viewing', $item_type ? $item_type : 'course' );
|
728 |
if ( $content ) {
|
729 |
return $content == $viewing;
|
730 |
}
|
|
|
731 |
return $viewing;
|
732 |
}
|
733 |
|
@@ -741,6 +771,7 @@ abstract class LP_Abstract_Course {
|
|
741 |
$return = $item->ID;
|
742 |
}
|
743 |
}
|
|
|
744 |
return apply_filters( 'learn_press_viewing_course_item', $return, $item_id, $this->id );
|
745 |
}
|
746 |
|
@@ -754,6 +785,7 @@ abstract class LP_Abstract_Course {
|
|
754 |
}*/
|
755 |
$current_item = $this->current_item;
|
756 |
$view_id = $current_item ? $current_item->ID : 0;
|
|
|
757 |
return apply_filters( 'learn_press_is_current_course_item', $view_id == $item_id, $item_id, $view_id, $this->id );
|
758 |
}
|
759 |
|
@@ -797,37 +829,43 @@ abstract class LP_Abstract_Course {
|
|
797 |
}
|
798 |
|
799 |
/**
|
800 |
-
* Return true if this course can be
|
801 |
*
|
802 |
* @return mixed
|
803 |
*/
|
804 |
public function is_purchasable() {
|
805 |
// TODO: needs to check more criteria, currently only check if this course is required enrollment
|
806 |
-
$is_purchasable = $this->
|
807 |
-
|
808 |
-
$max_allowed = $this->max_students;
|
809 |
-
if ( $max_allowed > 0 ) {
|
810 |
-
$count_in_order = $this->count_in_order( array( 'completed', 'processing' ) );
|
811 |
-
$is_purchasable = $is_purchasable && ( $count_in_order < $max_allowed );
|
812 |
-
}
|
813 |
-
}
|
814 |
return apply_filters( 'learn_press_item_is_purchasable', $is_purchasable, $this->id );
|
815 |
}
|
816 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
817 |
public function count_in_order( $statuses = 'completed' ) {
|
818 |
global $wpdb;
|
819 |
static $data = array();
|
820 |
settype( $statuses, 'array' );
|
821 |
foreach ( $statuses as $k => $v ) {
|
822 |
-
if ( !preg_match( '/^lp-/', $v ) ) {
|
823 |
-
$statuses[$k] = 'lp-' . $v;
|
824 |
}
|
825 |
}
|
826 |
sort( $statuses );
|
827 |
$key = md5( serialize( $statuses ) );
|
828 |
-
if ( !array_key_exists( $key, $data ) ) {
|
829 |
-
$in_clause
|
830 |
-
$query
|
831 |
SELECT count(oim.meta_id)
|
832 |
FROM {$wpdb->learnpress_order_itemmeta} oim
|
833 |
INNER JOIN {$wpdb->learnpress_order_items} oi ON oi.order_item_id = oim.learnpress_order_item_id
|
@@ -837,9 +875,10 @@ abstract class LP_Abstract_Course {
|
|
837 |
WHERE o.post_type = %s
|
838 |
AND o.post_status IN ($in_clause)
|
839 |
", array_merge( array( '_course_id', $this->id, 'lp_order' ), $statuses ) );
|
840 |
-
$data[$key] = $wpdb->get_var( $query );
|
841 |
}
|
842 |
-
|
|
|
843 |
}
|
844 |
|
845 |
public function need_payment() {
|
@@ -848,11 +887,11 @@ abstract class LP_Abstract_Course {
|
|
848 |
|
849 |
public function has_item( $item_id ) {
|
850 |
static $items = array();
|
851 |
-
if ( empty( $items[$this->id] ) ) {
|
852 |
-
$items[$this->id] = $this->get_curriculum_items( array( 'field' => 'ID'/*, 'force' => true */ ) );
|
853 |
}
|
854 |
|
855 |
-
return in_array( $item_id, (array) $items[$this->id] );
|
856 |
}
|
857 |
|
858 |
public function can_view_item( $item_id ) {
|
@@ -864,10 +903,10 @@ abstract class LP_Abstract_Course {
|
|
864 |
public function get_item( $thing = '' ) {
|
865 |
$return = false;
|
866 |
$curriculum = $this->get_curriculum_items();
|
867 |
-
if (
|
868 |
return $return;
|
869 |
}
|
870 |
-
if (
|
871 |
return $return;
|
872 |
}
|
873 |
if ( $thing ) {
|
@@ -887,20 +926,21 @@ abstract class LP_Abstract_Course {
|
|
887 |
}
|
888 |
}
|
889 |
}
|
|
|
890 |
return apply_filters( 'learn_press_course_item', $return, $item, $this->id );
|
891 |
}
|
892 |
|
893 |
public function get_item_link( $item_id ) {
|
894 |
static $item_links = array();
|
895 |
$key = $this->id . '-' . $item_id;
|
896 |
-
if ( empty( $item_links[$key] ) ) {
|
897 |
-
if (
|
898 |
return false;
|
899 |
}
|
900 |
$permalink = get_the_permalink( $item_id );
|
901 |
$post_types = get_post_types( null, 'objects' );
|
902 |
$item_type = get_post_type( $item_id );
|
903 |
-
$has_query
|
904 |
switch ( $item_type ) {
|
905 |
case 'lp_lesson':
|
906 |
case 'lp_quiz':
|
@@ -917,7 +957,7 @@ abstract class LP_Abstract_Course {
|
|
917 |
}
|
918 |
}
|
919 |
if ( empty( $slug ) ) {
|
920 |
-
$slug = $post_types[$item_type]->rewrite['slug'];
|
921 |
}
|
922 |
$slug = sanitize_title_with_dashes( $slug );
|
923 |
$prefix = preg_replace( '!^/!', '', trailingslashit( $slug ) );
|
@@ -955,8 +995,8 @@ abstract class LP_Abstract_Course {
|
|
955 |
$items = (array) $this->get_curriculum_items( array( 'field' => 'ID' ) );
|
956 |
} else {
|
957 |
$items = (array) $this->get_curriculum_items( array( 'field' => 'ID', 'group' => true ) );
|
958 |
-
if ( !empty( $items[$items_types] ) ) {
|
959 |
-
$items = array_values( $items[$items_types] );
|
960 |
} else {
|
961 |
$items = array();
|
962 |
}
|
@@ -966,7 +1006,7 @@ abstract class LP_Abstract_Course {
|
|
966 |
return false;
|
967 |
}
|
968 |
$current_item = $args['current_item'] ? $args['current_item'] : ( $this->current_item ? $this->current_item->id : 0 );
|
969 |
-
if (
|
970 |
$current_item = reset( $items );
|
971 |
}
|
972 |
$next_item = false;
|
@@ -978,13 +1018,13 @@ abstract class LP_Abstract_Course {
|
|
978 |
if ( $args['viewable'] !== null ) {
|
979 |
$user = learn_press_get_current_user();
|
980 |
for ( $i = $pos + 1; $i < $items_len; $i ++ ) {
|
981 |
-
if (
|
982 |
-
$next_item = $items[$i];
|
983 |
break;
|
984 |
}
|
985 |
}
|
986 |
} else {
|
987 |
-
$next_item = $items[$pos + 1];
|
988 |
}
|
989 |
}
|
990 |
} else {
|
@@ -994,19 +1034,20 @@ abstract class LP_Abstract_Course {
|
|
994 |
if ( $args['viewable'] !== null ) {
|
995 |
$user = learn_press_get_current_user();
|
996 |
for ( $i = $pos - 1; $i >= 0; $i -- ) {
|
997 |
-
if (
|
998 |
-
$next_item = $items[$i];
|
999 |
break;
|
1000 |
}
|
1001 |
}
|
1002 |
} else {
|
1003 |
-
$next_item = $items[$pos - 1];
|
1004 |
}
|
1005 |
}
|
1006 |
}
|
1007 |
} else {
|
1008 |
-
$next_item = $args['dir'] == 'next' ? $items[1] : $items[$items_len - 1];
|
1009 |
}
|
|
|
1010 |
return apply_filters( 'learn_press_course_' . $args['dir'] . '_item', $next_item, $current_item, $this );
|
1011 |
}
|
1012 |
|
@@ -1028,6 +1069,7 @@ abstract class LP_Abstract_Course {
|
|
1028 |
|
1029 |
return ob_get_clean();
|
1030 |
}
|
|
|
1031 |
return false;
|
1032 |
}
|
1033 |
|
@@ -1042,9 +1084,14 @@ abstract class LP_Abstract_Course {
|
|
1042 |
);
|
1043 |
if ( $next_item = $this->get_next_item( $args ) ) {
|
1044 |
ob_start();
|
1045 |
-
learn_press_get_template( 'content-lesson/prev-button.php', array(
|
|
|
|
|
|
|
|
|
1046 |
return ob_get_clean();
|
1047 |
}
|
|
|
1048 |
return false;
|
1049 |
}
|
1050 |
|
@@ -1055,12 +1102,12 @@ abstract class LP_Abstract_Course {
|
|
1055 |
* @return mixed|null|void
|
1056 |
*/
|
1057 |
public function get_course_result_html( $user_id = 0, $force = false ) {
|
1058 |
-
if (
|
1059 |
$user_id = get_current_user_id();
|
1060 |
}
|
1061 |
$html = '';
|
1062 |
$quizzes = $this->get_quizzes();
|
1063 |
-
if ( ( $this->course_result == 'evaluate_lesson' ) ||
|
1064 |
|
1065 |
$lessons = $this->get_lessons();
|
1066 |
$total_items = sizeof( $quizzes ) + sizeof( $lessons );
|
@@ -1074,6 +1121,7 @@ abstract class LP_Abstract_Course {
|
|
1074 |
$html = sprintf( __( '%d%% completed', 'learnpress' ), $this->_evaluate_course_by_quizzes( $user_id, $force ) * 100 );
|
1075 |
}
|
1076 |
}
|
|
|
1077 |
return apply_filters( 'learn_press_course_result_html', $html, $this->id, $user_id );
|
1078 |
}
|
1079 |
|
@@ -1084,6 +1132,7 @@ abstract class LP_Abstract_Course {
|
|
1084 |
$completed_items = $this->count_completed_items( $user_id, $force, $type );
|
1085 |
$result = round( $completed_items / sizeof( $items ) * 100 );
|
1086 |
}
|
|
|
1087 |
return apply_filters( 'learn_press_course_results_by_items', $result, $this->id, $user_id );
|
1088 |
}
|
1089 |
|
@@ -1094,6 +1143,7 @@ abstract class LP_Abstract_Course {
|
|
1094 |
$completed_items = $this->count_completed_items( $user_id, $force, 'lp_lesson' );
|
1095 |
$result = round( $completed_items / sizeof( $lessons ) * 100 );
|
1096 |
}
|
|
|
1097 |
return apply_filters( 'learn_press_course_results_by_items', $result, $this->id, $user_id );
|
1098 |
}
|
1099 |
|
@@ -1106,13 +1156,13 @@ abstract class LP_Abstract_Course {
|
|
1106 |
* @return mixed|null|void
|
1107 |
*/
|
1108 |
public function evaluate_course_results( $user_id = 0, $force = false ) {
|
1109 |
-
if (
|
1110 |
$user_id = get_current_user_id();
|
1111 |
}
|
1112 |
|
1113 |
$quizzes = $this->get_quizzes();
|
1114 |
|
1115 |
-
if ( ( 'evaluate_lesson' === $this->course_result ) ||
|
1116 |
//$results = $this->_evaluate_course_by_items( $user_id, $force );
|
1117 |
$results = $this->_evaluate_course_by_lesson( $user_id, $force );
|
1118 |
} elseif ( 'evaluate_final_quiz' === $this->course_result ) {
|
@@ -1144,28 +1194,30 @@ abstract class LP_Abstract_Course {
|
|
1144 |
$total_point = 0;
|
1145 |
$quizzes_ids = array();
|
1146 |
foreach ( $quizzes as $quiz ) {
|
1147 |
-
if (
|
1148 |
continue;
|
1149 |
}
|
1150 |
-
$quizzes_ids[]
|
1151 |
-
$results[$quiz->ID] = $user->get_quiz_results( $quiz->ID, $this->id, true );
|
1152 |
if ( $quiz = wp_cache_get( $quiz->ID, 'posts' ) ) {
|
1153 |
$total_point += isset( $quiz->mark ) ? absint( $quiz->mark ) : 0;
|
1154 |
}
|
1155 |
-
$achieved_point += is_object( $results[$quiz->ID] ) ? $results[$quiz->ID]->mark : 0;
|
1156 |
}
|
1157 |
if ( $total_point > 0 ) {
|
1158 |
$result = ( $achieved_point / $total_point ) * 100;
|
1159 |
} else {
|
1160 |
$result = 0;
|
1161 |
}
|
|
|
1162 |
return apply_filters( 'learn_press_evaluate_course_by_quizzes_results', $result, $this->id, $user_id );
|
1163 |
}
|
1164 |
|
1165 |
public function enable_evaluate_item( $item_id, $user_id = 0 ) {
|
1166 |
-
if (
|
1167 |
$user_id = get_current_user_id();
|
1168 |
}
|
|
|
1169 |
return apply_filters( 'learn_press_enable_evaluate_course_item', true, $item_id, $user_id, $this->id );
|
1170 |
}
|
1171 |
|
@@ -1176,7 +1228,7 @@ abstract class LP_Abstract_Course {
|
|
1176 |
$achieved_point = 0;
|
1177 |
$total_point = 0;
|
1178 |
foreach ( $quizzes as $_quiz ) {
|
1179 |
-
if (
|
1180 |
continue;
|
1181 |
}
|
1182 |
$quiz = LP_Quiz::get_quiz( $_quiz->ID );
|
@@ -1197,7 +1249,7 @@ abstract class LP_Abstract_Course {
|
|
1197 |
$quiz_passed = true;
|
1198 |
}*/
|
1199 |
if ( $grade == 'passed' ) {
|
1200 |
-
$quiz_results
|
1201 |
$achieved_point += is_object( $quiz_results ) ? $quiz_results->mark : 0;
|
1202 |
}
|
1203 |
}
|
@@ -1206,15 +1258,16 @@ abstract class LP_Abstract_Course {
|
|
1206 |
} else {
|
1207 |
$result = 0;
|
1208 |
}
|
|
|
1209 |
return apply_filters( 'learn_press_evaluate_course_by_passed_quizzes_results', $result, $this->id, $user_id );
|
1210 |
}
|
1211 |
|
1212 |
public function _get_total_question( $quizzes_ids = array() ) {
|
1213 |
global $wpdb;
|
1214 |
-
if ( !empty( $quizzes_ids ) ) {
|
1215 |
$format = array_fill( 0, sizeof( $quizzes_ids ), '%d' );
|
1216 |
$args = array_merge( $quizzes_ids, array( 'publish', LP_QUESTION_CPT ) );
|
1217 |
-
$sql
|
1218 |
SELECT COUNT(*)
|
1219 |
FROM {$wpdb->prefix}learnpress_quiz_questions lqq
|
1220 |
INNER JOIN {$wpdb->posts} p ON lqq.question_id = p.ID
|
@@ -1224,8 +1277,10 @@ abstract class LP_Abstract_Course {
|
|
1224 |
AND p.post_type = %s",
|
1225 |
$args
|
1226 |
);
|
|
|
1227 |
return $wpdb->get_var( $sql );
|
1228 |
}
|
|
|
1229 |
return 0;
|
1230 |
}
|
1231 |
|
@@ -1247,10 +1302,10 @@ abstract class LP_Abstract_Course {
|
|
1247 |
|
1248 |
$completed_lessons = LP_Cache::get_completed_lessons( false, array() );
|
1249 |
|
1250 |
-
if ( !array_key_exists( $key, $completed_lessons ) || $force ) {
|
1251 |
global $wpdb;
|
1252 |
$course_lessons = $this->get_lessons( array( 'field' => 'ID' ) );
|
1253 |
-
if (
|
1254 |
return 0;
|
1255 |
}
|
1256 |
$query = $wpdb->prepare( "
|
@@ -1263,12 +1318,12 @@ abstract class LP_Abstract_Course {
|
|
1263 |
AND ul.item_id IN(" . join( ",", $course_lessons ) . ")
|
1264 |
", $user_id, 'completed', $this->id );
|
1265 |
|
1266 |
-
$completed_lessons[$key] = $wpdb->get_var( $query );
|
1267 |
|
1268 |
-
LP_Cache::set_completed_lessons( $key, $completed_lessons[$key] );
|
1269 |
}
|
1270 |
|
1271 |
-
return apply_filters( 'learn_press_user_completed_lessons', $completed_lessons[$key], $this->id, $user_id );
|
1272 |
}
|
1273 |
|
1274 |
/**
|
@@ -1283,17 +1338,18 @@ abstract class LP_Abstract_Course {
|
|
1283 |
//static $evaluate_course_by_lesson = array();
|
1284 |
$evaluate_course_by_lesson = LP_Cache::get_evaluate_course_by_lesson( false, array() );
|
1285 |
$key = $user_id . '-' . $this->id;
|
1286 |
-
if ( !array_key_exists( $key, $evaluate_course_by_lesson ) || $force ) {
|
1287 |
$course_lessons = $this->get_lessons( array( 'field' => 'ID' ) );
|
1288 |
$completed_lessons = $this->get_completed_lessons( $user_id );
|
1289 |
if ( $size = sizeof( $course_lessons ) ) {
|
1290 |
-
$evaluate_course_by_lesson[$key] = min( $completed_lessons / sizeof( $course_lessons ), 1 ) * 100;
|
1291 |
} else {
|
1292 |
-
$evaluate_course_by_lesson[$key] = 0;
|
1293 |
}
|
1294 |
-
LP_Cache::set_evaluate_course_by_lesson( $key, $evaluate_course_by_lesson[$key] );
|
1295 |
}
|
1296 |
-
|
|
|
1297 |
}
|
1298 |
|
1299 |
/**
|
@@ -1306,7 +1362,7 @@ abstract class LP_Abstract_Course {
|
|
1306 |
* @return int|mixed|null|void
|
1307 |
*/
|
1308 |
public function get_completed_items( $user_id = 0, $force = false, $type = '' ) {
|
1309 |
-
if (
|
1310 |
$user_id = get_current_user_id();
|
1311 |
}
|
1312 |
_learn_press_parse_user_item_statuses( $user_id, $this->id );
|
@@ -1320,7 +1376,7 @@ abstract class LP_Abstract_Course {
|
|
1320 |
continue;
|
1321 |
}
|
1322 |
$k = sprintf( '%d-%d-%d', $user_id, $this->id, $item_id );
|
1323 |
-
if ( !empty( $item_statuses[$k] ) && $item_statuses[$k] == 'completed' ) {
|
1324 |
if ( $this->enable_evaluate_item( $item_id, $user_id ) ) {
|
1325 |
$completed_items[] = $item_id;
|
1326 |
}
|
@@ -1328,6 +1384,7 @@ abstract class LP_Abstract_Course {
|
|
1328 |
}
|
1329 |
}
|
1330 |
}
|
|
|
1331 |
return apply_filters( 'learn_press_user_completed_items', $completed_items, $this->id, $user_id );
|
1332 |
}
|
1333 |
|
@@ -1343,6 +1400,7 @@ abstract class LP_Abstract_Course {
|
|
1343 |
if ( $items ) {
|
1344 |
$count = sizeof( $items );
|
1345 |
}
|
|
|
1346 |
return apply_filters( 'learn_press_count_user_completed_items', $count, $this->id, $user_id );
|
1347 |
}
|
1348 |
|
@@ -1368,21 +1426,23 @@ abstract class LP_Abstract_Course {
|
|
1368 |
public function _evaluate_course_by_quiz( $user_id, $force = false ) {
|
1369 |
global $wpdb;
|
1370 |
$result = $this->evaluate_quiz( $this->final_quiz, $user_id );
|
|
|
1371 |
return apply_filters( 'learn_press_evaluation_course_quiz', $result, $this->id, $user_id );
|
1372 |
}
|
1373 |
|
1374 |
public function evaluate_quiz( $quiz_id, $user_id, $force = false ) {
|
1375 |
$user = learn_press_get_user( $user_id );
|
1376 |
$results = $user->get_quiz_results( $quiz_id, $this->id );
|
1377 |
-
if (
|
1378 |
$result = 0;
|
1379 |
} else {
|
1380 |
-
if ( $user->get_quiz_graduation( $quiz_id, $this->id ) == 'passed' && !empty( $results->mark_percent ) ) {
|
1381 |
$result = absint( $results->mark_percent );
|
1382 |
} else {
|
1383 |
$result = 0;
|
1384 |
}
|
1385 |
}
|
|
|
1386 |
return $result;
|
1387 |
}
|
1388 |
|
@@ -1401,7 +1461,7 @@ abstract class LP_Abstract_Course {
|
|
1401 |
if ( $quizzes ) {
|
1402 |
$count = 0;
|
1403 |
foreach ( $quizzes as $quiz ) {
|
1404 |
-
if (
|
1405 |
continue;
|
1406 |
}
|
1407 |
$result += $this->evaluate_quiz( $quiz->ID, $user_id, $force );
|
@@ -1411,6 +1471,7 @@ abstract class LP_Abstract_Course {
|
|
1411 |
$result = round( $result / $count );
|
1412 |
}
|
1413 |
}
|
|
|
1414 |
return apply_filters( 'learn_press_evaluation_course_quizzes', $result, $this->id, $user_id );
|
1415 |
}
|
1416 |
|
@@ -1433,6 +1494,7 @@ abstract class LP_Abstract_Course {
|
|
1433 |
|
1434 |
// restore post content
|
1435 |
wp_reset_postdata();
|
|
|
1436 |
return $content;
|
1437 |
}
|
1438 |
|
@@ -1477,6 +1539,7 @@ abstract class LP_Abstract_Course {
|
|
1477 |
$html = sprintf( __( 'This course will end within %s next', 'learnpress' ), $remain );
|
1478 |
}
|
1479 |
}
|
|
|
1480 |
return $html;
|
1481 |
}
|
1482 |
|
@@ -1490,17 +1553,18 @@ abstract class LP_Abstract_Course {
|
|
1490 |
*/
|
1491 |
public function get_user_expired_time( $user_id = 0, $args = array() ) {
|
1492 |
|
1493 |
-
if (
|
1494 |
$user_id = get_current_user_id();
|
1495 |
}
|
1496 |
$duration = $this->get_duration();
|
1497 |
$user = learn_press_get_user( $user_id );
|
1498 |
$course_info = $user->get_course_info( $this->id );
|
1499 |
-
$start_time = array_key_exists( 'start_time', $args ) ? $args['start_time'] : intval( strtotime( $course_info['start'] ) );
|
1500 |
if ( $duration == 0 ) {
|
1501 |
$duration = DAY_IN_SECONDS * 365 * 100;
|
1502 |
}
|
1503 |
$expired = $start_time + $duration;
|
|
|
1504 |
return apply_filters( 'learn_press_user_course_expired_time', $expired, $user_id, $this->id );
|
1505 |
}
|
1506 |
|
@@ -1510,14 +1574,17 @@ abstract class LP_Abstract_Course {
|
|
1510 |
* @param int $user_id
|
1511 |
* @param mixed
|
1512 |
*
|
1513 |
-
* @return mixed|null
|
1514 |
*/
|
1515 |
public function is_expired( $user_id = 0, $args = array() ) {
|
1516 |
settype( $args, 'array' );
|
1517 |
-
if (
|
1518 |
$user_id = get_current_user_id();
|
1519 |
}
|
1520 |
-
|
|
|
|
|
|
|
1521 |
}
|
1522 |
|
1523 |
/**
|
@@ -1608,13 +1675,13 @@ abstract class LP_Abstract_Course {
|
|
1608 |
|
1609 |
if ( 'youtube' === $video_type ) {
|
1610 |
$embed = '<iframe width="' . $width . '" height="' . $height . '" '
|
1611 |
-
|
1612 |
-
|
1613 |
|
1614 |
} elseif ( 'vimeo' === $video_type ) {
|
1615 |
$embed = '<iframe width="' . $width . '" height="' . $height . '" '
|
1616 |
-
|
1617 |
-
|
1618 |
}
|
1619 |
|
1620 |
return $embed;
|
67 |
$this->id = absint( $course->ID );
|
68 |
$this->post = get_post( $course->ID );
|
69 |
}
|
70 |
+
if ( empty( self::$_lessons[ $this->id ] ) ) {
|
71 |
+
self::$_lessons[ $this->id ] = array();
|
72 |
}
|
73 |
if ( $user ) {
|
74 |
$this->init_for_user( $user );
|
105 |
$value = false;
|
106 |
switch ( $key ) {
|
107 |
case 'current_item':
|
108 |
+
if ( ! empty( LP()->global['course-item'] ) ) {
|
109 |
$value = LP()->global['course-item'];
|
110 |
}
|
111 |
|
123 |
$value = get_post_meta( $this->id, '_lp_' . $key, true );
|
124 |
$duration = learn_press_get_course_duration_support();
|
125 |
$duration_keys = array_keys( $duration );
|
126 |
+
if ( ! preg_match_all( '!([0-9]+)\s(' . join( '|', $duration_keys ) . ')!', $value, $matches ) ) {
|
127 |
$a1 = absint( $value );
|
128 |
$a2 = end( $duration_keys );
|
129 |
$value = $a1 . ' ' . $a2;
|
145 |
}
|
146 |
|
147 |
}
|
148 |
+
if ( ! empty( $value ) ) {
|
149 |
$this->$key = $value;
|
150 |
}
|
151 |
}
|
152 |
+
|
153 |
+
return ! empty( $this->$key ) ? $this->$key : null;
|
154 |
}
|
155 |
|
156 |
/**
|
174 |
} elseif ( ( $parent_id = wp_get_post_parent_id( $this->id ) ) && has_post_thumbnail( $parent_id ) ) {
|
175 |
$image = get_the_post_thumbnail( $parent_id, $size, $attr );
|
176 |
}
|
177 |
+
if ( ! $image ) {
|
178 |
if ( 'course_thumbnail' == $size ) {
|
179 |
$image = LP()->image( 'placeholder-400x250' );
|
180 |
} else {
|
182 |
}
|
183 |
$image = sprintf( '<img src="%s" %s />', $image, '' );
|
184 |
}
|
185 |
+
|
186 |
return apply_filters( 'learn_press_course_image', $image, $this->id, $size, $attr );
|
187 |
}
|
188 |
|
196 |
|
197 |
public function get_request_item( $field = 'id' ) {
|
198 |
$return = LP()->global['course-item'];
|
199 |
+
if ( ! empty( $_REQUEST['course-item'] ) ) {
|
200 |
$type = $_REQUEST['course-item'];
|
201 |
if ( $field == 'type' ) {
|
202 |
$return = $type;
|
203 |
} elseif ( $field == 'id' ) {
|
204 |
+
$return = ! empty( $_REQUEST[ $type . '_id' ] ) ? $_REQUEST[ $type . '_id' ] : 0;
|
205 |
} elseif ( $field == 'name' ) {
|
206 |
+
$return = ! empty( $_REQUEST[ $type ] ) ? $_REQUEST[ $type ] : false;
|
207 |
}
|
208 |
}
|
209 |
+
|
210 |
return $return;
|
211 |
}
|
212 |
|
227 |
$enrollable = true;
|
228 |
|
229 |
// Products must exist of course
|
230 |
+
if ( ! $this->exists() ) {
|
231 |
$enrollable = false;
|
232 |
// Check the product is published
|
233 |
+
} elseif ( $this->post->post_status !== 'publish' && ! current_user_can( 'edit_post', $this->id ) ) {
|
234 |
$enrollable = false;
|
235 |
}
|
236 |
|
237 |
return apply_filters( 'learn_press_is_enrollable', $enrollable, $this );
|
238 |
}
|
239 |
|
240 |
+
public function is_published() {
|
241 |
+
return $this->exists() && $this->post->post_status === 'publish';
|
242 |
+
}
|
243 |
+
|
244 |
/**
|
245 |
* Course is exists if the post is not empty
|
246 |
*
|
286 |
FROM {$wpdb->posts}
|
287 |
WHERE ID IN(" . join( ',', $ids ) . ")
|
288 |
" );
|
289 |
+
|
290 |
return $posts;
|
291 |
}
|
292 |
|
307 |
* @return mixed
|
308 |
*/
|
309 |
public function get_curriculum( $section_id = 0, $force = false ) {
|
310 |
+
if ( ! $this->id ) {
|
311 |
return false;
|
312 |
}
|
313 |
$curriculum = _learn_press_get_course_curriculum( $this->id, $force );
|
314 |
$return = false;
|
315 |
if ( $section_id ) {
|
316 |
+
if ( ! empty( $curriculum[ $section_id ] ) ) {
|
317 |
+
$return = $curriculum[ $section_id ];
|
318 |
}
|
319 |
} else {
|
320 |
$return = $curriculum;
|
321 |
}
|
322 |
+
|
323 |
return apply_filters( 'learn_press_course_curriculum', $return, $this->id, $section_id );
|
324 |
}
|
325 |
|
346 |
$enrolled = $real_enrolled;
|
347 |
}
|
348 |
}
|
349 |
+
|
350 |
return apply_filters( 'learn_press_count_users_enrolled', $enrolled, $this );
|
351 |
}
|
352 |
|
359 |
*/
|
360 |
public function get_users_enrolled( $force = false ) {
|
361 |
$this->_count_users = LP_Cache::get_enrolled_courses( $this->id );
|
362 |
+
|
363 |
return $this->_count_users;
|
364 |
/*
|
365 |
if ( ( $this->_count_users === null && !array_key_exists( $this->id, self::$course_users ) ) || $force ) {
|
398 |
else:
|
399 |
$output = apply_filters( 'learn_press_no_student_enrolled_html', __( 'No student enrolled', 'learnpress' ), $this );
|
400 |
endif;
|
401 |
+
|
402 |
return $output;
|
403 |
}
|
404 |
|
408 |
if ( $user_data ) {
|
409 |
$author_name = $user_data->display_name;
|
410 |
}
|
411 |
+
|
412 |
return apply_filters( 'learn_press_course_instructor', $author_name, $this->id );
|
413 |
}
|
414 |
|
419 |
learn_press_user_profile_link( $this->post->post_author ),
|
420 |
$instructor
|
421 |
);
|
422 |
+
|
423 |
return apply_filters( 'learn_press_course_instructor_html', $html, $this->post->post_author, $this->id );
|
424 |
}
|
425 |
|
426 |
public function get_course_info( $user_id = null ) {
|
427 |
+
if ( ! $user_id ) {
|
428 |
$user_id = get_current_user_id();
|
429 |
}
|
430 |
$user = learn_press_get_user( $user_id );
|
431 |
+
|
432 |
return $user->get_course_info( $this->id );
|
433 |
}
|
434 |
|
439 |
*/
|
440 |
public function is_free() {
|
441 |
$is_free = ( 'no' == $this->payment || ( 0 >= $this->get_price() ) );
|
442 |
+
|
443 |
return apply_filters( 'learn_press_is_free_course', $is_free, $this );
|
444 |
}
|
445 |
|
449 |
*/
|
450 |
public function get_origin_price() {
|
451 |
$price = $this->price;
|
452 |
+
if ( ! $price || 'yes' != $this->payment ) {
|
453 |
$price = 0;
|
454 |
} else {
|
455 |
$price = floatval( $price );
|
456 |
}
|
457 |
+
|
458 |
return $price;
|
459 |
}
|
460 |
|
472 |
$now = current_time( 'timestamp' );
|
473 |
$end = strtotime( $end_date );
|
474 |
$start = strtotime( $start_date );
|
475 |
+
if ( ( $now >= $start || ! $start_date ) && ( $now <= $end || ! $end_date ) ) {
|
476 |
$res = $sale_price;
|
477 |
}
|
478 |
}
|
479 |
+
|
480 |
return $res;
|
481 |
}
|
482 |
|
491 |
*/
|
492 |
public function get_price() {
|
493 |
$price = $this->price;
|
494 |
+
if ( ! $price || 'yes' != $this->payment ) {
|
495 |
$price = 0;
|
496 |
} else {
|
497 |
$price = floatval( $price );
|
500 |
$price = $sale_price;
|
501 |
}
|
502 |
}
|
503 |
+
|
504 |
return apply_filters( 'learn_press_course_price', $price, $this );
|
505 |
}
|
506 |
|
518 |
$price = learn_press_format_price( $price, true );
|
519 |
$price_html = apply_filters( 'learn_press_course_price_html', $price, $this );
|
520 |
}
|
521 |
+
|
522 |
return $price_html;
|
523 |
}
|
524 |
|
535 |
$origin_price = learn_press_format_price( $origin_price, true );
|
536 |
$origin_price_html = apply_filters( 'learn_press_course_origin_price_html', $origin_price, $this );
|
537 |
}
|
538 |
+
|
539 |
//}
|
540 |
return $origin_price_html;
|
541 |
}
|
547 |
* @return array list enrolled students
|
548 |
*/
|
549 |
public function get_students_list( $force = false, $limit = - 1 ) {
|
550 |
+
if ( ! $this->exists() ) {
|
551 |
+
return null;
|
552 |
+
}
|
553 |
|
554 |
global $wpdb;
|
555 |
+
if ( $limit < 0 ) {
|
556 |
+
$limit = PHP_INT_MAX;
|
557 |
+
}
|
558 |
if ( $this->_students_list === null || $force ) {
|
559 |
$query = $wpdb->prepare( "
|
560 |
SELECT DISTINCT u.*
|
566 |
", $this->id, LP_COURSE_CPT, $limit );
|
567 |
$this->_students_list = $wpdb->get_results( $query );
|
568 |
}
|
569 |
+
|
570 |
return $this->_students_list;
|
571 |
}
|
572 |
|
586 |
'field' => $field
|
587 |
)
|
588 |
);
|
589 |
+
$quizzes = ! empty( $items['quizzes'] ) ? $items['quizzes'] : false;
|
590 |
+
|
591 |
return apply_filters( 'learn_press_course_quizzes', $quizzes, $this );
|
592 |
}
|
593 |
|
613 |
$args
|
614 |
);
|
615 |
$items = $this->get_curriculum_items( $curriculum_args );
|
616 |
+
$lessons = ! empty( $items['lessons'] ) ? $items['lessons'] : false;
|
617 |
+
|
618 |
return apply_filters( 'learn_press_course_lessons', $lessons, $this );
|
619 |
}
|
620 |
|
654 |
// overwrite default values with params passed
|
655 |
extract( $args );
|
656 |
$items = array();
|
657 |
+
if ( ! $this->_curriculum_items || $force ) {
|
658 |
$curriculum = $this->get_curriculum( null, $force );
|
659 |
$index = 0;
|
660 |
+
if ( ! empty( $field ) ) {
|
661 |
if ( is_string( $field ) ) {
|
662 |
$field = explode( '![\s]+!', $field );
|
663 |
}
|
665 |
} else {
|
666 |
$field = false;
|
667 |
}
|
668 |
+
if ( ! empty( $field_map ) ) {
|
669 |
if ( is_string( $field_map ) ) {
|
670 |
$field_map = explode( '![\s]+!', $field_map );
|
671 |
}
|
673 |
} else {
|
674 |
$field_map = false;
|
675 |
}
|
676 |
+
if ( ! empty( $field_format ) ) {
|
677 |
if ( is_string( $field_format ) ) {
|
678 |
$field_format = explode( '![\s]+!', $field_format );
|
679 |
}
|
738 |
} else {
|
739 |
// combine lessons and quizzes as it should be in curriculum
|
740 |
for ( $i = 0, $n = sizeof( $quizzes ) + sizeof( $lessons ); $i < $n; $i ++ ) {
|
741 |
+
if ( ! empty( $quizzes[ $i ] ) ) {
|
742 |
+
$items[] = $quizzes[ $i ];
|
743 |
+
} elseif ( ! empty( $lessons[ $i ] ) ) {
|
744 |
+
$items[] = $lessons[ $i ];
|
745 |
}
|
746 |
}
|
747 |
}
|
748 |
}
|
749 |
+
|
750 |
return apply_filters( 'learn_press_get_course_items', $items, $this );
|
751 |
}
|
752 |
|
753 |
public function is_viewing( $content = '' ) {
|
754 |
|
755 |
+
$item_type = ! empty( $_REQUEST['course-item'] ) ? $_REQUEST['course-item'] : '';
|
756 |
$viewing = apply_filters( 'learn_press_course_is_viewing', $item_type ? $item_type : 'course' );
|
757 |
if ( $content ) {
|
758 |
return $content == $viewing;
|
759 |
}
|
760 |
+
|
761 |
return $viewing;
|
762 |
}
|
763 |
|
771 |
$return = $item->ID;
|
772 |
}
|
773 |
}
|
774 |
+
|
775 |
return apply_filters( 'learn_press_viewing_course_item', $return, $item_id, $this->id );
|
776 |
}
|
777 |
|
785 |
}*/
|
786 |
$current_item = $this->current_item;
|
787 |
$view_id = $current_item ? $current_item->ID : 0;
|
788 |
+
|
789 |
return apply_filters( 'learn_press_is_current_course_item', $view_id == $item_id, $item_id, $view_id, $this->id );
|
790 |
}
|
791 |
|
829 |
}
|
830 |
|
831 |
/**
|
832 |
+
* Return true if this course can be purchasable
|
833 |
*
|
834 |
* @return mixed
|
835 |
*/
|
836 |
public function is_purchasable() {
|
837 |
// TODO: needs to check more criteria, currently only check if this course is required enrollment
|
838 |
+
$is_purchasable = $this->is_published() && $this->is_required_enroll() && ! $this->is_reached_limit();
|
839 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
840 |
return apply_filters( 'learn_press_item_is_purchasable', $is_purchasable, $this->id );
|
841 |
}
|
842 |
|
843 |
+
public function is_reached_limit() {
|
844 |
+
$max_allowed = $this->max_students;
|
845 |
+
$reached = false;
|
846 |
+
if ( $max_allowed > 0 ) {
|
847 |
+
$count_in_order = $this->count_in_order( array( 'completed', 'processing' ) );
|
848 |
+
$reached = $count_in_order >= $max_allowed;
|
849 |
+
}
|
850 |
+
|
851 |
+
|
852 |
+
return $reached;
|
853 |
+
}
|
854 |
+
|
855 |
public function count_in_order( $statuses = 'completed' ) {
|
856 |
global $wpdb;
|
857 |
static $data = array();
|
858 |
settype( $statuses, 'array' );
|
859 |
foreach ( $statuses as $k => $v ) {
|
860 |
+
if ( ! preg_match( '/^lp-/', $v ) ) {
|
861 |
+
$statuses[ $k ] = 'lp-' . $v;
|
862 |
}
|
863 |
}
|
864 |
sort( $statuses );
|
865 |
$key = md5( serialize( $statuses ) );
|
866 |
+
if ( ! array_key_exists( $key, $data ) ) {
|
867 |
+
$in_clause = join( ',', array_fill( 0, sizeof( $statuses ), '%s' ) );
|
868 |
+
$query = $wpdb->prepare( "
|
869 |
SELECT count(oim.meta_id)
|
870 |
FROM {$wpdb->learnpress_order_itemmeta} oim
|
871 |
INNER JOIN {$wpdb->learnpress_order_items} oi ON oi.order_item_id = oim.learnpress_order_item_id
|
875 |
WHERE o.post_type = %s
|
876 |
AND o.post_status IN ($in_clause)
|
877 |
", array_merge( array( '_course_id', $this->id, 'lp_order' ), $statuses ) );
|
878 |
+
$data[ $key ] = $wpdb->get_var( $query );
|
879 |
}
|
880 |
+
|
881 |
+
return $data[ $key ];
|
882 |
}
|
883 |
|
884 |
public function need_payment() {
|
887 |
|
888 |
public function has_item( $item_id ) {
|
889 |
static $items = array();
|
890 |
+
if ( empty( $items[ $this->id ] ) ) {
|
891 |
+
$items[ $this->id ] = $this->get_curriculum_items( array( 'field' => 'ID'/*, 'force' => true */ ) );
|
892 |
}
|
893 |
|
894 |
+
return in_array( $item_id, (array) $items[ $this->id ] );
|
895 |
}
|
896 |
|
897 |
public function can_view_item( $item_id ) {
|
903 |
public function get_item( $thing = '' ) {
|
904 |
$return = false;
|
905 |
$curriculum = $this->get_curriculum_items();
|
906 |
+
if ( ! $curriculum ) {
|
907 |
return $return;
|
908 |
}
|
909 |
+
if ( ! $thing ) {
|
910 |
return $return;
|
911 |
}
|
912 |
if ( $thing ) {
|
926 |
}
|
927 |
}
|
928 |
}
|
929 |
+
|
930 |
return apply_filters( 'learn_press_course_item', $return, $item, $this->id );
|
931 |
}
|
932 |
|
933 |
public function get_item_link( $item_id ) {
|
934 |
static $item_links = array();
|
935 |
$key = $this->id . '-' . $item_id;
|
936 |
+
if ( empty( $item_links[ $key ] ) ) {
|
937 |
+
if ( ! $this->has( 'item', $item_id ) ) {
|
938 |
return false;
|
939 |
}
|
940 |
$permalink = get_the_permalink( $item_id );
|
941 |
$post_types = get_post_types( null, 'objects' );
|
942 |
$item_type = get_post_type( $item_id );
|
943 |
+
$has_query = false;
|
944 |
switch ( $item_type ) {
|
945 |
case 'lp_lesson':
|
946 |
case 'lp_quiz':
|
957 |
}
|
958 |
}
|
959 |
if ( empty( $slug ) ) {
|
960 |
+
$slug = $post_types[ $item_type ]->rewrite['slug'];
|
961 |
}
|
962 |
$slug = sanitize_title_with_dashes( $slug );
|
963 |
$prefix = preg_replace( '!^/!', '', trailingslashit( $slug ) );
|
995 |
$items = (array) $this->get_curriculum_items( array( 'field' => 'ID' ) );
|
996 |
} else {
|
997 |
$items = (array) $this->get_curriculum_items( array( 'field' => 'ID', 'group' => true ) );
|
998 |
+
if ( ! empty( $items[ $items_types ] ) ) {
|
999 |
+
$items = array_values( $items[ $items_types ] );
|
1000 |
} else {
|
1001 |
$items = array();
|
1002 |
}
|
1006 |
return false;
|
1007 |
}
|
1008 |
$current_item = $args['current_item'] ? $args['current_item'] : ( $this->current_item ? $this->current_item->id : 0 );
|
1009 |
+
if ( ! $current_item ) {
|
1010 |
$current_item = reset( $items );
|
1011 |
}
|
1012 |
$next_item = false;
|
1018 |
if ( $args['viewable'] !== null ) {
|
1019 |
$user = learn_press_get_current_user();
|
1020 |
for ( $i = $pos + 1; $i < $items_len; $i ++ ) {
|
1021 |
+
if ( ! ! $user->can( 'view-item', $items[ $i ] ) === $args['viewable'] ) {
|
1022 |
+
$next_item = $items[ $i ];
|
1023 |
break;
|
1024 |
}
|
1025 |
}
|
1026 |
} else {
|
1027 |
+
$next_item = $items[ $pos + 1 ];
|
1028 |
}
|
1029 |
}
|
1030 |
} else {
|
1034 |
if ( $args['viewable'] !== null ) {
|
1035 |
$user = learn_press_get_current_user();
|
1036 |
for ( $i = $pos - 1; $i >= 0; $i -- ) {
|
1037 |
+
if ( ! ! $user->can( 'view-item', $items[ $i ] ) === $args['viewable'] ) {
|
1038 |
+
$next_item = $items[ $i ];
|
1039 |
break;
|
1040 |
}
|
1041 |
}
|
1042 |
} else {
|
1043 |
+
$next_item = $items[ $pos - 1 ];
|
1044 |
}
|
1045 |
}
|
1046 |
}
|
1047 |
} else {
|
1048 |
+
$next_item = $args['dir'] == 'next' ? $items[1] : $items[ $items_len - 1 ];
|
1049 |
}
|
1050 |
+
|
1051 |
return apply_filters( 'learn_press_course_' . $args['dir'] . '_item', $next_item, $current_item, $this );
|
1052 |
}
|
1053 |
|
1069 |
|
1070 |
return ob_get_clean();
|
1071 |
}
|
1072 |
+
|
1073 |
return false;
|
1074 |
}
|
1075 |
|
1084 |
);
|
1085 |
if ( $next_item = $this->get_next_item( $args ) ) {
|
1086 |
ob_start();
|
1087 |
+
learn_press_get_template( 'content-lesson/prev-button.php', array(
|
1088 |
+
'item' => $next_item,
|
1089 |
+
'course' => $this
|
1090 |
+
) );
|
1091 |
+
|
1092 |
return ob_get_clean();
|
1093 |
}
|
1094 |
+
|
1095 |
return false;
|
1096 |
}
|
1097 |
|
1102 |
* @return mixed|null|void
|
1103 |
*/
|
1104 |
public function get_course_result_html( $user_id = 0, $force = false ) {
|
1105 |
+
if ( ! $user_id ) {
|
1106 |
$user_id = get_current_user_id();
|
1107 |
}
|
1108 |
$html = '';
|
1109 |
$quizzes = $this->get_quizzes();
|
1110 |
+
if ( ( $this->course_result == 'evaluate_lesson' ) || ! $quizzes ) {
|
1111 |
|
1112 |
$lessons = $this->get_lessons();
|
1113 |
$total_items = sizeof( $quizzes ) + sizeof( $lessons );
|
1121 |
$html = sprintf( __( '%d%% completed', 'learnpress' ), $this->_evaluate_course_by_quizzes( $user_id, $force ) * 100 );
|
1122 |
}
|
1123 |
}
|
1124 |
+
|
1125 |
return apply_filters( 'learn_press_course_result_html', $html, $this->id, $user_id );
|
1126 |
}
|
1127 |
|
1132 |
$completed_items = $this->count_completed_items( $user_id, $force, $type );
|
1133 |
$result = round( $completed_items / sizeof( $items ) * 100 );
|
1134 |
}
|
1135 |
+
|
1136 |
return apply_filters( 'learn_press_course_results_by_items', $result, $this->id, $user_id );
|
1137 |
}
|
1138 |
|
1143 |
$completed_items = $this->count_completed_items( $user_id, $force, 'lp_lesson' );
|
1144 |
$result = round( $completed_items / sizeof( $lessons ) * 100 );
|
1145 |
}
|
1146 |
+
|
1147 |
return apply_filters( 'learn_press_course_results_by_items', $result, $this->id, $user_id );
|
1148 |
}
|
1149 |
|
1156 |
* @return mixed|null|void
|
1157 |
*/
|
1158 |
public function evaluate_course_results( $user_id = 0, $force = false ) {
|
1159 |
+
if ( ! $user_id ) {
|
1160 |
$user_id = get_current_user_id();
|
1161 |
}
|
1162 |
|
1163 |
$quizzes = $this->get_quizzes();
|
1164 |
|
1165 |
+
if ( ( 'evaluate_lesson' === $this->course_result ) || ! $quizzes ) {
|
1166 |
//$results = $this->_evaluate_course_by_items( $user_id, $force );
|
1167 |
$results = $this->_evaluate_course_by_lesson( $user_id, $force );
|
1168 |
} elseif ( 'evaluate_final_quiz' === $this->course_result ) {
|
1194 |
$total_point = 0;
|
1195 |
$quizzes_ids = array();
|
1196 |
foreach ( $quizzes as $quiz ) {
|
1197 |
+
if ( ! $this->enable_evaluate_item( $quiz->ID, $user_id ) ) {
|
1198 |
continue;
|
1199 |
}
|
1200 |
+
$quizzes_ids[] = $quiz->ID;
|
1201 |
+
$results[ $quiz->ID ] = $user->get_quiz_results( $quiz->ID, $this->id, true );
|
1202 |
if ( $quiz = wp_cache_get( $quiz->ID, 'posts' ) ) {
|
1203 |
$total_point += isset( $quiz->mark ) ? absint( $quiz->mark ) : 0;
|
1204 |
}
|
1205 |
+
$achieved_point += is_object( $results[ $quiz->ID ] ) ? $results[ $quiz->ID ]->mark : 0;
|
1206 |
}
|
1207 |
if ( $total_point > 0 ) {
|
1208 |
$result = ( $achieved_point / $total_point ) * 100;
|
1209 |
} else {
|
1210 |
$result = 0;
|
1211 |
}
|
1212 |
+
|
1213 |
return apply_filters( 'learn_press_evaluate_course_by_quizzes_results', $result, $this->id, $user_id );
|
1214 |
}
|
1215 |
|
1216 |
public function enable_evaluate_item( $item_id, $user_id = 0 ) {
|
1217 |
+
if ( ! $user_id ) {
|
1218 |
$user_id = get_current_user_id();
|
1219 |
}
|
1220 |
+
|
1221 |
return apply_filters( 'learn_press_enable_evaluate_course_item', true, $item_id, $user_id, $this->id );
|
1222 |
}
|
1223 |
|
1228 |
$achieved_point = 0;
|
1229 |
$total_point = 0;
|
1230 |
foreach ( $quizzes as $_quiz ) {
|
1231 |
+
if ( ! $this->enable_evaluate_item( $_quiz->ID, $user_id ) ) {
|
1232 |
continue;
|
1233 |
}
|
1234 |
$quiz = LP_Quiz::get_quiz( $_quiz->ID );
|
1249 |
$quiz_passed = true;
|
1250 |
}*/
|
1251 |
if ( $grade == 'passed' ) {
|
1252 |
+
$quiz_results = $user->get_quiz_results( $quiz->ID, $this->id, true );
|
1253 |
$achieved_point += is_object( $quiz_results ) ? $quiz_results->mark : 0;
|
1254 |
}
|
1255 |
}
|
1258 |
} else {
|
1259 |
$result = 0;
|
1260 |
}
|
1261 |
+
|
1262 |
return apply_filters( 'learn_press_evaluate_course_by_passed_quizzes_results', $result, $this->id, $user_id );
|
1263 |
}
|
1264 |
|
1265 |
public function _get_total_question( $quizzes_ids = array() ) {
|
1266 |
global $wpdb;
|
1267 |
+
if ( ! empty( $quizzes_ids ) ) {
|
1268 |
$format = array_fill( 0, sizeof( $quizzes_ids ), '%d' );
|
1269 |
$args = array_merge( $quizzes_ids, array( 'publish', LP_QUESTION_CPT ) );
|
1270 |
+
$sql = $wpdb->prepare( "
|
1271 |
SELECT COUNT(*)
|
1272 |
FROM {$wpdb->prefix}learnpress_quiz_questions lqq
|
1273 |
INNER JOIN {$wpdb->posts} p ON lqq.question_id = p.ID
|
1277 |
AND p.post_type = %s",
|
1278 |
$args
|
1279 |
);
|
1280 |
+
|
1281 |
return $wpdb->get_var( $sql );
|
1282 |
}
|
1283 |
+
|
1284 |
return 0;
|
1285 |
}
|
1286 |
|
1302 |
|
1303 |
$completed_lessons = LP_Cache::get_completed_lessons( false, array() );
|
1304 |
|
1305 |
+
if ( ! array_key_exists( $key, $completed_lessons ) || $force ) {
|
1306 |
global $wpdb;
|
1307 |
$course_lessons = $this->get_lessons( array( 'field' => 'ID' ) );
|
1308 |
+
if ( ! $course_lessons ) {
|
1309 |
return 0;
|
1310 |
}
|
1311 |
$query = $wpdb->prepare( "
|
1318 |
AND ul.item_id IN(" . join( ",", $course_lessons ) . ")
|
1319 |
", $user_id, 'completed', $this->id );
|
1320 |
|
1321 |
+
$completed_lessons[ $key ] = $wpdb->get_var( $query );
|
1322 |
|
1323 |
+
LP_Cache::set_completed_lessons( $key, $completed_lessons[ $key ] );
|
1324 |
}
|
1325 |
|
1326 |
+
return apply_filters( 'learn_press_user_completed_lessons', $completed_lessons[ $key ], $this->id, $user_id );
|
1327 |
}
|
1328 |
|
1329 |
/**
|
1338 |
//static $evaluate_course_by_lesson = array();
|
1339 |
$evaluate_course_by_lesson = LP_Cache::get_evaluate_course_by_lesson( false, array() );
|
1340 |
$key = $user_id . '-' . $this->id;
|
1341 |
+
if ( ! array_key_exists( $key, $evaluate_course_by_lesson ) || $force ) {
|
1342 |
$course_lessons = $this->get_lessons( array( 'field' => 'ID' ) );
|
1343 |
$completed_lessons = $this->get_completed_lessons( $user_id );
|
1344 |
if ( $size = sizeof( $course_lessons ) ) {
|
1345 |
+
$evaluate_course_by_lesson[ $key ] = min( $completed_lessons / sizeof( $course_lessons ), 1 ) * 100;
|
1346 |
} else {
|
1347 |
+
$evaluate_course_by_lesson[ $key ] = 0;
|
1348 |
}
|
1349 |
+
LP_Cache::set_evaluate_course_by_lesson( $key, $evaluate_course_by_lesson[ $key ] );
|
1350 |
}
|
1351 |
+
|
1352 |
+
return apply_filters( 'learn_press_evaluation_course_lesson', $evaluate_course_by_lesson[ $key ], $this->id, $user_id );
|
1353 |
}
|
1354 |
|
1355 |
/**
|
1362 |
* @return int|mixed|null|void
|
1363 |
*/
|
1364 |
public function get_completed_items( $user_id = 0, $force = false, $type = '' ) {
|
1365 |
+
if ( ! $user_id ) {
|
1366 |
$user_id = get_current_user_id();
|
1367 |
}
|
1368 |
_learn_press_parse_user_item_statuses( $user_id, $this->id );
|
1376 |
continue;
|
1377 |
}
|
1378 |
$k = sprintf( '%d-%d-%d', $user_id, $this->id, $item_id );
|
1379 |
+
if ( ! empty( $item_statuses[ $k ] ) && $item_statuses[ $k ] == 'completed' ) {
|
1380 |
if ( $this->enable_evaluate_item( $item_id, $user_id ) ) {
|
1381 |
$completed_items[] = $item_id;
|
1382 |
}
|
1384 |
}
|
1385 |
}
|
1386 |
}
|
1387 |
+
|
1388 |
return apply_filters( 'learn_press_user_completed_items', $completed_items, $this->id, $user_id );
|
1389 |
}
|
1390 |
|
1400 |
if ( $items ) {
|
1401 |
$count = sizeof( $items );
|
1402 |
}
|
1403 |
+
|
1404 |
return apply_filters( 'learn_press_count_user_completed_items', $count, $this->id, $user_id );
|
1405 |
}
|
1406 |
|
1426 |
public function _evaluate_course_by_quiz( $user_id, $force = false ) {
|
1427 |
global $wpdb;
|
1428 |
$result = $this->evaluate_quiz( $this->final_quiz, $user_id );
|
1429 |
+
|
1430 |
return apply_filters( 'learn_press_evaluation_course_quiz', $result, $this->id, $user_id );
|
1431 |
}
|
1432 |
|
1433 |
public function evaluate_quiz( $quiz_id, $user_id, $force = false ) {
|
1434 |
$user = learn_press_get_user( $user_id );
|
1435 |
$results = $user->get_quiz_results( $quiz_id, $this->id );
|
1436 |
+
if ( ! $results ) {
|
1437 |
$result = 0;
|
1438 |
} else {
|
1439 |
+
if ( $user->get_quiz_graduation( $quiz_id, $this->id ) == 'passed' && ! empty( $results->mark_percent ) ) {
|
1440 |
$result = absint( $results->mark_percent );
|
1441 |
} else {
|
1442 |
$result = 0;
|
1443 |
}
|
1444 |
}
|
1445 |
+
|
1446 |
return $result;
|
1447 |
}
|
1448 |
|
1461 |
if ( $quizzes ) {
|
1462 |
$count = 0;
|
1463 |
foreach ( $quizzes as $quiz ) {
|
1464 |
+
if ( ! $this->enable_evaluate_item( $quiz->ID, $user_id ) ) {
|
1465 |
continue;
|
1466 |
}
|
1467 |
$result += $this->evaluate_quiz( $quiz->ID, $user_id, $force );
|
1471 |
$result = round( $result / $count );
|
1472 |
}
|
1473 |
}
|
1474 |
+
|
1475 |
return apply_filters( 'learn_press_evaluation_course_quizzes', $result, $this->id, $user_id );
|
1476 |
}
|
1477 |
|
1494 |
|
1495 |
// restore post content
|
1496 |
wp_reset_postdata();
|
1497 |
+
|
1498 |
return $content;
|
1499 |
}
|
1500 |
|
1539 |
$html = sprintf( __( 'This course will end within %s next', 'learnpress' ), $remain );
|
1540 |
}
|
1541 |
}
|
1542 |
+
|
1543 |
return $html;
|
1544 |
}
|
1545 |
|
1553 |
*/
|
1554 |
public function get_user_expired_time( $user_id = 0, $args = array() ) {
|
1555 |
|
1556 |
+
if ( ! $user_id ) {
|
1557 |
$user_id = get_current_user_id();
|
1558 |
}
|
1559 |
$duration = $this->get_duration();
|
1560 |
$user = learn_press_get_user( $user_id );
|
1561 |
$course_info = $user->get_course_info( $this->id );
|
1562 |
+
$start_time = array_key_exists( 'start_time', $args ) ? $args['start_time'] : intval( strtotime( $course_info['start'] ) ) + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
|
1563 |
if ( $duration == 0 ) {
|
1564 |
$duration = DAY_IN_SECONDS * 365 * 100;
|
1565 |
}
|
1566 |
$expired = $start_time + $duration;
|
1567 |
+
|
1568 |
return apply_filters( 'learn_press_user_course_expired_time', $expired, $user_id, $this->id );
|
1569 |
}
|
1570 |
|
1574 |
* @param int $user_id
|
1575 |
* @param mixed
|
1576 |
*
|
1577 |
+
* @return mixed|null
|
1578 |
*/
|
1579 |
public function is_expired( $user_id = 0, $args = array() ) {
|
1580 |
settype( $args, 'array' );
|
1581 |
+
if ( ! $user_id ) {
|
1582 |
$user_id = get_current_user_id();
|
1583 |
}
|
1584 |
+
|
1585 |
+
$overtime = $this->get_user_expired_time( $user_id, $args ) - current_time( 'timestamp' );
|
1586 |
+
|
1587 |
+
return apply_filters( 'learn_press_user_course_expired', $overtime, $this->id, $user_id );
|
1588 |
}
|
1589 |
|
1590 |
/**
|
1675 |
|
1676 |
if ( 'youtube' === $video_type ) {
|
1677 |
$embed = '<iframe width="' . $width . '" height="' . $height . '" '
|
1678 |
+
. 'src="https://www.youtube.com/embed/' . $video_id . '" '
|
1679 |
+
. 'frameborder="0" allowfullscreen></iframe>';
|
1680 |
|
1681 |
} elseif ( 'vimeo' === $video_type ) {
|
1682 |
$embed = '<iframe width="' . $width . '" height="' . $height . '" '
|
1683 |
+
. ' src="https://player.vimeo.com/video/' . $video_id . '" '
|
1684 |
+
. 'frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
|
1685 |
}
|
1686 |
|
1687 |
return $embed;
|
inc/custom-post-types/abstract.php
CHANGED
@@ -231,7 +231,7 @@ abstract class LP_Abstract_Post_Type {
|
|
231 |
|
232 |
public function _check_post() {
|
233 |
global $pagenow, $post_type;
|
234 |
-
if ( !is_admin() || ( $
|
235 |
return false;
|
236 |
}
|
237 |
return true;
|
@@ -247,9 +247,6 @@ abstract class LP_Abstract_Post_Type {
|
|
247 |
}
|
248 |
|
249 |
public function add_meta_boxes() {
|
250 |
-
if ( $this->_post_type != learn_press_get_requested_post_type() ) {
|
251 |
-
return;
|
252 |
-
}
|
253 |
do_action( 'learn_press_add_meta_boxes', $this->_post_type, $this );
|
254 |
do_action( "learn_press_{$this->_post_type}_add_meta_boxes", $this );
|
255 |
if ( !$this->_meta_boxes ) {
|
231 |
|
232 |
public function _check_post() {
|
233 |
global $pagenow, $post_type;
|
234 |
+
if ( !is_admin() || ( $this->_post_type != $post_type ) ) {
|
235 |
return false;
|
236 |
}
|
237 |
return true;
|
247 |
}
|
248 |
|
249 |
public function add_meta_boxes() {
|
|
|
|
|
|
|
250 |
do_action( 'learn_press_add_meta_boxes', $this->_post_type, $this );
|
251 |
do_action( "learn_press_{$this->_post_type}_add_meta_boxes", $this );
|
252 |
if ( !$this->_meta_boxes ) {
|
inc/custom-post-types/course.php
CHANGED
@@ -31,9 +31,11 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
31 |
// Map origin methods to another method
|
32 |
$this
|
33 |
->add_map_method( 'save', 'update_course', false )
|
34 |
-
->add_map_method( 'save', 'before_save_curriculum', false )
|
35 |
->add_map_method( 'before_delete', 'delete_course_sections' );
|
36 |
|
|
|
|
|
37 |
add_action( 'edit_form_after_editor', array( $this, 'curriculum_editor' ), 0 );
|
38 |
add_action( 'load-post.php', array( $this, 'post_actions' ) );
|
39 |
add_action( 'init', array( $this, 'register_taxonomy' ) );
|
@@ -438,9 +440,6 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
438 |
* Add meta boxes to course post type page
|
439 |
*/
|
440 |
public function add_meta_boxes() {
|
441 |
-
if ( LP_COURSE_CPT != learn_press_get_requested_post_type() ) {
|
442 |
-
return;
|
443 |
-
}
|
444 |
$default_tabs = array(
|
445 |
'settings' => new RW_Meta_Box( self::settings_meta_box() ),
|
446 |
'assessment' => new RW_Meta_Box( self::assessment_meta_box() ),
|
@@ -587,7 +586,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
587 |
}
|
588 |
$course_result_desc = "<span id=\"learn-press-toggle-course-results\">{$course_result_desc}</span>";
|
589 |
$course_result_desc .= __( 'The method to assess the result of a student for a course.', 'learnpress' );
|
590 |
-
if ( $course_results == 'evaluate_final_quiz' && !get_post_meta( $post_id, '_lp_final_quiz', true ) ) {
|
591 |
$course_result_desc .= __( '<br /><strong>Note! </strong>No final quiz in course, please add a final quiz', 'learnpress' );
|
592 |
}
|
593 |
$meta_box = array(
|
@@ -634,7 +633,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
634 |
*/
|
635 |
public static function payment_meta_box() {
|
636 |
|
637 |
-
$course_id = !empty( $_GET['post'] ) ? $_GET['post'] : 0;
|
638 |
$prefix = '_lp_';
|
639 |
|
640 |
$meta_box = array(
|
@@ -647,7 +646,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
647 |
'name' => __( 'Course payment', 'learnpress' ),
|
648 |
'id' => "{$prefix}payment",
|
649 |
'type' => 'yes_no',
|
650 |
-
'desc' =>
|
651 |
'std' => 'no',
|
652 |
'class' => 'lp-course-payment-field'
|
653 |
)
|
@@ -673,7 +672,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
673 |
|
674 |
$author = get_userdata( $course->post_author );
|
675 |
|
676 |
-
if ( isset( $suggest_price ) && !empty( $author->roles[0] ) && $author->roles[0] === 'lp_teacher' ) {
|
677 |
$message = sprintf( __( 'This course is requires enrollment and the suggested price is <strong>%s</strong>', 'learnpress' ), learn_press_format_price( $suggest_price, true ) );
|
678 |
$price = $suggest_price;
|
679 |
}
|
@@ -1183,7 +1182,7 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
1183 |
return;
|
1184 |
}
|
1185 |
|
1186 |
-
remove_action( 'save_post', array( $this, 'before_save_curriculum' ),
|
1187 |
//remove_action( 'rwmb_course_curriculum_before_save_post', array( $this, 'before_save_curriculum' ) );
|
1188 |
|
1189 |
$user = LP()->user;
|
@@ -1236,14 +1235,14 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
1236 |
$request = $_POST;
|
1237 |
$payment = learn_press_get_request( '_lp_payment' ) == 1;
|
1238 |
$price = floatval( $request['_lp_price'] );
|
1239 |
-
$sale_price =
|
1240 |
-
$sale_price_start =
|
1241 |
-
$sale_price_end =
|
1242 |
$keys = array();
|
1243 |
// Delete all meta no need anymore
|
1244 |
if ( !$payment || $price <= 0 ) {
|
1245 |
$keys = array( '_lp_payment', '_lp_price', '_lp_sale_price', '_lp_sale_start', '_lp_sale_end' );
|
1246 |
-
} else if ( ( $sale_price
|
1247 |
$keys = array( '_lp_sale_price', '_lp_sale_start', '_lp_sale_end' );
|
1248 |
}
|
1249 |
if ( $keys ) {
|
@@ -1271,12 +1270,12 @@ if ( !class_exists( 'LP_Course_Post_Type' ) ) {
|
|
1271 |
*/
|
1272 |
private function _validate_sale_price_date() {
|
1273 |
$now = current_time( 'timestamp' );
|
1274 |
-
$sale_price_start =
|
1275 |
-
$sale_price_end =
|
1276 |
$end = strtotime( $sale_price_end );
|
1277 |
$start = strtotime( $sale_price_start );
|
1278 |
|
1279 |
-
return ( ( $now
|
1280 |
}
|
1281 |
|
1282 |
/**
|
31 |
// Map origin methods to another method
|
32 |
$this
|
33 |
->add_map_method( 'save', 'update_course', false )
|
34 |
+
// ->add_map_method( 'save', 'before_save_curriculum', false )
|
35 |
->add_map_method( 'before_delete', 'delete_course_sections' );
|
36 |
|
37 |
+
add_action( 'save_post', array( $this, 'before_save_curriculum' ), 20 );
|
38 |
+
|
39 |
add_action( 'edit_form_after_editor', array( $this, 'curriculum_editor' ), 0 );
|
40 |
add_action( 'load-post.php', array( $this, 'post_actions' ) );
|
41 |
add_action( 'init', array( $this, 'register_taxonomy' ) );
|
440 |
* Add meta boxes to course post type page
|
441 |
*/
|
442 |
public function add_meta_boxes() {
|
|
|
|
|
|
|
443 |
$default_tabs = array(
|
444 |
'settings' => new RW_Meta_Box( self::settings_meta_box() ),
|
445 |
'assessment' => new RW_Meta_Box( self::assessment_meta_box() ),
|
586 |
}
|
587 |
$course_result_desc = "<span id=\"learn-press-toggle-course-results\">{$course_result_desc}</span>";
|
588 |
$course_result_desc .= __( 'The method to assess the result of a student for a course.', 'learnpress' );
|
589 |
+
if ( $course_results == 'evaluate_final_quiz' && ! get_post_meta( $post_id, '_lp_final_quiz', true ) ) {
|
590 |
$course_result_desc .= __( '<br /><strong>Note! </strong>No final quiz in course, please add a final quiz', 'learnpress' );
|
591 |
}
|
592 |
$meta_box = array(
|
633 |
*/
|
634 |
public static function payment_meta_box() {
|
635 |
|
636 |
+
$course_id = ! empty( $_GET['post'] ) ? $_GET['post'] : 0;
|
637 |
$prefix = '_lp_';
|
638 |
|
639 |
$meta_box = array(
|
646 |
'name' => __( 'Course payment', 'learnpress' ),
|
647 |
'id' => "{$prefix}payment",
|
648 |
'type' => 'yes_no',
|
649 |
+
'desc' => '',
|
650 |
'std' => 'no',
|
651 |
'class' => 'lp-course-payment-field'
|
652 |
)
|
672 |
|
673 |
$author = get_userdata( $course->post_author );
|
674 |
|
675 |
+
if ( isset( $suggest_price ) && ! empty( $author->roles[0] ) && $author->roles[0] === 'lp_teacher' ) {
|
676 |
$message = sprintf( __( 'This course is requires enrollment and the suggested price is <strong>%s</strong>', 'learnpress' ), learn_press_format_price( $suggest_price, true ) );
|
677 |
$price = $suggest_price;
|
678 |
}
|
1182 |
return;
|
1183 |
}
|
1184 |
|
1185 |
+
remove_action( 'save_post', array( $this, 'before_save_curriculum' ), 20 );
|
1186 |
//remove_action( 'rwmb_course_curriculum_before_save_post', array( $this, 'before_save_curriculum' ) );
|
1187 |
|
1188 |
$user = LP()->user;
|
1235 |
$request = $_POST;
|
1236 |
$payment = learn_press_get_request( '_lp_payment' ) == 1;
|
1237 |
$price = floatval( $request['_lp_price'] );
|
1238 |
+
$sale_price = learn_press_get_request( '_lp_sale_price' );
|
1239 |
+
$sale_price_start = learn_press_get_request( '_lp_sale_start' );
|
1240 |
+
$sale_price_end = learn_press_get_request( '_lp_sale_end' );
|
1241 |
$keys = array();
|
1242 |
// Delete all meta no need anymore
|
1243 |
if ( !$payment || $price <= 0 ) {
|
1244 |
$keys = array( '_lp_payment', '_lp_price', '_lp_sale_price', '_lp_sale_start', '_lp_sale_end' );
|
1245 |
+
} else if ( ( $sale_price === '' ) || ( $sale_price < 0 ) || ( absint( $sale_price ) >= $price ) || !$this->_validate_sale_price_date() ) {
|
1246 |
$keys = array( '_lp_sale_price', '_lp_sale_start', '_lp_sale_end' );
|
1247 |
}
|
1248 |
if ( $keys ) {
|
1270 |
*/
|
1271 |
private function _validate_sale_price_date() {
|
1272 |
$now = current_time( 'timestamp' );
|
1273 |
+
$sale_price_start = learn_press_get_request( '_lp_sale_start' );
|
1274 |
+
$sale_price_end = learn_press_get_request( '_lp_sale_end' );
|
1275 |
$end = strtotime( $sale_price_end );
|
1276 |
$start = strtotime( $sale_price_start );
|
1277 |
|
1278 |
+
return ( ( $now <= $end || !$sale_price_end ) || ( !$sale_price_start && !$sale_price_end ) );
|
1279 |
}
|
1280 |
|
1281 |
/**
|
inc/custom-post-types/order.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* @package LearnPress/Classes
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
-
if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
8 |
|
9 |
// class LP_Order_Post_Type
|
10 |
final class LP_Order_Post_Type extends LP_Abstract_Post_Type {
|
@@ -115,7 +115,7 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
115 |
|
116 |
// delete all data related user order
|
117 |
if ( $user_id ) {
|
118 |
-
|
119 |
}
|
120 |
}
|
121 |
}
|
@@ -148,12 +148,12 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
148 |
$meta_ids = array();
|
149 |
$remove_ids = array( 0 );
|
150 |
foreach ( $existed as $k => $r ) {
|
151 |
-
if ( empty( $user_id[$k] ) ) {
|
152 |
$remove_ids[] = $r->meta_id;
|
153 |
continue;
|
154 |
}
|
155 |
-
$cases[] = $wpdb->prepare( "WHEN meta_id = %d THEN %d", $r->meta_id, $user_id[$k] );
|
156 |
-
$edited[] = $user_id[$k];
|
157 |
$meta_ids[] = $r->meta_id;
|
158 |
}
|
159 |
$sql = "
|
@@ -200,8 +200,9 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
200 |
|
201 |
public function save_order( $post_id ) {
|
202 |
global $action;
|
203 |
-
if ( wp_is_post_revision( $post_id ) )
|
204 |
return;
|
|
|
205 |
if ( $action == 'editpost' && get_post_type( $post_id ) == 'lp_order' ) {
|
206 |
remove_action( 'save_post', array( $this, 'save_order' ) );
|
207 |
$user_id = learn_press_get_request( 'order-customer' );
|
@@ -218,7 +219,7 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
218 |
$order_statuses = array_keys( $order_statuses );
|
219 |
$status = learn_press_get_request( 'order-status' );
|
220 |
|
221 |
-
if ( !in_array( $status, $order_statuses ) ) {
|
222 |
$status = reset( $order_statuses );
|
223 |
}
|
224 |
|
@@ -243,7 +244,7 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
243 |
}
|
244 |
|
245 |
public function admin_footer() {
|
246 |
-
if (
|
247 |
return;
|
248 |
}
|
249 |
?>
|
@@ -257,7 +258,7 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
257 |
|
258 |
public function posts_where_paged( $where ) {
|
259 |
global $wpdb, $wp_query;
|
260 |
-
if (
|
261 |
return $where;
|
262 |
}
|
263 |
|
@@ -275,28 +276,31 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
275 |
}
|
276 |
|
277 |
public function posts_fields( $fields ) {
|
278 |
-
if (
|
279 |
return $fields;
|
280 |
}
|
281 |
$fields .= ", uu.ID as user_ID, uu.display_name as user_display_name";
|
|
|
282 |
return $fields;
|
283 |
}
|
284 |
|
285 |
public function posts_orderby( $orderby ) {
|
286 |
-
if (
|
287 |
return $orderby;
|
288 |
}
|
|
|
289 |
return $orderby;
|
290 |
}
|
291 |
|
292 |
public function posts_join_paged( $join ) {
|
293 |
-
if (
|
294 |
return $join;
|
295 |
}
|
296 |
global $wpdb;
|
297 |
$join .= " INNER JOIN {$wpdb->postmeta} ON {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id";
|
298 |
$join .= " INNER JOIN {$wpdb->users} uu ON uu.ID = {$wpdb->postmeta}.meta_value";
|
299 |
$join .= " INNER JOIN {$wpdb->learnpress_order_items} AS orderItem ON orderItem.order_id = {$wpdb->posts}.ID";
|
|
|
300 |
return $join;
|
301 |
}
|
302 |
|
@@ -309,6 +313,7 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
309 |
*/
|
310 |
public function sortable_columns( $columns ) {
|
311 |
$columns['order_student'] = 'student';
|
|
|
312 |
return $columns;
|
313 |
}
|
314 |
|
@@ -316,23 +321,24 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
316 |
|
317 |
global $post, $wp_query;
|
318 |
|
319 |
-
if ( LP_ORDER_CPT != get_post_type() )
|
320 |
return;
|
|
|
321 |
ob_start();
|
322 |
?>
|
323 |
<script>
|
324 |
$('#update-order-status').click(function () {
|
325 |
var $button = $(this).attr('disabled', 'disabled').html('<?php _e( 'Processing...', 'learnpress' ); ?>');
|
326 |
$.ajax({
|
327 |
-
url
|
328 |
-
type
|
329 |
dataType: 'json',
|
330 |
-
data
|
331 |
-
action
|
332 |
order_id: '<?php echo $post->ID; ?>',
|
333 |
-
status
|
334 |
},
|
335 |
-
success
|
336 |
if (res.status) {
|
337 |
$('.order-data-status')
|
338 |
.removeClass('pending completed')
|
@@ -341,7 +347,7 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
341 |
}
|
342 |
$button.removeAttr('disabled').html('<?php _e( 'Apply', 'learnpress' ); ?>');
|
343 |
},
|
344 |
-
error
|
345 |
$button.removeAttr('disabled').html('<?php _e( 'Apply', 'learnpress' ); ?>');
|
346 |
}
|
347 |
});
|
@@ -353,8 +359,8 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
353 |
}
|
354 |
|
355 |
public function update_status() {
|
356 |
-
$order_id = !empty( $_REQUEST['order_id'] ) ? $_REQUEST['order_id'] : 0;
|
357 |
-
$status = !empty( $_REQUEST['status'] ) ? $_REQUEST['status'] : 'Pending';
|
358 |
learn_press_update_order_status( $order_id, $status );
|
359 |
|
360 |
wp_send_json(
|
@@ -366,12 +372,13 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
366 |
}
|
367 |
|
368 |
public function row_actions( $actions, $post ) {
|
369 |
-
if ( !empty( $actions['inline hide-if-no-js'] ) ) {
|
370 |
unset( $actions['inline hide-if-no-js'] );
|
371 |
}
|
372 |
-
if ( !empty( $actions['edit'] ) ) {
|
373 |
$actions['edit'] = preg_replace( '/>(.*?)<\/a>/', ">" . __( 'View Order', 'learnpress' ) . "</a>", $actions['edit'] );
|
374 |
}
|
|
|
375 |
return $actions;
|
376 |
}
|
377 |
|
@@ -384,11 +391,12 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
384 |
*/
|
385 |
public function pre_get_posts( $wp_query ) {
|
386 |
if ( is_admin() ) {
|
387 |
-
if ( !empty( $wp_query->query['post_type'] ) && ( $wp_query->query['post_type'] == LP_ORDER_CPT ) ) {
|
388 |
$wp_query->set( 'orderby', 'date' );
|
389 |
$wp_query->set( 'order', 'desc' );
|
390 |
}
|
391 |
}
|
|
|
392 |
return $wp_query;
|
393 |
}
|
394 |
|
@@ -404,28 +412,34 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
404 |
}
|
405 |
|
406 |
// Remove Title - adding it back below
|
407 |
-
if ( isset( $existing['title'] ) )
|
408 |
unset( $existing['title'] );
|
|
|
409 |
|
410 |
// Remove Format
|
411 |
-
if ( isset( $existing['format'] ) )
|
412 |
unset( $existing['format'] );
|
|
|
413 |
|
414 |
// Remove Author
|
415 |
-
if ( isset( $existing['author'] ) )
|
416 |
unset( $existing['author'] );
|
|
|
417 |
|
418 |
// Remove Comments
|
419 |
-
if ( isset( $existing['comments'] ) )
|
420 |
unset( $existing['comments'] );
|
|
|
421 |
|
422 |
// Remove Date
|
423 |
-
if ( isset( $existing['date'] ) )
|
424 |
unset( $existing['date'] );
|
|
|
425 |
|
426 |
// Remove Builder
|
427 |
-
if ( isset( $existing['builder_layout'] ) )
|
428 |
unset( $existing['builder_layout'] );
|
|
|
429 |
|
430 |
add_filter( 'the_title', array( $this, 'order_title' ), 5, 2 );
|
431 |
|
@@ -435,7 +449,7 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
435 |
$columns['order_items'] = __( 'Purchased', 'learnpress' );
|
436 |
$columns['order_date'] = __( 'Date', 'learnpress' );
|
437 |
$columns['order_total'] = __( 'Total', 'learnpress' );
|
438 |
-
|
439 |
|
440 |
$columns = array_merge( $columns, $existing );
|
441 |
|
@@ -445,8 +459,10 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
445 |
}
|
446 |
|
447 |
public function order_title( $title, $post_id ) {
|
448 |
-
if ( LP_ORDER_CPT == get_post_type( $post_id ) )
|
449 |
$title = learn_press_transaction_order_number( $post_id );
|
|
|
|
|
450 |
return $title;
|
451 |
}
|
452 |
|
@@ -474,17 +490,17 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
474 |
}
|
475 |
}
|
476 |
break;
|
477 |
-
|
478 |
-
|
479 |
-
//
|
480 |
//
|
481 |
-
//
|
482 |
-
//
|
483 |
-
//
|
484 |
-
//
|
485 |
//
|
486 |
-
//
|
487 |
-
|
488 |
case 'order_date' :
|
489 |
|
490 |
$t_time = get_the_time( 'Y/m/d g:i:s a' );
|
@@ -493,10 +509,11 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
493 |
|
494 |
$time_diff = current_time( 'timestamp' ) - $time;
|
495 |
|
496 |
-
if ( $time_diff > 0 && $time_diff < DAY_IN_SECONDS )
|
497 |
$h_time = sprintf( __( '%s ago', 'learnpress' ), human_time_diff( $time ) );
|
498 |
-
else
|
499 |
$h_time = mysql2date( 'Y/m/d', $m_time );
|
|
|
500 |
|
501 |
echo '<abbr title="' . esc_attr( $t_time ) . '">' . esc_html( apply_filters( 'learn_press_order_column_time', $h_time, $the_order ) ) . '</abbr>';
|
502 |
|
@@ -535,9 +552,10 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
535 |
|
536 |
private function _is_archive() {
|
537 |
global $pagenow, $post_type;
|
538 |
-
if ( !is_admin() || ( $pagenow != 'edit.php' ) || ( 'lp_order' != $post_type ) ) {
|
539 |
return false;
|
540 |
}
|
|
|
541 |
return true;
|
542 |
}
|
543 |
|
@@ -601,8 +619,9 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
601 |
}
|
602 |
|
603 |
public function preparing_to_trash_order( $post_id ) {
|
604 |
-
if ( LP_ORDER_CPT != get_post_type( $post_id ) )
|
605 |
return;
|
|
|
606 |
}
|
607 |
|
608 |
/**
|
@@ -633,9 +652,10 @@ if ( !class_exists( 'LP_Order_Post_Type' ) ) {
|
|
633 |
}
|
634 |
|
635 |
public static function instance() {
|
636 |
-
if ( !self::$_instance ) {
|
637 |
self::$_instance = new self( LP_ORDER_CPT );
|
638 |
}
|
|
|
639 |
return self::$_instance;
|
640 |
}
|
641 |
|
4 |
* @package LearnPress/Classes
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
+
if ( ! class_exists( 'LP_Order_Post_Type' ) ) {
|
8 |
|
9 |
// class LP_Order_Post_Type
|
10 |
final class LP_Order_Post_Type extends LP_Abstract_Post_Type {
|
115 |
|
116 |
// delete all data related user order
|
117 |
if ( $user_id ) {
|
118 |
+
// learn_press_delete_user_data( $user_id );
|
119 |
}
|
120 |
}
|
121 |
}
|
148 |
$meta_ids = array();
|
149 |
$remove_ids = array( 0 );
|
150 |
foreach ( $existed as $k => $r ) {
|
151 |
+
if ( empty( $user_id[ $k ] ) ) {
|
152 |
$remove_ids[] = $r->meta_id;
|
153 |
continue;
|
154 |
}
|
155 |
+
$cases[] = $wpdb->prepare( "WHEN meta_id = %d THEN %d", $r->meta_id, $user_id[ $k ] );
|
156 |
+
$edited[] = $user_id[ $k ];
|
157 |
$meta_ids[] = $r->meta_id;
|
158 |
}
|
159 |
$sql = "
|
200 |
|
201 |
public function save_order( $post_id ) {
|
202 |
global $action;
|
203 |
+
if ( wp_is_post_revision( $post_id ) ) {
|
204 |
return;
|
205 |
+
}
|
206 |
if ( $action == 'editpost' && get_post_type( $post_id ) == 'lp_order' ) {
|
207 |
remove_action( 'save_post', array( $this, 'save_order' ) );
|
208 |
$user_id = learn_press_get_request( 'order-customer' );
|
219 |
$order_statuses = array_keys( $order_statuses );
|
220 |
$status = learn_press_get_request( 'order-status' );
|
221 |
|
222 |
+
if ( ! in_array( $status, $order_statuses ) ) {
|
223 |
$status = reset( $order_statuses );
|
224 |
}
|
225 |
|
244 |
}
|
245 |
|
246 |
public function admin_footer() {
|
247 |
+
if ( ! $this->_is_archive() ) {
|
248 |
return;
|
249 |
}
|
250 |
?>
|
258 |
|
259 |
public function posts_where_paged( $where ) {
|
260 |
global $wpdb, $wp_query;
|
261 |
+
if ( ! $this->_is_archive() || ! $this->_is_search() ) {
|
262 |
return $where;
|
263 |
}
|
264 |
|
276 |
}
|
277 |
|
278 |
public function posts_fields( $fields ) {
|
279 |
+
if ( ! $this->_is_archive() || ! $this->_is_search() ) {
|
280 |
return $fields;
|
281 |
}
|
282 |
$fields .= ", uu.ID as user_ID, uu.display_name as user_display_name";
|
283 |
+
|
284 |
return $fields;
|
285 |
}
|
286 |
|
287 |
public function posts_orderby( $orderby ) {
|
288 |
+
if ( ! $this->_is_archive() || ! $this->_is_search() ) {
|
289 |
return $orderby;
|
290 |
}
|
291 |
+
|
292 |
return $orderby;
|
293 |
}
|
294 |
|
295 |
public function posts_join_paged( $join ) {
|
296 |
+
if ( ! $this->_is_archive() || ! $this->_is_search() ) {
|
297 |
return $join;
|
298 |
}
|
299 |
global $wpdb;
|
300 |
$join .= " INNER JOIN {$wpdb->postmeta} ON {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id";
|
301 |
$join .= " INNER JOIN {$wpdb->users} uu ON uu.ID = {$wpdb->postmeta}.meta_value";
|
302 |
$join .= " INNER JOIN {$wpdb->learnpress_order_items} AS orderItem ON orderItem.order_id = {$wpdb->posts}.ID";
|
303 |
+
|
304 |
return $join;
|
305 |
}
|
306 |
|
313 |
*/
|
314 |
public function sortable_columns( $columns ) {
|
315 |
$columns['order_student'] = 'student';
|
316 |
+
|
317 |
return $columns;
|
318 |
}
|
319 |
|
321 |
|
322 |
global $post, $wp_query;
|
323 |
|
324 |
+
if ( LP_ORDER_CPT != get_post_type() ) {
|
325 |
return;
|
326 |
+
}
|
327 |
ob_start();
|
328 |
?>
|
329 |
<script>
|
330 |
$('#update-order-status').click(function () {
|
331 |
var $button = $(this).attr('disabled', 'disabled').html('<?php _e( 'Processing...', 'learnpress' ); ?>');
|
332 |
$.ajax({
|
333 |
+
url: ajaxurl,
|
334 |
+
type: 'POST',
|
335 |
dataType: 'json',
|
336 |
+
data: {
|
337 |
+
action: 'update_order_status',
|
338 |
order_id: '<?php echo $post->ID; ?>',
|
339 |
+
status: $('select[name="learn_press_order_status"]').val()
|
340 |
},
|
341 |
+
success: function (res) {
|
342 |
if (res.status) {
|
343 |
$('.order-data-status')
|
344 |
.removeClass('pending completed')
|
347 |
}
|
348 |
$button.removeAttr('disabled').html('<?php _e( 'Apply', 'learnpress' ); ?>');
|
349 |
},
|
350 |
+
error: function () {
|
351 |
$button.removeAttr('disabled').html('<?php _e( 'Apply', 'learnpress' ); ?>');
|
352 |
}
|
353 |
});
|
359 |
}
|
360 |
|
361 |
public function update_status() {
|
362 |
+
$order_id = ! empty( $_REQUEST['order_id'] ) ? $_REQUEST['order_id'] : 0;
|
363 |
+
$status = ! empty( $_REQUEST['status'] ) ? $_REQUEST['status'] : 'Pending';
|
364 |
learn_press_update_order_status( $order_id, $status );
|
365 |
|
366 |
wp_send_json(
|
372 |
}
|
373 |
|
374 |
public function row_actions( $actions, $post ) {
|
375 |
+
if ( ! empty( $actions['inline hide-if-no-js'] ) ) {
|
376 |
unset( $actions['inline hide-if-no-js'] );
|
377 |
}
|
378 |
+
if ( ! empty( $actions['edit'] ) ) {
|
379 |
$actions['edit'] = preg_replace( '/>(.*?)<\/a>/', ">" . __( 'View Order', 'learnpress' ) . "</a>", $actions['edit'] );
|
380 |
}
|
381 |
+
|
382 |
return $actions;
|
383 |
}
|
384 |
|
391 |
*/
|
392 |
public function pre_get_posts( $wp_query ) {
|
393 |
if ( is_admin() ) {
|
394 |
+
if ( ! empty( $wp_query->query['post_type'] ) && ( $wp_query->query['post_type'] == LP_ORDER_CPT ) ) {
|
395 |
$wp_query->set( 'orderby', 'date' );
|
396 |
$wp_query->set( 'order', 'desc' );
|
397 |
}
|
398 |
}
|
399 |
+
|
400 |
return $wp_query;
|
401 |
}
|
402 |
|
412 |
}
|
413 |
|
414 |
// Remove Title - adding it back below
|
415 |
+
if ( isset( $existing['title'] ) ) {
|
416 |
unset( $existing['title'] );
|
417 |
+
}
|
418 |
|
419 |
// Remove Format
|
420 |
+
if ( isset( $existing['format'] ) ) {
|
421 |
unset( $existing['format'] );
|
422 |
+
}
|
423 |
|
424 |
// Remove Author
|
425 |
+
if ( isset( $existing['author'] ) ) {
|
426 |
unset( $existing['author'] );
|
427 |
+
}
|
428 |
|
429 |
// Remove Comments
|
430 |
+
if ( isset( $existing['comments'] ) ) {
|
431 |
unset( $existing['comments'] );
|
432 |
+
}
|
433 |
|
434 |
// Remove Date
|
435 |
+
if ( isset( $existing['date'] ) ) {
|
436 |
unset( $existing['date'] );
|
437 |
+
}
|
438 |
|
439 |
// Remove Builder
|
440 |
+
if ( isset( $existing['builder_layout'] ) ) {
|
441 |
unset( $existing['builder_layout'] );
|
442 |
+
}
|
443 |
|
444 |
add_filter( 'the_title', array( $this, 'order_title' ), 5, 2 );
|
445 |
|
449 |
$columns['order_items'] = __( 'Purchased', 'learnpress' );
|
450 |
$columns['order_date'] = __( 'Date', 'learnpress' );
|
451 |
$columns['order_total'] = __( 'Total', 'learnpress' );
|
452 |
+
$columns['order_status'] = '<span class="status_head tips" data-tip="' . esc_attr__( 'Status', 'learnpress' ) . '">' . esc_attr__( 'Status', 'learnpress' ) . '</span>';
|
453 |
|
454 |
$columns = array_merge( $columns, $existing );
|
455 |
|
459 |
}
|
460 |
|
461 |
public function order_title( $title, $post_id ) {
|
462 |
+
if ( LP_ORDER_CPT == get_post_type( $post_id ) ) {
|
463 |
$title = learn_press_transaction_order_number( $post_id );
|
464 |
+
}
|
465 |
+
|
466 |
return $title;
|
467 |
}
|
468 |
|
490 |
}
|
491 |
}
|
492 |
break;
|
493 |
+
case 'order_status' :
|
494 |
+
echo learn_press_get_order_status_label( $post->ID );
|
495 |
+
// echo '<select name="order-status" data-status="lp-' . $the_order->get_status() . '">';
|
496 |
//
|
497 |
+
// $statuses = learn_press_get_order_statuses();
|
498 |
+
// foreach ( $statuses as $status => $status_name ) {
|
499 |
+
// echo '<option data-desc="' . esc_attr( _learn_press_get_order_status_description( $status ) ) . '" value="' . esc_attr( $status ) . '" ' . selected( $status, 'lp-' . $the_order->get_status(), false ) . '>' . esc_html( $status_name ) . '</option>';
|
500 |
+
// }
|
501 |
//
|
502 |
+
// echo '</select>';
|
503 |
+
break;
|
504 |
case 'order_date' :
|
505 |
|
506 |
$t_time = get_the_time( 'Y/m/d g:i:s a' );
|
509 |
|
510 |
$time_diff = current_time( 'timestamp' ) - $time;
|
511 |
|
512 |
+
if ( $time_diff > 0 && $time_diff < DAY_IN_SECONDS ) {
|
513 |
$h_time = sprintf( __( '%s ago', 'learnpress' ), human_time_diff( $time ) );
|
514 |
+
} else {
|
515 |
$h_time = mysql2date( 'Y/m/d', $m_time );
|
516 |
+
}
|
517 |
|
518 |
echo '<abbr title="' . esc_attr( $t_time ) . '">' . esc_html( apply_filters( 'learn_press_order_column_time', $h_time, $the_order ) ) . '</abbr>';
|
519 |
|
552 |
|
553 |
private function _is_archive() {
|
554 |
global $pagenow, $post_type;
|
555 |
+
if ( ! is_admin() || ( $pagenow != 'edit.php' ) || ( 'lp_order' != $post_type ) ) {
|
556 |
return false;
|
557 |
}
|
558 |
+
|
559 |
return true;
|
560 |
}
|
561 |
|
619 |
}
|
620 |
|
621 |
public function preparing_to_trash_order( $post_id ) {
|
622 |
+
if ( LP_ORDER_CPT != get_post_type( $post_id ) ) {
|
623 |
return;
|
624 |
+
}
|
625 |
}
|
626 |
|
627 |
/**
|
652 |
}
|
653 |
|
654 |
public static function instance() {
|
655 |
+
if ( ! self::$_instance ) {
|
656 |
self::$_instance = new self( LP_ORDER_CPT );
|
657 |
}
|
658 |
+
|
659 |
return self::$_instance;
|
660 |
}
|
661 |
|
inc/lp-constants.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*/
|
5 |
$upload_dir = wp_upload_dir();
|
6 |
// version
|
7 |
-
define( 'LEARNPRESS_VERSION', '2.1.
|
8 |
|
9 |
define( 'LP_WP_CONTENT', basename( WP_CONTENT_DIR ) );
|
10 |
|
4 |
*/
|
5 |
$upload_dir = wp_upload_dir();
|
6 |
// version
|
7 |
+
define( 'LEARNPRESS_VERSION', '2.1.8.1' );
|
8 |
|
9 |
define( 'LP_WP_CONTENT', basename( WP_CONTENT_DIR ) );
|
10 |
|
inc/lp-core-functions.php
CHANGED
@@ -2277,7 +2277,7 @@ function learn_press_auto_enroll_user_to_courses( $order_id ) {
|
|
2277 |
if ( ! $user->is_exists() ) {
|
2278 |
continue;
|
2279 |
}
|
2280 |
-
if ( $user->has( 'enrolled-course', $course->id ) ) {
|
2281 |
continue;
|
2282 |
}
|
2283 |
// error. this scripts will create new order each course item
|
@@ -2629,6 +2629,7 @@ function learn_press_is_added_to_cart( $course_id ) {
|
|
2629 |
return $cart->has_item( $course_id );
|
2630 |
}
|
2631 |
|
|
|
2632 |
function learn_press_get_requested_post_type() {
|
2633 |
global $pagenow;
|
2634 |
if ( $pagenow == 'post-new.php' && ! empty( $_GET['post_type'] ) ) {
|
2277 |
if ( ! $user->is_exists() ) {
|
2278 |
continue;
|
2279 |
}
|
2280 |
+
if ( $user->has( 'enrolled-course', $course->id, true, $order_id ) ) {
|
2281 |
continue;
|
2282 |
}
|
2283 |
// error. this scripts will create new order each course item
|
2629 |
return $cart->has_item( $course_id );
|
2630 |
}
|
2631 |
|
2632 |
+
// useless
|
2633 |
function learn_press_get_requested_post_type() {
|
2634 |
global $pagenow;
|
2635 |
if ( $pagenow == 'post-new.php' && ! empty( $_GET['post_type'] ) ) {
|
inc/lp-init.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Functions that are used to init a course to reduce SQL queries
|
4 |
*/
|
5 |
|
6 |
-
if ( !defined( 'ABSPATH' ) ) {
|
7 |
exit; // Exit if accessed directly
|
8 |
}
|
9 |
add_action( 'init', '_learn_press_upgrade_table' );
|
@@ -22,6 +22,7 @@ function _learn_press_upgrade_table() {
|
|
22 |
$query = "SHOW COLUMNS FROM {$wpdb->prefix}learnpress_user_items LIKE 'parent_id'";
|
23 |
if ( $row = $wpdb->get_var( $query ) ) {
|
24 |
update_option( 'learn_press_upgrade_table_20', 'yes' );
|
|
|
25 |
return;
|
26 |
}
|
27 |
|
@@ -52,7 +53,7 @@ function learn_press_setup_pages() {
|
|
52 |
$page_ids[] = $id;
|
53 |
}
|
54 |
}
|
55 |
-
if (
|
56 |
return;
|
57 |
}
|
58 |
$query = $wpdb->prepare( "
|
@@ -61,7 +62,7 @@ function learn_press_setup_pages() {
|
|
61 |
WHERE %d AND ID IN(" . join( ',', $page_ids ) . ")
|
62 |
AND post_status <> %s
|
63 |
", 1, 'trash' );
|
64 |
-
if (
|
65 |
return;
|
66 |
}
|
67 |
foreach ( $pages as $page ) {
|
@@ -88,17 +89,17 @@ function learn_press_setup_course_data( $the_course ) {
|
|
88 |
} elseif ( isset( $the_course->ID ) ) {
|
89 |
$post = $the_course;
|
90 |
} elseif ( is_string( $the_course ) ) {
|
91 |
-
if ( !empty( $wp_query->queried_object ) ) {
|
92 |
if ( $wp_query->queried_object->post_name == $the_course ) {
|
93 |
$post = $wp_query->queried_object;
|
94 |
}
|
95 |
}
|
96 |
-
if (
|
97 |
$post = learn_press_get_post_by_name( $the_course, 'lp_course' );
|
98 |
}
|
99 |
}
|
100 |
|
101 |
-
if (
|
102 |
return $course;
|
103 |
}
|
104 |
_learn_press_get_course_curriculum( $post->ID );
|
@@ -134,16 +135,17 @@ function _learn_press_count_users_enrolled_courses( $course_ids ) {
|
|
134 |
", $format );
|
135 |
if ( $results = $wpdb->get_results( $query ) ) {
|
136 |
foreach ( $results as $c => $v ) {
|
137 |
-
$counts[$v->course_id] = absint( $v->count );
|
138 |
}
|
139 |
}
|
140 |
}
|
141 |
foreach ( $course_ids as $course_id ) {
|
142 |
-
if ( !array_key_exists( $course_id, $counts ) ) {
|
143 |
-
$counts[$course_id] = 0;
|
144 |
}
|
145 |
}
|
146 |
LP_Cache::set_enrolled_courses( $counts );
|
|
|
147 |
return $counts;
|
148 |
}
|
149 |
|
@@ -157,14 +159,14 @@ function _learn_press_get_courses_curriculum( $course_ids, $force = false, $pars
|
|
157 |
if ( array_key_exists( $course_id, $curriculum ) ) {
|
158 |
$remove_courses[] = $course_id;
|
159 |
} else {
|
160 |
-
$curriculum[$course_id] = array();
|
161 |
}
|
162 |
}
|
163 |
|
164 |
if ( $remove_courses ) {
|
165 |
$course_ids = array_diff( $course_ids, $remove_courses );
|
166 |
}
|
167 |
-
if (
|
168 |
return;
|
169 |
}
|
170 |
$in = array_fill( 0, sizeof( $course_ids ), '%d' );
|
@@ -194,7 +196,7 @@ function _learn_press_get_courses_curriculum( $course_ids, $force = false, $pars
|
|
194 |
$meta_cache_ids = $course_ids;
|
195 |
|
196 |
if ( $rows ) {
|
197 |
-
if ( !function_exists( 'get_default_post_to_edit' ) ) {
|
198 |
include_once ABSPATH . '/wp-admin/includes/post.php';
|
199 |
}
|
200 |
|
@@ -225,8 +227,8 @@ function _learn_press_get_courses_curriculum( $course_ids, $force = false, $pars
|
|
225 |
) {
|
226 |
$section->{$prop} = $row->{$prop};
|
227 |
}
|
228 |
-
$section->items
|
229 |
-
$_curriculum[$section_id] = $section;
|
230 |
}
|
231 |
$item = new stdClass();
|
232 |
foreach ( array( 'section_item_id', 'section_id', 'item_id', 'item_order', 'item_type' ) as $prop ) {
|
@@ -246,10 +248,10 @@ function _learn_press_get_courses_curriculum( $course_ids, $force = false, $pars
|
|
246 |
} elseif ( $item->post_type == LP_LESSON_CPT ) {
|
247 |
$lesson_ids[] = $item->ID;
|
248 |
}
|
249 |
-
if ( empty( $post_names[$item->post_type] ) ) {
|
250 |
-
$post_names[$item->post_type] = array();
|
251 |
}
|
252 |
-
$post_names[$item->post_type][$item->post_name] = $item->ID;
|
253 |
if ( $item->post_type == LP_QUIZ_CPT ) {
|
254 |
$cached_post = wp_cache_get( $item->ID, 'posts' );
|
255 |
if ( $cached_post ) {
|
@@ -260,7 +262,7 @@ function _learn_press_get_courses_curriculum( $course_ids, $force = false, $pars
|
|
260 |
}
|
261 |
}
|
262 |
}
|
263 |
-
$_curriculum[$section_id]->items[] = $item;
|
264 |
wp_cache_delete( $item->ID, 'posts' );
|
265 |
wp_cache_add( $item->ID, $item, 'posts' );
|
266 |
}
|
@@ -291,7 +293,7 @@ function _learn_press_get_courses_curriculum( $course_ids, $force = false, $pars
|
|
291 |
}
|
292 |
}
|
293 |
}
|
294 |
-
$curriculum[$course_id] = $_curriculum;
|
295 |
}
|
296 |
$meta_cache_ids = array_unique( $meta_cache_ids );
|
297 |
update_meta_cache( 'post', $meta_cache_ids );
|
@@ -314,6 +316,7 @@ function _learn_press_get_courses_curriculum( $course_ids, $force = false, $pars
|
|
314 |
LP_Cache::set_course_curriculum( $curriculum );
|
315 |
LP_Cache::set_post_names( $post_names );
|
316 |
}
|
|
|
317 |
return $curriculum;
|
318 |
}
|
319 |
|
@@ -328,11 +331,12 @@ function _learn_press_get_course_curriculum( $course_id, $force = false ) {
|
|
328 |
$curriculum = LP_Cache::get_course_curriculum( $course_id );
|
329 |
if ( ( $curriculum == false ) || $force ) {
|
330 |
$curriculum = _learn_press_get_courses_curriculum( array( $course_id ), $force );
|
331 |
-
if ( empty( $curriculum[$course_id] ) ) {
|
332 |
-
$curriculum[$course_id] = array();
|
333 |
}
|
334 |
-
$curriculum = $curriculum[$course_id];
|
335 |
}
|
|
|
336 |
return $curriculum;
|
337 |
}
|
338 |
|
@@ -345,13 +349,13 @@ function _learn_press_get_quiz_questions( $quiz_ids ) {
|
|
345 |
global $wpdb;
|
346 |
settype( $quiz_ids, 'array' );
|
347 |
for ( $n = sizeof( $quiz_ids ), $i = $n - 1; $i >= 0; $i -- ) {
|
348 |
-
$q = wp_cache_get( $quiz_ids[$i], 'posts' );
|
349 |
if ( $q && property_exists( $q, 'questions' ) ) {
|
350 |
-
unset( $quiz_ids[$i] );
|
351 |
}
|
352 |
}
|
353 |
$meta_cache_ids = array();
|
354 |
-
if (
|
355 |
return $meta_cache_ids;
|
356 |
}
|
357 |
$marks = array();
|
@@ -383,43 +387,50 @@ function _learn_press_get_quiz_questions( $quiz_ids ) {
|
|
383 |
foreach ( $answers as $row ) {
|
384 |
if ( $row->id != $question_id ) {
|
385 |
$question_id = $row->id;
|
386 |
-
if ( empty( $questions[$question_id] ) ) {
|
387 |
continue;
|
388 |
}
|
389 |
-
$questions[$question_id]->answers = array();
|
390 |
-
$questions[$question_id]->type = $row->type;
|
391 |
}
|
392 |
-
if (
|
393 |
continue;
|
394 |
}
|
395 |
-
$answer_data['id']
|
396 |
-
$answer_data['order']
|
397 |
-
$answer_data['type']
|
398 |
-
$questions[$question_id]->answers[$row->question_answer_id] = $answer_data;
|
399 |
}
|
400 |
}
|
401 |
|
402 |
foreach ( $questions as $question ) {
|
403 |
-
if ( !isset( $marks[$question->quiz_id] ) ) {
|
404 |
-
$marks[$question->quiz_id] = 0;
|
405 |
}
|
406 |
-
if ( empty( $quiz_questions[$question->quiz_id] ) ) {
|
407 |
-
$quiz_questions[$question->quiz_id] = array();
|
408 |
}
|
409 |
-
$marks[$question->quiz_id]
|
410 |
-
$quiz_questions[$question->quiz_id][] = $question->ID;
|
411 |
-
|
412 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
413 |
}
|
414 |
|
415 |
$meta_cache_ids = array_merge( $meta_cache_ids, $question_ids );
|
416 |
foreach ( $marks as $id => $mark ) {
|
417 |
$quiz = get_post( $id );
|
418 |
$quiz->mark = $mark;
|
419 |
-
$quiz->questions = is_admin() ? maybe_serialize( $quiz_questions[$id] ) : $quiz_questions[$id];
|
420 |
wp_cache_delete( $id, 'posts' );
|
421 |
wp_cache_add( $id, $quiz, 'posts' );
|
422 |
-
$post_names[$quiz->post_name] = $id;
|
423 |
}
|
424 |
}
|
425 |
$fetched_ids = array_keys( $marks );
|
@@ -446,13 +457,14 @@ function learn_press_setup_user_course_data( $user_id, $course_id, $force = fals
|
|
446 |
foreach ( $course_id as $cid ) {
|
447 |
learn_press_setup_user_course_data( $user_id, $cid, $force );
|
448 |
}
|
|
|
449 |
return;
|
450 |
}
|
451 |
-
if ( !did_action( 'learn_press_setup_course_data_' . $course_id ) ) {
|
452 |
learn_press_setup_course_data( $course_id );
|
453 |
}
|
454 |
|
455 |
-
if (
|
456 |
$course_id = get_the_ID();
|
457 |
}
|
458 |
|
@@ -462,10 +474,10 @@ function learn_press_setup_user_course_data( $user_id, $course_id, $force = fals
|
|
462 |
_learn_press_get_user_course_orders();
|
463 |
_learn_press_parse_user_item_statuses( $user_id, $course_id );
|
464 |
global $lp_query;
|
465 |
-
if ( !empty( $lp_query->query_vars['lesson'] ) && !empty( $item_statuses[$user_id . '-' . $course_id . '-' . $course_id] ) && $item_statuses[$user_id . '-' . $course_id . '-' . $course_id] != 'finished' ) {
|
466 |
$user_item_id = learn_press_get_user_item_id( $user_id, $course_id );
|
467 |
$lesson = learn_press_get_post_by_name( $lp_query->query_vars['lesson'], LP_LESSON_CPT );
|
468 |
-
if ( empty( $item_statuses[$user_id . '-' . $course_id . '-' . $lesson->ID] ) ) {
|
469 |
learn_press_update_user_item_field( array(
|
470 |
'user_id' => $user_id,
|
471 |
'item_id' => $lesson->ID,
|
@@ -481,15 +493,15 @@ function learn_press_setup_user_course_data( $user_id, $course_id, $force = fals
|
|
481 |
}
|
482 |
|
483 |
function _learn_press_parse_user_item_statuses( $user_id, $course_id, $force = false ) {
|
484 |
-
if ( did_action( "learn_press_parse_user_item_statuses_{$user_id}_{$course_id}" ) &&
|
485 |
return;
|
486 |
}
|
487 |
global $wpdb;
|
488 |
-
if (
|
489 |
$course_id = get_the_ID();
|
490 |
}
|
491 |
$course = get_post( $course_id );
|
492 |
-
$item_ids = !empty( $course->curriculum_items ) ? $course->curriculum_items : array();
|
493 |
$item_ids = maybe_unserialize( $item_ids );
|
494 |
if ( $item_ids ) {
|
495 |
$in = implode( ', ', $item_ids );
|
@@ -527,21 +539,21 @@ function _learn_press_parse_user_item_statuses( $user_id, $course_id, $force = f
|
|
527 |
$item_statuses = LP_Cache::get_item_statuses( false, array() );
|
528 |
$quiz_grades = LP_Cache::get_quiz_grade( false, array() );
|
529 |
foreach ( $item_ids as $id ) {
|
530 |
-
if ( !array_key_exists( $id, $item_statuses ) || $force ) {
|
531 |
-
$item_statuses[$user_id . '-' . $course_id . '-' . $id] = '';
|
532 |
}
|
533 |
|
534 |
-
if ( !array_key_exists( $id, $item_statuses ) || $force ) {
|
535 |
-
$quiz_grades[$user_id . '-' . $course_id . '-' . $id] = '';
|
536 |
}
|
537 |
}
|
538 |
if ( $items ) {
|
539 |
foreach ( $items as $item ) {
|
540 |
-
$item_statuses[$user_id . '-' . $course_id . '-' . $item->item_id] = learn_press_validate_item_status( $item );
|
541 |
-
if ( !empty($item->grade) ) {
|
542 |
-
$quiz_grades[$user_id . '-' . $course_id . '-' . $item->item_id] = $item->grade;
|
543 |
-
}else{
|
544 |
-
$quiz_grades[$user_id . '-' . $course_id . '-' . $item->item_id] = '';
|
545 |
}
|
546 |
}
|
547 |
}
|
@@ -553,24 +565,29 @@ function _learn_press_parse_user_item_statuses( $user_id, $course_id, $force = f
|
|
553 |
}
|
554 |
|
555 |
function learn_press_validate_item_status( $item ) {
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
$
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
$
|
567 |
-
|
568 |
-
|
569 |
-
$data
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
|
|
|
|
|
|
|
|
|
|
574 |
}
|
575 |
|
576 |
return $status;
|
@@ -584,11 +601,11 @@ function learn_press_validate_item_status( $item ) {
|
|
584 |
*/
|
585 |
function _learn_press_get_user_course_orders( $user_id = 0, $force = false ) {
|
586 |
global $wpdb;
|
587 |
-
if (
|
588 |
$user_id = learn_press_get_current_user_id();
|
589 |
}
|
590 |
$data = LP_Cache::get_user_course_order( false, array() );
|
591 |
-
if ( !array_key_exists( $user_id, $data ) || $force ) {
|
592 |
$results = array();
|
593 |
$query = $wpdb->prepare( "
|
594 |
SELECT o.*, oim.meta_value as course_id
|
@@ -600,21 +617,21 @@ function _learn_press_get_user_course_orders( $user_id = 0, $force = false ) {
|
|
600 |
", '_course_id', '_user_id', $user_id, 'trash', LP_ORDER_CPT );
|
601 |
if ( $rows = $wpdb->get_results( $query ) ) {
|
602 |
foreach ( $rows as $row ) {
|
603 |
-
if ( empty( $results[$row->course_id] ) ) {
|
604 |
-
$results[$row->course_id] = array(
|
605 |
$row->ID => $row
|
606 |
);
|
607 |
} else {
|
608 |
-
$results[$row->course_id]
|
609 |
-
$results[$row->course_id][$row->ID] = $row;
|
610 |
-
$results[$row->course_id]
|
611 |
}
|
612 |
}
|
613 |
}
|
614 |
-
$data[$user_id] = $results;
|
615 |
LP_Cache::set_user_course_order( $data );
|
616 |
} else {
|
617 |
-
$results = $data[$user_id];
|
618 |
}
|
619 |
|
620 |
return $results;
|
@@ -622,7 +639,7 @@ function _learn_press_get_user_course_orders( $user_id = 0, $force = false ) {
|
|
622 |
|
623 |
function _learn_press_get_user_profile_orders( $user_id = 0, $paged = 1, $limit = 10 ) {
|
624 |
global $wpdb;
|
625 |
-
if (
|
626 |
$user_id = learn_press_get_current_user_id();
|
627 |
}
|
628 |
if ( empty( $paged ) ) {
|
@@ -633,7 +650,7 @@ function _learn_press_get_user_profile_orders( $user_id = 0, $paged = 1, $limit
|
|
633 |
}
|
634 |
$data = LP_Cache::get_user_profile_orders( false, array() );
|
635 |
|
636 |
-
if ( !array_key_exists( $user_id, $data ) ) {
|
637 |
$limit = absint( $limit );
|
638 |
$offset = absint( $paged - 1 ) * $limit;
|
639 |
$results = array();
|
@@ -660,17 +677,17 @@ function _learn_press_get_user_profile_orders( $user_id = 0, $paged = 1, $limit
|
|
660 |
$rows = array_slice( $rows, $offset, $limit );
|
661 |
$order_ids = array();
|
662 |
foreach ( $rows as $row ) {
|
663 |
-
$results['rows'][$row->ID] = $row;
|
664 |
wp_cache_add( $row->ID, $row, 'posts' );
|
665 |
$order_ids[] = $row->ID;
|
666 |
}
|
667 |
update_meta_cache( 'post', $order_ids );
|
668 |
}
|
669 |
|
670 |
-
$data[$user_id] = $results;
|
671 |
LP_Cache::set_user_profile_orders( $data );
|
672 |
} else {
|
673 |
-
$results = $data[$user_id];
|
674 |
}
|
675 |
|
676 |
|
@@ -699,18 +716,18 @@ function _learn_press_setup_question( $id ) {
|
|
699 |
$question_id = 0;
|
700 |
foreach ( $answers as $row ) {
|
701 |
if ( $row->ID != $question_id ) {
|
702 |
-
$question_id
|
703 |
-
$questions[$question_id] = $row;
|
704 |
-
$questions[$question_id]->answers = array();
|
705 |
-
$questions[$question_id]->type = $row->type;
|
706 |
}
|
707 |
-
if (
|
708 |
continue;
|
709 |
}
|
710 |
-
$answer_data['id']
|
711 |
-
$answer_data['order']
|
712 |
-
$answer_data['type']
|
713 |
-
$questions[$question_id]->answers[$row->question_answer_id] = $answer_data;
|
714 |
}
|
715 |
foreach ( $questions as $question ) {
|
716 |
$question->answers = maybe_serialize( $question->answers );
|
3 |
* Functions that are used to init a course to reduce SQL queries
|
4 |
*/
|
5 |
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
exit; // Exit if accessed directly
|
8 |
}
|
9 |
add_action( 'init', '_learn_press_upgrade_table' );
|
22 |
$query = "SHOW COLUMNS FROM {$wpdb->prefix}learnpress_user_items LIKE 'parent_id'";
|
23 |
if ( $row = $wpdb->get_var( $query ) ) {
|
24 |
update_option( 'learn_press_upgrade_table_20', 'yes' );
|
25 |
+
|
26 |
return;
|
27 |
}
|
28 |
|
53 |
$page_ids[] = $id;
|
54 |
}
|
55 |
}
|
56 |
+
if ( ! $page_ids ) {
|
57 |
return;
|
58 |
}
|
59 |
$query = $wpdb->prepare( "
|
62 |
WHERE %d AND ID IN(" . join( ',', $page_ids ) . ")
|
63 |
AND post_status <> %s
|
64 |
", 1, 'trash' );
|
65 |
+
if ( ! $pages = $wpdb->get_results( $query ) ) {
|
66 |
return;
|
67 |
}
|
68 |
foreach ( $pages as $page ) {
|
89 |
} elseif ( isset( $the_course->ID ) ) {
|
90 |
$post = $the_course;
|
91 |
} elseif ( is_string( $the_course ) ) {
|
92 |
+
if ( ! empty( $wp_query->queried_object ) ) {
|
93 |
if ( $wp_query->queried_object->post_name == $the_course ) {
|
94 |
$post = $wp_query->queried_object;
|
95 |
}
|
96 |
}
|
97 |
+
if ( ! $post ) {
|
98 |
$post = learn_press_get_post_by_name( $the_course, 'lp_course' );
|
99 |
}
|
100 |
}
|
101 |
|
102 |
+
if ( ! $post || $post->post_type != LP_COURSE_CPT ) {
|
103 |
return $course;
|
104 |
}
|
105 |
_learn_press_get_course_curriculum( $post->ID );
|
135 |
", $format );
|
136 |
if ( $results = $wpdb->get_results( $query ) ) {
|
137 |
foreach ( $results as $c => $v ) {
|
138 |
+
$counts[ $v->course_id ] = absint( $v->count );
|
139 |
}
|
140 |
}
|
141 |
}
|
142 |
foreach ( $course_ids as $course_id ) {
|
143 |
+
if ( ! array_key_exists( $course_id, $counts ) ) {
|
144 |
+
$counts[ $course_id ] = 0;
|
145 |
}
|
146 |
}
|
147 |
LP_Cache::set_enrolled_courses( $counts );
|
148 |
+
|
149 |
return $counts;
|
150 |
}
|
151 |
|
159 |
if ( array_key_exists( $course_id, $curriculum ) ) {
|
160 |
$remove_courses[] = $course_id;
|
161 |
} else {
|
162 |
+
$curriculum[ $course_id ] = array();
|
163 |
}
|
164 |
}
|
165 |
|
166 |
if ( $remove_courses ) {
|
167 |
$course_ids = array_diff( $course_ids, $remove_courses );
|
168 |
}
|
169 |
+
if ( ! $course_ids ) {
|
170 |
return;
|
171 |
}
|
172 |
$in = array_fill( 0, sizeof( $course_ids ), '%d' );
|
196 |
$meta_cache_ids = $course_ids;
|
197 |
|
198 |
if ( $rows ) {
|
199 |
+
if ( ! function_exists( 'get_default_post_to_edit' ) ) {
|
200 |
include_once ABSPATH . '/wp-admin/includes/post.php';
|
201 |
}
|
202 |
|
227 |
) {
|
228 |
$section->{$prop} = $row->{$prop};
|
229 |
}
|
230 |
+
$section->items = array();
|
231 |
+
$_curriculum[ $section_id ] = $section;
|
232 |
}
|
233 |
$item = new stdClass();
|
234 |
foreach ( array( 'section_item_id', 'section_id', 'item_id', 'item_order', 'item_type' ) as $prop ) {
|
248 |
} elseif ( $item->post_type == LP_LESSON_CPT ) {
|
249 |
$lesson_ids[] = $item->ID;
|
250 |
}
|
251 |
+
if ( empty( $post_names[ $item->post_type ] ) ) {
|
252 |
+
$post_names[ $item->post_type ] = array();
|
253 |
}
|
254 |
+
$post_names[ $item->post_type ][ $item->post_name ] = $item->ID;
|
255 |
if ( $item->post_type == LP_QUIZ_CPT ) {
|
256 |
$cached_post = wp_cache_get( $item->ID, 'posts' );
|
257 |
if ( $cached_post ) {
|
262 |
}
|
263 |
}
|
264 |
}
|
265 |
+
$_curriculum[ $section_id ]->items[] = $item;
|
266 |
wp_cache_delete( $item->ID, 'posts' );
|
267 |
wp_cache_add( $item->ID, $item, 'posts' );
|
268 |
}
|
293 |
}
|
294 |
}
|
295 |
}
|
296 |
+
$curriculum[ $course_id ] = $_curriculum;
|
297 |
}
|
298 |
$meta_cache_ids = array_unique( $meta_cache_ids );
|
299 |
update_meta_cache( 'post', $meta_cache_ids );
|
316 |
LP_Cache::set_course_curriculum( $curriculum );
|
317 |
LP_Cache::set_post_names( $post_names );
|
318 |
}
|
319 |
+
|
320 |
return $curriculum;
|
321 |
}
|
322 |
|
331 |
$curriculum = LP_Cache::get_course_curriculum( $course_id );
|
332 |
if ( ( $curriculum == false ) || $force ) {
|
333 |
$curriculum = _learn_press_get_courses_curriculum( array( $course_id ), $force );
|
334 |
+
if ( empty( $curriculum[ $course_id ] ) ) {
|
335 |
+
$curriculum[ $course_id ] = array();
|
336 |
}
|
337 |
+
$curriculum = $curriculum[ $course_id ];
|
338 |
}
|
339 |
+
|
340 |
return $curriculum;
|
341 |
}
|
342 |
|
349 |
global $wpdb;
|
350 |
settype( $quiz_ids, 'array' );
|
351 |
for ( $n = sizeof( $quiz_ids ), $i = $n - 1; $i >= 0; $i -- ) {
|
352 |
+
$q = wp_cache_get( $quiz_ids[ $i ], 'posts' );
|
353 |
if ( $q && property_exists( $q, 'questions' ) ) {
|
354 |
+
unset( $quiz_ids[ $i ] );
|
355 |
}
|
356 |
}
|
357 |
$meta_cache_ids = array();
|
358 |
+
if ( ! $quiz_ids ) {
|
359 |
return $meta_cache_ids;
|
360 |
}
|
361 |
$marks = array();
|
387 |
foreach ( $answers as $row ) {
|
388 |
if ( $row->id != $question_id ) {
|
389 |
$question_id = $row->id;
|
390 |
+
if ( empty( $questions[ $question_id ] ) ) {
|
391 |
continue;
|
392 |
}
|
393 |
+
$questions[ $question_id ]->answers = array();
|
394 |
+
$questions[ $question_id ]->type = $row->type;
|
395 |
}
|
396 |
+
if ( ! $answer_data = maybe_unserialize( $row->answer_data ) ) {
|
397 |
continue;
|
398 |
}
|
399 |
+
$answer_data['id'] = $row->question_answer_id;
|
400 |
+
$answer_data['order'] = $row->answer_order;
|
401 |
+
$answer_data['type'] = $row->type;
|
402 |
+
$questions[ $question_id ]->answers[ $row->question_answer_id ] = $answer_data;
|
403 |
}
|
404 |
}
|
405 |
|
406 |
foreach ( $questions as $question ) {
|
407 |
+
if ( ! isset( $marks[ $question->quiz_id ] ) ) {
|
408 |
+
$marks[ $question->quiz_id ] = 0;
|
409 |
}
|
410 |
+
if ( empty( $quiz_questions[ $question->quiz_id ] ) ) {
|
411 |
+
$quiz_questions[ $question->quiz_id ] = array();
|
412 |
}
|
413 |
+
$marks[ $question->quiz_id ] += $question->mark;
|
414 |
+
$quiz_questions[ $question->quiz_id ][] = $question->ID;
|
415 |
+
|
416 |
+
// Issue with FIB
|
417 |
+
if ( false !== wp_cache_get( $question->ID, 'posts' ) ) {
|
418 |
+
wp_cache_replace( $question->ID, $question, 'posts' );
|
419 |
+
} else {
|
420 |
+
wp_cache_add( $question->ID, $question, 'posts' );
|
421 |
+
}
|
422 |
+
|
423 |
+
$post_names[ $question->post_name ] = $question->ID;
|
424 |
}
|
425 |
|
426 |
$meta_cache_ids = array_merge( $meta_cache_ids, $question_ids );
|
427 |
foreach ( $marks as $id => $mark ) {
|
428 |
$quiz = get_post( $id );
|
429 |
$quiz->mark = $mark;
|
430 |
+
$quiz->questions = is_admin() ? maybe_serialize( $quiz_questions[ $id ] ) : $quiz_questions[ $id ];
|
431 |
wp_cache_delete( $id, 'posts' );
|
432 |
wp_cache_add( $id, $quiz, 'posts' );
|
433 |
+
$post_names[ $quiz->post_name ] = $id;
|
434 |
}
|
435 |
}
|
436 |
$fetched_ids = array_keys( $marks );
|
457 |
foreach ( $course_id as $cid ) {
|
458 |
learn_press_setup_user_course_data( $user_id, $cid, $force );
|
459 |
}
|
460 |
+
|
461 |
return;
|
462 |
}
|
463 |
+
if ( ! did_action( 'learn_press_setup_course_data_' . $course_id ) ) {
|
464 |
learn_press_setup_course_data( $course_id );
|
465 |
}
|
466 |
|
467 |
+
if ( ! $course_id ) {
|
468 |
$course_id = get_the_ID();
|
469 |
}
|
470 |
|
474 |
_learn_press_get_user_course_orders();
|
475 |
_learn_press_parse_user_item_statuses( $user_id, $course_id );
|
476 |
global $lp_query;
|
477 |
+
if ( ! empty( $lp_query->query_vars['lesson'] ) && ! empty( $item_statuses[ $user_id . '-' . $course_id . '-' . $course_id ] ) && $item_statuses[ $user_id . '-' . $course_id . '-' . $course_id ] != 'finished' ) {
|
478 |
$user_item_id = learn_press_get_user_item_id( $user_id, $course_id );
|
479 |
$lesson = learn_press_get_post_by_name( $lp_query->query_vars['lesson'], LP_LESSON_CPT );
|
480 |
+
if ( empty( $item_statuses[ $user_id . '-' . $course_id . '-' . $lesson->ID ] ) ) {
|
481 |
learn_press_update_user_item_field( array(
|
482 |
'user_id' => $user_id,
|
483 |
'item_id' => $lesson->ID,
|
493 |
}
|
494 |
|
495 |
function _learn_press_parse_user_item_statuses( $user_id, $course_id, $force = false ) {
|
496 |
+
if ( did_action( "learn_press_parse_user_item_statuses_{$user_id}_{$course_id}" ) && ! $force ) {
|
497 |
return;
|
498 |
}
|
499 |
global $wpdb;
|
500 |
+
if ( ! $course_id ) {
|
501 |
$course_id = get_the_ID();
|
502 |
}
|
503 |
$course = get_post( $course_id );
|
504 |
+
$item_ids = ! empty( $course->curriculum_items ) ? $course->curriculum_items : array();
|
505 |
$item_ids = maybe_unserialize( $item_ids );
|
506 |
if ( $item_ids ) {
|
507 |
$in = implode( ', ', $item_ids );
|
539 |
$item_statuses = LP_Cache::get_item_statuses( false, array() );
|
540 |
$quiz_grades = LP_Cache::get_quiz_grade( false, array() );
|
541 |
foreach ( $item_ids as $id ) {
|
542 |
+
if ( ! array_key_exists( $id, $item_statuses ) || $force ) {
|
543 |
+
$item_statuses[ $user_id . '-' . $course_id . '-' . $id ] = '';
|
544 |
}
|
545 |
|
546 |
+
if ( ! array_key_exists( $id, $item_statuses ) || $force ) {
|
547 |
+
$quiz_grades[ $user_id . '-' . $course_id . '-' . $id ] = '';
|
548 |
}
|
549 |
}
|
550 |
if ( $items ) {
|
551 |
foreach ( $items as $item ) {
|
552 |
+
$item_statuses[ $user_id . '-' . $course_id . '-' . $item->item_id ] = learn_press_validate_item_status( $item );
|
553 |
+
if ( ! empty( $item->grade ) ) {
|
554 |
+
$quiz_grades[ $user_id . '-' . $course_id . '-' . $item->item_id ] = $item->grade;
|
555 |
+
} else {
|
556 |
+
$quiz_grades[ $user_id . '-' . $course_id . '-' . $item->item_id ] = '';
|
557 |
}
|
558 |
}
|
559 |
}
|
565 |
}
|
566 |
|
567 |
function learn_press_validate_item_status( $item ) {
|
568 |
+
if ( property_exists( $item, 'end_time' ) ) {
|
569 |
+
|
570 |
+
$end_time = $item->end_time !== '0000-00-00 00:00:00';
|
571 |
+
$status = $end_time > 0 ? ( $item->item_type != LP_COURSE_CPT ? 'completed' : 'finished' ) : $item->status;
|
572 |
+
if ( $item->item_type == LP_QUIZ_CPT && $item->status == 'completed' && is_null( $item->grade ) ) {
|
573 |
+
$user = learn_press_get_user( $item->user_id );
|
574 |
+
$grade = $user->get_quiz_graduation( $item->item_id, $item->ref_id );
|
575 |
+
LP_Cache::set_quiz_grade( sprintf( '%d-%d-%d', $item->user_id, $item->ref_id, $item->item_id ), $grade );
|
576 |
+
learn_press_update_user_item_meta( $item->user_item_id, '_quiz_grade', $grade );
|
577 |
+
}
|
578 |
+
if ( $end_time && ! in_array( $item->status, array( 'completed', 'finished' ) ) ) {
|
579 |
+
global $wpdb;
|
580 |
+
$data = (array) $item;
|
581 |
+
$data['status'] = $item->item_type != LP_COURSE_CPT ? 'completed' : 'finished';
|
582 |
+
learn_press_update_user_item_field(
|
583 |
+
$data,
|
584 |
+
array(
|
585 |
+
'user_item_id' => $item->user_item_id
|
586 |
+
)
|
587 |
+
);
|
588 |
+
}
|
589 |
+
} else {
|
590 |
+
$status = $item->status;
|
591 |
}
|
592 |
|
593 |
return $status;
|
601 |
*/
|
602 |
function _learn_press_get_user_course_orders( $user_id = 0, $force = false ) {
|
603 |
global $wpdb;
|
604 |
+
if ( ! $user_id ) {
|
605 |
$user_id = learn_press_get_current_user_id();
|
606 |
}
|
607 |
$data = LP_Cache::get_user_course_order( false, array() );
|
608 |
+
if ( ! array_key_exists( $user_id, $data ) || $force ) {
|
609 |
$results = array();
|
610 |
$query = $wpdb->prepare( "
|
611 |
SELECT o.*, oim.meta_value as course_id
|
617 |
", '_course_id', '_user_id', $user_id, 'trash', LP_ORDER_CPT );
|
618 |
if ( $rows = $wpdb->get_results( $query ) ) {
|
619 |
foreach ( $rows as $row ) {
|
620 |
+
if ( empty( $results[ $row->course_id ] ) ) {
|
621 |
+
$results[ $row->course_id ] = array(
|
622 |
$row->ID => $row
|
623 |
);
|
624 |
} else {
|
625 |
+
$results[ $row->course_id ] = array_reverse( $results[ $row->course_id ], true );
|
626 |
+
$results[ $row->course_id ][ $row->ID ] = $row;
|
627 |
+
$results[ $row->course_id ] = array_reverse( $results[ $row->course_id ], true );
|
628 |
}
|
629 |
}
|
630 |
}
|
631 |
+
$data[ $user_id ] = $results;
|
632 |
LP_Cache::set_user_course_order( $data );
|
633 |
} else {
|
634 |
+
$results = $data[ $user_id ];
|
635 |
}
|
636 |
|
637 |
return $results;
|
639 |
|
640 |
function _learn_press_get_user_profile_orders( $user_id = 0, $paged = 1, $limit = 10 ) {
|
641 |
global $wpdb;
|
642 |
+
if ( ! $user_id ) {
|
643 |
$user_id = learn_press_get_current_user_id();
|
644 |
}
|
645 |
if ( empty( $paged ) ) {
|
650 |
}
|
651 |
$data = LP_Cache::get_user_profile_orders( false, array() );
|
652 |
|
653 |
+
if ( ! array_key_exists( $user_id, $data ) ) {
|
654 |
$limit = absint( $limit );
|
655 |
$offset = absint( $paged - 1 ) * $limit;
|
656 |
$results = array();
|
677 |
$rows = array_slice( $rows, $offset, $limit );
|
678 |
$order_ids = array();
|
679 |
foreach ( $rows as $row ) {
|
680 |
+
$results['rows'][ $row->ID ] = $row;
|
681 |
wp_cache_add( $row->ID, $row, 'posts' );
|
682 |
$order_ids[] = $row->ID;
|
683 |
}
|
684 |
update_meta_cache( 'post', $order_ids );
|
685 |
}
|
686 |
|
687 |
+
$data[ $user_id ] = $results;
|
688 |
LP_Cache::set_user_profile_orders( $data );
|
689 |
} else {
|
690 |
+
$results = $data[ $user_id ];
|
691 |
}
|
692 |
|
693 |
|
716 |
$question_id = 0;
|
717 |
foreach ( $answers as $row ) {
|
718 |
if ( $row->ID != $question_id ) {
|
719 |
+
$question_id = $row->ID;
|
720 |
+
$questions[ $question_id ] = $row;
|
721 |
+
$questions[ $question_id ]->answers = array();
|
722 |
+
$questions[ $question_id ]->type = $row->type;
|
723 |
}
|
724 |
+
if ( ! $answer_data = maybe_unserialize( $row->answer_data ) ) {
|
725 |
continue;
|
726 |
}
|
727 |
+
$answer_data['id'] = $row->question_answer_id;
|
728 |
+
$answer_data['order'] = $row->answer_order;
|
729 |
+
$answer_data['type'] = $row->type;
|
730 |
+
$questions[ $question_id ]->answers[ $row->question_answer_id ] = $answer_data;
|
731 |
}
|
732 |
foreach ( $questions as $question ) {
|
733 |
$question->answers = maybe_serialize( $question->answers );
|
inc/lp-template-functions.php
CHANGED
@@ -1526,16 +1526,20 @@ function learn_press_is_content_item_only() {
|
|
1526 |
* Load course item content only
|
1527 |
*/
|
1528 |
function learn_press_load_content_item_only( $name ) {
|
|
|
1529 |
if ( learn_press_is_content_item_only() ) {
|
1530 |
if ( LP()->global['course-item'] ) {
|
1531 |
-
|
1532 |
-
learn_press_get_template( 'single-course/content-item-only.php' );
|
1533 |
die();
|
1534 |
}
|
1535 |
}
|
1536 |
-
}
|
1537 |
|
1538 |
-
|
|
|
|
|
|
|
|
|
|
|
1539 |
|
1540 |
|
1541 |
// Fix issue with course content is duplicated if theme use the_content instead of $course->get_description()
|
@@ -1584,8 +1588,8 @@ function learn_press_check_access_lesson() {
|
|
1584 |
}
|
1585 |
}
|
1586 |
|
1587 |
-
function
|
1588 |
learn_press_get_template( 'global/js-template.php' );
|
1589 |
}
|
1590 |
|
1591 |
-
add_action( '
|
1526 |
* Load course item content only
|
1527 |
*/
|
1528 |
function learn_press_load_content_item_only( $name ) {
|
1529 |
+
|
1530 |
if ( learn_press_is_content_item_only() ) {
|
1531 |
if ( LP()->global['course-item'] ) {
|
1532 |
+
learn_press_get_template( 'single-course/content-item-only.php', array('wp_header'=>$name) );
|
|
|
1533 |
die();
|
1534 |
}
|
1535 |
}
|
|
|
1536 |
|
1537 |
+
return $name;
|
1538 |
+
}
|
1539 |
+
if ( learn_press_is_content_item_only() ) {
|
1540 |
+
//add_action( 'get_header', 'learn_press_load_content_item_only', 999999 );
|
1541 |
+
add_action( 'template_include', 'learn_press_load_content_item_only', 999999 );
|
1542 |
+
}
|
1543 |
|
1544 |
|
1545 |
// Fix issue with course content is duplicated if theme use the_content instead of $course->get_description()
|
1588 |
}
|
1589 |
}
|
1590 |
|
1591 |
+
function learn_press_global_js_templates() {
|
1592 |
learn_press_get_template( 'global/js-template.php' );
|
1593 |
}
|
1594 |
|
1595 |
+
add_action( 'wp_print_scripts', 'learn_press_global_js_templates' );
|
inc/lp-template-hooks.php
CHANGED
@@ -49,7 +49,7 @@ add_action( 'learn_press_content_landing_summary', 'learn_press_single_course_co
|
|
49 |
add_action( 'learn_press_content_landing_summary', 'learn_press_single_course_content_item', 40 );
|
50 |
add_action( 'learn_press_content_landing_summary', 'learn_press_course_progress', 60 );
|
51 |
add_action( 'learn_press_content_landing_summary', 'learn_press_course_tabs', 50 );
|
52 |
-
add_action( 'learn_press_content_landing_summary', 'learn_press_course_curriculum_popup', 65 );
|
53 |
add_action( 'learn_press_content_landing_summary', 'learn_press_course_buttons', 70 );
|
54 |
//add_action( 'learn_press_content_landing_summary', 'learn_press_course_students_list', 75 );
|
55 |
|
@@ -67,7 +67,7 @@ add_action( 'learn_press_content_learning_summary', 'learn_press_single_course_c
|
|
67 |
add_action( 'learn_press_content_learning_summary', 'learn_press_course_progress', 45 );
|
68 |
add_action( 'learn_press_content_learning_summary', 'learn_press_course_tabs', 50 );
|
69 |
add_action( 'learn_press_content_learning_summary', 'learn_press_course_remaining_time', 55 );
|
70 |
-
add_action( 'learn_press_content_learning_summary', 'learn_press_course_curriculum_popup', 60 );
|
71 |
add_action( 'learn_press_content_learning_summary', 'learn_press_course_buttons', 65 );
|
72 |
|
73 |
//add_action( 'learn_press_content_learning_summary', 'learn_press_course_students_list', 75 );
|
49 |
add_action( 'learn_press_content_landing_summary', 'learn_press_single_course_content_item', 40 );
|
50 |
add_action( 'learn_press_content_landing_summary', 'learn_press_course_progress', 60 );
|
51 |
add_action( 'learn_press_content_landing_summary', 'learn_press_course_tabs', 50 );
|
52 |
+
//add_action( 'learn_press_content_landing_summary', 'learn_press_course_curriculum_popup', 65 );
|
53 |
add_action( 'learn_press_content_landing_summary', 'learn_press_course_buttons', 70 );
|
54 |
//add_action( 'learn_press_content_landing_summary', 'learn_press_course_students_list', 75 );
|
55 |
|
67 |
add_action( 'learn_press_content_learning_summary', 'learn_press_course_progress', 45 );
|
68 |
add_action( 'learn_press_content_learning_summary', 'learn_press_course_tabs', 50 );
|
69 |
add_action( 'learn_press_content_learning_summary', 'learn_press_course_remaining_time', 55 );
|
70 |
+
//add_action( 'learn_press_content_learning_summary', 'learn_press_course_curriculum_popup', 60 );
|
71 |
add_action( 'learn_press_content_learning_summary', 'learn_press_course_buttons', 65 );
|
72 |
|
73 |
//add_action( 'learn_press_content_learning_summary', 'learn_press_course_students_list', 75 );
|
inc/user/abstract-lp-user.php
CHANGED
@@ -575,8 +575,8 @@ class LP_Abstract_User {
|
|
575 |
/**
|
576 |
* Get quiz status for the user
|
577 |
*
|
578 |
-
* @param int
|
579 |
-
* @param int
|
580 |
* @param boolean $force
|
581 |
*
|
582 |
* @return mixed
|
@@ -630,8 +630,8 @@ class LP_Abstract_User {
|
|
630 |
/**
|
631 |
* Get quiz status for the user
|
632 |
*
|
633 |
-
* @param int
|
634 |
-
* @param int
|
635 |
* @param boolean $force
|
636 |
*
|
637 |
* @return mixed
|
@@ -737,9 +737,9 @@ class LP_Abstract_User {
|
|
737 |
* Checks if has status of a quiz for user
|
738 |
*
|
739 |
* @param string|array $statuses
|
740 |
-
* @param int
|
741 |
-
* @param int
|
742 |
-
* @param boolean
|
743 |
*
|
744 |
* @return bool
|
745 |
*/
|
@@ -799,9 +799,9 @@ class LP_Abstract_User {
|
|
799 |
/**
|
800 |
* Get history of a quiz for an user
|
801 |
*
|
802 |
-
* @param int
|
803 |
-
* @param int
|
804 |
-
* @param int
|
805 |
* @param bool $force
|
806 |
*
|
807 |
* @return mixed|null|void
|
@@ -1158,8 +1158,9 @@ class LP_Abstract_User {
|
|
1158 |
* @return bool
|
1159 |
*/
|
1160 |
public function can_purchase_course( $course_id ) {
|
1161 |
-
$course
|
1162 |
-
$
|
|
|
1163 |
|
1164 |
return apply_filters( 'learn_press_user_can_purchase_course', $purchasable, $this, $course_id );
|
1165 |
}
|
@@ -1175,6 +1176,25 @@ class LP_Abstract_User {
|
|
1175 |
# condition
|
1176 |
$course = LP_Course::get_course( $course_id );
|
1177 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1178 |
// check if course is purchasable
|
1179 |
$enrollable = false;
|
1180 |
if ( ! $course ) {
|
@@ -1185,7 +1205,7 @@ class LP_Abstract_User {
|
|
1185 |
$enrollable = false;
|
1186 |
} elseif ( ! $course->is_purchasable() ) {
|
1187 |
$enrollable = 'enough';
|
1188 |
-
} elseif ( $course->is_free() && $
|
1189 |
$enrollable = true;
|
1190 |
} elseif ( $course->is_purchasable() && ( $this->has_purchased_course( $course_id ) ) ) {
|
1191 |
$order = LP_Order::instance( $this->get_course_order( $course_id ), true );
|
@@ -1196,10 +1216,14 @@ class LP_Abstract_User {
|
|
1196 |
return $enrollable;
|
1197 |
}
|
1198 |
|
|
|
|
|
|
|
|
|
|
|
1199 |
public function can_view_item( $item_id, $course_id = 0 ) {
|
1200 |
$return = false;
|
1201 |
$course_id = $this->_get_course_id( $course_id );
|
1202 |
-
|
1203 |
switch ( get_post_type( $item_id ) ) {
|
1204 |
case LP_QUIZ_CPT:
|
1205 |
$return = $this->can( 'view-quiz', $item_id, $course_id );
|
@@ -1237,12 +1261,17 @@ class LP_Abstract_User {
|
|
1237 |
*/
|
1238 |
public function can_view_lesson( $lesson_id, $course_id = 0 ) {
|
1239 |
$view = false;
|
|
|
1240 |
// else, find the course of this lesson
|
1241 |
$course_id = $this->_get_course_id( $course_id );
|
1242 |
|
1243 |
-
$lesson
|
1244 |
-
|
1245 |
-
|
|
|
|
|
|
|
|
|
1246 |
// or user has enrolled course
|
1247 |
$view = 'enrolled';
|
1248 |
} elseif ( $lesson->is( 'previewable' ) || $this->is_admin() || ( $this->is_instructor() && $course->post->post_author == $this->user->ID ) ) {
|
@@ -1302,7 +1331,7 @@ class LP_Abstract_User {
|
|
1302 |
* - INT (number of remain) if user CAN retake quiz
|
1303 |
*
|
1304 |
* @param $quiz_id
|
1305 |
-
* @param int
|
1306 |
* @param boolean $force
|
1307 |
*
|
1308 |
* @return mixed|null|void
|
@@ -1497,20 +1526,19 @@ class LP_Abstract_User {
|
|
1497 |
/**
|
1498 |
* Return true if user has already enrolled course
|
1499 |
*
|
1500 |
-
* @param int
|
1501 |
* @param bool $force
|
1502 |
*
|
1503 |
* @return bool
|
1504 |
*/
|
1505 |
-
public function has_enrolled_course( $course_id, $force = false ) {
|
1506 |
_learn_press_parse_user_item_statuses( $this->id, $course_id, $force );
|
1507 |
-
|
|
|
1508 |
$item_statuses = LP_Cache::get_item_statuses( false, array() );
|
1509 |
-
$key = sprintf( '%d-%d-%d', $this->id, $course_id, $
|
1510 |
-
$enrolled = false;
|
1511 |
-
|
1512 |
if ( ! array_key_exists( $key, $item_statuses ) ) {
|
1513 |
-
$enrolled = $item_statuses[ $key ] = $this->_has_enrolled_course( $course_id );
|
1514 |
} elseif ( ! empty( $item_statuses[ $key ] ) && $item_statuses[ $key ] != '' ) {
|
1515 |
$enrolled = true;
|
1516 |
}
|
@@ -1519,18 +1547,31 @@ class LP_Abstract_User {
|
|
1519 |
return apply_filters( 'learn_press_user_has_enrolled_course', $enrolled, $this, $course_id );
|
1520 |
}
|
1521 |
|
1522 |
-
private function _has_enrolled_course( $course_id ) {
|
1523 |
global $wpdb;
|
1524 |
-
$
|
1525 |
-
SELECT status
|
1526 |
FROM {$wpdb->prefix}learnpress_user_items
|
1527 |
WHERE user_id = %d
|
1528 |
-
|
1529 |
-
|
1530 |
-
|
1531 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1532 |
|
1533 |
-
return $
|
1534 |
}
|
1535 |
|
1536 |
/**
|
@@ -1549,14 +1590,16 @@ class LP_Abstract_User {
|
|
1549 |
$finished = ( $item_statuses[ $key ] == 'finished' ) ? 'yes' : 'no';
|
1550 |
} else {
|
1551 |
global $wpdb;
|
1552 |
-
$query = $wpdb->prepare( "SELECT status FROM {$wpdb->prefix}learnpress_user_items where user_id=%d and item_id=%d", $this->id, $course_id );
|
1553 |
-
$
|
1554 |
-
$item_statuses[ $key ]
|
1555 |
-
|
|
|
1556 |
}
|
1557 |
|
1558 |
return apply_filters( 'learn_press_user_has_finished_course', $finished == 'yes', $this, $course_id );
|
1559 |
|
|
|
1560 |
//static $courses = array();
|
1561 |
$finished_courses = LP_Cache::get_finished_courses( false, array() );
|
1562 |
if ( empty( $finished_courses[ $course_id ] ) || $force ) {
|
@@ -1587,7 +1630,7 @@ class LP_Abstract_User {
|
|
1587 |
$results = 0;
|
1588 |
}
|
1589 |
|
1590 |
-
return apply_filters( 'learn_press_user_has_passed_course', $results
|
1591 |
}
|
1592 |
|
1593 |
/**
|
@@ -1630,8 +1673,8 @@ class LP_Abstract_User {
|
|
1630 |
}
|
1631 |
|
1632 |
/**
|
1633 |
-
* @param int
|
1634 |
-
* @param int
|
1635 |
* @param bool $force
|
1636 |
*
|
1637 |
* @return mixed
|
@@ -1664,8 +1707,8 @@ class LP_Abstract_User {
|
|
1664 |
/**
|
1665 |
* Count number of time user has retaken a quiz
|
1666 |
*
|
1667 |
-
* @param int
|
1668 |
-
* @param int
|
1669 |
* @param bool $force
|
1670 |
*
|
1671 |
* @return int
|
@@ -1719,7 +1762,7 @@ class LP_Abstract_User {
|
|
1719 |
/**
|
1720 |
* Count number of time user has retaken a quiz
|
1721 |
*
|
1722 |
-
* @param int
|
1723 |
* @param bool $force
|
1724 |
*
|
1725 |
* @return int
|
@@ -1999,17 +2042,22 @@ class LP_Abstract_User {
|
|
1999 |
/**
|
2000 |
* @param $course_id
|
2001 |
*
|
2002 |
-
* @return mixed
|
2003 |
*/
|
2004 |
public function get_course_status( $course_id ) {
|
2005 |
-
|
|
|
|
|
|
|
|
|
|
|
2006 |
}
|
2007 |
|
2008 |
/**
|
2009 |
* Get current results of a quiz
|
2010 |
*
|
2011 |
-
* @param int
|
2012 |
-
* @param int
|
2013 |
* @param bool $force
|
2014 |
*
|
2015 |
* @return mixed
|
@@ -2123,8 +2171,9 @@ class LP_Abstract_User {
|
|
2123 |
* @return bool
|
2124 |
*/
|
2125 |
public function has_purchased_course( $course_id ) {
|
|
|
2126 |
|
2127 |
-
return apply_filters( 'learn_press_user_has_purchased_course', $
|
2128 |
}
|
2129 |
|
2130 |
/**
|
@@ -2150,7 +2199,7 @@ class LP_Abstract_User {
|
|
2150 |
|
2151 |
/**
|
2152 |
* @param $item
|
2153 |
-
* @param int
|
2154 |
* @param bool $force
|
2155 |
*
|
2156 |
* @return mixed|void
|
@@ -2437,7 +2486,7 @@ class LP_Abstract_User {
|
|
2437 |
ksort( $args );
|
2438 |
$key = md5( serialize( $args ) );
|
2439 |
if ( empty( $courses[ $key ] ) ) {
|
2440 |
-
$where = $args['status'] ? $wpdb->prepare( "AND
|
2441 |
$limit = "\n";
|
2442 |
if ( $args['limit'] > 0 ) {
|
2443 |
if ( ! $args['paged'] ) {
|
@@ -2446,29 +2495,29 @@ class LP_Abstract_User {
|
|
2446 |
$start = ( $args['paged'] - 1 ) * $args['limit'];
|
2447 |
$limit .= "LIMIT " . $start . ',' . $args['limit'];
|
2448 |
}
|
2449 |
-
$order
|
2450 |
-
$query
|
2451 |
-
|
2452 |
-
|
2453 |
-
|
2454 |
-
|
2455 |
-
|
2456 |
-
|
2457 |
-
|
2458 |
-
|
2459 |
-
|
2460 |
-
|
2461 |
-
|
2462 |
-
|
2463 |
-
|
2464 |
-
|
2465 |
-
|
2466 |
-
|
2467 |
-
|
2468 |
-
|
2469 |
-
|
2470 |
-
|
2471 |
-
|
2472 |
$data = array(
|
2473 |
'rows' => $wpdb->get_results( $query, OBJECT_K )
|
2474 |
);
|
@@ -2804,7 +2853,7 @@ class LP_Abstract_User {
|
|
2804 |
* Get user's quiz's graduation
|
2805 |
*
|
2806 |
* @param $quiz_id
|
2807 |
-
* @param int
|
2808 |
* @param bool $check_completed
|
2809 |
*
|
2810 |
* @return mixed|void
|
@@ -2878,7 +2927,7 @@ class LP_Abstract_User {
|
|
2878 |
|
2879 |
/**
|
2880 |
* @param string $type
|
2881 |
-
* @param int
|
2882 |
*
|
2883 |
* @return false|string
|
2884 |
*/
|
575 |
/**
|
576 |
* Get quiz status for the user
|
577 |
*
|
578 |
+
* @param int $quiz_id
|
579 |
+
* @param int $course_id
|
580 |
* @param boolean $force
|
581 |
*
|
582 |
* @return mixed
|
630 |
/**
|
631 |
* Get quiz status for the user
|
632 |
*
|
633 |
+
* @param int $lesson_id
|
634 |
+
* @param int $course_id
|
635 |
* @param boolean $force
|
636 |
*
|
637 |
* @return mixed
|
737 |
* Checks if has status of a quiz for user
|
738 |
*
|
739 |
* @param string|array $statuses
|
740 |
+
* @param int $quiz_id
|
741 |
+
* @param int $course_id
|
742 |
+
* @param boolean $force
|
743 |
*
|
744 |
* @return bool
|
745 |
*/
|
799 |
/**
|
800 |
* Get history of a quiz for an user
|
801 |
*
|
802 |
+
* @param int $quiz_id
|
803 |
+
* @param int $course_id
|
804 |
+
* @param int $history_id
|
805 |
* @param bool $force
|
806 |
*
|
807 |
* @return mixed|null|void
|
1158 |
* @return bool
|
1159 |
*/
|
1160 |
public function can_purchase_course( $course_id ) {
|
1161 |
+
$course = learn_press_get_course( $course_id );
|
1162 |
+
$course_status = $this->get_course_status( $course_id );
|
1163 |
+
$purchasable = $course->is_free() && ! $course->is_reached_limit() && !is_user_logged_in() || ! $course->is_free() && ! $course->is_reached_limit() && ( ! $this->has_ordered_course( $course_id ) || ( $this->has_ordered_course( $course_id ) && $course_status == 'finished' ) );
|
1164 |
|
1165 |
return apply_filters( 'learn_press_user_can_purchase_course', $purchasable, $this, $course_id );
|
1166 |
}
|
1176 |
# condition
|
1177 |
$course = LP_Course::get_course( $course_id );
|
1178 |
|
1179 |
+
// Course is published and not limited
|
1180 |
+
$can = $course->is_published() && ! $course->is_reached_limit();
|
1181 |
+
|
1182 |
+
if ( $can ) {
|
1183 |
+
$course_status = $this->get_course_status( $course_id );
|
1184 |
+
// If user has not bought course
|
1185 |
+
if ( ( ! $course_status ) ) {
|
1186 |
+
$can = $course->is_free() && $course->is_require_enrollment() && is_user_logged_in();
|
1187 |
+
} else {
|
1188 |
+
$can = $course_status === 'purchased';
|
1189 |
+
}
|
1190 |
+
}
|
1191 |
+
|
1192 |
+
if ( ! $can && $course->is_reached_limit() ) {
|
1193 |
+
//$can = 'enough';
|
1194 |
+
}
|
1195 |
+
|
1196 |
+
return apply_filters( 'learn_press_user_can_enroll_course', $can, $this, $course_id );
|
1197 |
+
|
1198 |
// check if course is purchasable
|
1199 |
$enrollable = false;
|
1200 |
if ( ! $course ) {
|
1205 |
$enrollable = false;
|
1206 |
} elseif ( ! $course->is_purchasable() ) {
|
1207 |
$enrollable = 'enough';
|
1208 |
+
} elseif ( $course->is_free() && $course->is_exists() ) {
|
1209 |
$enrollable = true;
|
1210 |
} elseif ( $course->is_purchasable() && ( $this->has_purchased_course( $course_id ) ) ) {
|
1211 |
$order = LP_Order::instance( $this->get_course_order( $course_id ), true );
|
1216 |
return $enrollable;
|
1217 |
}
|
1218 |
|
1219 |
+
|
1220 |
+
public function current_course_status() {
|
1221 |
+
|
1222 |
+
}
|
1223 |
+
|
1224 |
public function can_view_item( $item_id, $course_id = 0 ) {
|
1225 |
$return = false;
|
1226 |
$course_id = $this->_get_course_id( $course_id );
|
|
|
1227 |
switch ( get_post_type( $item_id ) ) {
|
1228 |
case LP_QUIZ_CPT:
|
1229 |
$return = $this->can( 'view-quiz', $item_id, $course_id );
|
1261 |
*/
|
1262 |
public function can_view_lesson( $lesson_id, $course_id = 0 ) {
|
1263 |
$view = false;
|
1264 |
+
|
1265 |
// else, find the course of this lesson
|
1266 |
$course_id = $this->_get_course_id( $course_id );
|
1267 |
|
1268 |
+
$lesson = LP_Lesson::get_lesson( $lesson_id );
|
1269 |
+
$course = LP_Course::get_course( $course_id );
|
1270 |
+
$order_id = $this->get_course_order( $course_id );
|
1271 |
+
$lp_order = learn_press_get_order( $order_id );
|
1272 |
+
|
1273 |
+
if ( is_object( $course )/* && $order_id && $lp_order->post_status == 'lp-completed'*/ ) {
|
1274 |
+
if ( $this->has( 'enrolled-course', $course_id, true ) || $this->has( 'finished-course', $course_id, true ) ) {
|
1275 |
// or user has enrolled course
|
1276 |
$view = 'enrolled';
|
1277 |
} elseif ( $lesson->is( 'previewable' ) || $this->is_admin() || ( $this->is_instructor() && $course->post->post_author == $this->user->ID ) ) {
|
1331 |
* - INT (number of remain) if user CAN retake quiz
|
1332 |
*
|
1333 |
* @param $quiz_id
|
1334 |
+
* @param int $course_id
|
1335 |
* @param boolean $force
|
1336 |
*
|
1337 |
* @return mixed|null|void
|
1526 |
/**
|
1527 |
* Return true if user has already enrolled course
|
1528 |
*
|
1529 |
+
* @param int $course_id
|
1530 |
* @param bool $force
|
1531 |
*
|
1532 |
* @return bool
|
1533 |
*/
|
1534 |
+
public function has_enrolled_course( $course_id, $force = false, $order_id = 0 ) {
|
1535 |
_learn_press_parse_user_item_statuses( $this->id, $course_id, $force );
|
1536 |
+
$enrolled = false;
|
1537 |
+
if ( $this->has_purchased_course( $course_id ) ) {
|
1538 |
$item_statuses = LP_Cache::get_item_statuses( false, array() );
|
1539 |
+
$key = sprintf( '%d-%d-%d', $this->id, $course_id, $order_id );
|
|
|
|
|
1540 |
if ( ! array_key_exists( $key, $item_statuses ) ) {
|
1541 |
+
$enrolled = $item_statuses[ $key ] = $this->_has_enrolled_course( $course_id, $order_id );
|
1542 |
} elseif ( ! empty( $item_statuses[ $key ] ) && $item_statuses[ $key ] != '' ) {
|
1543 |
$enrolled = true;
|
1544 |
}
|
1547 |
return apply_filters( 'learn_press_user_has_enrolled_course', $enrolled, $this, $course_id );
|
1548 |
}
|
1549 |
|
1550 |
+
private function _has_enrolled_course( $course_id, $order_id = null ) {
|
1551 |
global $wpdb;
|
1552 |
+
$sql = "SELECT status
|
|
|
1553 |
FROM {$wpdb->prefix}learnpress_user_items
|
1554 |
WHERE user_id = %d
|
1555 |
+
AND item_id = %d
|
1556 |
+
AND status <> %s
|
1557 |
+
";
|
1558 |
+
$vars = array( $this->id, $course_id, '' );
|
1559 |
+
if ( $order_id ) {
|
1560 |
+
$sql .= "
|
1561 |
+
AND ref_id = %d
|
1562 |
+
AND ref_type = 'lp_order'
|
1563 |
+
";
|
1564 |
+
$vars[] = $order_id;
|
1565 |
+
}
|
1566 |
+
|
1567 |
+
$sql .= "
|
1568 |
+
LIMIT 0, 1
|
1569 |
+
";
|
1570 |
+
|
1571 |
+
$query = $wpdb->prepare( $sql, $vars );
|
1572 |
+
$res = $wpdb->get_var( $query );
|
1573 |
|
1574 |
+
return $res ? true : false;
|
1575 |
}
|
1576 |
|
1577 |
/**
|
1590 |
$finished = ( $item_statuses[ $key ] == 'finished' ) ? 'yes' : 'no';
|
1591 |
} else {
|
1592 |
global $wpdb;
|
1593 |
+
$query = $wpdb->prepare( "SELECT status FROM {$wpdb->prefix}learnpress_user_items where user_id=%d and item_id=%d AND item_type = %s ORDER BY user_item_id DESC", $this->id, $course_id, LP_COURSE_CPT );
|
1594 |
+
$item_statuses[ $key ] = $wpdb->get_var( $query );
|
1595 |
+
$finished = $item_statuses[ $key ] == 'finished' ? 'yes' : 'no';
|
1596 |
+
|
1597 |
+
LP_Cache::set_item_statuses( $item_statuses );
|
1598 |
}
|
1599 |
|
1600 |
return apply_filters( 'learn_press_user_has_finished_course', $finished == 'yes', $this, $course_id );
|
1601 |
|
1602 |
+
|
1603 |
//static $courses = array();
|
1604 |
$finished_courses = LP_Cache::get_finished_courses( false, array() );
|
1605 |
if ( empty( $finished_courses[ $course_id ] ) || $force ) {
|
1630 |
$results = 0;
|
1631 |
}
|
1632 |
|
1633 |
+
return apply_filters( 'learn_press_user_has_passed_course', $results >= $course->passing_condition ? $results : false, $course_id, $this );
|
1634 |
}
|
1635 |
|
1636 |
/**
|
1673 |
}
|
1674 |
|
1675 |
/**
|
1676 |
+
* @param int $quiz_id
|
1677 |
+
* @param int $course_id
|
1678 |
* @param bool $force
|
1679 |
*
|
1680 |
* @return mixed
|
1707 |
/**
|
1708 |
* Count number of time user has retaken a quiz
|
1709 |
*
|
1710 |
+
* @param int $quiz_id
|
1711 |
+
* @param int $course_id
|
1712 |
* @param bool $force
|
1713 |
*
|
1714 |
* @return int
|
1762 |
/**
|
1763 |
* Count number of time user has retaken a quiz
|
1764 |
*
|
1765 |
+
* @param int $course_id
|
1766 |
* @param bool $force
|
1767 |
*
|
1768 |
* @return int
|
2042 |
/**
|
2043 |
* @param $course_id
|
2044 |
*
|
2045 |
+
* @return mixed
|
2046 |
*/
|
2047 |
public function get_course_status( $course_id ) {
|
2048 |
+
$status = $this->get_course_info( $course_id, 'status', true );
|
2049 |
+
if ( ! $status && $this->has_purchased_course( $course_id ) ) {
|
2050 |
+
$status = 'purchased';
|
2051 |
+
}
|
2052 |
+
|
2053 |
+
return apply_filters( 'learn_press_user_course_status', $status, $this->id );
|
2054 |
}
|
2055 |
|
2056 |
/**
|
2057 |
* Get current results of a quiz
|
2058 |
*
|
2059 |
+
* @param int $quiz_id
|
2060 |
+
* @param int $course_id
|
2061 |
* @param bool $force
|
2062 |
*
|
2063 |
* @return mixed
|
2171 |
* @return bool
|
2172 |
*/
|
2173 |
public function has_purchased_course( $course_id ) {
|
2174 |
+
$purchased_course = $this->get_order_status( $course_id ) == 'lp-completed';
|
2175 |
|
2176 |
+
return apply_filters( 'learn_press_user_has_purchased_course', $purchased_course, $course_id, $this->id );
|
2177 |
}
|
2178 |
|
2179 |
/**
|
2199 |
|
2200 |
/**
|
2201 |
* @param $item
|
2202 |
+
* @param int $course_id
|
2203 |
* @param bool $force
|
2204 |
*
|
2205 |
* @return mixed|void
|
2486 |
ksort( $args );
|
2487 |
$key = md5( serialize( $args ) );
|
2488 |
if ( empty( $courses[ $key ] ) ) {
|
2489 |
+
$where = $args['status'] ? $wpdb->prepare( "AND a.course_status = %s", $args['status'] ) : '';
|
2490 |
$limit = "\n";
|
2491 |
if ( $args['limit'] > 0 ) {
|
2492 |
if ( ! $args['paged'] ) {
|
2495 |
$start = ( $args['paged'] - 1 ) * $args['limit'];
|
2496 |
$limit .= "LIMIT " . $start . ',' . $args['limit'];
|
2497 |
}
|
2498 |
+
$order = "\nORDER BY " . ( $args['orderby'] ? $args['orderby'] : 'post_title' ) . ' ' . $args['order'];
|
2499 |
+
$query = $wpdb->prepare( "
|
2500 |
+
SELECT SQL_CALC_FOUND_ROWS * FROM(
|
2501 |
+
SELECT
|
2502 |
+
c.*,
|
2503 |
+
`uc`.`status` AS `course_status`
|
2504 |
+
FROM
|
2505 |
+
{$wpdb->prefix}posts c
|
2506 |
+
INNER JOIN {$wpdb->prefix}learnpress_order_itemmeta AS oim ON meta_key = '_course_id'
|
2507 |
+
AND c.post_type = %s
|
2508 |
+
AND c.ID = oim.meta_value
|
2509 |
+
INNER JOIN {$wpdb->prefix}learnpress_order_items AS oi ON oi.order_item_id = oim.learnpress_order_item_id
|
2510 |
+
INNER JOIN {$wpdb->prefix}posts o ON oi.order_id = o.ID AND o.post_status = 'lp-completed'
|
2511 |
+
INNER JOIN {$wpdb->prefix}postmeta om ON o.ID = om.post_id
|
2512 |
+
AND om.meta_key = '_user_id'
|
2513 |
+
LEFT JOIN {$wpdb->prefix}learnpress_user_items uc ON uc.item_id=c.ID
|
2514 |
+
AND uc.user_id=om.meta_value AND uc.item_type=%s
|
2515 |
+
WHERE om.meta_value=%d
|
2516 |
+
AND c.post_status = 'publish'
|
2517 |
+
|
2518 |
+
) AS a WHERE 1=1
|
2519 |
+
", LP_COURSE_CPT, LP_COURSE_CPT, $args ['user_id'] );
|
2520 |
+
$query .= $where . $order . $limit;
|
2521 |
$data = array(
|
2522 |
'rows' => $wpdb->get_results( $query, OBJECT_K )
|
2523 |
);
|
2853 |
* Get user's quiz's graduation
|
2854 |
*
|
2855 |
* @param $quiz_id
|
2856 |
+
* @param int $course_id
|
2857 |
* @param bool $check_completed
|
2858 |
*
|
2859 |
* @return mixed|void
|
2927 |
|
2928 |
/**
|
2929 |
* @param string $type
|
2930 |
+
* @param int $size
|
2931 |
*
|
2932 |
* @return false|string
|
2933 |
*/
|
inc/user/class-lp-user-factory.php
CHANGED
@@ -99,7 +99,7 @@ class LP_User_Factory {
|
|
99 |
$id = time();
|
100 |
if ( ! is_user_logged_in() ) {
|
101 |
learn_press_setcookie( 'learn_press_user_guest_id', $id, time() + self::$_guest_transient );
|
102 |
-
set_transient( 'learn_press_user_guest_' . $id, $id, self::$_guest_transient );
|
103 |
}
|
104 |
}
|
105 |
|
99 |
$id = time();
|
100 |
if ( ! is_user_logged_in() ) {
|
101 |
learn_press_setcookie( 'learn_press_user_guest_id', $id, time() + self::$_guest_transient );
|
102 |
+
//set_transient( 'learn_press_user_guest_' . $id, $id, self::$_guest_transient );
|
103 |
}
|
104 |
}
|
105 |
|
inc/user/lp-user-functions.php
CHANGED
@@ -1008,16 +1008,18 @@ function _learn_press_before_purchase_course_handler( $course_id, $cart ) {
|
|
1008 |
} else {
|
1009 |
$user = learn_press_get_current_user();
|
1010 |
$redirect = false;
|
1011 |
-
if
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
|
|
|
|
1021 |
}
|
1022 |
}
|
1023 |
}
|
@@ -1056,7 +1058,7 @@ function _learn_press_redirect_logout_redirect() {
|
|
1056 |
$pos = strpos( $redirect_to, $admin_url );
|
1057 |
if ( $pos === false ) {
|
1058 |
$page_id = LP()->settings->get( 'logout_redirect_page_id' );
|
1059 |
-
$page_url = get_page_link( $page_id );
|
1060 |
if ( $page_id && $page_url ) {
|
1061 |
wp_redirect( $page_url );
|
1062 |
exit();
|
1008 |
} else {
|
1009 |
$user = learn_press_get_current_user();
|
1010 |
$redirect = false;
|
1011 |
+
if( !$user->can_purchase_course($course_id) ) {
|
1012 |
+
if ( $user->has_finished_course( $course_id ) ) {
|
1013 |
+
learn_press_add_message( __( 'You have already finished course', 'learnpress' ) );
|
1014 |
+
$redirect = true;
|
1015 |
+
} elseif ( $user->has_purchased_course( $course_id ) ) {
|
1016 |
+
learn_press_add_message( __( 'You have already enrolled in this course', 'learnpress' ) );
|
1017 |
+
$redirect = true;
|
1018 |
+
}
|
1019 |
+
if ( $redirect ) {
|
1020 |
+
wp_redirect( get_the_permalink( $course_id ) );
|
1021 |
+
exit();
|
1022 |
+
}
|
1023 |
}
|
1024 |
}
|
1025 |
}
|
1058 |
$pos = strpos( $redirect_to, $admin_url );
|
1059 |
if ( $pos === false ) {
|
1060 |
$page_id = LP()->settings->get( 'logout_redirect_page_id' );
|
1061 |
+
$page_url = $page_id ? get_page_link( $page_id ) : '';
|
1062 |
if ( $page_id && $page_url ) {
|
1063 |
wp_redirect( $page_url );
|
1064 |
exit();
|
inc/widgets/course-filters/course-filters.php
CHANGED
@@ -11,7 +11,7 @@ if ( !class_exists( 'LP_Widget_Course_Filters' ) ) {
|
|
11 |
'name' => __( 'Title', 'learnpress' ),
|
12 |
'id' => "{$prefix}title",
|
13 |
'type' => 'text',
|
14 |
-
'std' =>
|
15 |
),
|
16 |
'filter_by' => array(
|
17 |
'name' => __( 'Filter by', 'learnpress' ),
|
11 |
'name' => __( 'Title', 'learnpress' ),
|
12 |
'id' => "{$prefix}title",
|
13 |
'type' => 'text',
|
14 |
+
'std' => ''
|
15 |
),
|
16 |
'filter_by' => array(
|
17 |
'name' => __( 'Filter by', 'learnpress' ),
|
inc/widgets/featured-courses/featured-courses.php
CHANGED
@@ -19,7 +19,7 @@ if ( ! class_exists( 'LP_Widget_Featured_Courses' ) ) {
|
|
19 |
'name' => __( 'Title', 'learnpress' ),
|
20 |
'id' => "{$prefix}title",
|
21 |
'type' => 'text',
|
22 |
-
'std' =>
|
23 |
),
|
24 |
'show_teacher' => array(
|
25 |
'name' => __( 'Show teacher', 'learpnress' ),
|
19 |
'name' => __( 'Title', 'learnpress' ),
|
20 |
'id' => "{$prefix}title",
|
21 |
'type' => 'text',
|
22 |
+
'std' => ''
|
23 |
),
|
24 |
'show_teacher' => array(
|
25 |
'name' => __( 'Show teacher', 'learpnress' ),
|
inc/widgets/popular-courses/popular-courses.php
CHANGED
@@ -24,7 +24,7 @@ if ( ! class_exists( 'LP_Widget_Popular_Courses' ) ) {
|
|
24 |
'name' => __( 'Title', 'learnpress' ),
|
25 |
'id' => "{$prefix}title",
|
26 |
'type' => 'text',
|
27 |
-
'std' =>
|
28 |
),
|
29 |
'show_teacher' => array(
|
30 |
'name' => __( 'Show teacher', 'learpnress' ),
|
24 |
'name' => __( 'Title', 'learnpress' ),
|
25 |
'id' => "{$prefix}title",
|
26 |
'type' => 'text',
|
27 |
+
'std' => ''
|
28 |
),
|
29 |
'show_teacher' => array(
|
30 |
'name' => __( 'Show teacher', 'learpnress' ),
|
inc/widgets/recent-courses/recent-courses.php
CHANGED
@@ -20,7 +20,7 @@ if ( ! class_exists( 'LP_Widget_Recent_Courses' ) ) {
|
|
20 |
'name' => __( 'Title', 'learnpress' ),
|
21 |
'id' => "{$prefix}title",
|
22 |
'type' => 'text',
|
23 |
-
'std' =>
|
24 |
),
|
25 |
'show_teacher' => array(
|
26 |
'name' => __( 'Show teacher', 'learpnress' ),
|
20 |
'name' => __( 'Title', 'learnpress' ),
|
21 |
'id' => "{$prefix}title",
|
22 |
'type' => 'text',
|
23 |
+
'std' => ''
|
24 |
),
|
25 |
'show_teacher' => array(
|
26 |
'name' => __( 'Show teacher', 'learpnress' ),
|
languages/learnpress.pot
CHANGED
@@ -3,17 +3,12 @@
|
|
3 |
# This file is distributed under the same license as the PACKAGE package.
|
4 |
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
5 |
#
|
6 |
-
#: inc/custom-post-types/course.php:650
|
7 |
-
#: inc/widgets/course-filters/course-filters.php:14
|
8 |
-
#: inc/widgets/featured-courses/featured-courses.php:22
|
9 |
-
#: inc/widgets/popular-courses/popular-courses.php:27
|
10 |
-
#: inc/widgets/recent-courses/recent-courses.php:23
|
11 |
#, fuzzy
|
12 |
msgid ""
|
13 |
msgstr ""
|
14 |
-
"Project-Id-Version:
|
15 |
"Report-Msgid-Bugs-To: \n"
|
16 |
-
"POT-Creation-Date: 2017-
|
17 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
18 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
19 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -110,7 +105,7 @@ msgstr ""
|
|
110 |
|
111 |
#: inc/class-lp-ajax.php:614 inc/admin/lp-admin-functions.php:962
|
112 |
#: inc/admin/views/statistics/orders.php:63
|
113 |
-
#: templates/single-course/content-item-lp_lesson.php:
|
114 |
#: templates/single-course/section/item-meta.php:66
|
115 |
msgid "Completed"
|
116 |
msgstr ""
|
@@ -257,8 +252,8 @@ msgid "Ok"
|
|
257 |
msgstr ""
|
258 |
|
259 |
#: inc/class-lp-install.php:90 inc/lp-core-functions.php:2001
|
260 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
261 |
-
#: inc/custom-post-types/course.php:
|
262 |
msgid "Cancel"
|
263 |
msgstr ""
|
264 |
|
@@ -289,56 +284,56 @@ msgstr ""
|
|
289 |
msgid "Add-ons"
|
290 |
msgstr ""
|
291 |
|
292 |
-
#: inc/class-lp-shortcodes.php:
|
293 |
msgid "No course found."
|
294 |
msgstr ""
|
295 |
|
296 |
-
#: inc/class-lp-shortcodes.php:
|
297 |
msgid "Invalid order!"
|
298 |
msgstr ""
|
299 |
|
300 |
-
#: inc/class-lp-shortcodes.php:
|
301 |
msgid "Please login to fill in this form."
|
302 |
msgstr ""
|
303 |
|
304 |
-
#: inc/class-lp-shortcodes.php:
|
305 |
msgid "You are a teacher now."
|
306 |
msgstr ""
|
307 |
|
308 |
-
#: inc/class-lp-shortcodes.php:
|
309 |
msgid "Your request has been sent! We will get in touch with you soon!"
|
310 |
msgstr ""
|
311 |
|
312 |
-
#: inc/class-lp-shortcodes.php:
|
313 |
msgid "Your role is allowed to create a course."
|
314 |
msgstr ""
|
315 |
|
316 |
-
#: inc/class-lp-shortcodes.php:
|
317 |
msgid "Become a Teacher"
|
318 |
msgstr ""
|
319 |
|
320 |
-
#: inc/class-lp-shortcodes.php:
|
321 |
msgid "Fill in your information and send us to become a teacher."
|
322 |
msgstr ""
|
323 |
|
324 |
-
#: inc/class-lp-shortcodes.php:
|
325 |
msgid "Submit"
|
326 |
msgstr ""
|
327 |
|
328 |
-
#: inc/class-lp-shortcodes.php:
|
329 |
msgid "Processing"
|
330 |
msgstr ""
|
331 |
|
332 |
-
#: inc/class-lp-shortcodes.php:
|
333 |
#, php-format
|
334 |
msgid "The user %s is not available!"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: inc/class-lp-shortcodes.php:
|
338 |
msgid "Forgot password?"
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: inc/class-lp-shortcodes.php:
|
342 |
msgid "Create new account"
|
343 |
msgstr ""
|
344 |
|
@@ -347,23 +342,23 @@ msgstr ""
|
|
347 |
msgid "Function %s should be overwritten in child class"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: inc/lp-add-on-functions.php:
|
351 |
#, php-format
|
352 |
msgid "Installed <span class=\"count\">(%s)</span>"
|
353 |
msgstr ""
|
354 |
|
355 |
-
#: inc/lp-add-on-functions.php:
|
356 |
#, php-format
|
357 |
msgid "Add-ons <span class=\"count\">(%s)</span>"
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: inc/lp-add-on-functions.php:
|
361 |
#, php-format
|
362 |
msgid "Related Themes <span class=\"count\">(%s)</span>"
|
363 |
msgstr ""
|
364 |
|
365 |
-
#: inc/lp-add-on-functions.php:
|
366 |
-
#: inc/lp-core-functions.php:
|
367 |
#: inc/admin/lp-admin-functions.php:588 inc/admin/lp-admin-functions.php:754
|
368 |
#: inc/admin/lp-admin-functions.php:957 inc/admin/lp-admin-functions.php:2356
|
369 |
#: inc/admin/sub-menus/tools.php:329 inc/admin/views/statistics/courses.php:27
|
@@ -378,214 +373,214 @@ msgstr ""
|
|
378 |
msgid "All"
|
379 |
msgstr ""
|
380 |
|
381 |
-
#: inc/lp-add-on-functions.php:
|
382 |
msgid "Get More"
|
383 |
msgstr ""
|
384 |
|
385 |
-
#: inc/lp-add-on-functions.php:
|
386 |
msgid ""
|
387 |
"An unexpected error occurred. Something may be wrong with WordPress.org or "
|
388 |
"this server’s configuration. If you continue to have problems, please "
|
389 |
"try the <a href=\"https://wordpress.org/support/\">support forums</a>."
|
390 |
msgstr ""
|
391 |
|
392 |
-
#: inc/lp-add-on-functions.php:
|
393 |
msgid ""
|
394 |
"(WordPress could not establish a secure connection to WordPress.org. Please "
|
395 |
"contact your server administrator.)"
|
396 |
msgstr ""
|
397 |
|
398 |
-
#: inc/lp-add-on-functions.php:
|
399 |
#, php-format
|
400 |
msgid "Installing Plugin: %s"
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: inc/lp-add-on-functions.php:
|
404 |
msgid "Not install"
|
405 |
msgstr ""
|
406 |
|
407 |
-
#: inc/lp-add-on-functions.php:
|
408 |
msgid "Installed"
|
409 |
msgstr ""
|
410 |
|
411 |
-
#: inc/lp-add-on-functions.php:
|
412 |
#: inc/admin/class-lp-plugin-install-list-table.php:420
|
413 |
msgid "Enabled"
|
414 |
msgstr ""
|
415 |
|
416 |
-
#: inc/lp-add-on-functions.php:
|
417 |
#: inc/admin/class-lp-plugin-install-list-table.php:422
|
418 |
msgid "Disabled"
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: inc/lp-add-on-functions.php:
|
422 |
msgid "All add-ons that you have installed"
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: inc/lp-add-on-functions.php:
|
426 |
msgid "All add-ons we provide."
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: inc/lp-add-on-functions.php:
|
430 |
#, php-format
|
431 |
msgid "Last checked %s ago"
|
432 |
msgstr ""
|
433 |
|
434 |
-
#: inc/lp-add-on-functions.php:
|
435 |
#, php-format
|
436 |
msgid "<a href=\"%s\">%s</a>"
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: inc/lp-add-on-functions.php:
|
440 |
msgid "Check again!"
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: inc/lp-add-on-functions.php:
|
444 |
#: inc/admin/class-lp-plugin-install-list-table.php:362
|
445 |
#, php-format
|
446 |
msgid "Install %s now"
|
447 |
msgstr ""
|
448 |
|
449 |
-
#: inc/lp-add-on-functions.php:
|
450 |
msgid "Install Now"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: inc/lp-add-on-functions.php:
|
454 |
#: inc/admin/class-lp-plugin-install-list-table.php:369
|
455 |
#, php-format
|
456 |
msgid "Update %s now"
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: inc/lp-add-on-functions.php:
|
460 |
#: inc/admin/class-lp-plugin-install-list-table.php:369
|
461 |
#: inc/admin/views/updates/0.9/step-repair-database.php:17
|
462 |
msgid "Update Now"
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: inc/lp-add-on-functions.php:
|
466 |
msgid "This plugin is already installed and is up to date"
|
467 |
msgstr ""
|
468 |
|
469 |
-
#: inc/lp-add-on-functions.php:
|
470 |
msgctxt "plugin"
|
471 |
msgid "Installed"
|
472 |
msgstr ""
|
473 |
|
474 |
-
#: inc/lp-add-on-functions.php:
|
475 |
#, php-format
|
476 |
msgid "Disable %s now"
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: inc/lp-add-on-functions.php:
|
480 |
msgid "Disable Now"
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: inc/lp-add-on-functions.php:
|
484 |
#, php-format
|
485 |
msgid "Enable %s now"
|
486 |
msgstr ""
|
487 |
|
488 |
-
#: inc/lp-add-on-functions.php:
|
489 |
msgid "Enable Now"
|
490 |
msgstr ""
|
491 |
|
492 |
-
#: inc/lp-add-on-functions.php:
|
493 |
#, php-format
|
494 |
msgid "Buy %s now"
|
495 |
msgstr ""
|
496 |
|
497 |
-
#: inc/lp-add-on-functions.php:
|
498 |
msgid "Buy Now"
|
499 |
msgstr ""
|
500 |
|
501 |
-
#: inc/lp-add-on-functions.php:
|
502 |
#, php-format
|
503 |
msgid "Version: %s"
|
504 |
msgstr ""
|
505 |
|
506 |
-
#: inc/lp-add-on-functions.php:
|
507 |
msgid "No add-on found"
|
508 |
msgstr ""
|
509 |
|
510 |
-
#: inc/lp-add-on-functions.php:
|
511 |
msgid "Free Add-ons"
|
512 |
msgstr ""
|
513 |
|
514 |
-
#: inc/lp-add-on-functions.php:
|
515 |
#, php-format
|
516 |
msgid "<cite>By %s</cite>"
|
517 |
msgstr ""
|
518 |
|
519 |
-
#: inc/lp-add-on-functions.php:
|
520 |
#: inc/admin/class-lp-plugin-install-list-table.php:454
|
521 |
msgid "Last Updated:"
|
522 |
msgstr ""
|
523 |
|
524 |
-
#: inc/lp-add-on-functions.php:
|
525 |
#: inc/admin/class-lp-plugin-install-list-table.php:455
|
526 |
-
#: inc/custom-post-types/order.php:
|
527 |
#, php-format
|
528 |
msgid "%s ago"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: inc/lp-add-on-functions.php:
|
532 |
#: inc/admin/class-lp-plugin-install-list-table.php:461
|
533 |
msgctxt "Active plugin installs"
|
534 |
msgid "1+ Million"
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: inc/lp-add-on-functions.php:
|
538 |
#: inc/admin/class-lp-plugin-install-list-table.php:465
|
539 |
#, php-format
|
540 |
msgid "%s Active Installs"
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: inc/lp-add-on-functions.php:
|
544 |
#: inc/admin/class-lp-plugin-install-list-table.php:471
|
545 |
msgid "Untested with your version of WordPress"
|
546 |
msgstr ""
|
547 |
|
548 |
-
#: inc/lp-add-on-functions.php:
|
549 |
#: inc/admin/class-lp-plugin-install-list-table.php:473
|
550 |
msgid "<strong>Incompatible</strong> with your version of WordPress"
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: inc/lp-add-on-functions.php:
|
554 |
#: inc/admin/class-lp-plugin-install-list-table.php:475
|
555 |
msgid "<strong>Compatible</strong> with your version of WordPress"
|
556 |
msgstr ""
|
557 |
|
558 |
-
#: inc/lp-add-on-functions.php:
|
559 |
msgid "Premium Add-ons"
|
560 |
msgstr ""
|
561 |
|
562 |
-
#: inc/lp-add-on-functions.php:
|
563 |
msgid "No theme found"
|
564 |
msgstr ""
|
565 |
|
566 |
-
#: inc/lp-add-on-functions.php:
|
567 |
msgid "Education Support"
|
568 |
msgstr ""
|
569 |
|
570 |
-
#: inc/lp-add-on-functions.php:
|
571 |
msgid "$"
|
572 |
msgstr ""
|
573 |
|
574 |
-
#: inc/lp-add-on-functions.php:
|
575 |
msgid " sales"
|
576 |
msgstr ""
|
577 |
|
578 |
-
#: inc/lp-add-on-functions.php:
|
579 |
#: inc/lp-core-functions.php:525
|
580 |
msgid "Get it now"
|
581 |
msgstr ""
|
582 |
|
583 |
-
#: inc/lp-add-on-functions.php:
|
584 |
#: inc/lp-core-functions.php:527
|
585 |
msgid "View Demo"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: inc/lp-add-on-functions.php:
|
589 |
msgid "Other"
|
590 |
msgstr ""
|
591 |
|
@@ -604,10 +599,12 @@ msgid "Quiz"
|
|
604 |
msgstr ""
|
605 |
|
606 |
#: inc/lp-core-functions.php:697
|
|
|
607 |
msgid "<"
|
608 |
msgstr ""
|
609 |
|
610 |
#: inc/lp-core-functions.php:698
|
|
|
611 |
msgid ">"
|
612 |
msgstr ""
|
613 |
|
@@ -631,16 +628,16 @@ msgstr ""
|
|
631 |
#: inc/admin/settings/class-lp-settings-courses.php:9
|
632 |
#: inc/admin/settings/class-lp-settings-pages.php:105
|
633 |
#: inc/admin/sub-menus/statistics.php:51 inc/admin/sub-menus/statistics.php:58
|
634 |
-
#: inc/custom-post-types/course.php:
|
635 |
#: inc/user/class-lp-profile.php:66
|
636 |
msgid "Courses"
|
637 |
msgstr ""
|
638 |
|
639 |
-
#: inc/lp-core-functions.php:868 inc/custom-post-types/course.php:
|
640 |
msgid "Categories"
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: inc/lp-core-functions.php:873 inc/custom-post-types/course.php:
|
644 |
msgid "Tags"
|
645 |
msgstr ""
|
646 |
|
@@ -758,11 +755,11 @@ msgstr ""
|
|
758 |
msgid "Learning"
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: inc/lp-core-functions.php:2241 inc/custom-post-types/order.php:
|
762 |
msgid "Purchased"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: inc/lp-core-functions.php:2242 inc/lp-core-functions.php:
|
766 |
msgid "Finished"
|
767 |
msgstr ""
|
768 |
|
@@ -842,17 +839,17 @@ msgstr ""
|
|
842 |
msgid "Order number <strong>%s</strong> can not cancelled"
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: inc/lp-core-functions.php:
|
846 |
#: templates/single-course/section/item-meta.php:51
|
847 |
msgid "Passed"
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: inc/lp-core-functions.php:
|
851 |
#: templates/single-course/section/item-meta.php:54
|
852 |
msgid "Failed"
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: inc/lp-core-functions.php:
|
856 |
#: templates/single-course/section/item-meta.php:61
|
857 |
msgid "In Progress"
|
858 |
msgstr ""
|
@@ -890,7 +887,7 @@ msgstr ""
|
|
890 |
msgid "Final"
|
891 |
msgstr ""
|
892 |
|
893 |
-
#: inc/lp-template-functions.php:1369 inc/custom-post-types/abstract.php:
|
894 |
#: inc/custom-post-types/lesson.php:211
|
895 |
#: inc/libraries/meta-box/inc/fields/oembed.php:79
|
896 |
#: templates/single-course/section/item-meta.php:28
|
@@ -903,7 +900,7 @@ msgstr ""
|
|
903 |
|
904 |
#: inc/lp-template-functions.php:1449
|
905 |
#: inc/admin/views/meta-boxes/course/curriculum.php:8
|
906 |
-
#: inc/custom-post-types/course.php:
|
907 |
msgid "Curriculum"
|
908 |
msgstr ""
|
909 |
|
@@ -937,7 +934,7 @@ msgstr ""
|
|
937 |
msgid "There are no available questions for this quiz, please use "
|
938 |
msgstr ""
|
939 |
|
940 |
-
#: inc/admin/class-lp-admin-ajax.php:278 inc/admin/class-lp-admin-ajax.php:
|
941 |
#: inc/admin/lp-admin-functions.php:1197
|
942 |
#: inc/quiz/class-lp-quiz-factory.php:127
|
943 |
#: inc/quiz/class-lp-quiz-factory.php:136
|
@@ -947,105 +944,105 @@ msgstr ""
|
|
947 |
msgid "Error"
|
948 |
msgstr ""
|
949 |
|
950 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
951 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
952 |
msgid "Untitled"
|
953 |
msgstr ""
|
954 |
|
955 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
956 |
msgid "No item found"
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
960 |
msgid "A "
|
961 |
msgstr ""
|
962 |
|
963 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
964 |
msgid " is just used for only one "
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
968 |
msgid "You have no permission to access this section."
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
972 |
#: inc/custom-post-types/question.php:104
|
973 |
msgid "No questions found"
|
974 |
msgstr ""
|
975 |
|
976 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
977 |
msgid "Permission denied"
|
978 |
msgstr ""
|
979 |
|
980 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
981 |
msgid "Check nonce failed"
|
982 |
msgstr ""
|
983 |
|
984 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
985 |
msgid "Order invalid"
|
986 |
msgstr ""
|
987 |
|
988 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
989 |
msgid "Course invalid"
|
990 |
msgstr ""
|
991 |
|
992 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
993 |
msgid "Verify nonce failed"
|
994 |
msgstr ""
|
995 |
|
996 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
997 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
998 |
msgid "Edit Page"
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1002 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1003 |
msgid "View Page"
|
1004 |
msgstr ""
|
1005 |
|
1006 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1007 |
msgid "Error! Create page failed. Please try again!"
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1011 |
msgid "Empty page name!"
|
1012 |
msgstr ""
|
1013 |
|
1014 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1015 |
msgid ""
|
1016 |
"Something went wrong! Please try again or ask <a href=\"https://wordpress."
|
1017 |
"org/support/\">support forums</a>."
|
1018 |
msgstr ""
|
1019 |
|
1020 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1021 |
msgid "Try again!"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1025 |
msgid "Import sample data successes."
|
1026 |
msgstr ""
|
1027 |
|
1028 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1029 |
msgid "View courses"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1033 |
msgid "Import sample data failed. Please try again!."
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1037 |
msgid ""
|
1038 |
"Unknown error when installing/activating Import/Export addon. Please try "
|
1039 |
"again!"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1043 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1044 |
msgid ""
|
1045 |
"You do not have sufficient permissions to deactivate plugins for this site."
|
1046 |
msgstr ""
|
1047 |
|
1048 |
-
#: inc/admin/class-lp-admin-ajax.php:
|
1049 |
msgid " course has duplicated"
|
1050 |
msgstr ""
|
1051 |
|
@@ -1371,7 +1368,7 @@ msgstr ""
|
|
1371 |
#: inc/admin/views/statistics/orders.php:8
|
1372 |
#: inc/admin/views/statistics/users.php:8
|
1373 |
#: inc/admin/views/statistics/users.php:44
|
1374 |
-
#: inc/custom-post-types/course.php:
|
1375 |
msgid "Students"
|
1376 |
msgstr ""
|
1377 |
|
@@ -1398,7 +1395,7 @@ msgstr ""
|
|
1398 |
#: inc/admin/lp-admin-functions.php:774 inc/admin/lp-admin-functions.php:2376
|
1399 |
#: inc/admin/views/statistics/courses.php:46
|
1400 |
#: inc/admin/views/statistics/general.php:60
|
1401 |
-
#: inc/course/abstract-lp-course.php:
|
1402 |
#: inc/order/lp-order-functions.php:560
|
1403 |
msgid "Free"
|
1404 |
msgstr ""
|
@@ -1564,7 +1561,7 @@ msgstr ""
|
|
1564 |
msgid "Can not create a question"
|
1565 |
msgstr ""
|
1566 |
|
1567 |
-
#: inc/admin/pointers/pointers.php:66 inc/custom-post-types/course.php:
|
1568 |
#: templates/single-course/curriculum.php:16
|
1569 |
msgid "Course Curriculum"
|
1570 |
msgstr ""
|
@@ -1592,7 +1589,7 @@ msgid "Checkout Endpoints"
|
|
1592 |
msgstr ""
|
1593 |
|
1594 |
#: inc/admin/settings/class-lp-settings-courses.php:32
|
1595 |
-
#: inc/custom-post-types/course.php:
|
1596 |
msgctxt "slug"
|
1597 |
msgid "courses"
|
1598 |
msgstr ""
|
@@ -1826,8 +1823,8 @@ msgstr ""
|
|
1826 |
|
1827 |
#: inc/admin/settings/class-lp-settings-pages.php:121
|
1828 |
#: inc/admin/sub-menus/statistics.php:52 inc/admin/sub-menus/statistics.php:59
|
1829 |
-
#: inc/custom-post-types/order.php:
|
1830 |
-
#: inc/custom-post-types/order.php:
|
1831 |
msgid "Orders"
|
1832 |
msgstr ""
|
1833 |
|
@@ -2202,7 +2199,7 @@ msgid "Title"
|
|
2202 |
msgstr ""
|
2203 |
|
2204 |
#: inc/admin/views/meta-boxes/course/editor.php:62
|
2205 |
-
#: inc/custom-post-types/course.php:
|
2206 |
msgid "Content"
|
2207 |
msgstr ""
|
2208 |
|
@@ -2224,8 +2221,8 @@ msgstr ""
|
|
2224 |
#: inc/admin/views/meta-boxes/course/js-template.php:88
|
2225 |
#: inc/admin/views/meta-boxes/quiz/js-template.php:6
|
2226 |
#: inc/admin/views/meta-boxes/quiz/questions.php:36
|
2227 |
-
#: inc/custom-post-types/course.php:
|
2228 |
-
#: inc/custom-post-types/order.php:
|
2229 |
msgid "Add New"
|
2230 |
msgstr ""
|
2231 |
|
@@ -2255,7 +2252,7 @@ msgid "Add new item here and press Enter"
|
|
2255 |
msgstr ""
|
2256 |
|
2257 |
#: inc/admin/views/meta-boxes/course/loop-item.php:69
|
2258 |
-
#: inc/custom-post-types/course.php:
|
2259 |
msgid "Are you sure you want to remove this item?"
|
2260 |
msgstr ""
|
2261 |
|
@@ -2295,7 +2292,7 @@ msgid "Select %s"
|
|
2295 |
msgstr ""
|
2296 |
|
2297 |
#: inc/admin/views/meta-boxes/course/review-log.php:25
|
2298 |
-
#: inc/custom-post-types/course.php:
|
2299 |
msgid "Your course is pending for reviewing"
|
2300 |
msgstr ""
|
2301 |
|
@@ -2306,7 +2303,7 @@ msgid ""
|
|
2306 |
msgstr ""
|
2307 |
|
2308 |
#: inc/admin/views/meta-boxes/course/review-log.php:31
|
2309 |
-
#: inc/custom-post-types/course.php:
|
2310 |
msgid "Submit for Review"
|
2311 |
msgstr ""
|
2312 |
|
@@ -2465,7 +2462,7 @@ msgid "Customers"
|
|
2465 |
msgstr ""
|
2466 |
|
2467 |
#: inc/admin/views/meta-boxes/order/details.php:49
|
2468 |
-
#: inc/custom-post-types/order.php:
|
2469 |
#, php-format
|
2470 |
msgid "Pay via <strong>%s</strong>"
|
2471 |
msgstr ""
|
@@ -2501,11 +2498,11 @@ msgid "Sub Total"
|
|
2501 |
msgstr ""
|
2502 |
|
2503 |
#: inc/admin/views/meta-boxes/order/details.php:87
|
2504 |
-
#: inc/custom-post-types/order.php:
|
2505 |
#: templates/cart/form.php:101 templates/checkout/order-received.php:32
|
2506 |
#: templates/checkout/review-order.php:27
|
2507 |
#: templates/checkout/review-order.php:68 templates/order/order-details.php:18
|
2508 |
-
#: templates/order/order-details.php:67 templates/profile/tabs/orders.php:
|
2509 |
msgid "Total"
|
2510 |
msgstr ""
|
2511 |
|
@@ -3063,9 +3060,9 @@ msgid "Sale by"
|
|
3063 |
msgstr ""
|
3064 |
|
3065 |
#: inc/admin/views/statistics/orders.php:46
|
3066 |
-
#: inc/custom-post-types/order.php:
|
3067 |
#: templates/checkout/order-received.php:26
|
3068 |
-
#: templates/profile/tabs/orders.php:
|
3069 |
msgid "Date"
|
3070 |
msgstr ""
|
3071 |
|
@@ -3285,11 +3282,11 @@ msgstr ""
|
|
3285 |
msgid "Checkout page is not setup"
|
3286 |
msgstr ""
|
3287 |
|
3288 |
-
#: inc/course/abstract-lp-course.php:
|
3289 |
msgid "You enrolled"
|
3290 |
msgstr ""
|
3291 |
|
3292 |
-
#: inc/course/abstract-lp-course.php:
|
3293 |
#, php-format
|
3294 |
msgctxt ""
|
3295 |
msgid "You and one student enrolled"
|
@@ -3298,7 +3295,7 @@ msgid_plural ""
|
|
3298 |
msgstr[0] ""
|
3299 |
msgstr[1] ""
|
3300 |
|
3301 |
-
#: inc/course/abstract-lp-course.php:
|
3302 |
#, php-format
|
3303 |
msgctxt ""
|
3304 |
msgid "One student enrolled"
|
@@ -3307,28 +3304,28 @@ msgid_plural ""
|
|
3307 |
msgstr[0] ""
|
3308 |
msgstr[1] ""
|
3309 |
|
3310 |
-
#: inc/course/abstract-lp-course.php:
|
3311 |
msgid "No student enrolled"
|
3312 |
msgstr ""
|
3313 |
|
3314 |
-
#: inc/course/abstract-lp-course.php:
|
3315 |
#: inc/lesson/class-lp-lesson.php:120 inc/quiz/class-lp-quiz.php:611
|
3316 |
#, php-format
|
3317 |
msgid "The function %s doesn't exists"
|
3318 |
msgstr ""
|
3319 |
|
3320 |
-
#: inc/course/abstract-lp-course.php:
|
3321 |
#, php-format
|
3322 |
msgid "%d of %d items completed"
|
3323 |
msgstr ""
|
3324 |
|
3325 |
-
#: inc/course/abstract-lp-course.php:
|
3326 |
-
#: inc/course/abstract-lp-course.php:
|
3327 |
#, php-format
|
3328 |
msgid "%d%% completed"
|
3329 |
msgstr ""
|
3330 |
|
3331 |
-
#: inc/course/abstract-lp-course.php:
|
3332 |
#, php-format
|
3333 |
msgid "This course will end within %s next"
|
3334 |
msgstr ""
|
@@ -3338,7 +3335,7 @@ msgstr ""
|
|
3338 |
msgid "Are you sure you want to finish course %s?"
|
3339 |
msgstr ""
|
3340 |
|
3341 |
-
#: inc/course/class-lp-course.php:32 templates/single-course/buttons.php:
|
3342 |
msgid "Finish course"
|
3343 |
msgstr ""
|
3344 |
|
@@ -3395,515 +3392,515 @@ msgstr ""
|
|
3395 |
msgid "The course %d does not exists"
|
3396 |
msgstr ""
|
3397 |
|
|
|
3398 |
#: inc/custom-post-types/abstract.php:417
|
3399 |
-
#: inc/custom-post-types/abstract.php:420
|
3400 |
msgid "updated."
|
3401 |
msgstr ""
|
3402 |
|
3403 |
-
#: inc/custom-post-types/abstract.php:
|
3404 |
msgid "Custom field updated."
|
3405 |
msgstr ""
|
3406 |
|
3407 |
-
#: inc/custom-post-types/abstract.php:
|
3408 |
msgid "Custom field deleted."
|
3409 |
msgstr ""
|
3410 |
|
3411 |
-
#: inc/custom-post-types/abstract.php:
|
3412 |
#, php-format
|
3413 |
msgid "Lesson restored to revision from %s"
|
3414 |
msgstr ""
|
3415 |
|
3416 |
-
#: inc/custom-post-types/abstract.php:
|
3417 |
msgid "published."
|
3418 |
msgstr ""
|
3419 |
|
3420 |
-
#: inc/custom-post-types/abstract.php:
|
3421 |
msgid "saved."
|
3422 |
msgstr ""
|
3423 |
|
3424 |
-
#: inc/custom-post-types/abstract.php:
|
3425 |
msgid "submitted."
|
3426 |
msgstr ""
|
3427 |
|
3428 |
-
#: inc/custom-post-types/abstract.php:
|
3429 |
#, php-format
|
3430 |
msgid "scheduled for: <strong>%1$s</strong>."
|
3431 |
msgstr ""
|
3432 |
|
3433 |
-
#: inc/custom-post-types/abstract.php:
|
3434 |
msgid "M j, Y @ G:i"
|
3435 |
msgstr ""
|
3436 |
|
3437 |
-
#: inc/custom-post-types/abstract.php:
|
3438 |
msgid "draft updated."
|
3439 |
msgstr ""
|
3440 |
|
3441 |
-
#: inc/custom-post-types/abstract.php:
|
3442 |
-
#: inc/custom-post-types/abstract.php:
|
3443 |
#: inc/custom-post-types/question.php:279 inc/custom-post-types/quiz.php:358
|
3444 |
-
#: templates/profile/tabs/orders.php:
|
3445 |
msgid "View"
|
3446 |
msgstr ""
|
3447 |
|
3448 |
-
#: inc/custom-post-types/course.php:
|
3449 |
msgid "Add Lesson"
|
3450 |
msgstr ""
|
3451 |
|
3452 |
-
#: inc/custom-post-types/course.php:
|
3453 |
msgid "Add Quiz"
|
3454 |
msgstr ""
|
3455 |
|
3456 |
-
#: inc/custom-post-types/course.php:
|
3457 |
msgid "Course Categories"
|
3458 |
msgstr ""
|
3459 |
|
3460 |
-
#: inc/custom-post-types/course.php:
|
3461 |
msgid "Category"
|
3462 |
msgstr ""
|
3463 |
|
3464 |
-
#: inc/custom-post-types/course.php:
|
3465 |
msgid "Add New Course Category"
|
3466 |
msgstr ""
|
3467 |
|
3468 |
-
#: inc/custom-post-types/course.php:
|
3469 |
msgid "All Categories"
|
3470 |
msgstr ""
|
3471 |
|
3472 |
-
#: inc/custom-post-types/course.php:
|
3473 |
msgctxt "slug"
|
3474 |
msgid "course-category"
|
3475 |
msgstr ""
|
3476 |
|
3477 |
-
#: inc/custom-post-types/course.php:
|
3478 |
msgid "Course Tags"
|
3479 |
msgstr ""
|
3480 |
|
3481 |
-
#: inc/custom-post-types/course.php:
|
3482 |
#: inc/custom-post-types/question.php:75 inc/updates/_update-from-0.9.php:1166
|
3483 |
#: inc/updates/_update-from-0.9.php:1167 inc/updates/_update-from-0.9.php:1168
|
3484 |
#: inc/updates/_update-from-0.9.php:1185 inc/updates/_update-from-0.9.php:1186
|
3485 |
msgid "Tag"
|
3486 |
msgstr ""
|
3487 |
|
3488 |
-
#: inc/custom-post-types/course.php:
|
3489 |
msgid "Search Course Tags"
|
3490 |
msgstr ""
|
3491 |
|
3492 |
-
#: inc/custom-post-types/course.php:
|
3493 |
msgid "Popular Course Tags"
|
3494 |
msgstr ""
|
3495 |
|
3496 |
-
#: inc/custom-post-types/course.php:
|
3497 |
msgid "All Course Tags"
|
3498 |
msgstr ""
|
3499 |
|
3500 |
-
#: inc/custom-post-types/course.php:
|
3501 |
msgid "Edit Course Tag"
|
3502 |
msgstr ""
|
3503 |
|
3504 |
-
#: inc/custom-post-types/course.php:
|
3505 |
msgid "Update Course Tag"
|
3506 |
msgstr ""
|
3507 |
|
3508 |
-
#: inc/custom-post-types/course.php:
|
3509 |
msgid "Add New Course Tag"
|
3510 |
msgstr ""
|
3511 |
|
3512 |
-
#: inc/custom-post-types/course.php:
|
3513 |
msgid "New Course Tag Name"
|
3514 |
msgstr ""
|
3515 |
|
3516 |
-
#: inc/custom-post-types/course.php:
|
3517 |
msgid "Separate tags with commas"
|
3518 |
msgstr ""
|
3519 |
|
3520 |
-
#: inc/custom-post-types/course.php:
|
3521 |
msgid "Add or remove tags"
|
3522 |
msgstr ""
|
3523 |
|
3524 |
-
#: inc/custom-post-types/course.php:
|
3525 |
msgid "Choose from the most used tags"
|
3526 |
msgstr ""
|
3527 |
|
3528 |
-
#: inc/custom-post-types/course.php:
|
3529 |
msgctxt "slug"
|
3530 |
msgid "course-tag"
|
3531 |
msgstr ""
|
3532 |
|
3533 |
-
#: inc/custom-post-types/course.php:
|
3534 |
msgid "Sorry! You can not update a course while it is viewing!"
|
3535 |
msgstr ""
|
3536 |
|
3537 |
-
#: inc/custom-post-types/course.php:
|
3538 |
msgid "Toggle Course Content"
|
3539 |
msgstr ""
|
3540 |
|
3541 |
-
#: inc/custom-post-types/course.php:
|
3542 |
msgid "Please enter the title of the course"
|
3543 |
msgstr ""
|
3544 |
|
3545 |
-
#: inc/custom-post-types/course.php:
|
3546 |
msgid "Please add at least one section for the course"
|
3547 |
msgstr ""
|
3548 |
|
3549 |
-
#: inc/custom-post-types/course.php:
|
3550 |
msgid "Please enter the title of the section"
|
3551 |
msgstr ""
|
3552 |
|
3553 |
-
#: inc/custom-post-types/course.php:
|
3554 |
msgid "Please set a price for this course"
|
3555 |
msgstr ""
|
3556 |
|
3557 |
-
#: inc/custom-post-types/course.php:
|
3558 |
msgid "Do you want to remove this lesson permanently?"
|
3559 |
msgstr ""
|
3560 |
|
3561 |
-
#: inc/custom-post-types/course.php:
|
3562 |
msgid "Do you want to remove this quiz permanently?"
|
3563 |
msgstr ""
|
3564 |
|
3565 |
-
#: inc/custom-post-types/course.php:
|
3566 |
msgid "Do you want to remove this section permanently?"
|
3567 |
msgstr ""
|
3568 |
|
3569 |
-
#: inc/custom-post-types/course.php:
|
3570 |
msgid "New quiz added"
|
3571 |
msgstr ""
|
3572 |
|
3573 |
-
#: inc/custom-post-types/course.php:
|
3574 |
msgid "New lesson added"
|
3575 |
msgstr ""
|
3576 |
|
3577 |
-
#: inc/custom-post-types/course.php:
|
3578 |
msgid "New section added"
|
3579 |
msgstr ""
|
3580 |
|
3581 |
-
#: inc/custom-post-types/course.php:
|
3582 |
msgid "The lesson removed"
|
3583 |
msgstr ""
|
3584 |
|
3585 |
-
#: inc/custom-post-types/course.php:
|
3586 |
msgid "The quiz removed"
|
3587 |
msgstr ""
|
3588 |
|
3589 |
-
#: inc/custom-post-types/course.php:
|
3590 |
msgid "The section removed"
|
3591 |
msgstr ""
|
3592 |
|
3593 |
-
#: inc/custom-post-types/course.php:
|
3594 |
msgid "The ordering completed"
|
3595 |
msgstr ""
|
3596 |
|
3597 |
-
#: inc/custom-post-types/course.php:
|
3598 |
msgid "Lesson added to section completed!"
|
3599 |
msgstr ""
|
3600 |
|
3601 |
-
#: inc/custom-post-types/course.php:
|
3602 |
msgid "Quiz added to section completed!"
|
3603 |
msgstr ""
|
3604 |
|
3605 |
-
#: inc/custom-post-types/course.php:
|
3606 |
#, php-format
|
3607 |
msgid "%s updated"
|
3608 |
msgstr ""
|
3609 |
|
3610 |
-
#: inc/custom-post-types/course.php:
|
3611 |
msgid "Click to quick edit name"
|
3612 |
msgstr ""
|
3613 |
|
3614 |
-
#: inc/custom-post-types/course.php:
|
3615 |
msgid "Save Course"
|
3616 |
msgstr ""
|
3617 |
|
3618 |
-
#: inc/custom-post-types/course.php:
|
3619 |
msgid "You course will become to Pending"
|
3620 |
msgstr ""
|
3621 |
|
3622 |
-
#: inc/custom-post-types/course.php:
|
3623 |
msgctxt "Post Type General Name"
|
3624 |
msgid "Courses"
|
3625 |
msgstr ""
|
3626 |
|
3627 |
-
#: inc/custom-post-types/course.php:
|
3628 |
msgctxt "Post Type Singular Name"
|
3629 |
msgid "Course"
|
3630 |
msgstr ""
|
3631 |
|
3632 |
-
#: inc/custom-post-types/course.php:
|
3633 |
msgid "Parent Item:"
|
3634 |
msgstr ""
|
3635 |
|
3636 |
-
#: inc/custom-post-types/course.php:
|
3637 |
msgid "View Course"
|
3638 |
msgstr ""
|
3639 |
|
3640 |
-
#: inc/custom-post-types/course.php:
|
3641 |
msgid "Add New Course"
|
3642 |
msgstr ""
|
3643 |
|
3644 |
-
#: inc/custom-post-types/course.php:
|
3645 |
msgid "Edit Course"
|
3646 |
msgstr ""
|
3647 |
|
3648 |
-
#: inc/custom-post-types/course.php:
|
3649 |
msgid "Update Course"
|
3650 |
msgstr ""
|
3651 |
|
3652 |
-
#: inc/custom-post-types/course.php:
|
3653 |
msgid "Search Courses"
|
3654 |
msgstr ""
|
3655 |
|
3656 |
-
#: inc/custom-post-types/course.php:
|
3657 |
#, php-format
|
3658 |
msgid ""
|
3659 |
"You have not got any courses yet. Click <a href=\"%s\">Add new</a> to start"
|
3660 |
msgstr ""
|
3661 |
|
3662 |
-
#: inc/custom-post-types/course.php:
|
3663 |
msgid "No course found in Trash"
|
3664 |
msgstr ""
|
3665 |
|
3666 |
-
#: inc/custom-post-types/course.php:
|
3667 |
msgid "General Settings"
|
3668 |
msgstr ""
|
3669 |
|
3670 |
-
#: inc/custom-post-types/course.php:
|
3671 |
#: inc/custom-post-types/quiz.php:178 inc/custom-post-types/quiz.php:327
|
3672 |
msgid "Duration"
|
3673 |
msgstr ""
|
3674 |
|
3675 |
-
#: inc/custom-post-types/course.php:
|
3676 |
msgid "The duration of the course."
|
3677 |
msgstr ""
|
3678 |
|
3679 |
-
#: inc/custom-post-types/course.php:
|
3680 |
msgid "Maximum students"
|
3681 |
msgstr ""
|
3682 |
|
3683 |
-
#: inc/custom-post-types/course.php:
|
3684 |
msgid "Maximum number of students who can enroll in this course."
|
3685 |
msgstr ""
|
3686 |
|
3687 |
-
#: inc/custom-post-types/course.php:
|
3688 |
msgid "Students enrolled"
|
3689 |
msgstr ""
|
3690 |
|
3691 |
-
#: inc/custom-post-types/course.php:
|
3692 |
msgid "How many students have taken this course."
|
3693 |
msgstr ""
|
3694 |
|
3695 |
-
#: inc/custom-post-types/course.php:
|
3696 |
msgid "Re-take course"
|
3697 |
msgstr ""
|
3698 |
|
3699 |
-
#: inc/custom-post-types/course.php:
|
3700 |
msgid "How many times the user can re-take this course. Set to 0 to disable."
|
3701 |
msgstr ""
|
3702 |
|
3703 |
-
#: inc/custom-post-types/course.php:
|
3704 |
msgid "Featured"
|
3705 |
msgstr ""
|
3706 |
|
3707 |
-
#: inc/custom-post-types/course.php:
|
3708 |
msgid "Set course as featured."
|
3709 |
msgstr ""
|
3710 |
|
3711 |
-
#: inc/custom-post-types/course.php:
|
3712 |
msgid "Block Lessons Content"
|
3713 |
msgstr ""
|
3714 |
|
3715 |
-
#: inc/custom-post-types/course.php:
|
3716 |
msgid "Block lessons content when course is expired."
|
3717 |
msgstr ""
|
3718 |
|
3719 |
-
#: inc/custom-post-types/course.php:
|
3720 |
msgid "External link buy course"
|
3721 |
msgstr ""
|
3722 |
|
3723 |
-
#: inc/custom-post-types/course.php:
|
3724 |
msgid "Redirect to this url when you press button buy this course."
|
3725 |
msgstr ""
|
3726 |
|
3727 |
-
#: inc/custom-post-types/course.php:
|
3728 |
msgid "Basic Options"
|
3729 |
msgstr ""
|
3730 |
|
3731 |
-
#: inc/custom-post-types/course.php:
|
3732 |
msgid "Advanced Options"
|
3733 |
msgstr ""
|
3734 |
|
3735 |
-
#: inc/custom-post-types/course.php:
|
3736 |
msgid "The method to assess the result of a student for a course."
|
3737 |
msgstr ""
|
3738 |
|
3739 |
-
#: inc/custom-post-types/course.php:
|
3740 |
msgid ""
|
3741 |
"<br /><strong>Note! </strong>No final quiz in course, please add a final quiz"
|
3742 |
msgstr ""
|
3743 |
|
3744 |
-
#: inc/custom-post-types/course.php:
|
3745 |
msgid "Assessment"
|
3746 |
msgstr ""
|
3747 |
|
3748 |
-
#: inc/custom-post-types/course.php:
|
3749 |
msgid "Course result"
|
3750 |
msgstr ""
|
3751 |
|
3752 |
-
#: inc/custom-post-types/course.php:
|
3753 |
msgid "Evaluate lessons"
|
3754 |
msgstr ""
|
3755 |
|
3756 |
-
#: inc/custom-post-types/course.php:
|
3757 |
msgid "Evaluate by lessons user has completed per total lessons in course."
|
3758 |
msgstr ""
|
3759 |
|
3760 |
-
#: inc/custom-post-types/course.php:
|
3761 |
msgid "Evaluate results of the final quiz"
|
3762 |
msgstr ""
|
3763 |
|
3764 |
-
#: inc/custom-post-types/course.php:
|
3765 |
msgid "Evaluate by results of final quiz in course."
|
3766 |
msgstr ""
|
3767 |
|
3768 |
-
#: inc/custom-post-types/course.php:
|
3769 |
msgid "Evaluate results of quizzes"
|
3770 |
msgstr ""
|
3771 |
|
3772 |
-
#: inc/custom-post-types/course.php:
|
3773 |
msgid "Evaluate by achieved points per total point of all quizzes."
|
3774 |
msgstr ""
|
3775 |
|
3776 |
-
#: inc/custom-post-types/course.php:
|
3777 |
msgid "Evaluate results of quizzes passed"
|
3778 |
msgstr ""
|
3779 |
|
3780 |
-
#: inc/custom-post-types/course.php:
|
3781 |
msgid ""
|
3782 |
"Evaluate by achieved points of passed course per total point of all quizzes."
|
3783 |
msgstr ""
|
3784 |
|
3785 |
-
#: inc/custom-post-types/course.php:
|
3786 |
msgid "Evaluate quizzes"
|
3787 |
msgstr ""
|
3788 |
|
3789 |
-
#: inc/custom-post-types/course.php:
|
3790 |
msgid "Evaluate by quizzes user has completed per total quizzes."
|
3791 |
msgstr ""
|
3792 |
|
3793 |
-
#: inc/custom-post-types/course.php:
|
3794 |
msgid "Passing condition value"
|
3795 |
msgstr ""
|
3796 |
|
3797 |
-
#: inc/custom-post-types/course.php:
|
3798 |
msgid ""
|
3799 |
"The percentage of quiz result or lessons completed to finish the course."
|
3800 |
msgstr ""
|
3801 |
|
3802 |
-
#: inc/custom-post-types/course.php:
|
3803 |
msgid "Payment Settings"
|
3804 |
msgstr ""
|
3805 |
|
3806 |
-
#: inc/custom-post-types/course.php:
|
3807 |
msgid "Course payment"
|
3808 |
msgstr ""
|
3809 |
|
3810 |
-
#: inc/custom-post-types/course.php:
|
3811 |
#, php-format
|
3812 |
msgid ""
|
3813 |
"This course is requires enrollment and the suggested price is <strong>%s</"
|
3814 |
"strong>"
|
3815 |
msgstr ""
|
3816 |
|
3817 |
-
#: inc/custom-post-types/course.php:
|
3818 |
msgid "This course is free."
|
3819 |
msgstr ""
|
3820 |
|
3821 |
-
#: inc/custom-post-types/course.php:
|
3822 |
-
#: inc/custom-post-types/course.php:
|
3823 |
#: templates/emails/order-items-table.php:21
|
3824 |
msgid "Price"
|
3825 |
msgstr ""
|
3826 |
|
3827 |
-
#: inc/custom-post-types/course.php:
|
3828 |
msgid "Sale Price"
|
3829 |
msgstr ""
|
3830 |
|
3831 |
-
#: inc/custom-post-types/course.php:
|
3832 |
msgid "Leave blank to remove sale price."
|
3833 |
msgstr ""
|
3834 |
|
3835 |
-
#: inc/custom-post-types/course.php:
|
3836 |
msgid "Schedule"
|
3837 |
msgstr ""
|
3838 |
|
3839 |
-
#: inc/custom-post-types/course.php:
|
3840 |
msgid "Sale start date"
|
3841 |
msgstr ""
|
3842 |
|
3843 |
-
#: inc/custom-post-types/course.php:
|
3844 |
msgid "Sale end date"
|
3845 |
msgstr ""
|
3846 |
|
3847 |
-
#: inc/custom-post-types/course.php:
|
3848 |
msgid "Price set by Admin"
|
3849 |
msgstr ""
|
3850 |
|
3851 |
-
#: inc/custom-post-types/course.php:
|
3852 |
msgid "Not set"
|
3853 |
msgstr ""
|
3854 |
|
3855 |
-
#: inc/custom-post-types/course.php:
|
3856 |
msgid "Course Suggestion Price"
|
3857 |
msgstr ""
|
3858 |
|
3859 |
-
#: inc/custom-post-types/course.php:
|
3860 |
msgid "The course price you want to suggest for admin to set."
|
3861 |
msgstr ""
|
3862 |
|
3863 |
-
#: inc/custom-post-types/course.php:
|
3864 |
msgid "Requires enroll"
|
3865 |
msgstr ""
|
3866 |
|
3867 |
-
#: inc/custom-post-types/course.php:
|
3868 |
msgid "Require users logged in to study or public to all."
|
3869 |
msgstr ""
|
3870 |
|
3871 |
-
#: inc/custom-post-types/course.php:
|
3872 |
msgid "Author Settings"
|
3873 |
msgstr ""
|
3874 |
|
3875 |
-
#: inc/custom-post-types/course.php:
|
3876 |
-
#: inc/custom-post-types/course.php:
|
3877 |
#: inc/custom-post-types/question.php:243 inc/custom-post-types/quiz.php:324
|
3878 |
msgid "Author"
|
3879 |
msgstr ""
|
3880 |
|
3881 |
-
#: inc/custom-post-types/course.php:
|
3882 |
msgid "Review Logs"
|
3883 |
msgstr ""
|
3884 |
|
3885 |
-
#: inc/custom-post-types/course.php:
|
3886 |
msgid "Course Curriculum only appear if course is saved"
|
3887 |
msgstr ""
|
3888 |
|
3889 |
-
#: inc/custom-post-types/course.php:
|
3890 |
msgid "Course has approved by Reviewer"
|
3891 |
msgstr ""
|
3892 |
|
3893 |
-
#: inc/custom-post-types/course.php:
|
3894 |
msgid "Course has rejected by Reviewer"
|
3895 |
msgstr ""
|
3896 |
|
3897 |
-
#: inc/custom-post-types/course.php:
|
3898 |
#, php-format
|
3899 |
msgid "Course has submitted by %s"
|
3900 |
msgstr ""
|
3901 |
|
3902 |
-
#: inc/custom-post-types/course.php:
|
3903 |
msgid "Course has updated by Reviewer"
|
3904 |
msgstr ""
|
3905 |
|
3906 |
-
#: inc/custom-post-types/course.php:
|
3907 |
#, php-format
|
3908 |
msgctxt "learnpress"
|
3909 |
msgid "%d section"
|
@@ -3911,7 +3908,7 @@ msgid_plural "%d sections"
|
|
3911 |
msgstr[0] ""
|
3912 |
msgstr[1] ""
|
3913 |
|
3914 |
-
#: inc/custom-post-types/course.php:
|
3915 |
#, php-format
|
3916 |
msgctxt "learnpress"
|
3917 |
msgid "%d lesson"
|
@@ -3919,11 +3916,11 @@ msgid_plural "%d lessons"
|
|
3919 |
msgstr[0] ""
|
3920 |
msgstr[1] ""
|
3921 |
|
3922 |
-
#: inc/custom-post-types/course.php:
|
3923 |
msgid "0 lesson"
|
3924 |
msgstr ""
|
3925 |
|
3926 |
-
#: inc/custom-post-types/course.php:
|
3927 |
#, php-format
|
3928 |
msgctxt "learnpress"
|
3929 |
msgid "%d quiz"
|
@@ -3931,55 +3928,55 @@ msgid_plural "%d quizzes"
|
|
3931 |
msgstr[0] ""
|
3932 |
msgstr[1] ""
|
3933 |
|
3934 |
-
#: inc/custom-post-types/course.php:
|
3935 |
msgid "0 quiz"
|
3936 |
msgstr ""
|
3937 |
|
3938 |
-
#: inc/custom-post-types/course.php:
|
3939 |
msgid "No content"
|
3940 |
msgstr ""
|
3941 |
|
3942 |
-
#: inc/custom-post-types/course.php:
|
3943 |
msgid "Course Video"
|
3944 |
msgstr ""
|
3945 |
|
3946 |
-
#: inc/custom-post-types/course.php:
|
3947 |
msgid "Video ID"
|
3948 |
msgstr ""
|
3949 |
|
3950 |
-
#: inc/custom-post-types/course.php:
|
3951 |
msgid "The id of Youtube or Vimeo video"
|
3952 |
msgstr ""
|
3953 |
|
3954 |
-
#: inc/custom-post-types/course.php:
|
3955 |
msgid "Video Type"
|
3956 |
msgstr ""
|
3957 |
|
3958 |
-
#: inc/custom-post-types/course.php:
|
3959 |
msgid "Chose video type"
|
3960 |
msgstr ""
|
3961 |
|
3962 |
-
#: inc/custom-post-types/course.php:
|
3963 |
msgid "Youtube"
|
3964 |
msgstr ""
|
3965 |
|
3966 |
-
#: inc/custom-post-types/course.php:
|
3967 |
msgid "Vimeo"
|
3968 |
msgstr ""
|
3969 |
|
3970 |
-
#: inc/custom-post-types/course.php:
|
3971 |
msgid "Embed width"
|
3972 |
msgstr ""
|
3973 |
|
3974 |
-
#: inc/custom-post-types/course.php:
|
3975 |
msgid "Set width of embed"
|
3976 |
msgstr ""
|
3977 |
|
3978 |
-
#: inc/custom-post-types/course.php:
|
3979 |
msgid "Embed height"
|
3980 |
msgstr ""
|
3981 |
|
3982 |
-
#: inc/custom-post-types/course.php:
|
3983 |
msgid "Set height of embed"
|
3984 |
msgstr ""
|
3985 |
|
@@ -4066,65 +4063,69 @@ msgstr ""
|
|
4066 |
msgid "Standard"
|
4067 |
msgstr ""
|
4068 |
|
4069 |
-
#: inc/custom-post-types/order.php:
|
4070 |
msgid "Order on"
|
4071 |
msgstr ""
|
4072 |
|
4073 |
-
#: inc/custom-post-types/order.php:
|
4074 |
msgid "Order number, user name, user email, course name etc..."
|
4075 |
msgstr ""
|
4076 |
|
4077 |
-
#: inc/custom-post-types/order.php:
|
4078 |
msgid "Processing..."
|
4079 |
msgstr ""
|
4080 |
|
4081 |
-
#: inc/custom-post-types/order.php:
|
4082 |
msgid "Apply"
|
4083 |
msgstr ""
|
4084 |
|
4085 |
-
#: inc/custom-post-types/order.php:
|
4086 |
msgid "View Order"
|
4087 |
msgstr ""
|
4088 |
|
4089 |
-
#: inc/custom-post-types/order.php:
|
4090 |
-
#: templates/profile/tabs/orders.php:
|
4091 |
msgid "Order"
|
4092 |
msgstr ""
|
4093 |
|
4094 |
-
#: inc/custom-post-types/order.php:
|
4095 |
msgid "Student"
|
4096 |
msgstr ""
|
4097 |
|
4098 |
-
#: inc/custom-post-types/order.php:
|
|
|
|
|
|
|
|
|
4099 |
msgid "Course does not exist"
|
4100 |
msgstr ""
|
4101 |
|
4102 |
-
#: inc/custom-post-types/order.php:
|
4103 |
msgid "Add New Order"
|
4104 |
msgstr ""
|
4105 |
|
4106 |
-
#: inc/custom-post-types/order.php:
|
4107 |
#: templates/order/order-details.php:13
|
4108 |
msgid "Order Details"
|
4109 |
msgstr ""
|
4110 |
|
4111 |
-
#: inc/custom-post-types/order.php:
|
4112 |
msgid "Update Order"
|
4113 |
msgstr ""
|
4114 |
|
4115 |
-
#: inc/custom-post-types/order.php:
|
4116 |
msgid "Search Orders"
|
4117 |
msgstr ""
|
4118 |
|
4119 |
-
#: inc/custom-post-types/order.php:
|
4120 |
msgid "No order found"
|
4121 |
msgstr ""
|
4122 |
|
4123 |
-
#: inc/custom-post-types/order.php:
|
4124 |
msgid "No order found in Trash"
|
4125 |
msgstr ""
|
4126 |
|
4127 |
-
#: inc/custom-post-types/order.php:
|
4128 |
msgid "Order Actions"
|
4129 |
msgstr ""
|
4130 |
|
@@ -4850,17 +4851,17 @@ msgctxt "Permalink Slug"
|
|
4850 |
msgid "question-tag"
|
4851 |
msgstr ""
|
4852 |
|
4853 |
-
#: inc/user/abstract-lp-user.php:
|
4854 |
msgid "Create quiz history need pass course ID"
|
4855 |
msgstr ""
|
4856 |
|
4857 |
-
#: inc/user/abstract-lp-user.php:
|
4858 |
-
#: inc/user/abstract-lp-user.php:
|
4859 |
#, php-format
|
4860 |
msgid "The role %s for user doesn't exists"
|
4861 |
msgstr ""
|
4862 |
|
4863 |
-
#: inc/user/abstract-lp-user.php:
|
4864 |
msgid "You have already completed this lesson"
|
4865 |
msgstr ""
|
4866 |
|
@@ -4868,93 +4869,93 @@ msgstr ""
|
|
4868 |
msgid "Every 3 Minutes"
|
4869 |
msgstr ""
|
4870 |
|
4871 |
-
#: inc/user/lp-user-functions.php:
|
4872 |
msgctxt "User role"
|
4873 |
msgid "Instructor"
|
4874 |
msgstr ""
|
4875 |
|
4876 |
-
#: inc/user/lp-user-functions.php:
|
4877 |
msgid "Want to be an instructor?"
|
4878 |
msgstr ""
|
4879 |
|
4880 |
-
#: inc/user/lp-user-functions.php:
|
4881 |
msgid "Only"
|
4882 |
msgstr ""
|
4883 |
|
4884 |
-
#: inc/user/lp-user-functions.php:
|
4885 |
msgid "images accepted for upload"
|
4886 |
msgstr ""
|
4887 |
|
4888 |
-
#: inc/user/lp-user-functions.php:
|
4889 |
msgid "Images must be under"
|
4890 |
msgstr ""
|
4891 |
|
4892 |
-
#: inc/user/lp-user-functions.php:
|
4893 |
msgid "MB in size"
|
4894 |
msgstr ""
|
4895 |
|
4896 |
-
#: inc/user/lp-user-functions.php:
|
4897 |
msgid "Please select an image for upload"
|
4898 |
msgstr ""
|
4899 |
|
4900 |
-
#: inc/user/lp-user-functions.php:
|
4901 |
msgid "Image is uploaded success"
|
4902 |
msgstr ""
|
4903 |
|
4904 |
-
#: inc/user/lp-user-functions.php:
|
4905 |
msgid "Error on upload image"
|
4906 |
msgstr ""
|
4907 |
|
4908 |
-
#: inc/user/lp-user-functions.php:
|
4909 |
-
#: inc/user/lp-user-functions.php:
|
4910 |
msgid "Thumbnail of image profile not created"
|
4911 |
msgstr ""
|
4912 |
|
4913 |
-
#: inc/user/lp-user-functions.php:
|
4914 |
msgid "Error on crop user picture profile "
|
4915 |
msgstr ""
|
4916 |
|
4917 |
-
#: inc/user/lp-user-functions.php:
|
4918 |
msgid "Profile picture is changed"
|
4919 |
msgstr ""
|
4920 |
|
4921 |
-
#: inc/user/lp-user-functions.php:
|
4922 |
msgid "Old password incorrect!"
|
4923 |
msgstr ""
|
4924 |
|
4925 |
-
#: inc/user/lp-user-functions.php:
|
4926 |
msgid "Confirmation password incorrect!"
|
4927 |
msgstr ""
|
4928 |
|
4929 |
-
#: inc/user/lp-user-functions.php:
|
4930 |
msgid "Your change is saved"
|
4931 |
msgstr ""
|
4932 |
|
4933 |
-
#: inc/user/lp-user-functions.php:
|
4934 |
msgid "Error on update your profile info"
|
4935 |
msgstr ""
|
4936 |
|
4937 |
-
#: inc/user/lp-user-functions.php:
|
4938 |
msgid "Please login to enroll this course"
|
4939 |
msgstr ""
|
4940 |
|
4941 |
-
#: inc/user/lp-user-functions.php:
|
4942 |
msgid "You have already finished course"
|
4943 |
msgstr ""
|
4944 |
|
4945 |
-
#: inc/user/lp-user-functions.php:
|
4946 |
msgid "You have already enrolled in this course"
|
4947 |
msgstr ""
|
4948 |
|
4949 |
-
#: inc/user/lp-user-functions.php:
|
4950 |
msgid "Your avatar updated"
|
4951 |
msgstr ""
|
4952 |
|
4953 |
-
#: inc/user/lp-user-functions.php:
|
4954 |
msgid "Your password updated"
|
4955 |
msgstr ""
|
4956 |
|
4957 |
-
#: inc/user/lp-user-functions.php:
|
4958 |
msgid "Change your password failed"
|
4959 |
msgstr ""
|
4960 |
|
@@ -5098,6 +5099,380 @@ msgstr ""
|
|
5098 |
msgid "%d lesson"
|
5099 |
msgstr ""
|
5100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5101 |
#: templates/search-form.php:18
|
5102 |
msgid "Search course..."
|
5103 |
msgstr ""
|
@@ -5124,11 +5499,11 @@ msgstr ""
|
|
5124 |
msgid "Logged in as <a href=\"%1$s\">%2$s</a>."
|
5125 |
msgstr ""
|
5126 |
|
5127 |
-
#: templates/checkout/form-logged-in.php:
|
5128 |
msgid "Log out of this account"
|
5129 |
msgstr ""
|
5130 |
|
5131 |
-
#: templates/checkout/form-logged-in.php:
|
5132 |
msgid "Log out »"
|
5133 |
msgstr ""
|
5134 |
|
@@ -5230,7 +5605,8 @@ msgid "Check"
|
|
5230 |
msgstr ""
|
5231 |
|
5232 |
#: templates/content-quiz/buttons.php:58
|
5233 |
-
#: templates/single-course/buttons.php:
|
|
|
5234 |
msgid "Retake"
|
5235 |
msgstr ""
|
5236 |
|
@@ -5433,15 +5809,11 @@ msgstr ""
|
|
5433 |
msgid "Update"
|
5434 |
msgstr ""
|
5435 |
|
5436 |
-
#: templates/profile/tabs/orders.php:
|
5437 |
-
msgid "Status"
|
5438 |
-
msgstr ""
|
5439 |
-
|
5440 |
-
#: templates/profile/tabs/orders.php:27
|
5441 |
msgid "Action"
|
5442 |
msgstr ""
|
5443 |
|
5444 |
-
#: templates/profile/tabs/orders.php:
|
5445 |
msgid "You have not got any orders yet!"
|
5446 |
msgstr ""
|
5447 |
|
@@ -5499,33 +5871,37 @@ msgid "New password does not match!"
|
|
5499 |
msgstr ""
|
5500 |
|
5501 |
#: templates/single-course/buttons.php:20
|
5502 |
-
#: templates/single-course/buttons.php:
|
|
|
|
|
5503 |
msgid "Buy this course"
|
5504 |
msgstr ""
|
5505 |
|
5506 |
-
#: templates/single-course/buttons.php:
|
|
|
5507 |
msgid "Enroll"
|
5508 |
msgstr ""
|
5509 |
|
5510 |
-
#: templates/single-course/buttons.php:
|
|
|
5511 |
msgid ""
|
5512 |
-
"The class is full so
|
5513 |
msgstr ""
|
5514 |
|
5515 |
-
#: templates/single-course/buttons.php:
|
5516 |
#, php-format
|
5517 |
msgid "Retake course (+%d)"
|
5518 |
msgstr ""
|
5519 |
|
5520 |
-
#: templates/single-course/buttons.php:
|
5521 |
msgid "Your order is processing. Please wait for approval."
|
5522 |
msgstr ""
|
5523 |
|
5524 |
-
#: templates/single-course/buttons.php:
|
5525 |
msgid "Sorry, you can not purchase this course"
|
5526 |
msgstr ""
|
5527 |
|
5528 |
-
#: templates/single-course/content-item-lp_lesson.php:
|
5529 |
msgid "Complete"
|
5530 |
msgstr ""
|
5531 |
|
@@ -5618,7 +5994,7 @@ msgstr ""
|
|
5618 |
msgid "Viewed"
|
5619 |
msgstr ""
|
5620 |
|
5621 |
-
#: templates/single-course/section/title.php:
|
5622 |
#, php-format
|
5623 |
msgid "%d/%d"
|
5624 |
msgstr ""
|
3 |
# This file is distributed under the same license as the PACKAGE package.
|
4 |
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
5 |
#
|
|
|
|
|
|
|
|
|
|
|
6 |
#, fuzzy
|
7 |
msgid ""
|
8 |
msgstr ""
|
9 |
+
"Project-Id-Version: Package Name\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2017-08-25 13:30+0700\n"
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
105 |
|
106 |
#: inc/class-lp-ajax.php:614 inc/admin/lp-admin-functions.php:962
|
107 |
#: inc/admin/views/statistics/orders.php:63
|
108 |
+
#: templates/single-course/content-item-lp_lesson.php:37
|
109 |
#: templates/single-course/section/item-meta.php:66
|
110 |
msgid "Completed"
|
111 |
msgstr ""
|
252 |
msgstr ""
|
253 |
|
254 |
#: inc/class-lp-install.php:90 inc/lp-core-functions.php:2001
|
255 |
+
#: inc/admin/class-lp-admin-ajax.php:884 inc/admin/class-lp-admin.php:181
|
256 |
+
#: inc/custom-post-types/course.php:720 templates/profile/tabs/orders.php:40
|
257 |
msgid "Cancel"
|
258 |
msgstr ""
|
259 |
|
284 |
msgid "Add-ons"
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: inc/class-lp-shortcodes.php:341 templates/content-archive-course.php:36
|
288 |
msgid "No course found."
|
289 |
msgstr ""
|
290 |
|
291 |
+
#: inc/class-lp-shortcodes.php:363 inc/class-lp-shortcodes.php:514
|
292 |
msgid "Invalid order!"
|
293 |
msgstr ""
|
294 |
|
295 |
+
#: inc/class-lp-shortcodes.php:415
|
296 |
msgid "Please login to fill in this form."
|
297 |
msgstr ""
|
298 |
|
299 |
+
#: inc/class-lp-shortcodes.php:418
|
300 |
msgid "You are a teacher now."
|
301 |
msgstr ""
|
302 |
|
303 |
+
#: inc/class-lp-shortcodes.php:421 inc/lp-core-functions.php:1485
|
304 |
msgid "Your request has been sent! We will get in touch with you soon!"
|
305 |
msgstr ""
|
306 |
|
307 |
+
#: inc/class-lp-shortcodes.php:424
|
308 |
msgid "Your role is allowed to create a course."
|
309 |
msgstr ""
|
310 |
|
311 |
+
#: inc/class-lp-shortcodes.php:436
|
312 |
msgid "Become a Teacher"
|
313 |
msgstr ""
|
314 |
|
315 |
+
#: inc/class-lp-shortcodes.php:437
|
316 |
msgid "Fill in your information and send us to become a teacher."
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: inc/class-lp-shortcodes.php:438 templates/global/become-teacher-form.php:13
|
320 |
msgid "Submit"
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: inc/class-lp-shortcodes.php:439 templates/checkout/payment.php:16
|
324 |
msgid "Processing"
|
325 |
msgstr ""
|
326 |
|
327 |
+
#: inc/class-lp-shortcodes.php:477
|
328 |
#, php-format
|
329 |
msgid "The user %s is not available!"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: inc/class-lp-shortcodes.php:548
|
333 |
msgid "Forgot password?"
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: inc/class-lp-shortcodes.php:550
|
337 |
msgid "Create new account"
|
338 |
msgstr ""
|
339 |
|
342 |
msgid "Function %s should be overwritten in child class"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: inc/lp-add-on-functions.php:92
|
346 |
#, php-format
|
347 |
msgid "Installed <span class=\"count\">(%s)</span>"
|
348 |
msgstr ""
|
349 |
|
350 |
+
#: inc/lp-add-on-functions.php:97
|
351 |
#, php-format
|
352 |
msgid "Add-ons <span class=\"count\">(%s)</span>"
|
353 |
msgstr ""
|
354 |
|
355 |
+
#: inc/lp-add-on-functions.php:102
|
356 |
#, php-format
|
357 |
msgid "Related Themes <span class=\"count\">(%s)</span>"
|
358 |
msgstr ""
|
359 |
|
360 |
+
#: inc/lp-add-on-functions.php:121 inc/lp-core-functions.php:2239
|
361 |
+
#: inc/lp-core-functions.php:2690 inc/admin/lp-admin-actions.php:50
|
362 |
#: inc/admin/lp-admin-functions.php:588 inc/admin/lp-admin-functions.php:754
|
363 |
#: inc/admin/lp-admin-functions.php:957 inc/admin/lp-admin-functions.php:2356
|
364 |
#: inc/admin/sub-menus/tools.php:329 inc/admin/views/statistics/courses.php:27
|
373 |
msgid "All"
|
374 |
msgstr ""
|
375 |
|
376 |
+
#: inc/lp-add-on-functions.php:136
|
377 |
msgid "Get More"
|
378 |
msgstr ""
|
379 |
|
380 |
+
#: inc/lp-add-on-functions.php:317
|
381 |
msgid ""
|
382 |
"An unexpected error occurred. Something may be wrong with WordPress.org or "
|
383 |
"this server’s configuration. If you continue to have problems, please "
|
384 |
"try the <a href=\"https://wordpress.org/support/\">support forums</a>."
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: inc/lp-add-on-functions.php:317
|
388 |
msgid ""
|
389 |
"(WordPress could not establish a secure connection to WordPress.org. Please "
|
390 |
"contact your server administrator.)"
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: inc/lp-add-on-functions.php:440
|
394 |
#, php-format
|
395 |
msgid "Installing Plugin: %s"
|
396 |
msgstr ""
|
397 |
|
398 |
+
#: inc/lp-add-on-functions.php:454
|
399 |
msgid "Not install"
|
400 |
msgstr ""
|
401 |
|
402 |
+
#: inc/lp-add-on-functions.php:459 inc/admin/lp-admin-functions.php:1400
|
403 |
msgid "Installed"
|
404 |
msgstr ""
|
405 |
|
406 |
+
#: inc/lp-add-on-functions.php:469 inc/lp-add-on-functions.php:496
|
407 |
#: inc/admin/class-lp-plugin-install-list-table.php:420
|
408 |
msgid "Enabled"
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: inc/lp-add-on-functions.php:469 inc/lp-add-on-functions.php:496
|
412 |
#: inc/admin/class-lp-plugin-install-list-table.php:422
|
413 |
msgid "Disabled"
|
414 |
msgstr ""
|
415 |
|
416 |
+
#: inc/lp-add-on-functions.php:518
|
417 |
msgid "All add-ons that you have installed"
|
418 |
msgstr ""
|
419 |
|
420 |
+
#: inc/lp-add-on-functions.php:528 inc/lp-add-on-functions.php:577
|
421 |
msgid "All add-ons we provide."
|
422 |
msgstr ""
|
423 |
|
424 |
+
#: inc/lp-add-on-functions.php:529 inc/lp-add-on-functions.php:578
|
425 |
#, php-format
|
426 |
msgid "Last checked %s ago"
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: inc/lp-add-on-functions.php:530 inc/lp-add-on-functions.php:579
|
430 |
#, php-format
|
431 |
msgid "<a href=\"%s\">%s</a>"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: inc/lp-add-on-functions.php:530 inc/lp-add-on-functions.php:579
|
435 |
msgid "Check again!"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: inc/lp-add-on-functions.php:691
|
439 |
#: inc/admin/class-lp-plugin-install-list-table.php:362
|
440 |
#, php-format
|
441 |
msgid "Install %s now"
|
442 |
msgstr ""
|
443 |
|
444 |
+
#: inc/lp-add-on-functions.php:691
|
445 |
msgid "Install Now"
|
446 |
msgstr ""
|
447 |
|
448 |
+
#: inc/lp-add-on-functions.php:698
|
449 |
#: inc/admin/class-lp-plugin-install-list-table.php:369
|
450 |
#, php-format
|
451 |
msgid "Update %s now"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: inc/lp-add-on-functions.php:698
|
455 |
#: inc/admin/class-lp-plugin-install-list-table.php:369
|
456 |
#: inc/admin/views/updates/0.9/step-repair-database.php:17
|
457 |
msgid "Update Now"
|
458 |
msgstr ""
|
459 |
|
460 |
+
#: inc/lp-add-on-functions.php:704
|
461 |
msgid "This plugin is already installed and is up to date"
|
462 |
msgstr ""
|
463 |
|
464 |
+
#: inc/lp-add-on-functions.php:704
|
465 |
msgctxt "plugin"
|
466 |
msgid "Installed"
|
467 |
msgstr ""
|
468 |
|
469 |
+
#: inc/lp-add-on-functions.php:709 inc/lp-add-on-functions.php:718
|
470 |
#, php-format
|
471 |
msgid "Disable %s now"
|
472 |
msgstr ""
|
473 |
|
474 |
+
#: inc/lp-add-on-functions.php:709 inc/lp-add-on-functions.php:718
|
475 |
msgid "Disable Now"
|
476 |
msgstr ""
|
477 |
|
478 |
+
#: inc/lp-add-on-functions.php:711 inc/lp-add-on-functions.php:720
|
479 |
#, php-format
|
480 |
msgid "Enable %s now"
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: inc/lp-add-on-functions.php:711 inc/lp-add-on-functions.php:720
|
484 |
msgid "Enable Now"
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: inc/lp-add-on-functions.php:724
|
488 |
#, php-format
|
489 |
msgid "Buy %s now"
|
490 |
msgstr ""
|
491 |
|
492 |
+
#: inc/lp-add-on-functions.php:724 inc/lp-add-on-functions.php:897
|
493 |
msgid "Buy Now"
|
494 |
msgstr ""
|
495 |
|
496 |
+
#: inc/lp-add-on-functions.php:728
|
497 |
#, php-format
|
498 |
msgid "Version: %s"
|
499 |
msgstr ""
|
500 |
|
501 |
+
#: inc/lp-add-on-functions.php:737 inc/lp-add-on-functions.php:748
|
502 |
msgid "No add-on found"
|
503 |
msgstr ""
|
504 |
|
505 |
+
#: inc/lp-add-on-functions.php:790
|
506 |
msgid "Free Add-ons"
|
507 |
msgstr ""
|
508 |
|
509 |
+
#: inc/lp-add-on-functions.php:816 inc/lp-add-on-functions.php:925
|
510 |
#, php-format
|
511 |
msgid "<cite>By %s</cite>"
|
512 |
msgstr ""
|
513 |
|
514 |
+
#: inc/lp-add-on-functions.php:836
|
515 |
#: inc/admin/class-lp-plugin-install-list-table.php:454
|
516 |
msgid "Last Updated:"
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: inc/lp-add-on-functions.php:838
|
520 |
#: inc/admin/class-lp-plugin-install-list-table.php:455
|
521 |
+
#: inc/custom-post-types/order.php:513
|
522 |
#, php-format
|
523 |
msgid "%s ago"
|
524 |
msgstr ""
|
525 |
|
526 |
+
#: inc/lp-add-on-functions.php:846
|
527 |
#: inc/admin/class-lp-plugin-install-list-table.php:461
|
528 |
msgctxt "Active plugin installs"
|
529 |
msgid "1+ Million"
|
530 |
msgstr ""
|
531 |
|
532 |
+
#: inc/lp-add-on-functions.php:850
|
533 |
#: inc/admin/class-lp-plugin-install-list-table.php:465
|
534 |
#, php-format
|
535 |
msgid "%s Active Installs"
|
536 |
msgstr ""
|
537 |
|
538 |
+
#: inc/lp-add-on-functions.php:858
|
539 |
#: inc/admin/class-lp-plugin-install-list-table.php:471
|
540 |
msgid "Untested with your version of WordPress"
|
541 |
msgstr ""
|
542 |
|
543 |
+
#: inc/lp-add-on-functions.php:860
|
544 |
#: inc/admin/class-lp-plugin-install-list-table.php:473
|
545 |
msgid "<strong>Incompatible</strong> with your version of WordPress"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: inc/lp-add-on-functions.php:862
|
549 |
#: inc/admin/class-lp-plugin-install-list-table.php:475
|
550 |
msgid "<strong>Compatible</strong> with your version of WordPress"
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: inc/lp-add-on-functions.php:875
|
554 |
msgid "Premium Add-ons"
|
555 |
msgstr ""
|
556 |
|
557 |
+
#: inc/lp-add-on-functions.php:936
|
558 |
msgid "No theme found"
|
559 |
msgstr ""
|
560 |
|
561 |
+
#: inc/lp-add-on-functions.php:975
|
562 |
msgid "Education Support"
|
563 |
msgstr ""
|
564 |
|
565 |
+
#: inc/lp-add-on-functions.php:1001 inc/lp-add-on-functions.php:1075
|
566 |
msgid "$"
|
567 |
msgstr ""
|
568 |
|
569 |
+
#: inc/lp-add-on-functions.php:1004 inc/lp-add-on-functions.php:1078
|
570 |
msgid " sales"
|
571 |
msgstr ""
|
572 |
|
573 |
+
#: inc/lp-add-on-functions.php:1026 inc/lp-add-on-functions.php:1100
|
574 |
#: inc/lp-core-functions.php:525
|
575 |
msgid "Get it now"
|
576 |
msgstr ""
|
577 |
|
578 |
+
#: inc/lp-add-on-functions.php:1028 inc/lp-add-on-functions.php:1102
|
579 |
#: inc/lp-core-functions.php:527
|
580 |
msgid "View Demo"
|
581 |
msgstr ""
|
582 |
|
583 |
+
#: inc/lp-add-on-functions.php:1049
|
584 |
msgid "Other"
|
585 |
msgstr ""
|
586 |
|
599 |
msgstr ""
|
600 |
|
601 |
#: inc/lp-core-functions.php:697
|
602 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py:77
|
603 |
msgid "<"
|
604 |
msgstr ""
|
605 |
|
606 |
#: inc/lp-core-functions.php:698
|
607 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py:86
|
608 |
msgid ">"
|
609 |
msgstr ""
|
610 |
|
628 |
#: inc/admin/settings/class-lp-settings-courses.php:9
|
629 |
#: inc/admin/settings/class-lp-settings-pages.php:105
|
630 |
#: inc/admin/sub-menus/statistics.php:51 inc/admin/sub-menus/statistics.php:58
|
631 |
+
#: inc/custom-post-types/course.php:399 inc/custom-post-types/course.php:401
|
632 |
#: inc/user/class-lp-profile.php:66
|
633 |
msgid "Courses"
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: inc/lp-core-functions.php:868 inc/custom-post-types/course.php:1312
|
637 |
msgid "Categories"
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: inc/lp-core-functions.php:873 inc/custom-post-types/course.php:145
|
641 |
msgid "Tags"
|
642 |
msgstr ""
|
643 |
|
755 |
msgid "Learning"
|
756 |
msgstr ""
|
757 |
|
758 |
+
#: inc/lp-core-functions.php:2241 inc/custom-post-types/order.php:449
|
759 |
msgid "Purchased"
|
760 |
msgstr ""
|
761 |
|
762 |
+
#: inc/lp-core-functions.php:2242 inc/lp-core-functions.php:2692
|
763 |
msgid "Finished"
|
764 |
msgstr ""
|
765 |
|
839 |
msgid "Order number <strong>%s</strong> can not cancelled"
|
840 |
msgstr ""
|
841 |
|
842 |
+
#: inc/lp-core-functions.php:2675 inc/course/lp-course-functions.php:779
|
843 |
#: templates/single-course/section/item-meta.php:51
|
844 |
msgid "Passed"
|
845 |
msgstr ""
|
846 |
|
847 |
+
#: inc/lp-core-functions.php:2678 inc/course/lp-course-functions.php:782
|
848 |
#: templates/single-course/section/item-meta.php:54
|
849 |
msgid "Failed"
|
850 |
msgstr ""
|
851 |
|
852 |
+
#: inc/lp-core-functions.php:2691 inc/course/lp-course-functions.php:785
|
853 |
#: templates/single-course/section/item-meta.php:61
|
854 |
msgid "In Progress"
|
855 |
msgstr ""
|
887 |
msgid "Final"
|
888 |
msgstr ""
|
889 |
|
890 |
+
#: inc/lp-template-functions.php:1369 inc/custom-post-types/abstract.php:454
|
891 |
#: inc/custom-post-types/lesson.php:211
|
892 |
#: inc/libraries/meta-box/inc/fields/oembed.php:79
|
893 |
#: templates/single-course/section/item-meta.php:28
|
900 |
|
901 |
#: inc/lp-template-functions.php:1449
|
902 |
#: inc/admin/views/meta-boxes/course/curriculum.php:8
|
903 |
+
#: inc/custom-post-types/course.php:488
|
904 |
msgid "Curriculum"
|
905 |
msgstr ""
|
906 |
|
934 |
msgid "There are no available questions for this quiz, please use "
|
935 |
msgstr ""
|
936 |
|
937 |
+
#: inc/admin/class-lp-admin-ajax.php:278 inc/admin/class-lp-admin-ajax.php:398
|
938 |
#: inc/admin/lp-admin-functions.php:1197
|
939 |
#: inc/quiz/class-lp-quiz-factory.php:127
|
940 |
#: inc/quiz/class-lp-quiz-factory.php:136
|
944 |
msgid "Error"
|
945 |
msgstr ""
|
946 |
|
947 |
+
#: inc/admin/class-lp-admin-ajax.php:350 inc/admin/class-lp-admin-ajax.php:355
|
948 |
+
#: inc/admin/class-lp-admin-ajax.php:467
|
949 |
msgid "Untitled"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: inc/admin/class-lp-admin-ajax.php:374
|
953 |
msgid "No item found"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: inc/admin/class-lp-admin-ajax.php:382
|
957 |
msgid "A "
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: inc/admin/class-lp-admin-ajax.php:382
|
961 |
msgid " is just used for only one "
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: inc/admin/class-lp-admin-ajax.php:427
|
965 |
msgid "You have no permission to access this section."
|
966 |
msgstr ""
|
967 |
|
968 |
+
#: inc/admin/class-lp-admin-ajax.php:484
|
969 |
#: inc/custom-post-types/question.php:104
|
970 |
msgid "No questions found"
|
971 |
msgstr ""
|
972 |
|
973 |
+
#: inc/admin/class-lp-admin-ajax.php:510 inc/admin/class-lp-admin-ajax.php:555
|
974 |
msgid "Permission denied"
|
975 |
msgstr ""
|
976 |
|
977 |
+
#: inc/admin/class-lp-admin-ajax.php:516
|
978 |
msgid "Check nonce failed"
|
979 |
msgstr ""
|
980 |
|
981 |
+
#: inc/admin/class-lp-admin-ajax.php:522 inc/admin/class-lp-admin-ajax.php:567
|
982 |
msgid "Order invalid"
|
983 |
msgstr ""
|
984 |
|
985 |
+
#: inc/admin/class-lp-admin-ajax.php:529
|
986 |
msgid "Course invalid"
|
987 |
msgstr ""
|
988 |
|
989 |
+
#: inc/admin/class-lp-admin-ajax.php:635
|
990 |
msgid "Verify nonce failed"
|
991 |
msgstr ""
|
992 |
|
993 |
+
#: inc/admin/class-lp-admin-ajax.php:778
|
994 |
+
#: inc/admin/class-lp-admin-ajax.php:1006 inc/admin/lp-admin-functions.php:140
|
995 |
msgid "Edit Page"
|
996 |
msgstr ""
|
997 |
|
998 |
+
#: inc/admin/class-lp-admin-ajax.php:779
|
999 |
+
#: inc/admin/class-lp-admin-ajax.php:1008 inc/admin/lp-admin-functions.php:142
|
1000 |
msgid "View Page"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
+
#: inc/admin/class-lp-admin-ajax.php:781
|
1004 |
msgid "Error! Create page failed. Please try again!"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: inc/admin/class-lp-admin-ajax.php:784
|
1008 |
msgid "Empty page name!"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
+
#: inc/admin/class-lp-admin-ajax.php:870
|
1012 |
msgid ""
|
1013 |
"Something went wrong! Please try again or ask <a href=\"https://wordpress."
|
1014 |
"org/support/\">support forums</a>."
|
1015 |
msgstr ""
|
1016 |
|
1017 |
+
#: inc/admin/class-lp-admin-ajax.php:883
|
1018 |
msgid "Try again!"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
+
#: inc/admin/class-lp-admin-ajax.php:909
|
1022 |
msgid "Import sample data successes."
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: inc/admin/class-lp-admin-ajax.php:909
|
1026 |
msgid "View courses"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
+
#: inc/admin/class-lp-admin-ajax.php:913
|
1030 |
msgid "Import sample data failed. Please try again!."
|
1031 |
msgstr ""
|
1032 |
|
1033 |
+
#: inc/admin/class-lp-admin-ajax.php:917
|
1034 |
msgid ""
|
1035 |
"Unknown error when installing/activating Import/Export addon. Please try "
|
1036 |
"again!"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
+
#: inc/admin/class-lp-admin-ajax.php:933 inc/admin/class-lp-admin-ajax.php:954
|
1040 |
+
#: inc/admin/class-lp-admin-ajax.php:974
|
1041 |
msgid ""
|
1042 |
"You do not have sufficient permissions to deactivate plugins for this site."
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: inc/admin/class-lp-admin-ajax.php:1114
|
1046 |
msgid " course has duplicated"
|
1047 |
msgstr ""
|
1048 |
|
1368 |
#: inc/admin/views/statistics/orders.php:8
|
1369 |
#: inc/admin/views/statistics/users.php:8
|
1370 |
#: inc/admin/views/statistics/users.php:44
|
1371 |
+
#: inc/custom-post-types/course.php:1301 inc/custom-post-types/course.php:1308
|
1372 |
msgid "Students"
|
1373 |
msgstr ""
|
1374 |
|
1395 |
#: inc/admin/lp-admin-functions.php:774 inc/admin/lp-admin-functions.php:2376
|
1396 |
#: inc/admin/views/statistics/courses.php:46
|
1397 |
#: inc/admin/views/statistics/general.php:60
|
1398 |
+
#: inc/course/abstract-lp-course.php:515 inc/custom-post-types/course.php:1369
|
1399 |
#: inc/order/lp-order-functions.php:560
|
1400 |
msgid "Free"
|
1401 |
msgstr ""
|
1561 |
msgid "Can not create a question"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
+
#: inc/admin/pointers/pointers.php:66 inc/custom-post-types/course.php:493
|
1565 |
#: templates/single-course/curriculum.php:16
|
1566 |
msgid "Course Curriculum"
|
1567 |
msgstr ""
|
1589 |
msgstr ""
|
1590 |
|
1591 |
#: inc/admin/settings/class-lp-settings-courses.php:32
|
1592 |
+
#: inc/custom-post-types/course.php:412
|
1593 |
msgctxt "slug"
|
1594 |
msgid "courses"
|
1595 |
msgstr ""
|
1823 |
|
1824 |
#: inc/admin/settings/class-lp-settings-pages.php:121
|
1825 |
#: inc/admin/sub-menus/statistics.php:52 inc/admin/sub-menus/statistics.php:59
|
1826 |
+
#: inc/custom-post-types/order.php:572 inc/custom-post-types/order.php:573
|
1827 |
+
#: inc/custom-post-types/order.php:577 inc/user/class-lp-profile.php:74
|
1828 |
msgid "Orders"
|
1829 |
msgstr ""
|
1830 |
|
2199 |
msgstr ""
|
2200 |
|
2201 |
#: inc/admin/views/meta-boxes/course/editor.php:62
|
2202 |
+
#: inc/custom-post-types/course.php:1300 inc/custom-post-types/course.php:1307
|
2203 |
msgid "Content"
|
2204 |
msgstr ""
|
2205 |
|
2221 |
#: inc/admin/views/meta-boxes/course/js-template.php:88
|
2222 |
#: inc/admin/views/meta-boxes/quiz/js-template.php:6
|
2223 |
#: inc/admin/views/meta-boxes/quiz/questions.php:36
|
2224 |
+
#: inc/custom-post-types/course.php:404 inc/custom-post-types/lesson.php:97
|
2225 |
+
#: inc/custom-post-types/order.php:579 inc/custom-post-types/question.php:100
|
2226 |
msgid "Add New"
|
2227 |
msgstr ""
|
2228 |
|
2252 |
msgstr ""
|
2253 |
|
2254 |
#: inc/admin/views/meta-boxes/course/loop-item.php:69
|
2255 |
+
#: inc/custom-post-types/course.php:354
|
2256 |
msgid "Are you sure you want to remove this item?"
|
2257 |
msgstr ""
|
2258 |
|
2292 |
msgstr ""
|
2293 |
|
2294 |
#: inc/admin/views/meta-boxes/course/review-log.php:25
|
2295 |
+
#: inc/custom-post-types/course.php:356
|
2296 |
msgid "Your course is pending for reviewing"
|
2297 |
msgstr ""
|
2298 |
|
2303 |
msgstr ""
|
2304 |
|
2305 |
#: inc/admin/views/meta-boxes/course/review-log.php:31
|
2306 |
+
#: inc/custom-post-types/course.php:353
|
2307 |
msgid "Submit for Review"
|
2308 |
msgstr ""
|
2309 |
|
2462 |
msgstr ""
|
2463 |
|
2464 |
#: inc/admin/views/meta-boxes/order/details.php:49
|
2465 |
+
#: inc/custom-post-types/order.php:537
|
2466 |
#, php-format
|
2467 |
msgid "Pay via <strong>%s</strong>"
|
2468 |
msgstr ""
|
2498 |
msgstr ""
|
2499 |
|
2500 |
#: inc/admin/views/meta-boxes/order/details.php:87
|
2501 |
+
#: inc/custom-post-types/order.php:451 templates/cart/form.php:31
|
2502 |
#: templates/cart/form.php:101 templates/checkout/order-received.php:32
|
2503 |
#: templates/checkout/review-order.php:27
|
2504 |
#: templates/checkout/review-order.php:68 templates/order/order-details.php:18
|
2505 |
+
#: templates/order/order-details.php:67 templates/profile/tabs/orders.php:27
|
2506 |
msgid "Total"
|
2507 |
msgstr ""
|
2508 |
|
3060 |
msgstr ""
|
3061 |
|
3062 |
#: inc/admin/views/statistics/orders.php:46
|
3063 |
+
#: inc/custom-post-types/order.php:450
|
3064 |
#: templates/checkout/order-received.php:26
|
3065 |
+
#: templates/profile/tabs/orders.php:25
|
3066 |
msgid "Date"
|
3067 |
msgstr ""
|
3068 |
|
3282 |
msgid "Checkout page is not setup"
|
3283 |
msgstr ""
|
3284 |
|
3285 |
+
#: inc/course/abstract-lp-course.php:389
|
3286 |
msgid "You enrolled"
|
3287 |
msgstr ""
|
3288 |
|
3289 |
+
#: inc/course/abstract-lp-course.php:391
|
3290 |
#, php-format
|
3291 |
msgctxt ""
|
3292 |
msgid "You and one student enrolled"
|
3295 |
msgstr[0] ""
|
3296 |
msgstr[1] ""
|
3297 |
|
3298 |
+
#: inc/course/abstract-lp-course.php:395
|
3299 |
#, php-format
|
3300 |
msgctxt ""
|
3301 |
msgid "One student enrolled"
|
3304 |
msgstr[0] ""
|
3305 |
msgstr[1] ""
|
3306 |
|
3307 |
+
#: inc/course/abstract-lp-course.php:399
|
3308 |
msgid "No student enrolled"
|
3309 |
msgstr ""
|
3310 |
|
3311 |
+
#: inc/course/abstract-lp-course.php:809 inc/course/abstract-lp-course.php:827
|
3312 |
#: inc/lesson/class-lp-lesson.php:120 inc/quiz/class-lp-quiz.php:611
|
3313 |
#, php-format
|
3314 |
msgid "The function %s doesn't exists"
|
3315 |
msgstr ""
|
3316 |
|
3317 |
+
#: inc/course/abstract-lp-course.php:1116
|
3318 |
#, php-format
|
3319 |
msgid "%d of %d items completed"
|
3320 |
msgstr ""
|
3321 |
|
3322 |
+
#: inc/course/abstract-lp-course.php:1119
|
3323 |
+
#: inc/course/abstract-lp-course.php:1121
|
3324 |
#, php-format
|
3325 |
msgid "%d%% completed"
|
3326 |
msgstr ""
|
3327 |
|
3328 |
+
#: inc/course/abstract-lp-course.php:1539
|
3329 |
#, php-format
|
3330 |
msgid "This course will end within %s next"
|
3331 |
msgstr ""
|
3335 |
msgid "Are you sure you want to finish course %s?"
|
3336 |
msgstr ""
|
3337 |
|
3338 |
+
#: inc/course/class-lp-course.php:32 templates/single-course/buttons.php:124
|
3339 |
msgid "Finish course"
|
3340 |
msgstr ""
|
3341 |
|
3392 |
msgid "The course %d does not exists"
|
3393 |
msgstr ""
|
3394 |
|
3395 |
+
#: inc/custom-post-types/abstract.php:414
|
3396 |
#: inc/custom-post-types/abstract.php:417
|
|
|
3397 |
msgid "updated."
|
3398 |
msgstr ""
|
3399 |
|
3400 |
+
#: inc/custom-post-types/abstract.php:415
|
3401 |
msgid "Custom field updated."
|
3402 |
msgstr ""
|
3403 |
|
3404 |
+
#: inc/custom-post-types/abstract.php:416
|
3405 |
msgid "Custom field deleted."
|
3406 |
msgstr ""
|
3407 |
|
3408 |
+
#: inc/custom-post-types/abstract.php:419
|
3409 |
#, php-format
|
3410 |
msgid "Lesson restored to revision from %s"
|
3411 |
msgstr ""
|
3412 |
|
3413 |
+
#: inc/custom-post-types/abstract.php:420
|
3414 |
msgid "published."
|
3415 |
msgstr ""
|
3416 |
|
3417 |
+
#: inc/custom-post-types/abstract.php:421
|
3418 |
msgid "saved."
|
3419 |
msgstr ""
|
3420 |
|
3421 |
+
#: inc/custom-post-types/abstract.php:422
|
3422 |
msgid "submitted."
|
3423 |
msgstr ""
|
3424 |
|
3425 |
+
#: inc/custom-post-types/abstract.php:424
|
3426 |
#, php-format
|
3427 |
msgid "scheduled for: <strong>%1$s</strong>."
|
3428 |
msgstr ""
|
3429 |
|
3430 |
+
#: inc/custom-post-types/abstract.php:426
|
3431 |
msgid "M j, Y @ G:i"
|
3432 |
msgstr ""
|
3433 |
|
3434 |
+
#: inc/custom-post-types/abstract.php:428
|
3435 |
msgid "draft updated."
|
3436 |
msgstr ""
|
3437 |
|
3438 |
+
#: inc/custom-post-types/abstract.php:434
|
3439 |
+
#: inc/custom-post-types/abstract.php:443 inc/custom-post-types/lesson.php:246
|
3440 |
#: inc/custom-post-types/question.php:279 inc/custom-post-types/quiz.php:358
|
3441 |
+
#: templates/profile/tabs/orders.php:49
|
3442 |
msgid "View"
|
3443 |
msgstr ""
|
3444 |
|
3445 |
+
#: inc/custom-post-types/course.php:62
|
3446 |
msgid "Add Lesson"
|
3447 |
msgstr ""
|
3448 |
|
3449 |
+
#: inc/custom-post-types/course.php:67
|
3450 |
msgid "Add Quiz"
|
3451 |
msgstr ""
|
3452 |
|
3453 |
+
#: inc/custom-post-types/course.php:103 inc/custom-post-types/course.php:105
|
3454 |
msgid "Course Categories"
|
3455 |
msgstr ""
|
3456 |
|
3457 |
+
#: inc/custom-post-types/course.php:106 inc/custom-post-types/course.php:107
|
3458 |
msgid "Category"
|
3459 |
msgstr ""
|
3460 |
|
3461 |
+
#: inc/custom-post-types/course.php:108
|
3462 |
msgid "Add New Course Category"
|
3463 |
msgstr ""
|
3464 |
|
3465 |
+
#: inc/custom-post-types/course.php:109
|
3466 |
msgid "All Categories"
|
3467 |
msgstr ""
|
3468 |
|
3469 |
+
#: inc/custom-post-types/course.php:120
|
3470 |
msgctxt "slug"
|
3471 |
msgid "course-category"
|
3472 |
msgstr ""
|
3473 |
|
3474 |
+
#: inc/custom-post-types/course.php:131
|
3475 |
msgid "Course Tags"
|
3476 |
msgstr ""
|
3477 |
|
3478 |
+
#: inc/custom-post-types/course.php:132 inc/custom-post-types/question.php:74
|
3479 |
#: inc/custom-post-types/question.php:75 inc/updates/_update-from-0.9.php:1166
|
3480 |
#: inc/updates/_update-from-0.9.php:1167 inc/updates/_update-from-0.9.php:1168
|
3481 |
#: inc/updates/_update-from-0.9.php:1185 inc/updates/_update-from-0.9.php:1186
|
3482 |
msgid "Tag"
|
3483 |
msgstr ""
|
3484 |
|
3485 |
+
#: inc/custom-post-types/course.php:133
|
3486 |
msgid "Search Course Tags"
|
3487 |
msgstr ""
|
3488 |
|
3489 |
+
#: inc/custom-post-types/course.php:134
|
3490 |
msgid "Popular Course Tags"
|
3491 |
msgstr ""
|
3492 |
|
3493 |
+
#: inc/custom-post-types/course.php:135
|
3494 |
msgid "All Course Tags"
|
3495 |
msgstr ""
|
3496 |
|
3497 |
+
#: inc/custom-post-types/course.php:138
|
3498 |
msgid "Edit Course Tag"
|
3499 |
msgstr ""
|
3500 |
|
3501 |
+
#: inc/custom-post-types/course.php:139
|
3502 |
msgid "Update Course Tag"
|
3503 |
msgstr ""
|
3504 |
|
3505 |
+
#: inc/custom-post-types/course.php:140
|
3506 |
msgid "Add New Course Tag"
|
3507 |
msgstr ""
|
3508 |
|
3509 |
+
#: inc/custom-post-types/course.php:141
|
3510 |
msgid "New Course Tag Name"
|
3511 |
msgstr ""
|
3512 |
|
3513 |
+
#: inc/custom-post-types/course.php:142
|
3514 |
msgid "Separate tags with commas"
|
3515 |
msgstr ""
|
3516 |
|
3517 |
+
#: inc/custom-post-types/course.php:143
|
3518 |
msgid "Add or remove tags"
|
3519 |
msgstr ""
|
3520 |
|
3521 |
+
#: inc/custom-post-types/course.php:144
|
3522 |
msgid "Choose from the most used tags"
|
3523 |
msgstr ""
|
3524 |
|
3525 |
+
#: inc/custom-post-types/course.php:154
|
3526 |
msgctxt "slug"
|
3527 |
msgid "course-tag"
|
3528 |
msgstr ""
|
3529 |
|
3530 |
+
#: inc/custom-post-types/course.php:264
|
3531 |
msgid "Sorry! You can not update a course while it is viewing!"
|
3532 |
msgstr ""
|
3533 |
|
3534 |
+
#: inc/custom-post-types/course.php:300
|
3535 |
msgid "Toggle Course Content"
|
3536 |
msgstr ""
|
3537 |
|
3538 |
+
#: inc/custom-post-types/course.php:317
|
3539 |
msgid "Please enter the title of the course"
|
3540 |
msgstr ""
|
3541 |
|
3542 |
+
#: inc/custom-post-types/course.php:318
|
3543 |
msgid "Please add at least one section for the course"
|
3544 |
msgstr ""
|
3545 |
|
3546 |
+
#: inc/custom-post-types/course.php:319
|
3547 |
msgid "Please enter the title of the section"
|
3548 |
msgstr ""
|
3549 |
|
3550 |
+
#: inc/custom-post-types/course.php:320
|
3551 |
msgid "Please set a price for this course"
|
3552 |
msgstr ""
|
3553 |
|
3554 |
+
#: inc/custom-post-types/course.php:338
|
3555 |
msgid "Do you want to remove this lesson permanently?"
|
3556 |
msgstr ""
|
3557 |
|
3558 |
+
#: inc/custom-post-types/course.php:339
|
3559 |
msgid "Do you want to remove this quiz permanently?"
|
3560 |
msgstr ""
|
3561 |
|
3562 |
+
#: inc/custom-post-types/course.php:340
|
3563 |
msgid "Do you want to remove this section permanently?"
|
3564 |
msgstr ""
|
3565 |
|
3566 |
+
#: inc/custom-post-types/course.php:341
|
3567 |
msgid "New quiz added"
|
3568 |
msgstr ""
|
3569 |
|
3570 |
+
#: inc/custom-post-types/course.php:342
|
3571 |
msgid "New lesson added"
|
3572 |
msgstr ""
|
3573 |
|
3574 |
+
#: inc/custom-post-types/course.php:343
|
3575 |
msgid "New section added"
|
3576 |
msgstr ""
|
3577 |
|
3578 |
+
#: inc/custom-post-types/course.php:344
|
3579 |
msgid "The lesson removed"
|
3580 |
msgstr ""
|
3581 |
|
3582 |
+
#: inc/custom-post-types/course.php:345
|
3583 |
msgid "The quiz removed"
|
3584 |
msgstr ""
|
3585 |
|
3586 |
+
#: inc/custom-post-types/course.php:346
|
3587 |
msgid "The section removed"
|
3588 |
msgstr ""
|
3589 |
|
3590 |
+
#: inc/custom-post-types/course.php:347
|
3591 |
msgid "The ordering completed"
|
3592 |
msgstr ""
|
3593 |
|
3594 |
+
#: inc/custom-post-types/course.php:348
|
3595 |
msgid "Lesson added to section completed!"
|
3596 |
msgstr ""
|
3597 |
|
3598 |
+
#: inc/custom-post-types/course.php:349
|
3599 |
msgid "Quiz added to section completed!"
|
3600 |
msgstr ""
|
3601 |
|
3602 |
+
#: inc/custom-post-types/course.php:350
|
3603 |
#, php-format
|
3604 |
msgid "%s updated"
|
3605 |
msgstr ""
|
3606 |
|
3607 |
+
#: inc/custom-post-types/course.php:351
|
3608 |
msgid "Click to quick edit name"
|
3609 |
msgstr ""
|
3610 |
|
3611 |
+
#: inc/custom-post-types/course.php:352
|
3612 |
msgid "Save Course"
|
3613 |
msgstr ""
|
3614 |
|
3615 |
+
#: inc/custom-post-types/course.php:355
|
3616 |
msgid "You course will become to Pending"
|
3617 |
msgstr ""
|
3618 |
|
3619 |
+
#: inc/custom-post-types/course.php:397
|
3620 |
msgctxt "Post Type General Name"
|
3621 |
msgid "Courses"
|
3622 |
msgstr ""
|
3623 |
|
3624 |
+
#: inc/custom-post-types/course.php:398
|
3625 |
msgctxt "Post Type Singular Name"
|
3626 |
msgid "Course"
|
3627 |
msgstr ""
|
3628 |
|
3629 |
+
#: inc/custom-post-types/course.php:400
|
3630 |
msgid "Parent Item:"
|
3631 |
msgstr ""
|
3632 |
|
3633 |
+
#: inc/custom-post-types/course.php:402
|
3634 |
msgid "View Course"
|
3635 |
msgstr ""
|
3636 |
|
3637 |
+
#: inc/custom-post-types/course.php:403
|
3638 |
msgid "Add New Course"
|
3639 |
msgstr ""
|
3640 |
|
3641 |
+
#: inc/custom-post-types/course.php:405
|
3642 |
msgid "Edit Course"
|
3643 |
msgstr ""
|
3644 |
|
3645 |
+
#: inc/custom-post-types/course.php:406
|
3646 |
msgid "Update Course"
|
3647 |
msgstr ""
|
3648 |
|
3649 |
+
#: inc/custom-post-types/course.php:407
|
3650 |
msgid "Search Courses"
|
3651 |
msgstr ""
|
3652 |
|
3653 |
+
#: inc/custom-post-types/course.php:408
|
3654 |
#, php-format
|
3655 |
msgid ""
|
3656 |
"You have not got any courses yet. Click <a href=\"%s\">Add new</a> to start"
|
3657 |
msgstr ""
|
3658 |
|
3659 |
+
#: inc/custom-post-types/course.php:409
|
3660 |
msgid "No course found in Trash"
|
3661 |
msgstr ""
|
3662 |
|
3663 |
+
#: inc/custom-post-types/course.php:515 inc/custom-post-types/quiz.php:152
|
3664 |
msgid "General Settings"
|
3665 |
msgstr ""
|
3666 |
|
3667 |
+
#: inc/custom-post-types/course.php:520 inc/custom-post-types/lesson.php:209
|
3668 |
#: inc/custom-post-types/quiz.php:178 inc/custom-post-types/quiz.php:327
|
3669 |
msgid "Duration"
|
3670 |
msgstr ""
|
3671 |
|
3672 |
+
#: inc/custom-post-types/course.php:523
|
3673 |
msgid "The duration of the course."
|
3674 |
msgstr ""
|
3675 |
|
3676 |
+
#: inc/custom-post-types/course.php:527
|
3677 |
msgid "Maximum students"
|
3678 |
msgstr ""
|
3679 |
|
3680 |
+
#: inc/custom-post-types/course.php:530
|
3681 |
msgid "Maximum number of students who can enroll in this course."
|
3682 |
msgstr ""
|
3683 |
|
3684 |
+
#: inc/custom-post-types/course.php:534
|
3685 |
msgid "Students enrolled"
|
3686 |
msgstr ""
|
3687 |
|
3688 |
+
#: inc/custom-post-types/course.php:537
|
3689 |
msgid "How many students have taken this course."
|
3690 |
msgstr ""
|
3691 |
|
3692 |
+
#: inc/custom-post-types/course.php:541
|
3693 |
msgid "Re-take course"
|
3694 |
msgstr ""
|
3695 |
|
3696 |
+
#: inc/custom-post-types/course.php:544
|
3697 |
msgid "How many times the user can re-take this course. Set to 0 to disable."
|
3698 |
msgstr ""
|
3699 |
|
3700 |
+
#: inc/custom-post-types/course.php:548
|
3701 |
msgid "Featured"
|
3702 |
msgstr ""
|
3703 |
|
3704 |
+
#: inc/custom-post-types/course.php:551
|
3705 |
msgid "Set course as featured."
|
3706 |
msgstr ""
|
3707 |
|
3708 |
+
#: inc/custom-post-types/course.php:555
|
3709 |
msgid "Block Lessons Content"
|
3710 |
msgstr ""
|
3711 |
|
3712 |
+
#: inc/custom-post-types/course.php:558
|
3713 |
msgid "Block lessons content when course is expired."
|
3714 |
msgstr ""
|
3715 |
|
3716 |
+
#: inc/custom-post-types/course.php:562
|
3717 |
msgid "External link buy course"
|
3718 |
msgstr ""
|
3719 |
|
3720 |
+
#: inc/custom-post-types/course.php:565
|
3721 |
msgid "Redirect to this url when you press button buy this course."
|
3722 |
msgstr ""
|
3723 |
|
3724 |
+
#: inc/custom-post-types/course.php:585
|
3725 |
msgid "Basic Options"
|
3726 |
msgstr ""
|
3727 |
|
3728 |
+
#: inc/custom-post-types/course.php:585
|
3729 |
msgid "Advanced Options"
|
3730 |
msgstr ""
|
3731 |
|
3732 |
+
#: inc/custom-post-types/course.php:588
|
3733 |
msgid "The method to assess the result of a student for a course."
|
3734 |
msgstr ""
|
3735 |
|
3736 |
+
#: inc/custom-post-types/course.php:590
|
3737 |
msgid ""
|
3738 |
"<br /><strong>Note! </strong>No final quiz in course, please add a final quiz"
|
3739 |
msgstr ""
|
3740 |
|
3741 |
+
#: inc/custom-post-types/course.php:594
|
3742 |
msgid "Assessment"
|
3743 |
msgstr ""
|
3744 |
|
3745 |
+
#: inc/custom-post-types/course.php:599
|
3746 |
msgid "Course result"
|
3747 |
msgstr ""
|
3748 |
|
3749 |
+
#: inc/custom-post-types/course.php:604
|
3750 |
msgid "Evaluate lessons"
|
3751 |
msgstr ""
|
3752 |
|
3753 |
+
#: inc/custom-post-types/course.php:604
|
3754 |
msgid "Evaluate by lessons user has completed per total lessons in course."
|
3755 |
msgstr ""
|
3756 |
|
3757 |
+
#: inc/custom-post-types/course.php:605
|
3758 |
msgid "Evaluate results of the final quiz"
|
3759 |
msgstr ""
|
3760 |
|
3761 |
+
#: inc/custom-post-types/course.php:605
|
3762 |
msgid "Evaluate by results of final quiz in course."
|
3763 |
msgstr ""
|
3764 |
|
3765 |
+
#: inc/custom-post-types/course.php:607
|
3766 |
msgid "Evaluate results of quizzes"
|
3767 |
msgstr ""
|
3768 |
|
3769 |
+
#: inc/custom-post-types/course.php:607
|
3770 |
msgid "Evaluate by achieved points per total point of all quizzes."
|
3771 |
msgstr ""
|
3772 |
|
3773 |
+
#: inc/custom-post-types/course.php:608
|
3774 |
msgid "Evaluate results of quizzes passed"
|
3775 |
msgstr ""
|
3776 |
|
3777 |
+
#: inc/custom-post-types/course.php:608
|
3778 |
msgid ""
|
3779 |
"Evaluate by achieved points of passed course per total point of all quizzes."
|
3780 |
msgstr ""
|
3781 |
|
3782 |
+
#: inc/custom-post-types/course.php:609
|
3783 |
msgid "Evaluate quizzes"
|
3784 |
msgstr ""
|
3785 |
|
3786 |
+
#: inc/custom-post-types/course.php:609
|
3787 |
msgid "Evaluate by quizzes user has completed per total quizzes."
|
3788 |
msgstr ""
|
3789 |
|
3790 |
+
#: inc/custom-post-types/course.php:615
|
3791 |
msgid "Passing condition value"
|
3792 |
msgstr ""
|
3793 |
|
3794 |
+
#: inc/custom-post-types/course.php:620
|
3795 |
msgid ""
|
3796 |
"The percentage of quiz result or lessons completed to finish the course."
|
3797 |
msgstr ""
|
3798 |
|
3799 |
+
#: inc/custom-post-types/course.php:641
|
3800 |
msgid "Payment Settings"
|
3801 |
msgstr ""
|
3802 |
|
3803 |
+
#: inc/custom-post-types/course.php:646
|
3804 |
msgid "Course payment"
|
3805 |
msgstr ""
|
3806 |
|
3807 |
+
#: inc/custom-post-types/course.php:676
|
3808 |
#, php-format
|
3809 |
msgid ""
|
3810 |
"This course is requires enrollment and the suggested price is <strong>%s</"
|
3811 |
"strong>"
|
3812 |
msgstr ""
|
3813 |
|
3814 |
+
#: inc/custom-post-types/course.php:684
|
3815 |
msgid "This course is free."
|
3816 |
msgstr ""
|
3817 |
|
3818 |
+
#: inc/custom-post-types/course.php:690 inc/custom-post-types/course.php:1302
|
3819 |
+
#: inc/custom-post-types/course.php:1309 templates/cart/form.php:30
|
3820 |
#: templates/emails/order-items-table.php:21
|
3821 |
msgid "Price"
|
3822 |
msgstr ""
|
3823 |
|
3824 |
+
#: inc/custom-post-types/course.php:700
|
3825 |
msgid "Sale Price"
|
3826 |
msgstr ""
|
3827 |
|
3828 |
+
#: inc/custom-post-types/course.php:705
|
3829 |
msgid "Leave blank to remove sale price."
|
3830 |
msgstr ""
|
3831 |
|
3832 |
+
#: inc/custom-post-types/course.php:705
|
3833 |
msgid "Schedule"
|
3834 |
msgstr ""
|
3835 |
|
3836 |
+
#: inc/custom-post-types/course.php:710
|
3837 |
msgid "Sale start date"
|
3838 |
msgstr ""
|
3839 |
|
3840 |
+
#: inc/custom-post-types/course.php:717
|
3841 |
msgid "Sale end date"
|
3842 |
msgstr ""
|
3843 |
|
3844 |
+
#: inc/custom-post-types/course.php:728
|
3845 |
msgid "Price set by Admin"
|
3846 |
msgstr ""
|
3847 |
|
3848 |
+
#: inc/custom-post-types/course.php:732
|
3849 |
msgid "Not set"
|
3850 |
msgstr ""
|
3851 |
|
3852 |
+
#: inc/custom-post-types/course.php:735
|
3853 |
msgid "Course Suggestion Price"
|
3854 |
msgstr ""
|
3855 |
|
3856 |
+
#: inc/custom-post-types/course.php:740
|
3857 |
msgid "The course price you want to suggest for admin to set."
|
3858 |
msgstr ""
|
3859 |
|
3860 |
+
#: inc/custom-post-types/course.php:750
|
3861 |
msgid "Requires enroll"
|
3862 |
msgstr ""
|
3863 |
|
3864 |
+
#: inc/custom-post-types/course.php:753
|
3865 |
msgid "Require users logged in to study or public to all."
|
3866 |
msgstr ""
|
3867 |
|
3868 |
+
#: inc/custom-post-types/course.php:792
|
3869 |
msgid "Author Settings"
|
3870 |
msgstr ""
|
3871 |
|
3872 |
+
#: inc/custom-post-types/course.php:797 inc/custom-post-types/course.php:1299
|
3873 |
+
#: inc/custom-post-types/course.php:1306 inc/custom-post-types/lesson.php:204
|
3874 |
#: inc/custom-post-types/question.php:243 inc/custom-post-types/quiz.php:324
|
3875 |
msgid "Author"
|
3876 |
msgstr ""
|
3877 |
|
3878 |
+
#: inc/custom-post-types/course.php:820
|
3879 |
msgid "Review Logs"
|
3880 |
msgstr ""
|
3881 |
|
3882 |
+
#: inc/custom-post-types/course.php:971
|
3883 |
msgid "Course Curriculum only appear if course is saved"
|
3884 |
msgstr ""
|
3885 |
|
3886 |
+
#: inc/custom-post-types/course.php:1136
|
3887 |
msgid "Course has approved by Reviewer"
|
3888 |
msgstr ""
|
3889 |
|
3890 |
+
#: inc/custom-post-types/course.php:1141
|
3891 |
msgid "Course has rejected by Reviewer"
|
3892 |
msgstr ""
|
3893 |
|
3894 |
+
#: inc/custom-post-types/course.php:1146
|
3895 |
#, php-format
|
3896 |
msgid "Course has submitted by %s"
|
3897 |
msgstr ""
|
3898 |
|
3899 |
+
#: inc/custom-post-types/course.php:1151
|
3900 |
msgid "Course has updated by Reviewer"
|
3901 |
msgstr ""
|
3902 |
|
3903 |
+
#: inc/custom-post-types/course.php:1344
|
3904 |
#, php-format
|
3905 |
msgctxt "learnpress"
|
3906 |
msgid "%d section"
|
3908 |
msgstr[0] ""
|
3909 |
msgstr[1] ""
|
3910 |
|
3911 |
+
#: inc/custom-post-types/course.php:1347
|
3912 |
#, php-format
|
3913 |
msgctxt "learnpress"
|
3914 |
msgid "%d lesson"
|
3916 |
msgstr[0] ""
|
3917 |
msgstr[1] ""
|
3918 |
|
3919 |
+
#: inc/custom-post-types/course.php:1349
|
3920 |
msgid "0 lesson"
|
3921 |
msgstr ""
|
3922 |
|
3923 |
+
#: inc/custom-post-types/course.php:1353
|
3924 |
#, php-format
|
3925 |
msgctxt "learnpress"
|
3926 |
msgid "%d quiz"
|
3928 |
msgstr[0] ""
|
3929 |
msgstr[1] ""
|
3930 |
|
3931 |
+
#: inc/custom-post-types/course.php:1355
|
3932 |
msgid "0 quiz"
|
3933 |
msgstr ""
|
3934 |
|
3935 |
+
#: inc/custom-post-types/course.php:1360
|
3936 |
msgid "No content"
|
3937 |
msgstr ""
|
3938 |
|
3939 |
+
#: inc/custom-post-types/course.php:1523
|
3940 |
msgid "Course Video"
|
3941 |
msgstr ""
|
3942 |
|
3943 |
+
#: inc/custom-post-types/course.php:1528
|
3944 |
msgid "Video ID"
|
3945 |
msgstr ""
|
3946 |
|
3947 |
+
#: inc/custom-post-types/course.php:1531
|
3948 |
msgid "The id of Youtube or Vimeo video"
|
3949 |
msgstr ""
|
3950 |
|
3951 |
+
#: inc/custom-post-types/course.php:1535
|
3952 |
msgid "Video Type"
|
3953 |
msgstr ""
|
3954 |
|
3955 |
+
#: inc/custom-post-types/course.php:1538
|
3956 |
msgid "Chose video type"
|
3957 |
msgstr ""
|
3958 |
|
3959 |
+
#: inc/custom-post-types/course.php:1541
|
3960 |
msgid "Youtube"
|
3961 |
msgstr ""
|
3962 |
|
3963 |
+
#: inc/custom-post-types/course.php:1542
|
3964 |
msgid "Vimeo"
|
3965 |
msgstr ""
|
3966 |
|
3967 |
+
#: inc/custom-post-types/course.php:1546
|
3968 |
msgid "Embed width"
|
3969 |
msgstr ""
|
3970 |
|
3971 |
+
#: inc/custom-post-types/course.php:1549
|
3972 |
msgid "Set width of embed"
|
3973 |
msgstr ""
|
3974 |
|
3975 |
+
#: inc/custom-post-types/course.php:1553
|
3976 |
msgid "Embed height"
|
3977 |
msgstr ""
|
3978 |
|
3979 |
+
#: inc/custom-post-types/course.php:1556
|
3980 |
msgid "Set height of embed"
|
3981 |
msgstr ""
|
3982 |
|
4063 |
msgid "Standard"
|
4064 |
msgstr ""
|
4065 |
|
4066 |
+
#: inc/custom-post-types/order.php:231 inc/order/lp-order-functions.php:37
|
4067 |
msgid "Order on"
|
4068 |
msgstr ""
|
4069 |
|
4070 |
+
#: inc/custom-post-types/order.php:253
|
4071 |
msgid "Order number, user name, user email, course name etc..."
|
4072 |
msgstr ""
|
4073 |
|
4074 |
+
#: inc/custom-post-types/order.php:331
|
4075 |
msgid "Processing..."
|
4076 |
msgstr ""
|
4077 |
|
4078 |
+
#: inc/custom-post-types/order.php:348 inc/custom-post-types/order.php:351
|
4079 |
msgid "Apply"
|
4080 |
msgstr ""
|
4081 |
|
4082 |
+
#: inc/custom-post-types/order.php:379 inc/custom-post-types/order.php:578
|
4083 |
msgid "View Order"
|
4084 |
msgstr ""
|
4085 |
|
4086 |
+
#: inc/custom-post-types/order.php:447 inc/custom-post-types/order.php:574
|
4087 |
+
#: templates/profile/tabs/orders.php:24
|
4088 |
msgid "Order"
|
4089 |
msgstr ""
|
4090 |
|
4091 |
+
#: inc/custom-post-types/order.php:448
|
4092 |
msgid "Student"
|
4093 |
msgstr ""
|
4094 |
|
4095 |
+
#: inc/custom-post-types/order.php:452 templates/profile/tabs/orders.php:26
|
4096 |
+
msgid "Status"
|
4097 |
+
msgstr ""
|
4098 |
+
|
4099 |
+
#: inc/custom-post-types/order.php:525
|
4100 |
msgid "Course does not exist"
|
4101 |
msgstr ""
|
4102 |
|
4103 |
+
#: inc/custom-post-types/order.php:575
|
4104 |
msgid "Add New Order"
|
4105 |
msgstr ""
|
4106 |
|
4107 |
+
#: inc/custom-post-types/order.php:576 inc/custom-post-types/order.php:668
|
4108 |
#: templates/order/order-details.php:13
|
4109 |
msgid "Order Details"
|
4110 |
msgstr ""
|
4111 |
|
4112 |
+
#: inc/custom-post-types/order.php:580
|
4113 |
msgid "Update Order"
|
4114 |
msgstr ""
|
4115 |
|
4116 |
+
#: inc/custom-post-types/order.php:581
|
4117 |
msgid "Search Orders"
|
4118 |
msgstr ""
|
4119 |
|
4120 |
+
#: inc/custom-post-types/order.php:582
|
4121 |
msgid "No order found"
|
4122 |
msgstr ""
|
4123 |
|
4124 |
+
#: inc/custom-post-types/order.php:583
|
4125 |
msgid "No order found in Trash"
|
4126 |
msgstr ""
|
4127 |
|
4128 |
+
#: inc/custom-post-types/order.php:669
|
4129 |
msgid "Order Actions"
|
4130 |
msgstr ""
|
4131 |
|
4851 |
msgid "question-tag"
|
4852 |
msgstr ""
|
4853 |
|
4854 |
+
#: inc/user/abstract-lp-user.php:219
|
4855 |
msgid "Create quiz history need pass course ID"
|
4856 |
msgstr ""
|
4857 |
|
4858 |
+
#: inc/user/abstract-lp-user.php:1149 inc/user/abstract-lp-user.php:1488
|
4859 |
+
#: inc/user/abstract-lp-user.php:1500
|
4860 |
#, php-format
|
4861 |
msgid "The role %s for user doesn't exists"
|
4862 |
msgstr ""
|
4863 |
|
4864 |
+
#: inc/user/abstract-lp-user.php:1923
|
4865 |
msgid "You have already completed this lesson"
|
4866 |
msgstr ""
|
4867 |
|
4869 |
msgid "Every 3 Minutes"
|
4870 |
msgstr ""
|
4871 |
|
4872 |
+
#: inc/user/lp-user-functions.php:89
|
4873 |
msgctxt "User role"
|
4874 |
msgid "Instructor"
|
4875 |
msgstr ""
|
4876 |
|
4877 |
+
#: inc/user/lp-user-functions.php:335
|
4878 |
msgid "Want to be an instructor?"
|
4879 |
msgstr ""
|
4880 |
|
4881 |
+
#: inc/user/lp-user-functions.php:649
|
4882 |
msgid "Only"
|
4883 |
msgstr ""
|
4884 |
|
4885 |
+
#: inc/user/lp-user-functions.php:649
|
4886 |
msgid "images accepted for upload"
|
4887 |
msgstr ""
|
4888 |
|
4889 |
+
#: inc/user/lp-user-functions.php:658
|
4890 |
msgid "Images must be under"
|
4891 |
msgstr ""
|
4892 |
|
4893 |
+
#: inc/user/lp-user-functions.php:658
|
4894 |
msgid "MB in size"
|
4895 |
msgstr ""
|
4896 |
|
4897 |
+
#: inc/user/lp-user-functions.php:666
|
4898 |
msgid "Please select an image for upload"
|
4899 |
msgstr ""
|
4900 |
|
4901 |
+
#: inc/user/lp-user-functions.php:695
|
4902 |
msgid "Image is uploaded success"
|
4903 |
msgstr ""
|
4904 |
|
4905 |
+
#: inc/user/lp-user-functions.php:695
|
4906 |
msgid "Error on upload image"
|
4907 |
msgstr ""
|
4908 |
|
4909 |
+
#: inc/user/lp-user-functions.php:721 inc/user/lp-user-functions.php:752
|
4910 |
+
#: inc/user/lp-user-functions.php:768 inc/user/lp-user-functions.php:775
|
4911 |
msgid "Thumbnail of image profile not created"
|
4912 |
msgstr ""
|
4913 |
|
4914 |
+
#: inc/user/lp-user-functions.php:739
|
4915 |
msgid "Error on crop user picture profile "
|
4916 |
msgstr ""
|
4917 |
|
4918 |
+
#: inc/user/lp-user-functions.php:794
|
4919 |
msgid "Profile picture is changed"
|
4920 |
msgstr ""
|
4921 |
|
4922 |
+
#: inc/user/lp-user-functions.php:838 inc/user/lp-user-functions.php:1290
|
4923 |
msgid "Old password incorrect!"
|
4924 |
msgstr ""
|
4925 |
|
4926 |
+
#: inc/user/lp-user-functions.php:852 inc/user/lp-user-functions.php:1296
|
4927 |
msgid "Confirmation password incorrect!"
|
4928 |
msgstr ""
|
4929 |
|
4930 |
+
#: inc/user/lp-user-functions.php:871 inc/user/lp-user-functions.php:1259
|
4931 |
msgid "Your change is saved"
|
4932 |
msgstr ""
|
4933 |
|
4934 |
+
#: inc/user/lp-user-functions.php:879 inc/user/lp-user-functions.php:1261
|
4935 |
msgid "Error on update your profile info"
|
4936 |
msgstr ""
|
4937 |
|
4938 |
+
#: inc/user/lp-user-functions.php:994
|
4939 |
msgid "Please login to enroll this course"
|
4940 |
msgstr ""
|
4941 |
|
4942 |
+
#: inc/user/lp-user-functions.php:1013
|
4943 |
msgid "You have already finished course"
|
4944 |
msgstr ""
|
4945 |
|
4946 |
+
#: inc/user/lp-user-functions.php:1016
|
4947 |
msgid "You have already enrolled in this course"
|
4948 |
msgstr ""
|
4949 |
|
4950 |
+
#: inc/user/lp-user-functions.php:1237
|
4951 |
msgid "Your avatar updated"
|
4952 |
msgstr ""
|
4953 |
|
4954 |
+
#: inc/user/lp-user-functions.php:1303
|
4955 |
msgid "Your password updated"
|
4956 |
msgstr ""
|
4957 |
|
4958 |
+
#: inc/user/lp-user-functions.php:1305
|
4959 |
msgid "Change your password failed"
|
4960 |
msgstr ""
|
4961 |
|
5099 |
msgid "%d lesson"
|
5100 |
msgstr ""
|
5101 |
|
5102 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py:50
|
5103 |
+
msgid "\n"
|
5104 |
+
msgstr ""
|
5105 |
+
|
5106 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py:83
|
5107 |
+
#, python-format
|
5108 |
+
msgid " %s=\"%s\""
|
5109 |
+
msgstr ""
|
5110 |
+
|
5111 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py:100
|
5112 |
+
#, python-format
|
5113 |
+
msgid "</%s>%s"
|
5114 |
+
msgstr ""
|
5115 |
+
|
5116 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py:102
|
5117 |
+
#, python-format
|
5118 |
+
msgid "/>%s"
|
5119 |
+
msgstr ""
|
5120 |
+
|
5121 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/input.py:1832
|
5122 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/input.py:1893
|
5123 |
+
#, python-format
|
5124 |
+
msgid "Cycle: %s"
|
5125 |
+
msgstr ""
|
5126 |
+
|
5127 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:358
|
5128 |
+
msgid "_MBCS"
|
5129 |
+
msgstr ""
|
5130 |
+
|
5131 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:423
|
5132 |
+
msgid "/safeseh"
|
5133 |
+
msgstr ""
|
5134 |
+
|
5135 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:473
|
5136 |
+
msgid "/FS"
|
5137 |
+
msgstr ""
|
5138 |
+
|
5139 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:543
|
5140 |
+
#, python-format
|
5141 |
+
msgid "/DEF:\"%s\""
|
5142 |
+
msgstr ""
|
5143 |
+
|
5144 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:575
|
5145 |
+
msgid "/OUT:"
|
5146 |
+
msgstr ""
|
5147 |
+
|
5148 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:578
|
5149 |
+
msgid "/PDB:"
|
5150 |
+
msgstr ""
|
5151 |
+
|
5152 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:581
|
5153 |
+
msgid "/PGD:"
|
5154 |
+
msgstr ""
|
5155 |
+
|
5156 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:604
|
5157 |
+
#, python-format
|
5158 |
+
msgid "/STACK:%s%s"
|
5159 |
+
msgstr ""
|
5160 |
+
|
5161 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:643
|
5162 |
+
msgid "/DYNAMICBASE"
|
5163 |
+
msgstr ""
|
5164 |
+
|
5165 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:650
|
5166 |
+
msgid "/NXCOMPAT"
|
5167 |
+
msgstr ""
|
5168 |
+
|
5169 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:692
|
5170 |
+
msgid "/MANIFESTUAC:NO"
|
5171 |
+
msgstr ""
|
5172 |
+
|
5173 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:740
|
5174 |
+
msgid "/ALLOWISOLATION"
|
5175 |
+
msgstr ""
|
5176 |
+
|
5177 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py:785
|
5178 |
+
msgid "/I"
|
5179 |
+
msgstr ""
|
5180 |
+
|
5181 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py:72
|
5182 |
+
msgid "|"
|
5183 |
+
msgstr ""
|
5184 |
+
|
5185 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py:76
|
5186 |
+
msgid "||"
|
5187 |
+
msgstr ""
|
5188 |
+
|
5189 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py:276
|
5190 |
+
#, python-format
|
5191 |
+
msgid "\\U%04x"
|
5192 |
+
msgstr ""
|
5193 |
+
|
5194 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py:988
|
5195 |
+
msgid ".name"
|
5196 |
+
msgstr ""
|
5197 |
+
|
5198 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py:999
|
5199 |
+
msgid ".path"
|
5200 |
+
msgstr ""
|
5201 |
+
|
5202 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py:1066
|
5203 |
+
msgid "$("
|
5204 |
+
msgstr ""
|
5205 |
+
|
5206 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:478
|
5207 |
+
#, python-format
|
5208 |
+
msgid "-isysroot %s"
|
5209 |
+
msgstr ""
|
5210 |
+
|
5211 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:481
|
5212 |
+
msgid "-Wconstant-conversion"
|
5213 |
+
msgstr ""
|
5214 |
+
|
5215 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:484
|
5216 |
+
msgid "-funsigned-char"
|
5217 |
+
msgstr ""
|
5218 |
+
|
5219 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:487
|
5220 |
+
msgid "-fasm-blocks"
|
5221 |
+
msgstr ""
|
5222 |
+
|
5223 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:491
|
5224 |
+
msgid "-mdynamic-no-pic"
|
5225 |
+
msgstr ""
|
5226 |
+
|
5227 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:499
|
5228 |
+
msgid "-mpascal-strings"
|
5229 |
+
msgstr ""
|
5230 |
+
|
5231 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:506
|
5232 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:510
|
5233 |
+
msgid "-gdwarf-2"
|
5234 |
+
msgstr ""
|
5235 |
+
|
5236 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:515
|
5237 |
+
msgid "-fstrict-aliasing"
|
5238 |
+
msgstr ""
|
5239 |
+
|
5240 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:517
|
5241 |
+
msgid "-fno-strict-aliasing"
|
5242 |
+
msgstr ""
|
5243 |
+
|
5244 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:520
|
5245 |
+
msgid "-fvisibility=hidden"
|
5246 |
+
msgstr ""
|
5247 |
+
|
5248 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:523
|
5249 |
+
msgid "-Werror"
|
5250 |
+
msgstr ""
|
5251 |
+
|
5252 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:526
|
5253 |
+
msgid "-Wnewline-eof"
|
5254 |
+
msgstr ""
|
5255 |
+
|
5256 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:533
|
5257 |
+
msgid "-flto"
|
5258 |
+
msgstr ""
|
5259 |
+
|
5260 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:556
|
5261 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:814
|
5262 |
+
msgid "-arch "
|
5263 |
+
msgstr ""
|
5264 |
+
|
5265 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:560
|
5266 |
+
msgid "-msse3"
|
5267 |
+
msgstr ""
|
5268 |
+
|
5269 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:563
|
5270 |
+
msgid "-mssse3"
|
5271 |
+
msgstr ""
|
5272 |
+
|
5273 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:565
|
5274 |
+
msgid "-msse4.1"
|
5275 |
+
msgstr ""
|
5276 |
+
|
5277 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:567
|
5278 |
+
msgid "-msse4.2"
|
5279 |
+
msgstr ""
|
5280 |
+
|
5281 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:578
|
5282 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:832
|
5283 |
+
msgid "-F"
|
5284 |
+
msgstr ""
|
5285 |
+
|
5286 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:588
|
5287 |
+
msgid "-ansi"
|
5288 |
+
msgstr ""
|
5289 |
+
|
5290 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:605
|
5291 |
+
#, python-format
|
5292 |
+
msgid "-std=%s"
|
5293 |
+
msgstr ""
|
5294 |
+
|
5295 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:610
|
5296 |
+
msgid "-fno-rtti"
|
5297 |
+
msgstr ""
|
5298 |
+
|
5299 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:612
|
5300 |
+
msgid "-fno-exceptions"
|
5301 |
+
msgstr ""
|
5302 |
+
|
5303 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:614
|
5304 |
+
msgid "-fvisibility-inlines-hidden"
|
5305 |
+
msgstr ""
|
5306 |
+
|
5307 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:616
|
5308 |
+
msgid "-fno-threadsafe-statics"
|
5309 |
+
msgstr ""
|
5310 |
+
|
5311 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:619
|
5312 |
+
msgid "-Wno-invalid-offsetof"
|
5313 |
+
msgstr ""
|
5314 |
+
|
5315 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:639
|
5316 |
+
msgid "-fobjc-gc"
|
5317 |
+
msgstr ""
|
5318 |
+
|
5319 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:641
|
5320 |
+
msgid "-fobjc-gc-only"
|
5321 |
+
msgstr ""
|
5322 |
+
|
5323 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:645
|
5324 |
+
msgid "-fobjc-arc"
|
5325 |
+
msgstr ""
|
5326 |
+
|
5327 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:650
|
5328 |
+
msgid "-Wobjc-missing-property-synthesis"
|
5329 |
+
msgstr ""
|
5330 |
+
|
5331 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:670
|
5332 |
+
msgid "-fobjc-call-cxx-cdtors"
|
5333 |
+
msgstr ""
|
5334 |
+
|
5335 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:782
|
5336 |
+
msgid "-Wl,-dead_strip"
|
5337 |
+
msgstr ""
|
5338 |
+
|
5339 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:785
|
5340 |
+
msgid "-Wl,-prebind"
|
5341 |
+
msgstr ""
|
5342 |
+
|
5343 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:795
|
5344 |
+
msgid "-isysroot "
|
5345 |
+
msgstr ""
|
5346 |
+
|
5347 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:798
|
5348 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:817
|
5349 |
+
msgid "-L"
|
5350 |
+
msgstr ""
|
5351 |
+
|
5352 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:801
|
5353 |
+
msgid "-Wl,-order_file "
|
5354 |
+
msgstr ""
|
5355 |
+
|
5356 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:821
|
5357 |
+
msgid "-install_name "
|
5358 |
+
msgstr ""
|
5359 |
+
|
5360 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:824
|
5361 |
+
msgid "-Wl,-rpath,"
|
5362 |
+
msgstr ""
|
5363 |
+
|
5364 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:840
|
5365 |
+
msgid "-lpkstart"
|
5366 |
+
msgstr ""
|
5367 |
+
|
5368 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:843
|
5369 |
+
msgid "/System/Library/PrivateFrameworks/PlugInKit.framework/PlugInKit"
|
5370 |
+
msgstr ""
|
5371 |
+
|
5372 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:844
|
5373 |
+
msgid "-fapplication-extension"
|
5374 |
+
msgstr ""
|
5375 |
+
|
5376 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:845
|
5377 |
+
msgid "-Xlinker -rpath -Xlinker @executable_path/../../Frameworks"
|
5378 |
+
msgstr ""
|
5379 |
+
|
5380 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:937
|
5381 |
+
#, python-format
|
5382 |
+
msgid "echo STRIP\\(%s\\)"
|
5383 |
+
msgstr ""
|
5384 |
+
|
5385 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:938
|
5386 |
+
#, python-format
|
5387 |
+
msgid "strip %s %s"
|
5388 |
+
msgstr ""
|
5389 |
+
|
5390 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:956
|
5391 |
+
#, python-format
|
5392 |
+
msgid "echo DSYMUTIL\\(%s\\)"
|
5393 |
+
msgstr ""
|
5394 |
+
|
5395 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:957
|
5396 |
+
#, python-format
|
5397 |
+
msgid "dsymutil %s -o %s"
|
5398 |
+
msgstr ""
|
5399 |
+
|
5400 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py:1594
|
5401 |
+
#, python-format
|
5402 |
+
msgid "echo POSTBUILD\\(%s\\) %s"
|
5403 |
+
msgstr ""
|
5404 |
+
|
5405 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/__init__.py:364
|
5406 |
+
msgid "USERPROFILE"
|
5407 |
+
msgstr ""
|
5408 |
+
|
5409 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py:663
|
5410 |
+
msgid "all"
|
5411 |
+
msgstr ""
|
5412 |
+
|
5413 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/android.py:450
|
5414 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/make.py:955
|
5415 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/make.py:1081
|
5416 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/make.py:1123
|
5417 |
+
#, python-format
|
5418 |
+
msgid "$(%s)"
|
5419 |
+
msgstr ""
|
5420 |
+
|
5421 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py:376
|
5422 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py:377
|
5423 |
+
msgid "${"
|
5424 |
+
msgstr ""
|
5425 |
+
|
5426 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py:223
|
5427 |
+
msgid "1"
|
5428 |
+
msgstr ""
|
5429 |
+
|
5430 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/make.py:1252
|
5431 |
+
msgid "$(OBJS)"
|
5432 |
+
msgstr ""
|
5433 |
+
|
5434 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/make.py:1471
|
5435 |
+
#, python-format
|
5436 |
+
msgid "-Wl,-rpath=\\$$ORIGIN/lib.%s/"
|
5437 |
+
msgstr ""
|
5438 |
+
|
5439 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/make.py:1472
|
5440 |
+
#, python-format
|
5441 |
+
msgid "-Wl,-rpath-link=\\$(builddir)/lib.%s/"
|
5442 |
+
msgstr ""
|
5443 |
+
|
5444 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/make.py:1500
|
5445 |
+
msgid "$(TARGET_POSTBUILDS_$(BUILDTYPE))"
|
5446 |
+
msgstr ""
|
5447 |
+
|
5448 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/make.py:1961
|
5449 |
+
msgid "BUILDTYPE="
|
5450 |
+
msgstr ""
|
5451 |
+
|
5452 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py:2946
|
5453 |
+
msgid "Label"
|
5454 |
+
msgstr ""
|
5455 |
+
|
5456 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py:3109
|
5457 |
+
#, python-format
|
5458 |
+
msgid "%%(%s)"
|
5459 |
+
msgstr ""
|
5460 |
+
|
5461 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py:1181
|
5462 |
+
#, python-format
|
5463 |
+
msgid "-Wl,-rpath=\\$$ORIGIN/%s"
|
5464 |
+
msgstr ""
|
5465 |
+
|
5466 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py:1182
|
5467 |
+
#, python-format
|
5468 |
+
msgid "-Wl,-rpath-link=%s"
|
5469 |
+
msgstr ""
|
5470 |
+
|
5471 |
+
#: node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py:1415
|
5472 |
+
#, python-format
|
5473 |
+
msgid "export %s=%s;"
|
5474 |
+
msgstr ""
|
5475 |
+
|
5476 |
#: templates/search-form.php:18
|
5477 |
msgid "Search course..."
|
5478 |
msgstr ""
|
5499 |
msgid "Logged in as <a href=\"%1$s\">%2$s</a>."
|
5500 |
msgstr ""
|
5501 |
|
5502 |
+
#: templates/checkout/form-logged-in.php:28
|
5503 |
msgid "Log out of this account"
|
5504 |
msgstr ""
|
5505 |
|
5506 |
+
#: templates/checkout/form-logged-in.php:28
|
5507 |
msgid "Log out »"
|
5508 |
msgstr ""
|
5509 |
|
5605 |
msgstr ""
|
5606 |
|
5607 |
#: templates/content-quiz/buttons.php:58
|
5608 |
+
#: templates/single-course/buttons.php:22
|
5609 |
+
#: templates/single-course/buttons.php:90
|
5610 |
msgid "Retake"
|
5611 |
msgstr ""
|
5612 |
|
5809 |
msgid "Update"
|
5810 |
msgstr ""
|
5811 |
|
5812 |
+
#: templates/profile/tabs/orders.php:28
|
|
|
|
|
|
|
|
|
5813 |
msgid "Action"
|
5814 |
msgstr ""
|
5815 |
|
5816 |
+
#: templates/profile/tabs/orders.php:71 templates/profile/tabs/orders.php:75
|
5817 |
msgid "You have not got any orders yet!"
|
5818 |
msgstr ""
|
5819 |
|
5871 |
msgstr ""
|
5872 |
|
5873 |
#: templates/single-course/buttons.php:20
|
5874 |
+
#: templates/single-course/buttons.php:42
|
5875 |
+
#: templates/single-course/buttons.php:70
|
5876 |
+
#: templates/single-course/buttons.php:88
|
5877 |
msgid "Buy this course"
|
5878 |
msgstr ""
|
5879 |
|
5880 |
+
#: templates/single-course/buttons.php:21
|
5881 |
+
#: templates/single-course/buttons.php:89
|
5882 |
msgid "Enroll"
|
5883 |
msgstr ""
|
5884 |
|
5885 |
+
#: templates/single-course/buttons.php:23
|
5886 |
+
#: templates/single-course/buttons.php:91
|
5887 |
msgid ""
|
5888 |
+
"The class is full so enrollment is closed. Please contact the site admin."
|
5889 |
msgstr ""
|
5890 |
|
5891 |
+
#: templates/single-course/buttons.php:102
|
5892 |
#, php-format
|
5893 |
msgid "Retake course (+%d)"
|
5894 |
msgstr ""
|
5895 |
|
5896 |
+
#: templates/single-course/buttons.php:169
|
5897 |
msgid "Your order is processing. Please wait for approval."
|
5898 |
msgstr ""
|
5899 |
|
5900 |
+
#: templates/single-course/buttons.php:171
|
5901 |
msgid "Sorry, you can not purchase this course"
|
5902 |
msgstr ""
|
5903 |
|
5904 |
+
#: templates/single-course/content-item-lp_lesson.php:79
|
5905 |
msgid "Complete"
|
5906 |
msgstr ""
|
5907 |
|
5994 |
msgid "Viewed"
|
5995 |
msgstr ""
|
5996 |
|
5997 |
+
#: templates/single-course/section/title.php:29
|
5998 |
#, php-format
|
5999 |
msgid "%d/%d"
|
6000 |
msgstr ""
|
learnpress.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: LearnPress
|
|
4 |
Plugin URI: http://thimpress.com/learnpress
|
5 |
Description: LearnPress is a WordPress complete solution for creating a Learning Management System (LMS). It can help you to create courses, lessons and quizzes.
|
6 |
Author: ThimPress
|
7 |
-
Version: 2.1.
|
8 |
Author URI: http://thimpress.com
|
9 |
Requires at least: 3.8
|
10 |
Tested up to: 4.8
|
@@ -17,12 +17,19 @@ Domain Path: /languages/
|
|
17 |
*/
|
18 |
defined( 'ABSPATH' ) || exit;
|
19 |
|
20 |
-
if ( !defined( 'LP_PLUGIN_FILE' ) ) {
|
21 |
define( 'LP_PLUGIN_FILE', __FILE__ );
|
22 |
require_once dirname( __FILE__ ) . '/inc/lp-constants.php';
|
23 |
}
|
24 |
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
/**
|
28 |
* Class LearnPress
|
@@ -148,16 +155,17 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
148 |
break;
|
149 |
default:
|
150 |
if ( strpos( $key, 'tbl_' ) === 0 ) {
|
151 |
-
$return = $this->_table_prefixes[$key];
|
152 |
}
|
153 |
}
|
|
|
154 |
return $return;
|
155 |
}
|
156 |
|
157 |
public function set_object( $name, $object, $global = false ) {
|
158 |
$this->{$name} = $object;
|
159 |
if ( $global ) {
|
160 |
-
$GLOBALS[$name] = $object;
|
161 |
}
|
162 |
}
|
163 |
|
@@ -171,9 +179,10 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
171 |
* @author
|
172 |
*/
|
173 |
public static function instance() {
|
174 |
-
if ( !self::$_instance ) {
|
175 |
self::$_instance = new self();
|
176 |
}
|
|
|
177 |
return self::$_instance;
|
178 |
}
|
179 |
|
@@ -195,8 +204,8 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
195 |
'review_logs'
|
196 |
);
|
197 |
foreach ( $tables as $short_name ) {
|
198 |
-
$table_name
|
199 |
-
$this->_table_prefixes['tbl_' . $short_name] = $table_name;
|
200 |
|
201 |
$backward_key = 'learnpress_' . $short_name;
|
202 |
$wpdb->{$backward_key} = $table_name;
|
@@ -288,7 +297,7 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
288 |
*/
|
289 |
public function init() {
|
290 |
|
291 |
-
if ( !empty( $_REQUEST['view-log'] ) ) {
|
292 |
$log = $_REQUEST['view-log'];
|
293 |
echo '<pre>';
|
294 |
if ( is_multisite() ) {
|
@@ -321,12 +330,16 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
321 |
* @return mixed
|
322 |
*/
|
323 |
public function get_session() {
|
324 |
-
if (
|
325 |
$session_class = apply_filters( 'learn_press_session_class', 'LP_Session_Handler' );
|
326 |
if ( class_exists( $session_class ) ) {
|
327 |
-
$this->session = is_callable( array(
|
|
|
|
|
|
|
328 |
}
|
329 |
}
|
|
|
330 |
return $this->session;
|
331 |
}
|
332 |
|
@@ -336,16 +349,20 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
336 |
* @return mixed
|
337 |
*/
|
338 |
public function get_cart() {
|
339 |
-
if (
|
340 |
$cart_class = apply_filters( 'learn_press_cart_class', 'LP_Cart' );
|
341 |
if ( is_object( $cart_class ) ) {
|
342 |
$this->cart = $cart_class;
|
343 |
} else {
|
344 |
if ( class_exists( $cart_class ) ) {
|
345 |
-
$this->cart = is_callable( array(
|
|
|
|
|
|
|
346 |
}
|
347 |
}
|
348 |
}
|
|
|
349 |
return $this->cart;
|
350 |
}
|
351 |
|
@@ -356,21 +373,22 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
356 |
public function get_user( $user_id = 0 ) {
|
357 |
static $users = array();
|
358 |
$user = false;
|
359 |
-
if (
|
360 |
$this->user = learn_press_get_current_user();
|
361 |
}
|
362 |
if ( $user_id ) {
|
363 |
if ( $user_id == $this->user->id ) {
|
364 |
$user = $this->user;
|
365 |
} else {
|
366 |
-
if ( empty( $users[$user_id] ) ) {
|
367 |
-
$users[$user_id] = learn_press_get_user( $user_id );
|
368 |
-
$user
|
369 |
}
|
370 |
}
|
371 |
} else {
|
372 |
$user = $this->user;
|
373 |
}
|
|
|
374 |
return $user;
|
375 |
}
|
376 |
|
@@ -390,7 +408,7 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
390 |
case 'cron' :
|
391 |
return defined( 'DOING_CRON' );
|
392 |
case 'frontend' :
|
393 |
-
return ( !is_admin() || defined( 'LP_DOING_AJAX' ) ) && !defined( 'DOING_CRON' );
|
394 |
default:
|
395 |
return strtolower( $_SERVER['REQUEST_METHOD'] ) == $type;
|
396 |
}
|
@@ -554,8 +572,10 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
554 |
} else {
|
555 |
include $include;
|
556 |
}
|
|
|
557 |
return true;
|
558 |
}
|
|
|
559 |
return false;
|
560 |
}
|
561 |
|
@@ -572,7 +592,7 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
572 |
* Setup courses thumbnail
|
573 |
*/
|
574 |
public function setup_theme() {
|
575 |
-
if ( !current_theme_supports( 'post-thumbnails' ) ) {
|
576 |
add_theme_support( 'post-thumbnails' );
|
577 |
}
|
578 |
add_post_type_support( 'lp_course', 'thumbnail' );
|
@@ -606,12 +626,13 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
606 |
if ( LP()->settings->get( 'debug' ) !== 'yes' ) {
|
607 |
$min = '.min';
|
608 |
}
|
609 |
-
if ( !preg_match( '/.js$/', $file ) ) {
|
610 |
$file .= '.js';
|
611 |
}
|
612 |
if ( $min ) {
|
613 |
$file = preg_replace( '/.js$/', $min . '.js', $file );
|
614 |
}
|
|
|
615 |
return $this->plugin_url( "assets/js/{$file}" );
|
616 |
}
|
617 |
|
@@ -627,12 +648,13 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
627 |
if ( LP()->settings->get( 'debug' ) !== 'yes' ) {
|
628 |
$min = '.min';
|
629 |
}
|
630 |
-
if ( !preg_match( '/.css/', $file ) ) {
|
631 |
$file .= '.css';
|
632 |
}
|
633 |
if ( $min ) {
|
634 |
$file = preg_replace( '/.css/', $min . '.css', $file );
|
635 |
}
|
|
|
636 |
return $this->plugin_url( "assets/css/{$file}" );
|
637 |
}
|
638 |
|
@@ -645,7 +667,7 @@ if ( !class_exists( 'LearnPress' ) ) {
|
|
645 |
*/
|
646 |
public function image( $file ) {
|
647 |
|
648 |
-
if ( !preg_match( '/.(jpg|png)$/', $file ) ) {
|
649 |
$file .= '.jpg';
|
650 |
}
|
651 |
|
@@ -674,6 +696,7 @@ function LP() {
|
|
674 |
*/
|
675 |
function load_learn_press() {
|
676 |
_deprecated_function( __FUNCTION__, '1.1', 'LP' );
|
|
|
677 |
return LP();
|
678 |
}
|
679 |
|
4 |
Plugin URI: http://thimpress.com/learnpress
|
5 |
Description: LearnPress is a WordPress complete solution for creating a Learning Management System (LMS). It can help you to create courses, lessons and quizzes.
|
6 |
Author: ThimPress
|
7 |
+
Version: 2.1.8.1
|
8 |
Author URI: http://thimpress.com
|
9 |
Requires at least: 3.8
|
10 |
Tested up to: 4.8
|
17 |
*/
|
18 |
defined( 'ABSPATH' ) || exit;
|
19 |
|
20 |
+
if ( ! defined( 'LP_PLUGIN_FILE' ) ) {
|
21 |
define( 'LP_PLUGIN_FILE', __FILE__ );
|
22 |
require_once dirname( __FILE__ ) . '/inc/lp-constants.php';
|
23 |
}
|
24 |
|
25 |
+
add_action( 'plugins_loaded', function () {
|
26 |
+
error_reporting( E_ALL );
|
27 |
+
ini_set( 'error_reporting', 1 );
|
28 |
+
} );
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
if ( ! class_exists( 'LearnPress' ) ) {
|
33 |
|
34 |
/**
|
35 |
* Class LearnPress
|
155 |
break;
|
156 |
default:
|
157 |
if ( strpos( $key, 'tbl_' ) === 0 ) {
|
158 |
+
$return = $this->_table_prefixes[ $key ];
|
159 |
}
|
160 |
}
|
161 |
+
|
162 |
return $return;
|
163 |
}
|
164 |
|
165 |
public function set_object( $name, $object, $global = false ) {
|
166 |
$this->{$name} = $object;
|
167 |
if ( $global ) {
|
168 |
+
$GLOBALS[ $name ] = $object;
|
169 |
}
|
170 |
}
|
171 |
|
179 |
* @author
|
180 |
*/
|
181 |
public static function instance() {
|
182 |
+
if ( ! self::$_instance ) {
|
183 |
self::$_instance = new self();
|
184 |
}
|
185 |
+
|
186 |
return self::$_instance;
|
187 |
}
|
188 |
|
204 |
'review_logs'
|
205 |
);
|
206 |
foreach ( $tables as $short_name ) {
|
207 |
+
$table_name = $wpdb->prefix . LP_TABLE_PREFIX . $short_name;
|
208 |
+
$this->_table_prefixes[ 'tbl_' . $short_name ] = $table_name;
|
209 |
|
210 |
$backward_key = 'learnpress_' . $short_name;
|
211 |
$wpdb->{$backward_key} = $table_name;
|
297 |
*/
|
298 |
public function init() {
|
299 |
|
300 |
+
if ( ! empty( $_REQUEST['view-log'] ) ) {
|
301 |
$log = $_REQUEST['view-log'];
|
302 |
echo '<pre>';
|
303 |
if ( is_multisite() ) {
|
330 |
* @return mixed
|
331 |
*/
|
332 |
public function get_session() {
|
333 |
+
if ( ! $this->session ) {
|
334 |
$session_class = apply_filters( 'learn_press_session_class', 'LP_Session_Handler' );
|
335 |
if ( class_exists( $session_class ) ) {
|
336 |
+
$this->session = is_callable( array(
|
337 |
+
$session_class,
|
338 |
+
'instance'
|
339 |
+
) ) ? call_user_func( array( $session_class, 'instance' ) ) : new $session_class();
|
340 |
}
|
341 |
}
|
342 |
+
|
343 |
return $this->session;
|
344 |
}
|
345 |
|
349 |
* @return mixed
|
350 |
*/
|
351 |
public function get_cart() {
|
352 |
+
if ( ! $this->cart ) {
|
353 |
$cart_class = apply_filters( 'learn_press_cart_class', 'LP_Cart' );
|
354 |
if ( is_object( $cart_class ) ) {
|
355 |
$this->cart = $cart_class;
|
356 |
} else {
|
357 |
if ( class_exists( $cart_class ) ) {
|
358 |
+
$this->cart = is_callable( array(
|
359 |
+
$cart_class,
|
360 |
+
'instance'
|
361 |
+
) ) ? call_user_func( array( $cart_class, 'instance' ) ) : new $cart_class();
|
362 |
}
|
363 |
}
|
364 |
}
|
365 |
+
|
366 |
return $this->cart;
|
367 |
}
|
368 |
|
373 |
public function get_user( $user_id = 0 ) {
|
374 |
static $users = array();
|
375 |
$user = false;
|
376 |
+
if ( ! $this->user ) {
|
377 |
$this->user = learn_press_get_current_user();
|
378 |
}
|
379 |
if ( $user_id ) {
|
380 |
if ( $user_id == $this->user->id ) {
|
381 |
$user = $this->user;
|
382 |
} else {
|
383 |
+
if ( empty( $users[ $user_id ] ) ) {
|
384 |
+
$users[ $user_id ] = learn_press_get_user( $user_id );
|
385 |
+
$user = $users[ $user_id ];
|
386 |
}
|
387 |
}
|
388 |
} else {
|
389 |
$user = $this->user;
|
390 |
}
|
391 |
+
|
392 |
return $user;
|
393 |
}
|
394 |
|
408 |
case 'cron' :
|
409 |
return defined( 'DOING_CRON' );
|
410 |
case 'frontend' :
|
411 |
+
return ( ! is_admin() || defined( 'LP_DOING_AJAX' ) ) && ! defined( 'DOING_CRON' );
|
412 |
default:
|
413 |
return strtolower( $_SERVER['REQUEST_METHOD'] ) == $type;
|
414 |
}
|
572 |
} else {
|
573 |
include $include;
|
574 |
}
|
575 |
+
|
576 |
return true;
|
577 |
}
|
578 |
+
|
579 |
return false;
|
580 |
}
|
581 |
|
592 |
* Setup courses thumbnail
|
593 |
*/
|
594 |
public function setup_theme() {
|
595 |
+
if ( ! current_theme_supports( 'post-thumbnails' ) ) {
|
596 |
add_theme_support( 'post-thumbnails' );
|
597 |
}
|
598 |
add_post_type_support( 'lp_course', 'thumbnail' );
|
626 |
if ( LP()->settings->get( 'debug' ) !== 'yes' ) {
|
627 |
$min = '.min';
|
628 |
}
|
629 |
+
if ( ! preg_match( '/.js$/', $file ) ) {
|
630 |
$file .= '.js';
|
631 |
}
|
632 |
if ( $min ) {
|
633 |
$file = preg_replace( '/.js$/', $min . '.js', $file );
|
634 |
}
|
635 |
+
|
636 |
return $this->plugin_url( "assets/js/{$file}" );
|
637 |
}
|
638 |
|
648 |
if ( LP()->settings->get( 'debug' ) !== 'yes' ) {
|
649 |
$min = '.min';
|
650 |
}
|
651 |
+
if ( ! preg_match( '/.css/', $file ) ) {
|
652 |
$file .= '.css';
|
653 |
}
|
654 |
if ( $min ) {
|
655 |
$file = preg_replace( '/.css/', $min . '.css', $file );
|
656 |
}
|
657 |
+
|
658 |
return $this->plugin_url( "assets/css/{$file}" );
|
659 |
}
|
660 |
|
667 |
*/
|
668 |
public function image( $file ) {
|
669 |
|
670 |
+
if ( ! preg_match( '/.(jpg|png)$/', $file ) ) {
|
671 |
$file .= '.jpg';
|
672 |
}
|
673 |
|
696 |
*/
|
697 |
function load_learn_press() {
|
698 |
_deprecated_function( __FUNCTION__, '1.1', 'LP' );
|
699 |
+
|
700 |
return LP();
|
701 |
}
|
702 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link:
|
|
4 |
Tags: WordPress LMS, LMS, eLearning, e-Learning, Learning Management System, LMS WordPress, Course, Courses, Quiz, Quizzes, Training, Guru, Sell Courses
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 4.8
|
7 |
-
Stable tag: 2.1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -16,14 +16,16 @@ A WordPress LMS Plugin to create WordPress Learning Management System. Turn your
|
|
16 |
|
17 |
LearnPress is free and always be free, but it has premium high quality WordPress Plugin which will probably help you make money from your **WordPress based LMS**, try and see how it is. LearnPress WordPress Online Course plugin is lightweight but super powerful with lots of add-ons to empower its core system.
|
18 |
|
19 |
-
> **
|
20 |
|
21 |
-
> [Click here](http://eepurl.com/cbKSQX) to get a coupon for 25% Off all
|
22 |
|
23 |
-
> Or you can
|
24 |
|
25 |
> **HOT!!** [WordPress theme for Coaches, Trainers, Teachers - Coaching WP](https://themeforest.net/item/speaker-and-life-coach-wordpress-theme-coaching-wp/17097658?utm_source=wporg&utm_medium=learnpressDC&ref=thimpress&utm_campaign=learnpress) is also FOR SALE at only $59, LearnPress included.
|
26 |
|
|
|
|
|
27 |
###LMS & Education WordPress Themes###
|
28 |
|
29 |
Take a look at Premium **[Education WordPress Theme](http://themeforest.net/item/education-wordpress-theme-education-wp/14058034?utm_source=wporg&utm_medium=learnpress&ref=thimpress&utm_campaign=learnpress)**, **[Coaching WordPress Theme](https://themeforest.net/item/speaker-and-life-coach-wordpress-theme-coaching-wp/17097658?utm_source=wporg&utm_medium=learnpress&ref=thimpress&utm_campaign=learnpress)** & **[LMS WordPress Theme](http://themeforest.net/item/lms-wordpress-theme-elearning-wp/11797847?utm_source=wporg&utm_medium=learnpress&ref=thimpress&utm_campaign=learnpress)** (someone calls it LMS WordPress Template) we designed to work with LearnPress, all developers are welcome to develop WordPress LMS Theme based on LMS plugin for WordPress - LearnPress. More WordPress LMS Themes will come soon, both free WordPress themes as well as premium WordPress themes for LearnPress.
|
@@ -36,7 +38,6 @@ Take a look at Premium **[Education WordPress Theme](http://themeforest.net/item
|
|
36 |
[youtube https://www.youtube.com/watch?v=zTtZ_CpWDOY&hd=1&&cc_load_policy=1]
|
37 |
|
38 |
Are you looking for *best LMS WordPress plugin*?
|
39 |
-
- **[10 steps to create a successful Udemy course for new instructors 2017](https://thimpress.com/10-steps-create-successful-udemy-course-new-instructors-2017/)**
|
40 |
|
41 |
###LearnPress features###
|
42 |
|
@@ -194,12 +195,16 @@ https://www.transifex.com/projects/p/learnpress/
|
|
194 |
8. Add-ons of LearnPress.
|
195 |
|
196 |
== Changelog ==
|
197 |
-
= 2.1.
|
198 |
-
~ Fixed
|
199 |
|
200 |
= 2.1.7.3 =
|
201 |
-
~ Fixed
|
202 |
-
~ Fixed
|
|
|
|
|
|
|
|
|
203 |
|
204 |
= 2.1.7.2 =
|
205 |
~ Fixed can add a question to multiple quizzes
|
4 |
Tags: WordPress LMS, LMS, eLearning, e-Learning, Learning Management System, LMS WordPress, Course, Courses, Quiz, Quizzes, Training, Guru, Sell Courses
|
5 |
Requires at least: 3.8
|
6 |
Tested up to: 4.8
|
7 |
+
Stable tag: 2.1.8.1
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
16 |
|
17 |
LearnPress is free and always be free, but it has premium high quality WordPress Plugin which will probably help you make money from your **WordPress based LMS**, try and see how it is. LearnPress WordPress Online Course plugin is lightweight but super powerful with lots of add-ons to empower its core system.
|
18 |
|
19 |
+
> **10 Days Left - Limited Time Offer**
|
20 |
|
21 |
+
> [Click here](http://eepurl.com/cbKSQX) to get a coupon for 25% Off all Learnpress Add-ons
|
22 |
|
23 |
+
> Or you can buy [Education WP Theme](http://themeforest.net/item/education-wordpress-theme-education-wp/14058034?utm_source=wporg&utm_medium=learnpressDC&ref=thimpress&utm_campaign=learnpress) for only $64 and get all of theme.
|
24 |
|
25 |
> **HOT!!** [WordPress theme for Coaches, Trainers, Teachers - Coaching WP](https://themeforest.net/item/speaker-and-life-coach-wordpress-theme-coaching-wp/17097658?utm_source=wporg&utm_medium=learnpressDC&ref=thimpress&utm_campaign=learnpress) is also FOR SALE at only $59, LearnPress included.
|
26 |
|
27 |
+
> [Course Builder Wordpress Theme](https://themeforest.net/item/course-builder-wordpress-learning-management-system-theme-elearning-software/20370918?utm_source=wporg&utm_medium=learnpressDC&ref=thimpress&utm_campaign=learnpress) - WordPress LMS theme for online courses is also FOR SALE at only $64, Learnpress included.
|
28 |
+
|
29 |
###LMS & Education WordPress Themes###
|
30 |
|
31 |
Take a look at Premium **[Education WordPress Theme](http://themeforest.net/item/education-wordpress-theme-education-wp/14058034?utm_source=wporg&utm_medium=learnpress&ref=thimpress&utm_campaign=learnpress)**, **[Coaching WordPress Theme](https://themeforest.net/item/speaker-and-life-coach-wordpress-theme-coaching-wp/17097658?utm_source=wporg&utm_medium=learnpress&ref=thimpress&utm_campaign=learnpress)** & **[LMS WordPress Theme](http://themeforest.net/item/lms-wordpress-theme-elearning-wp/11797847?utm_source=wporg&utm_medium=learnpress&ref=thimpress&utm_campaign=learnpress)** (someone calls it LMS WordPress Template) we designed to work with LearnPress, all developers are welcome to develop WordPress LMS Theme based on LMS plugin for WordPress - LearnPress. More WordPress LMS Themes will come soon, both free WordPress themes as well as premium WordPress themes for LearnPress.
|
38 |
[youtube https://www.youtube.com/watch?v=zTtZ_CpWDOY&hd=1&&cc_load_policy=1]
|
39 |
|
40 |
Are you looking for *best LMS WordPress plugin*?
|
|
|
41 |
|
42 |
###LearnPress features###
|
43 |
|
195 |
8. Add-ons of LearnPress.
|
196 |
|
197 |
== Changelog ==
|
198 |
+
= 2.1.8 =
|
199 |
+
~ Fixed missing template tag
|
200 |
|
201 |
= 2.1.7.3 =
|
202 |
+
~ Fixed can not save curriculum with SiteOrigin.
|
203 |
+
~ Fixed instructor can select lessons/quizzes of an another user when editing course.
|
204 |
+
~ Fixed get request var does not exists while updating course.
|
205 |
+
~ Fixed can not load lesson with Yoast Seo enabled.
|
206 |
+
~ Fixed become a teacher page with page builder.
|
207 |
+
~ Fixed eye icon does not show when opening a lesson.
|
208 |
|
209 |
= 2.1.7.2 =
|
210 |
~ Fixed can add a question to multiple quizzes
|
templates/checkout/form-logged-in.php
CHANGED
@@ -5,11 +5,11 @@
|
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
|
8 |
-
if ( !defined( 'ABSPATH' ) ) {
|
9 |
exit; // Exit if accessed directly
|
10 |
}
|
11 |
|
12 |
-
if ( !is_user_logged_in() ) {
|
13 |
return;
|
14 |
}
|
15 |
|
@@ -19,10 +19,11 @@ global $user_identity;
|
|
19 |
<p>
|
20 |
<?php
|
21 |
printf(
|
22 |
-
__( 'Logged in as <a href="%1$s">%2$s</a>.' ),
|
23 |
get_edit_user_link(),
|
24 |
$user_identity
|
25 |
);
|
26 |
?>
|
27 |
-
|
|
|
28 |
</p>
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit; // Exit if accessed directly
|
10 |
}
|
11 |
|
12 |
+
if ( ! is_user_logged_in() ) {
|
13 |
return;
|
14 |
}
|
15 |
|
19 |
<p>
|
20 |
<?php
|
21 |
printf(
|
22 |
+
wp_kses( __( 'Logged in as <a href="%1$s">%2$s</a>.', 'learnpress' ), array( 'a' => array( 'href' => array() ) ) ),
|
23 |
get_edit_user_link(),
|
24 |
$user_identity
|
25 |
);
|
26 |
?>
|
27 |
+
<a href="<?php echo wp_logout_url( get_permalink() ); ?>"
|
28 |
+
title="<?php esc_attr_e( 'Log out of this account', 'learnpress' ); ?>"><?php _e( 'Log out »', 'learnpress' ); ?></a>
|
29 |
</p>
|
templates/global/become-teacher-form.php
CHANGED
@@ -13,14 +13,15 @@ $submit_button_process_text = __( 'Submitting...', 'learnpress' );
|
|
13 |
$submit_button_text = __( 'Submit', 'learnpress' );
|
14 |
?>
|
15 |
<div id="learn-press-become-teacher-form" class="learn-press-become-teacher-form">
|
16 |
-
<?php
|
17 |
-
|
18 |
-
|
19 |
?>
|
20 |
-
<?php if ( !learn_press_become_teacher_sent() ): ?>
|
21 |
-
|
|
|
22 |
<?php if ( $fields ): ?>
|
23 |
-
|
24 |
<?php foreach ( $fields as $name => $option ): ?>
|
25 |
<?php
|
26 |
$option = wp_parse_args(
|
@@ -32,7 +33,7 @@ $submit_button_text = __( 'Submit', 'learnpress' );
|
|
32 |
'placeholder' => ''
|
33 |
)
|
34 |
);
|
35 |
-
$value = !empty( $request[$name] ) ? $request[$name] : ( !empty( $option['def'] ) ? $option['def'] : '' );
|
36 |
$requested = strtolower( $_SERVER['REQUEST_METHOD'] ) == $method;
|
37 |
$error_message = null;
|
38 |
if ( $requested ) {
|
@@ -40,8 +41,8 @@ $submit_button_text = __( 'Submit', 'learnpress' );
|
|
40 |
}
|
41 |
|
42 |
?>
|
43 |
-
|
44 |
-
|
45 |
<?php
|
46 |
switch ( $option['type'] ) {
|
47 |
case 'text':
|
@@ -53,14 +54,15 @@ $submit_button_text = __( 'Submit', 'learnpress' );
|
|
53 |
learn_press_display_message( $error_message );
|
54 |
}
|
55 |
?>
|
56 |
-
|
57 |
<?php endforeach; ?>
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
63 |
<?php endif; ?>
|
64 |
-
|
65 |
<?php endif; ?>
|
66 |
</div>
|
13 |
$submit_button_text = __( 'Submit', 'learnpress' );
|
14 |
?>
|
15 |
<div id="learn-press-become-teacher-form" class="learn-press-become-teacher-form">
|
16 |
+
<?php if ( $message ) {
|
17 |
+
learn_press_display_message( $message );
|
18 |
+
}
|
19 |
?>
|
20 |
+
<?php if ( ! learn_press_become_teacher_sent() ): ?>
|
21 |
+
<form id="<?php echo $form_id; ?>" name="become-teacher-form" method="<?php echo $method; ?>"
|
22 |
+
enctype="multipart/form-data" <?php echo $action ? "action=$action" : ''; ?>>
|
23 |
<?php if ( $fields ): ?>
|
24 |
+
<ul class="become-teacher-fields">
|
25 |
<?php foreach ( $fields as $name => $option ): ?>
|
26 |
<?php
|
27 |
$option = wp_parse_args(
|
33 |
'placeholder' => ''
|
34 |
)
|
35 |
);
|
36 |
+
$value = ! empty( $request[ $name ] ) ? $request[ $name ] : ( ! empty( $option['def'] ) ? $option['def'] : '' );
|
37 |
$requested = strtolower( $_SERVER['REQUEST_METHOD'] ) == $method;
|
38 |
$error_message = null;
|
39 |
if ( $requested ) {
|
41 |
}
|
42 |
|
43 |
?>
|
44 |
+
<li>
|
45 |
+
<label><?php echo $option['title']; ?></label>
|
46 |
<?php
|
47 |
switch ( $option['type'] ) {
|
48 |
case 'text':
|
54 |
learn_press_display_message( $error_message );
|
55 |
}
|
56 |
?>
|
57 |
+
</li>
|
58 |
<?php endforeach; ?>
|
59 |
+
<li>
|
60 |
+
<button type="submit" data-text="<?php echo esc_attr( $submit_button_text ); ?>"
|
61 |
+
data-text-process="<?php echo esc_attr( $submit_button_process_text ); ?>"><?php echo esc_html( $submit_button_text ); ?></button>
|
62 |
+
</li>
|
63 |
+
</ul>
|
64 |
+
<input type="hidden" name="lp-ajax" value="become-a-teacher"/>
|
65 |
<?php endif; ?>
|
66 |
+
</form>
|
67 |
<?php endif; ?>
|
68 |
</div>
|
templates/profile/tabs/orders.php
CHANGED
@@ -18,29 +18,31 @@ if ( $orders = _learn_press_get_user_profile_orders( $user_id, $page, $limit ) )
|
|
18 |
}
|
19 |
if ( $orders['rows'] ) :
|
20 |
?>
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
|
|
30 |
<?php foreach ( $orders['rows'] as $order ): $order = learn_press_get_order( $order ); ?>
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
<?php echo $order->get_order_status_html(); ?>
|
36 |
<?php
|
37 |
if ( $order->has_status( 'pending' ) ) :
|
38 |
printf( '(<small><a href="%s" class="%s">%s</a></small>)', $order->get_cancel_order_url(), 'cancel-order', __( 'Cancel', 'learnpress' ) );
|
39 |
endif;
|
40 |
?>
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
<?php
|
45 |
$actions['view'] = array(
|
46 |
'url' => $order->get_view_order_url(),
|
@@ -52,11 +54,11 @@ if ( $orders = _learn_press_get_user_profile_orders( $user_id, $page, $limit ) )
|
|
52 |
printf( '<a href="%s">%s</a>', $option['url'], $option['text'] );
|
53 |
}
|
54 |
?>
|
55 |
-
|
56 |
-
|
57 |
<?php endforeach; ?>
|
58 |
-
|
59 |
-
|
60 |
|
61 |
<?php
|
62 |
learn_press_paging_nav( array(
|
18 |
}
|
19 |
if ( $orders['rows'] ) :
|
20 |
?>
|
21 |
+
<table class="table-orders">
|
22 |
+
<thead>
|
23 |
+
<tr>
|
24 |
+
<th><?php _e( 'Order', 'learnpress' ); ?></th>
|
25 |
+
<th><?php _e( 'Date', 'learnpress' ); ?></th>
|
26 |
+
<th><?php _e( 'Status', 'learnpress' ); ?></th>
|
27 |
+
<th><?php _e( 'Total', 'learnpress' ); ?></th>
|
28 |
+
<th><?php _e( 'Action', 'learnpress' ); ?></th>
|
29 |
+
</tr>
|
30 |
+
</thead>
|
31 |
+
<tbody>
|
32 |
<?php foreach ( $orders['rows'] as $order ): $order = learn_press_get_order( $order ); ?>
|
33 |
+
<tr>
|
34 |
+
<td><?php echo $order->get_order_number(); ?></td>
|
35 |
+
<td><?php echo date_i18n( get_option( 'date_format' ), strtotime( $order->order_date ) ); ?></td>
|
36 |
+
<td>
|
37 |
<?php echo $order->get_order_status_html(); ?>
|
38 |
<?php
|
39 |
if ( $order->has_status( 'pending' ) ) :
|
40 |
printf( '(<small><a href="%s" class="%s">%s</a></small>)', $order->get_cancel_order_url(), 'cancel-order', __( 'Cancel', 'learnpress' ) );
|
41 |
endif;
|
42 |
?>
|
43 |
+
</td>
|
44 |
+
<td><?php echo $order->get_formatted_order_total(); ?></td>
|
45 |
+
<td>
|
46 |
<?php
|
47 |
$actions['view'] = array(
|
48 |
'url' => $order->get_view_order_url(),
|
54 |
printf( '<a href="%s">%s</a>', $option['url'], $option['text'] );
|
55 |
}
|
56 |
?>
|
57 |
+
</td>
|
58 |
+
</tr>
|
59 |
<?php endforeach; ?>
|
60 |
+
</tbody>
|
61 |
+
</table>
|
62 |
|
63 |
<?php
|
64 |
learn_press_paging_nav( array(
|
templates/single-course/buttons.php
CHANGED
@@ -7,24 +7,74 @@
|
|
7 |
* @version 2.1.6
|
8 |
*/
|
9 |
|
10 |
-
if ( !defined( 'ABSPATH' ) ) {
|
11 |
exit; // Exit if accessed directly
|
12 |
}
|
13 |
|
14 |
-
$course
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
?>
|
16 |
<div class="learn-press-course-buttons">
|
17 |
<?php do_action( 'learn_press_before_course_buttons', $course->id ); ?>
|
18 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
if ( $external_link = $course->get_external_link() ):
|
20 |
$external_button_text = apply_filters( 'learn_press_course_external_link_button_text', __( 'Buy this course', 'learnpress' ) );
|
21 |
?>
|
22 |
<?php do_action( 'learn_press_before_external_link_buy_course' ); ?>
|
23 |
-
|
24 |
-
|
25 |
<?php echo $external_button_text; ?>
|
26 |
-
|
27 |
-
|
28 |
<?php do_action( 'learn_press_after_external_link_buy_course' ); ?>
|
29 |
<?php else:
|
30 |
|
@@ -38,26 +88,26 @@ $course = LP()->global['course'];
|
|
38 |
$purchase_button_text = apply_filters( 'learn_press_purchase_button_text', __( 'Buy this course', 'learnpress' ) );
|
39 |
$enroll_button_text = apply_filters( 'learn_press_enroll_button_text', __( 'Enroll', 'learnpress' ) );
|
40 |
$retake_button_text = apply_filters( 'learn_press_retake_button_text', __( 'Retake', 'learnpress' ) );
|
41 |
-
$notice_enough_student = apply_filters( 'learn_press_course enough students_notice', __( 'The class is full so
|
42 |
|
43 |
# -------------------------------
|
44 |
# Finished Course
|
45 |
# -------------------------------
|
46 |
if ( $user->has( 'finished-course', $course->id ) ): ?>
|
47 |
<?php if ( $count = $user->can( 'retake-course', $course->id ) ): ?>
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
<?php echo esc_html( sprintf( __( 'Retake course (+%d)', 'learnpress' ), $count ) ); ?>
|
53 |
-
|
54 |
<?php endif; ?>
|
55 |
<?php
|
56 |
|
57 |
# -------------------------------
|
58 |
# Enrolled Course
|
59 |
# -------------------------------
|
60 |
-
|
61 |
<?php
|
62 |
$can_finish = $user->can_finish_course( $course->id );
|
63 |
//if ( $can_finish ) {
|
@@ -66,50 +116,55 @@ $course = LP()->global['course'];
|
|
66 |
//$finish_course_security = '';
|
67 |
//}
|
68 |
?>
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
<?php esc_html_e( 'Finish course', 'learnpress' ); ?>
|
75 |
-
|
76 |
<?php elseif ( $user->can( 'enroll-course', $course->id ) === true ) : ?>
|
77 |
-
|
78 |
<?php do_action( 'learn_press_before_enroll_button' ); ?>
|
79 |
|
80 |
-
|
81 |
-
|
82 |
-
|
|
|
83 |
|
84 |
<?php do_action( 'learn_press_after_enroll_button' ); ?>
|
85 |
-
|
86 |
-
<?php elseif ( $user->can( 'purchase-course', $course->id ) ) : ?>
|
87 |
-
|
88 |
-
<form name="purchase-course" class="purchase-course" method="post" enctype="multipart/form-data">
|
89 |
<?php do_action( 'learn_press_before_purchase_button' ); ?>
|
90 |
-
|
91 |
<?php echo $course->is_free() ? $enroll_button_text : $purchase_button_text; ?>
|
92 |
-
|
93 |
<?php do_action( 'learn_press_after_purchase_button' ); ?>
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
|
98 |
-
<?php elseif ( $user->can( 'enroll-course', $course->id ) === 'enough' ) : ?>
|
99 |
-
|
100 |
<?php else: ?>
|
101 |
<?php $order_status = $user->get_order_status( $course->id ); ?>
|
102 |
-
<?php if ( in_array( $order_status, array(
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
104 |
<?php do_action( 'learn_press_before_purchase_button' ); ?>
|
105 |
-
|
106 |
<?php echo $course->is_free() ? $enroll_button_text : $purchase_button_text; ?>
|
107 |
-
|
108 |
<?php do_action( 'learn_press_after_purchase_button' ); ?>
|
109 |
-
|
110 |
-
|
111 |
|
112 |
-
|
113 |
<?php } elseif ( in_array( $order_status, array( 'lp-processing', 'lp-on-hold' ) ) ) { ?>
|
114 |
<?php learn_press_display_message( '<p>' . apply_filters( 'learn_press_user_course_pending_message', __( 'Your order is processing. Please wait for approval.', 'learnpress' ), $course, $user ) . '</p>' ); ?>
|
115 |
<?php } elseif ( $order_status && $order_status != 'lp-completed' ) { ?>
|
@@ -120,4 +175,4 @@ $course = LP()->global['course'];
|
|
120 |
endif;
|
121 |
?>
|
122 |
<?php do_action( 'learn_press_after_course_buttons', $course->id ); ?>
|
123 |
-
</div>
|
7 |
* @version 2.1.6
|
8 |
*/
|
9 |
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
exit; // Exit if accessed directly
|
12 |
}
|
13 |
|
14 |
+
$course = learn_press_get_course();//LP()->global['course'];
|
15 |
+
$lp_user = learn_press_get_current_user();
|
16 |
+
|
17 |
+
$user = learn_press_get_current_user();
|
18 |
+
$in_cart = learn_press_is_added_to_cart( $course->id );
|
19 |
+
// only show enroll button if user had not enrolled
|
20 |
+
$purchase_button_text = apply_filters( 'learn_press_purchase_button_text', __( 'Buy this course', 'learnpress' ) );
|
21 |
+
$enroll_button_text = apply_filters( 'learn_press_enroll_button_text', __( 'Enroll', 'learnpress' ) );
|
22 |
+
$retake_button_text = apply_filters( 'learn_press_retake_button_text', __( 'Retake', 'learnpress' ) );
|
23 |
+
$notice_enough_student = apply_filters( 'learn_press_course enough students_notice', __( 'The class is full so enrollment is closed. Please contact the site admin.', 'learnpress' ) );
|
24 |
?>
|
25 |
<div class="learn-press-course-buttons">
|
26 |
<?php do_action( 'learn_press_before_course_buttons', $course->id ); ?>
|
27 |
<?php
|
28 |
+
|
29 |
+
$course_status = $lp_user->get_course_status( $course->id );
|
30 |
+
// var_dump( $course_status );
|
31 |
+
$can_purchase = $lp_user->can_purchase_course( $course->id );
|
32 |
+
// var_dump( $can_purchase );
|
33 |
+
// var_dump( $user->can( 'purchase-course', $course->id ) );
|
34 |
+
$can_enroll = $lp_user->can( 'enroll-course', $course->id );
|
35 |
+
// var_dump( $can_enroll );
|
36 |
+
// var_dump( $lp_user->has_enrolled_course( $course->id, true) );
|
37 |
+
$can_retake = $lp_user->can_retake_course( $course->id, true );
|
38 |
+
// var_dump( $can_retake );
|
39 |
+
if ( $can_purchase ) {
|
40 |
+
# todo dispay purchase button
|
41 |
+
if ( $external_link = $course->get_external_link() ) {
|
42 |
+
$external_button_text = apply_filters( 'learn_press_course_external_link_button_text', __( 'Buy this course', 'learnpress' ) );
|
43 |
+
do_action( 'learn_press_before_external_link_buy_course' );
|
44 |
+
?>
|
45 |
+
<div class="purchase-course">
|
46 |
+
<a href="<?php echo esc_url( $external_link ); ?>" class="purchase-button">
|
47 |
+
<?php echo $external_button_text; ?>
|
48 |
+
</a>
|
49 |
+
</div>
|
50 |
+
<?php
|
51 |
+
} else {
|
52 |
+
?>
|
53 |
+
<form name="purchase-course" class="purchase-course" method="post" enctype="multipart/form-data">
|
54 |
+
<?php do_action( 'learn_press_before_purchase_button' ); ?>
|
55 |
+
<button class="button purchase-button" data-block-content="yes">
|
56 |
+
<?php echo $course->is_free() ? $enroll_button_text : $purchase_button_text; ?>
|
57 |
+
</button>
|
58 |
+
<?php do_action( 'learn_press_after_purchase_button' ); ?>
|
59 |
+
<input type="hidden" name="purchase-course" value="<?php echo $course->id; ?>"/>
|
60 |
+
<input type="hidden" value="user can purchase course"/>
|
61 |
+
</form>
|
62 |
+
<?php
|
63 |
+
}
|
64 |
+
} elseif ( $can_enroll ) {
|
65 |
+
#echo "show can enroll button";
|
66 |
+
}
|
67 |
+
|
68 |
+
// if($lp_user->get_course_status($course->id));
|
69 |
if ( $external_link = $course->get_external_link() ):
|
70 |
$external_button_text = apply_filters( 'learn_press_course_external_link_button_text', __( 'Buy this course', 'learnpress' ) );
|
71 |
?>
|
72 |
<?php do_action( 'learn_press_before_external_link_buy_course' ); ?>
|
73 |
+
<div class="purchase-course">
|
74 |
+
<a href="<?php echo esc_url( $external_link ); ?>" class="purchase-button">
|
75 |
<?php echo $external_button_text; ?>
|
76 |
+
</a>
|
77 |
+
</div>
|
78 |
<?php do_action( 'learn_press_after_external_link_buy_course' ); ?>
|
79 |
<?php else:
|
80 |
|
88 |
$purchase_button_text = apply_filters( 'learn_press_purchase_button_text', __( 'Buy this course', 'learnpress' ) );
|
89 |
$enroll_button_text = apply_filters( 'learn_press_enroll_button_text', __( 'Enroll', 'learnpress' ) );
|
90 |
$retake_button_text = apply_filters( 'learn_press_retake_button_text', __( 'Retake', 'learnpress' ) );
|
91 |
+
$notice_enough_student = apply_filters( 'learn_press_course enough students_notice', __( 'The class is full so enrollment is closed. Please contact the site admin.', 'learnpress' ) );
|
92 |
|
93 |
# -------------------------------
|
94 |
# Finished Course
|
95 |
# -------------------------------
|
96 |
if ( $user->has( 'finished-course', $course->id ) ): ?>
|
97 |
<?php if ( $count = $user->can( 'retake-course', $course->id ) ): ?>
|
98 |
+
<button
|
99 |
+
class="button button-retake-course"
|
100 |
+
data-course_id="<?php echo esc_attr( $course->id ); ?>"
|
101 |
+
data-security="<?php echo esc_attr( wp_create_nonce( sprintf( 'learn-press-retake-course-%d-%d', $course->id, $user->id ) ) ); ?>">
|
102 |
<?php echo esc_html( sprintf( __( 'Retake course (+%d)', 'learnpress' ), $count ) ); ?>
|
103 |
+
</button>
|
104 |
<?php endif; ?>
|
105 |
<?php
|
106 |
|
107 |
# -------------------------------
|
108 |
# Enrolled Course
|
109 |
# -------------------------------
|
110 |
+
elseif ( $user->has( 'enrolled-course', $course->id ) ): ?>
|
111 |
<?php
|
112 |
$can_finish = $user->can_finish_course( $course->id );
|
113 |
//if ( $can_finish ) {
|
116 |
//$finish_course_security = '';
|
117 |
//}
|
118 |
?>
|
119 |
+
<button
|
120 |
+
id="learn-press-finish-course"
|
121 |
+
class="button-finish-course<?php echo ! $can_finish ? ' hide-if-js' : ''; ?>"
|
122 |
+
data-id="<?php echo esc_attr( $course->id ); ?>"
|
123 |
+
data-security="<?php echo esc_attr( $finish_course_security ); ?>">
|
124 |
<?php esc_html_e( 'Finish course', 'learnpress' ); ?>
|
125 |
+
</button>
|
126 |
<?php elseif ( $user->can( 'enroll-course', $course->id ) === true ) : ?>
|
127 |
+
<form name="enroll-course" class="enroll-course" method="post" enctype="multipart/form-data">
|
128 |
<?php do_action( 'learn_press_before_enroll_button' ); ?>
|
129 |
|
130 |
+
<input type="hidden" name="lp-ajax" value="enroll-course"/>
|
131 |
+
<input type="hidden" name="enroll-course" value="<?php echo $course->id; ?>"/>
|
132 |
+
<button class="button enroll-button"
|
133 |
+
data-block-content="yes"><?php echo $enroll_button_text; ?></button>
|
134 |
|
135 |
<?php do_action( 'learn_press_after_enroll_button' ); ?>
|
136 |
+
</form>
|
137 |
+
<?php elseif ( $user->can( 'purchase-course', $course->id ) && ! $can_purchase ) : ?>
|
138 |
+
<form name="purchase-course" class="purchase-course" method="post" enctype="multipart/form-data">
|
|
|
139 |
<?php do_action( 'learn_press_before_purchase_button' ); ?>
|
140 |
+
<button class="button purchase-button" data-block-content="yes">
|
141 |
<?php echo $course->is_free() ? $enroll_button_text : $purchase_button_text; ?>
|
142 |
+
</button>
|
143 |
<?php do_action( 'learn_press_after_purchase_button' ); ?>
|
144 |
+
<input type="hidden" name="purchase-course" value="<?php echo $course->id; ?>"/>
|
145 |
+
<input type="hidden" value="user can purchase course"/>
|
146 |
+
</form>
|
147 |
|
148 |
+
<?php elseif ( $course->is_reached_limit()/* $user->can( 'enroll-course', $course->id ) === 'enough'*/ ) : ?>
|
149 |
+
<p class="learn-press-message"><?php echo $notice_enough_student; ?></p>
|
150 |
<?php else: ?>
|
151 |
<?php $order_status = $user->get_order_status( $course->id ); ?>
|
152 |
+
<?php if ( in_array( $order_status, array(
|
153 |
+
'lp-pending',
|
154 |
+
'lp-refunded',
|
155 |
+
'lp-cancelled',
|
156 |
+
'lp-failed'
|
157 |
+
) ) ) { ?>
|
158 |
+
<form name="purchase-course" class="purchase-course" method="post" enctype="multipart/form-data">
|
159 |
<?php do_action( 'learn_press_before_purchase_button' ); ?>
|
160 |
+
<button class="button purchase-button" data-block-content="yes">
|
161 |
<?php echo $course->is_free() ? $enroll_button_text : $purchase_button_text; ?>
|
162 |
+
</button>
|
163 |
<?php do_action( 'learn_press_after_purchase_button' ); ?>
|
164 |
+
<input type="hidden" name="purchase-course" value="<?php echo $course->id; ?>"/>
|
165 |
+
<input type="hidden" value="user order cancelled"/>
|
166 |
|
167 |
+
</form>
|
168 |
<?php } elseif ( in_array( $order_status, array( 'lp-processing', 'lp-on-hold' ) ) ) { ?>
|
169 |
<?php learn_press_display_message( '<p>' . apply_filters( 'learn_press_user_course_pending_message', __( 'Your order is processing. Please wait for approval.', 'learnpress' ), $course, $user ) . '</p>' ); ?>
|
170 |
<?php } elseif ( $order_status && $order_status != 'lp-completed' ) { ?>
|
175 |
endif;
|
176 |
?>
|
177 |
<?php do_action( 'learn_press_after_course_buttons', $course->id ); ?>
|
178 |
+
</div>
|
templates/single-course/content-item-lp_lesson.php
CHANGED
@@ -12,10 +12,16 @@ $item = LP()->global['course-item'];
|
|
12 |
$security = wp_create_nonce( sprintf( 'complete-item-%d-%d-%d', $user->id, $course->id, $item->ID ) );
|
13 |
$can_view_item = $user->can( 'view-item', $item->id, $course->id );
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
$block_option = get_post_meta( $course->id, '_lp_block_lesson_content', true );
|
16 |
$duration = $course->get_user_duration_html( $user->id, true );
|
17 |
|
18 |
-
if ( ! $duration && ( isset( $block_option ) && $block_option == 'yes' ) ) {
|
19 |
learn_press_get_template( 'content-lesson/block-content.php' );
|
20 |
} else {
|
21 |
?>
|
12 |
$security = wp_create_nonce( sprintf( 'complete-item-%d-%d-%d', $user->id, $course->id, $item->ID ) );
|
13 |
$can_view_item = $user->can( 'view-item', $item->id, $course->id );
|
14 |
|
15 |
+
$user_data = get_userdata( $user->ID );
|
16 |
+
$admin = false;
|
17 |
+
if ( $user_data && in_array( 'administrator', $user_data->roles ) ) {
|
18 |
+
$admin = true;
|
19 |
+
}
|
20 |
+
|
21 |
$block_option = get_post_meta( $course->id, '_lp_block_lesson_content', true );
|
22 |
$duration = $course->get_user_duration_html( $user->id, true );
|
23 |
|
24 |
+
if ( ! $admin && ! $duration && ( isset( $block_option ) && $block_option == 'yes' ) ) {
|
25 |
learn_press_get_template( 'content-lesson/block-content.php' );
|
26 |
} else {
|
27 |
?>
|
templates/single-course/content-item-only.php
CHANGED
@@ -39,25 +39,29 @@ $data = array_merge( $user->get_course_info2( get_the_ID() ), $data );
|
|
39 |
<?php learn_press_get_template( 'single-course/content-item.php' ); ?>
|
40 |
</div>
|
41 |
<?php ob_start(); ?>
|
42 |
-
<script>
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
data = <?php echo wp_json_encode( $data ); ?>;
|
48 |
-
$('html, body').css('opacity', 1);
|
49 |
-
windowTarget.LP.unblockContent();
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
});
|
60 |
|
|
|
|
|
|
|
61 |
</script>
|
62 |
<?php LP_Assets::add_script_tag( preg_replace( '!</?script>!', '', ob_get_clean() ), '__all' ); ?>
|
63 |
<?php
|
39 |
<?php learn_press_get_template( 'single-course/content-item.php' ); ?>
|
40 |
</div>
|
41 |
<?php ob_start(); ?>
|
42 |
+
<script type="text/javascript">
|
43 |
+
jQuery(function($){
|
44 |
+
// Ready again!
|
45 |
+
$(document).ready(function () {
|
46 |
+
var windowTarget = (parent.window || window),
|
47 |
+
data = <?php echo wp_json_encode( $data ); ?>;
|
48 |
|
49 |
+
$('#wpadminbar').remove();
|
50 |
+
$('html, body').css('opacity', 1);
|
51 |
+
windowTarget.LP.unblockContent();
|
|
|
|
|
|
|
52 |
|
53 |
+
LP.sendMessage(LP.Hook.applyFilters('learn_press_content_item_send_data', data, windowTarget), windowTarget);
|
54 |
+
$('a:not(.js-action)').click(function () {
|
55 |
+
var link = $(this).attr('href');
|
56 |
+
if (link) {
|
57 |
+
windowTarget.open(link, "_blank");
|
58 |
+
return false;
|
59 |
+
}
|
60 |
+
});
|
|
|
61 |
|
62 |
+
|
63 |
+
});
|
64 |
+
});
|
65 |
</script>
|
66 |
<?php LP_Assets::add_script_tag( preg_replace( '!</?script>!', '', ob_get_clean() ), '__all' ); ?>
|
67 |
<?php
|
templates/single-course/progress.php
CHANGED
@@ -13,7 +13,7 @@ if ( !$course ) {
|
|
13 |
return;
|
14 |
}
|
15 |
$status = $user->get( 'course-status', $course->id );
|
16 |
-
if ( !$status || !$user->has_purchased_course( $course->id ) ) {
|
17 |
return;
|
18 |
}
|
19 |
$force = isset( $force ) ? $force : false;
|
13 |
return;
|
14 |
}
|
15 |
$status = $user->get( 'course-status', $course->id );
|
16 |
+
if ( (!$status || $status =='purchased') || !$user->has_purchased_course( $course->id ) ) {
|
17 |
return;
|
18 |
}
|
19 |
$force = isset( $force ) ? $force : false;
|
templates/single-course/section/item-lesson.php
CHANGED
@@ -5,19 +5,21 @@
|
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
|
8 |
-
if ( !defined( 'ABSPATH' ) ) {
|
9 |
exit; // Exit if accessed directly
|
10 |
}
|
11 |
-
$course
|
12 |
-
$viewable
|
13 |
-
$tag
|
14 |
-
$target
|
15 |
$item_title = apply_filters( 'learn_press_section_item_title', get_the_title( $item->ID ), $item );
|
16 |
-
$item_link
|
17 |
?>
|
18 |
|
19 |
<li <?php learn_press_course_item_class( $item->ID ); ?> data-type="<?php echo $item->post_type; ?>">
|
20 |
<?php do_action( 'learn_press_before_section_item_title', $item, $section, $course ); ?>
|
21 |
-
|
22 |
-
|
23 |
-
|
|
|
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit; // Exit if accessed directly
|
10 |
}
|
11 |
+
$course = LP()->global['course'];
|
12 |
+
$viewable = learn_press_user_can_view_lesson( $item->ID, $course->id );//learn_press_is_enrolled_course();
|
13 |
+
$tag = $viewable ? 'a' : 'span';
|
14 |
+
$target = apply_filters( 'learn_press_section_item_link_target', '_blank', $item );
|
15 |
$item_title = apply_filters( 'learn_press_section_item_title', get_the_title( $item->ID ), $item );
|
16 |
+
$item_link = $viewable ? 'href="' . $course->get_item_link( $item->ID ) . '"' : '';
|
17 |
?>
|
18 |
|
19 |
<li <?php learn_press_course_item_class( $item->ID ); ?> data-type="<?php echo $item->post_type; ?>">
|
20 |
<?php do_action( 'learn_press_before_section_item_title', $item, $section, $course ); ?>
|
21 |
+
<<?php echo $tag; ?> class="course-item-title button-load-item" <?php echo $tag == 'a' ? "target=$target" : ''; ?><?php echo $item_link; ?>
|
22 |
+
data-id="<?php echo $item->ID; ?>" data-complete-nonce="<?php echo wp_create_nonce( 'learn-press-complete-' . $item->post_type . '-' . $item->ID ); ?>
|
23 |
+
"><?php echo $item_title; ?></<?php echo $tag; ?>>
|
24 |
+
<?php do_action( 'learn_press_after_section_item_title', $item, $section, $course ); ?>
|
25 |
+
</li>
|
templates/single-course/section/title.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
|
8 |
-
if ( !defined( 'ABSPATH' ) ) {
|
9 |
exit; // Exit if accessed directly
|
10 |
}
|
11 |
$user = learn_press_get_current_user();
|
@@ -17,13 +17,16 @@ if ( $section_name === false ) {
|
|
17 |
return;
|
18 |
}
|
19 |
?>
|
20 |
-
|
21 |
-
|
|
|
|
|
|
|
22 |
<?php if ( $section_description = apply_filters( 'learn_press_curriculum_section_description', $section->section_description, $section ) ) { ?>
|
23 |
-
|
24 |
<?php } ?>
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
</
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit; // Exit if accessed directly
|
10 |
}
|
11 |
$user = learn_press_get_current_user();
|
17 |
return;
|
18 |
}
|
19 |
?>
|
20 |
+
|
21 |
+
<div class="section-header">
|
22 |
+
<?php if ( $section_name ) { ?>
|
23 |
+
<h4><?php echo $section_name; ?> </h4>
|
24 |
+
<?php } ?>
|
25 |
<?php if ( $section_description = apply_filters( 'learn_press_curriculum_section_description', $section->section_description, $section ) ) { ?>
|
26 |
+
<p><?php echo $section_description; ?></p>
|
27 |
<?php } ?>
|
28 |
+
<div class="meta">
|
29 |
+
<span class="step"><?php printf( __( '%d/%d', 'learnpress' ), $user->get_completed_items_in_section( $course->id, $section->section_id, $force ), sizeof( $section->items ) ); ?></span>
|
30 |
+
<span class="collapse"></span>
|
31 |
+
</div>
|
32 |
+
</div>
|