{{ var cloudfront = 'https://dmn92m25mtw4z.cloudfront.net/'; }} {{ var sprite_1by1 = cloudfront + 'img_set/sprite/v1/sprite-1w.png'; }} {{ var sprite_16by9 = cloudfront + 'img_set/sprite-16by9/v1/sprite-16by9-16w.png'; }} {{ var spritesheet = '/img/uploads/freemium-core-sprites.svg'; }} {{? it.markup }} {{= it.markup }} {{?? it.action_bar }} {{# def.action_bar }} {{?? it.action_bar__button }} {{# def.action_bar__button }} {{?? it.animation_loading }} {{# def.animation_loading }} {{?? it.confirm_msg }} {{# def.confirm_msg }} {{?? it.course__chapters }} {{# def.course__chapters }} {{?? it.course_picker }} {{# def.course_picker }} {{?? it.course_selector }} {{# def.course_selector }} {{?? it.course_wall }} {{# def.course_wall }} {{?? it.dialog__alert }} {{# def.dialog__alert }} {{?? it.dialog__confirm }} {{# def.dialog__confirm }} {{?? it.dialog__footer__actions }} {{# def.dialog__footer__actions }} {{?? it.dialog__form }} {{# def.dialog__form }} {{?? it.dialog__guide }} {{# def.dialog__guide }} {{?? it.dialog__review }} {{# def.dialog__review }} {{?? it.help__hint }} {{# def.help__hint }} {{?? it.help__hint__tooltip }} {{# def.help__hint__tooltip }} {{?? it.help__tooltip__body }} {{# def.help__tooltip__body }} {{?? it.modal_dialog }} {{# def.modal_dialog }} {{?? it.page_banner }} {{# def.page_banner }} {{?? it.page_controls__left }} {{# def.page_controls__left }} {{?? it.page_controls__help }} {{# def.page_controls__help }} {{?? it.page_share }} {{# def.page_share }} {{?? it.pitch__banner }} {{# def.pitch__banner }} {{?? it.pitch__premium }} {{# def.pitch__premium }} {{?? it.pitch__premium__parents }} {{# def.pitch__premium__parents }} {{?? it.pitch__premium__students }} {{# def.pitch__premium__students }} {{?? it.review_us }} {{# def.review_us }} {{?? it.signup_footer }} {{# def.signup_footer }} {{?? it.switch_password }} {{# def.switch_password }} /* USER QUESTIONS */ {{?? it.my_questions }} {{# def.my_questions }} {{?? it.view_question }} {{# def.view_question }} {{?? it.view_question__form }} {{# def.view_question__form }} {{?? it.icon__thumbs_down }} {{# def.icon__thumbs_down }} {{?? it.icon__thumbs_up }} {{# def.icon__thumbs_up }} {{?}} /* PUBLIC DEFS */ {{## def.animation_loading: #}} {{## def.icon__thumbs_down: #}} {{## def.icon__thumbs_up: #}} {{## def.my_questions: {{ var self = it.my_questions; }}

{{? self.questions && self.questions.length }} {{= self.header_title }} {{??}} {{= self.feature_title }} {{?}}

{{# def.icon :'svg-icon-beta-tag' }}
{{? self.questions && self.questions.length }} {{??}}
{{= self.feature_desc }}
{{?}}
#}} {{## def.view_question: {{ var self = it.view_question; }} {{ var has_answers = 0; }} {{ var has_comments = 0; }} {{ var question = self.question; }} {{? question && question.answers.length }} {{ has_answers = 1; }} {{?}} {{? question && question.comments.length }} {{ has_comments = 1; }} {{?}}

{{? question }} {{= question.title || self.header_title }} {{??}} {{= self.header_title }} {{?}}

{{# def.icon :'svg-icon-close' }}
{{? self.body_note }}
{{= self.body_note }}
{{?}} {{? self.question }}
{{= self.escapeHTML(question.body) }}
{{? has_comments }}
{{= self.comments_label + ' (' + question.comments.length + ')' }}
    {{~ question.comments :comment }} {{# def.view_question__comment :comment }} {{~}}
{{?}}
{{? has_answers }} {{~ question.answers :answer }} {{ has_comments = answer.comments.length ? 1 : 0; }}
{{= self.answers_label }}
{{? answer.role === 'expert' }} {{= self.parseHTML(answer.body) }} {{??}} {{= self.escapeHTML(answer.body) }} {{?}}
{{? answer.image_url }} {{?}} {{? answer.comments && answer.comments.length }}
{{= self.comments_label + ' (' + answer.comments.length + ')' }}
    {{~ answer.comments :comment }} {{# def.view_question__comment :comment }} {{~}}
{{?}}
{{~}} {{?}} {{?}}
{{= self.form_markup || '' }} {{? self.controls && self.controls.length }} {{?}}
#}} {{## def.view_question__comment :item:
  • {{? item.role === 'expert' }} {{= self.parseHTML(item.body) }} {{??}} {{= self.escapeHTML(item.body) }} {{?}}
    {{= self.getCommentDetails(item) }}
  • #}} {{## def.view_question__form: {{ var self = it.view_question__form; }} {{ var data_str = ''; }} {{ var has_title = self.form_title ? true : false; }} {{? self.answer_id }} {{ data_str = 'data-answer-id="' + self.answer_id + '"'; }} {{ data_str += ' data-question-id="' + self.question_id + '"'; }} {{?? self.question_id }} {{ data_str = 'data-question-id="' + self.question_id + '"'; }} {{?}}
    {{? has_title }}
    {{= self.form_title }}
    {{?}}
    {{? self.form_note }}
    {{= self.form_note }}
    {{?}}
    {{? self.form_desc }}

    {{= self.form_desc }}

    {{?}}

    {{~ self.form_fields :field }} {{? field.type === 'select' }} {{ var is_hidden = self.form_controls ? 'hidden' : ''; }} {{?? field.type === 'textarea' }} {{??}} {{?}} {{~}}
      {{? self.form_controls }} {{~ self.form_controls :item }}
    • {{~}} {{?}} {{? self.submit_label }}
    • {{?}} {{? self.close_label }}
    • {{= self.close_label }}
    • {{?}}
    #}} {{## def.action_bar: {{ var self = it.action_bar; }}
      {{~ self.buttons :button }}
    1. {{? button.dropdown }} {{?? button.action || button.url }} {{= button.label }} {{?}}
    2. {{~}}
    #}} {{## def.action_bar__button: {{ var self = it.action_bar__button; }} {{? self.dropdown }} {{?}} #}} {{## def.confirm_msg: {{ var self = it.confirm_msg; }} #}} {{## def.course__chapters: {{ var self = it.course__chapters; }}
      {{~ self.course.chapter_ids :chapter_id:index }} {{ var chapter = self.course.chapters[chapter_id]; }} {{ var chapter_num = index + 1; }}
    1. {{= chapter_num }} {{= self.katexify(chapter.name) }}
        {{~ chapter.topic_ids :topic_id:topic_index }} {{ var topic = chapter.topics[topic_id]; }} {{ var topic_key = topic.topic_key; }} {{ var topic_num = topic_index + 1; }} {{? !self.is_canon }} {{ var topic_progress = self.getTopicProgess(self.course, chapter_id, topic_id); }} {{ var score, offset, inline_styles; }} {{?}}
      1. {{= chapter_num + '.' + topic_num }} {{= self.katexify(topic.name) }}
        • {{? !self.is_canon && topic.has_intro }} {{ score = topic_progress.intro.score ; }} {{ offset = 106.76 - (106.76 * (score/100)); }} {{ inline_styles = 'style="--stroke-dashoffset:' + offset + '"'; }} {{ sprite_id = 'svg-topic-progress-ring'; }} {{# def.icon :sprite_id }} {{?}} {{? topic.has_intro }} {{# def.icon :'svg-topic-component-intro' }} {{?}}
        • {{? !self.is_canon && topic.has_vids }} {{ score = topic_progress.examples.score ; }} {{ offset = 106.76 - (106.76 * (score/100)); }} {{ inline_styles = 'style="--stroke-dashoffset:' + offset + '"'; }} {{ sprite_id = 'svg-topic-progress-ring'; }} {{# def.icon :sprite_id }} {{?}} {{? topic.has_vids }} {{# def.icon :'svg-topic-component-examples' }} {{?}}
        • {{? !self.is_canon && topic.has_practice }} {{ score = topic_progress.practice.qe_score; }} {{ offset = 106.76 - (106.76 * (score/100)); }} {{ inline_styles = 'style="--stroke-dashoffset:' + offset + '"'; }} {{ sprite_id = 'svg-topic-progress-ring'; }} {{# def.icon :sprite_id }} {{?}} {{? topic.has_practice }} {{# def.icon :'svg-topic-component-practice' }} {{?}}
      2. {{~}}
    2. {{~}}
    #}} {{## def.course_wall: {{ var self = it.course_wall; }} {{ var class_modifiers = self.image_url ? 'is-static' : 'no-image'; }}
    {{? self.image_url }} {{= self.image_alt }} {{?}}
    {{= self.overlay_title }}
    {{= self.overlay_subtitle }}
    {{= self.button_label }}
    #}} {{## def.course_picker: /* course selector 2 */ {{ var self = it.course_picker; }}
    {{? self.main_heading }}

    {{= self.main_heading }}

    {{? self.sub_heading }}
    {{= self.sub_heading }}
    {{?}}
    {{?}} {{? self.show_groups && self.course_groups.length > 1 }} {{?}}
      {{~ self.merged_course_group :plan_id:index }} {{ var course = self.courses[plan_id]; }}
    1. {{= course.name }} {{? self.show_info }} {{ var strs = self.getCourseInfoStrings(course); }} {{ var x1 = 50; }} {{ var x2 = 55; }} {{ var y = 15; }} {{ var offset = 25; }} {{ var newColour = self.darkenColour(course.course_image_colour); }} {{ var inline_styles = 'style="' + self.bgOverlay(course.course_image_colour) + ';"'; }} {{~ strs :arr }} {{= arr[0] }} {{= arr[1] }} {{ y += offset; }} {{~}} {{?}}
    2. {{~}}
    #}} {{## def.ignore: {{ var strs = []; }} {{~ strs :str }} {{ y += offset; }} {{~}} {{ var strs = self.getCourseInfoStrings(course); }} {{ var x1 = 50; }} {{ var x2 = 55; }} {{ var y = 60; }} {{ var offset = 25; }} {{ var gradient = 'to top, '+ course.course_image_colour +' 67%, transparent 67%'; }} {{ var inline_styles = 'style="background-image: linear-gradient('+ gradient +')"'; }} {{~ strs :arr }} {{= arr[0] }} {{= arr[1] }} {{ y += offset; }} {{~}} #}} {{## def.course_selector: {{ var self = it.course_selector; }}
    {{~ self.merged_course_group :plan_id:index }} {{ var course = self.courses[plan_id]; }} {{~}}
    #}} {{## def.dialog__alert: {{ var self = it.dialog__alert; }} {{# def.modal_dialog }} #}} {{## def.dialog__confirm: {{ var self = it.dialog__confirm; }} {{# def.modal_dialog }} #}} {{## def.dialog__footer__actions: {{ var self = it.dialog__footer__actions; }} {{~ self.controls :item:index }} {{~}} #}} {{## def.dialog__form: {{ var self = it.dialog__form; }} {{# def.modal_dialog }} #}} {{## def.dialog__guide: {{ var self = it.dialog__guide; }} #}} {{## def.dialog__review: {{ var self = it.dialog__review; }} {{# def.modal_dialog }} #}} {{## def.help__hint: {{ var self = it.help__hint; }} {{ var mask_url = 'url(' + spritesheet + '#svg-mask-hint-pulse)'; }}
    ?
    #}} {{## def.help__hint__tooltip: {{ var self = it.help__hint__tooltip; }} {{? self.body_only }}
    {{= self.title }}
    {{= self.msg }}
    {{??}}
    {{= self.title }}
    {{= self.msg }}
    {{?}} #}} {{## def.help__tooltip__body: {{ var self = it.help__tooltip__body; }}
    {{= self.title }}
    {{= self.desc }}
    #}} {{## def.modal: {{ var self = it.modal; }} #}} {{## def.modal_dialog: {{ var self = self || it.modal_dialog; }} #}} {{## def.page_controls__help: {{ var self = it.page_controls__help; }} {{= self.help_label }} {{# def.icon :'svg-caret-down' }} #}} {{## def.page_banner: {{ var self = it.page_banner; }} {{ var add_classes = self.is_important ? 'is-important' : ''; }}
    {{= self.msg }}
    #}} {{## def.page_controls__left: {{ var self = it.page_controls__left; }} {{= self.label }} {{# def.icon :'svg-caret-down' }} #}} {{## def.page_share: {{ var self = it.page_share; }}
    {{? self.items && self.items.length }} {{?}}
    #}} {{## def.pitch__banner: {{ var self = it.pitch__banner; }} {{? !self.is_subscribed }}
    {{= self.heading }}
    {{= self.body }}
    {{= self.image_text || '' }} {{= self.link_label }}
    {{?}} #}} {{## def.pitch__premium: {{ var self = it.pitch__premium; }} {{? !self.is_subscribed }} {{?}} #}} {{## def.pitch__premium__parents: {{ var self = it.pitch__premium__parents; }} {{~ self.blocks :block }} {{# def.pitch_block }} {{~}} #}} {{## def.pitch__premium__students: {{ var self = it.pitch__premium__students; }} {{? !self.is_classic }} {{?}} {{~ self.blocks :block }} {{# def.pitch_block }} {{~}} #}} {{## def.review_us: {{ var self = it.review_us; }}
    {{~ self.sets :set }} {{ var inline_style = set.is_hidden ? 'style="display:none;"' : ''; }}

    {{= set.msg || '' }}

    {{? set.options }} {{?}}
    {{~}}
    #}} {{## def.signup_footer: {{ var self = it.signup_footer; }} {{? !self.is_subscribed }} {{ var da = self.daily_access; }} {{ var count_value; }} {{ var count_label; }} {{?}} #}} {{## def.switch_password: {{ var self = it.switch_password; }} {{ var inline_styles = ''; }}

    {{= self.desc }}

    #}} /* PRIVATE DEFS */ {{## def.count_block: #}} {{## def.icon :sprite_id: {{ var url = spritesheet + '#' + sprite_id; }} #}} {{## def.pitch_block: {{ var is_active = ''; }} {{ var is_reversed = block.is_reversed ? 'is-reversed' : ''; }}
  • {{= block.heading }}

    {{? !block.table }} {{? block.graphics }}
    {{~ block.graphics :imageURL }} {{~}}
    {{?? block.image }}
    {{= block.image.alt_text }}
    {{?}}
    {{= block.message }}
    {{??}} /* is table */
    {{~ block.table.images :image:index }} {{ is_active = !index ? 'is-active' : ''; }}
    {{= image.alt_text }}
    {{~}}
    {{~ block.table.heading :str:index }} {{ is_active = !index ? 'is-active' : ''; }}
    {{= str }}
    {{~}}
    {{~ block.table.message :str:index }} {{ is_active = !index ? 'is-active' : ''; }}

    {{= str }}

    {{~}}
    {{?}}
    {{? block.has_signup }}
    {{= block.signup_label || self.signup_label }}
    {{?}}
  • #}} {{## def.sample__graph__1: 3-16 3-18 3-25 4-6 5-4 0% 50% 100% #}}