{"version":3,"file":"daily.e556066c.mjs","sources":["../../../../pages/practice/daily.vue"],"sourcesContent":["<template>\n  <NuxtLayout>\n      <div id=\"app\" class=\"exam_page\" v-if=\"map.list && map.list.titleList && map.list.titleList.length > 0\">\n        <div class=\"exam_header\">\n          <div class=\"header_flex\">\n            <div class=\"exit_exam\" @click=\"submit(true)\">退出练习</div>\n            <div class=\"exam_title\">{{info.titleName || info.practiceName}}</div>\n            <div class=\"exam_time_box\">\n              <template v-if=\"examType == 4\">\n                答题剩余：\n                <div class=\"exam_time\">{{ map.examTimeText }}</div>\n              </template>\n              <el-button v-if=\"!ctrl.noTrue\" type=\"primary\" @click=\"queryAndSubmit\" class=\"pointer\">交卷</el-button>\n            </div>\n          </div>\n        </div>\n        <div class=\"exam_paper_box\" ref=\"box\">\n          <div class=\"exam_user_paper\">\n            <div class=\"exam_user_item\">\n              <div class=\"exam_user_top\">\n                <el-avatar :size=\"40\" :src=\"userInfo.headImg\"></el-avatar>\n              </div>\n              <div class=\"exam_user_bottom\">{{userInfo.nickname}}</div>\n            </div>\n            <div class=\"exam_user_item\">\n              <div class=\"exam_user_bottom\"><el-switch v-model=\"ctrl.next\" @change=\"handleChangeNext\" size=\"default\"></el-switch></div>\n              <div class=\"exam_user_top\">自动下一题</div>\n            </div>\n            <div class=\"exam_user_item\" v-if=\"examType < 4\">\n              <div class=\"exam_user_bottom\"><el-switch v-model=\"ctrl.show\" @change=\"handleNextChange\" size=\"default\"></el-switch></div>\n              <div class=\"exam_user_top\">自动显示答案解析</div>\n            </div>\n            <div class=\"exam_user_item\" v-if=\"examType < 4\">\n              <div class=\"exam_user_bottom\"><el-switch v-model=\"ctrl.noTrue\" @change=\"handleChangeAnswer\" size=\"default\"></el-switch></div>\n              <div class=\"exam_user_top\">背题模式</div>\n            </div>\n          </div>\n          <div class=\"exam_center\">\n            <div class=\"left\" v-loading=\"ctrl.loading\">\n              <template v-for=\"(d) in map.list.titleList\">\n                <template v-for=\"(p, index) in d.questionList\" :key=\"index\">\n                  <div class=\"question_box\" :id=\"p.qIndex\">\n                    <problem-item\n                      @updateUserAnswer=\"updateUserAnswer\"\n                      :problem=\"p\"\n                      :record-id=\"map.list.practiceRecordId\"\n                      :title-record-id=\"map.list.practiceTitleRecordId\"\n                      :index=\"p.qIndex\"\n                      :course-id=\"courseId\"\n                      :question-type=\"examType\"\n                      :is-analysis=\"ctrl.noTrue\"\n                      :is-show-confirm=\"ctrl.next || ctrl.show\"\n                    ></problem-item>\n                    <div class=\"collect_item\" @click=\"collect(p)\" v-if=\"examType < 4\">\n                      <img\n                        v-if=\"!p.collectionType\"\n                        class=\"pointer\"\n                        src=\"@/assets/images/exam/icon_collection1.svg\"\n                        alt=\"\"\n                      />\n                      <img\n                        v-else\n                        class=\"pointer\"\n                        src=\"@/assets/images/exam/icon_collection2.svg\"\n                        alt=\"\"\n                      />\n                      <span class=\"pointer\" :class=\"{active_collect:p.collectionType}\">收藏</span>\n                    </div>\n                    <div class=\"analysis\" v-if=\"ctrl.noTrue || p.show\">\n                      <div class=\"mgb20\" :class=\"{'inline-b mgr30': p.questionType < 4}\">\n                        <div class=\"analysis_item\" v-if=\"p.questionType === 5\">\n                          <span class=\"left_text\">正确答案：</span>\n                          <div v-html=\"p.questionAnswer || ''\"></div>\n                        </div>\n                        <div class=\"analysis_item\" v-else>\n                          <span class=\"left_text\">正确答案：</span>\n                          <span :class=\"{'blue_text': p.questionType < 4}\">{{getNum(p.questionAnswer,p.optionList,p.questionType)}}</span>\n                        </div>\n                      </div>\n                      <div class=\"mgb20\" :class=\"{'inline-b': p.questionType < 4}\">\n                        <div class=\"analysis_item\" v-if=\"p.questionType < 5\">\n                          您的答案：<span class=\"question_my\" :class=\"{'red_text': p.questionType < 4}\">{{getNumAnswer(p.userAnswer,p.optionList,p.questionType)}}</span>\n                        </div>\n                        <div class=\"analysis_item\" v-else>您的答案：<span class=\"question_my\">{{p.userAnswer || ''}}</span></div>\n                      </div>\n                      <div class=\"analysis_item\">\n                        <span class=\"left_text\">答案解析：</span>\n                        <div v-html=\"p.questionAnalysis || '无'\"></div>\n                      </div>\n                    </div>\n                  </div>\n                </template>\n              </template>\n            </div>\n          </div>\n          <div class=\"exam_right\">\n            <div class=\"exam_right_title\">答题卡</div>\n            <div class=\"problem\">\n              <div class=\"problem_exam_box mgb20\">\n                <div class=\"problem_exam_box_item true\">{{examType < 4 ? '答对' : '已答'}}</div>\n                <div class=\"problem_exam_box_item wrong\" v-if=\"examType < 4\">答错</div>\n                <div class=\"problem_exam_box_item false\">未答</div>\n                <div class=\"problem_exam_box_item collect\" v-if=\"examType < 4\">收藏</div>\n              </div>\n              <div\n                v-for=\"(t, i) in map.list.titleList\"\n                :key=\"i\"\n                class=\"mgb20\"\n              >\n                <div\n                  class=\"title_type\"\n                  :title=\"t.titleName\"\n                  v-if=\"map.list.titleList.length > 1\"\n                >\n                  {{ t.titleName }}\n                </div>\n                <div class=\"card_box\">\n                <span\n                  :class=\"[\n                    'problem_num',\n                    p.collectionType && examType < 4?'collect_num':'',\n                    (getProblemAnswerStatus(p) === 1 && examType < 4) || (p.userAnswer && examType === 4)? 'active_num' : '',\n                    getProblemAnswerStatus(p) === 2 && examType < 4 ? 'wrong_num': ''\n                  ]\"\n                  v-for=\"(p, idx) in t.questionList\"\n                  :key=\"'key2' + idx\"\n                  @click=\"jumpProblem(p.qIndex)\"\n                >{{ p.qIndex + 1 }}</span\n                >\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n  </NuxtLayout>\n</template>\n\n<script setup>\nimport { useUserStore } from \"@/stores/user\";\nimport { ElMessage, ElMessageBox } from \"element-plus\";\nimport {ref, onMounted, reactive, computed, nextTick} from \"vue\";\nimport ProblemItem from \"@/pages/practice/dailyProblem.vue\";\nimport { setStore } from \"@/utils/storage\";\nimport {getStore} from \"../../utils/storage\";\nimport {userOperateQuestion, practiceTitleEndPathFinding, practiceTitleStartPathFinding} from \"../../api/paper\";\nimport cookie from \"@/utils/cookies\";\nlet cookieData = cookie.getShop()\nuseHead({\n  title:'练习-' + cookieData.shopName\n})\nlet info = ref(null)\nlet courseId = ref('')\nlet  examType = ref(2)\nlet titleId = ref('')\nconst store = useUserStore();\nconst { getEnumList,getUserView } = store;\nconst userInfo = computed(()=>store.userView)\nconst map = reactive({\n  letter: 'ABCDEFGHIJkLMNOPQRSTUVWXYZ'.split(''),\n  index: 0,\n  list: {},\n  examTime:0,\n  examTimeText:''\n});\nconst opts = reactive({\n  questionTypeEnums: [],\n  difficultyLevelEnums: [],\n  questionIdList: []\n});\nconst ctrl = reactive({\n  loading: false,\n  show: false,\n  next:true,\n  save:false,\n  noTrue:false\n})\nconst router = useRouter();\nconst route = useRoute()\n//router.beforeResolve((to, from, next)=>{\n//  if(to.path !== route.path) {\n//    if (!ctrl.save) {\n//      submit(true)\n//      next(false)\n//    } else {\n//      next()\n//    }\n//  }else{\n//    examType.value = parseInt(to.query.examType)\n//    courseId.value = to.query.courseId\n//    info.value = JSON.parse(getStore('examInfo'))\n//    next(false)\n//  }\n//})\nconst getNumAnswer = (val,list,type) => {\n  if(!val) {\n    return ''\n  }\n  if(type === 5) {\n    return true\n  } else if(type === 4){\n    const arr = val.split('|')\n    return  arr.join('；')\n  }\n  if(list) {\n    if(type === 1) {\n      let num = null\n      list.forEach((el, i) => {\n        if (el.id === val && num === null) {\n          num = i\n        }\n      })\n      return map.letter[num]\n    }else if(type === 2){\n      let num = []\n      list.forEach((el, i) => {\n        if (val.indexOf(el.id) > -1 && num.indexOf(el.id) === -1) {\n          num.push(map.letter[i])\n        }\n      })\n      return  num.join(',')\n    }else if(type === 3){\n      return val\n    }\n  }else{\n    return val\n  }\n}\nconst getNum = (val,list,type) => {\n  if(type === 5) {\n    return true\n  } else if(type === 4){\n    const arr = val.split('|')\n    return  arr.join('；')\n  }\n  if(list) {\n    if(type === 1) {\n      let num = null\n      list.forEach((el, i) => {\n        if (el.optionContent === val && num === null) {\n          num = i\n        }\n      })\n      return map.letter[num]\n    }else if(type === 2){\n      let num = []\n      list.forEach((el, i) => {\n        if (val.indexOf(el.optionContent) > -1 && num.indexOf(el.optionContent) === -1) {\n          num.push(map.letter[i])\n        }\n      })\n      return  num.join(',')\n    }else if(type === 3){\n      return val\n    }\n  }else{\n    return val\n  }\n}\nconst getProblemAnswerStatus = (p) => {\n  if(!p.userAnswer) {\n    return ''\n  } else {\n    if (p.questionType === 1) {\n      if (p.correctAnswer && p.correctAnswer.length > 0) {\n        if (p.userAnswer.indexOf(p.correctAnswer) > -1) {\n          return 1 //（用来标记答题卡的答对答错状态）：1答对，2答错\n        } else {\n          return 2\n        }\n      }\n    } else if (p.questionType === 2) {\n      if (p.correctAnswer.length > 0) {\n        const arr = []\n        p.correctAnswer.forEach(i => {\n          if (p.userAnswer.indexOf(i) > -1) {\n            arr.push(i)\n          }\n        })\n        // 多选判断所选答案个数是否与正确答案个数一样（考虑正确答案全选同时也选了其他错误答案的情况）\n        if (arr.length === p.correctAnswer.length && p.correctAnswer.length === p.userAnswer.split('|')\n          .length) {\n            return 1\n        } else {\n          return 2\n        }\n      }\n    } else if (p.questionType === 3) {\n      if (p.userAnswer === p.questionAnswer) {\n        return 1\n      } else {\n        return 2\n      }\n    } else if(p.questionType === 4 || p.questionType === 5) {\n      return 1\n    }\n  }\n}\nconst handleChangeNext = (val) => {\n  if(val){\n    ctrl.noTrue = false\n  }\n}\nconst handleNextChange = (val) => {\n  if(val) {\n    ctrl.noTrue = false\n  }\n}\nconst queryAndSubmit = () => {\n  let status = null\n  status = map.list.titleList.every(function (d) {\n    return d.questionList.every(function (i) {return (i.userAnswer != false && i.userAnswer != undefined)})\n  })\n  if(!status){\n    ElMessageBox.confirm('您还有题目未答，确定交卷？','交卷提示',{\n      confirmButtonText:'确定',\n      cancelButtonText:'查看未答',\n      center:true\n    }).then(()=>{\n      submit(false)\n    }).catch(()=>{\n      let continueValue = true\n      map.list.titleList.forEach(d=>{\n        d.questionList.forEach((el) => {\n          if (!el.userAnswer && continueValue) {\n            continueValue = false\n            document.getElementById(el.qIndex).scrollIntoView()\n          }\n        })\n      })\n    })\n  } else {\n    ElMessageBox.confirm(\"确定提交练习吗？\", \"提示\", {\n      cancelButtonText: \"取消\",\n      confirmButtonText: \"确定\",\n      type: \"warning\"\n    }).then(() => {\n      if(map.time) {\n        clearInterval(map.time)\n        map.time = null\n      }\n      const params = {\n        practiceId: courseId.value,\n        practiceRecordId: map.list.practiceRecordId\n      }\n      if(map.list.practiceTitleRecordId) {\n        params.practiceTitleRecordId = map.list.practiceTitleRecordId\n      }\n      if(map.list.randomCombine) {\n        params.questionList = [...opts.questionIdList]\n      }\n      practiceTitleEndPathFinding(params).then((r) => {\n        if(r) {\n          ctrl.save = true\n          let obj = {\n            practiceRecordId: map.list.practiceRecordId,\n            practiceTitleRecordId: map.list.practiceTitleRecordId\n          }\n          Object.assign(obj, r)\n          setStore('practiceResult', obj)\n          router.replace({\n            path:'/practice/result',\n            query: {\n              id: courseId.value,\n              titleId: titleId.value\n            }\n          })\n        }\n      });\n    }).catch(() => {})\n  }\n}\nconst handleChangeAnswer = (val) => {\n  if(val) {\n    ctrl.show = false\n    ctrl.next = false\n  }\n}\nconst checkIfJumpNext = (userAnswer, problem) => { //判断答错答对跳下一题\n  const index = problem.qIndex\n  if(ctrl.next && !ctrl.show) {\n    if (document.getElementById(index + 1))\n      document.getElementById(index + 1).scrollIntoView()\n  }\n  const nextAndShowAction = () => {\n    if(ctrl.next && ctrl.show) {\n      if (document.getElementById(index + 1))\n        document.getElementById(index + 1).scrollIntoView()\n    }\n  }\n  if (problem.questionType === 1) {\n    if (problem.correctAnswer && problem.correctAnswer.length > 0) {\n      if (userAnswer.indexOf(problem.correctAnswer) > -1) {\n        nextAndShowAction()\n      }\n    }\n  } else if (problem.questionType === 2) {\n    if (problem.correctAnswer && problem.correctAnswer.length > 0) {\n      const arr = []\n      problem.correctAnswer.forEach(i => {\n        if (userAnswer.indexOf(i) > -1) {\n          arr.push(i)\n        }\n      })\n      // 多选判断所选答案个数是否与正确答案个数一样（考虑正确答案全选同时也选了其他错误答案的情况）\n      if (arr.length === problem.correctAnswer.length && problem.correctAnswer.length === userAnswer.split('|')\n        .length) {\n          nextAndShowAction()\n      }\n    }\n  } else if (problem.questionType === 3) {\n    if (userAnswer === problem.questionAnswer) {\n      nextAndShowAction()\n    }\n  } else if (problem.questionType === 4 || problem.questionType === 5) {\n    if(userAnswer) {\n      nextAndShowAction()\n    }\n  }\n}\nconst setOptionStatus = (p) => {\n  if (p.questionType < 3) {\n    p.optionList.forEach(o => {\n      o.oStatus = 3 //默认状态\n      if (p.correctAnswer.indexOf(o.id) > -1) {\n        o.oStatus = 1 // 答对状态\n      } else {\n        if (p.userAnswer && p.userAnswer.indexOf(o.id) > -1) {\n          o.oStatus = 2 // 答错状态\n        }\n      }\n    })\n  }\n  if (p.questionType === 3) {\n    p.optionList.forEach((o) => {\n      o.oStatus = 3\n      if(p.userAnswer) {\n        if(o.optionContent == p.questionAnswer) {\n          o.oStatus = 1\n        } else {\n          if(o.optionContent == p.userAnswer) {\n            o.oStatus = 2\n          }\n        }\n      } else {\n        if(o.optionContent == p.questionAnswer) {\n          o.oStatus = 1\n        }\n      }\n    })\n  }\n}\nconst updateUserAnswer = (d) => {\n  map.list.titleList.forEach((el) => {\n    el.questionList.forEach((e, index) => {\n      if (e.id === d.questionId) {\n        e.userAnswer = d.userAnswer;\n        if (e.questionType == 1 && d.userAnswer) {\n          checkIfJumpNext(d.userAnswer, e)\n        }\n        if (e.questionType == 2) {\n          if (d.userAnswer && d.userAnswer.length > 0) {\n            checkIfJumpNext(d.userAnswer, e)\n          }\n        }\n        if (e.questionType == 3 && d.userAnswer) {\n          checkIfJumpNext(d.userAnswer, e)\n        }\n        if (e.questionType == 4 || e.questionType == 5) {\n          checkIfJumpNext(d.userAnswer, e)\n        }\n        setOptionStatus(e)\n        e.show = ctrl.show\n        if (ctrl.noTrue) {\n          e.show = false\n          //e.userAnswer = ''\n        }\n      }\n    })\n  })\n};\nconst collect = (row) => {\n  const qId = row.questionId || row.id\n  if(!row.collectionType) {\n    userOperateQuestion({\n      errorQuestionAnswer: row.userAnswer || '',\n      handleType: false, //类型(默认为收藏可不传)：true:移除试题，false：收藏试题\n      operateType: 2, //1：错题、2：收藏\n      questionId: qId,\n      sourceId: courseId.value,\n      sourceType: 2 //1:课程中心、2:考试中心、3：班级中心\n    }).then(res => {\n      ElMessage.success(res)\n      row.collectionType = true\n    })\n  } else {\n    userOperateQuestion({\n      handleType: true, //类型(默认为收藏可不传)：true:移除试题，false：收藏试题\n      operateType: 2, //1：错题、2：收藏\n      questionId: qId,\n      sourceId: courseId.value,\n      sourceType: 2 //1:课程中心、2:考试中心、3：班级中心\n    }).then(res => {\n      ElMessage.success(res)\n      row.collectionType = false\n    })\n  }\n}\nconst jumpProblem = (index) => {\n  document.getElementById(index).scrollIntoView()\n}\nconst submit = (bool = true) => {\n  if(bool) {\n    ElMessageBox.confirm(\"确定要结束练习?\", \"提示\", {\n      distinguishCancelAndClose: true,\n      cancelButtonText: \"下次继续\",\n      confirmButtonText: \"结束练习\",\n      type: \"warning\"\n    }).then(() => {\n      if(map.time) {\n        clearInterval(map.time)\n        map.time = null\n      }\n      const params = {\n        practiceId: courseId.value,\n        practiceRecordId:map.list.practiceRecordId\n      }\n      if(map.list.practiceTitleRecordId) {\n        params.practiceTitleRecordId = map.list.practiceTitleRecordId\n      }\n      if(map.list.randomCombine) {\n        params.questionList = [...opts.questionIdList]\n      }\n      practiceTitleEndPathFinding(params).then((r) => {\n        if(r) {\n          ctrl.save = true\n          let obj = {\n            practiceRecordId: map.list.practiceRecordId,\n            practiceTitleRecordId: map.list.practiceTitleRecordId\n          }\n          Object.assign(obj, r)\n          setStore('practiceResult', obj)\n          router.replace({\n            path:'/practice/result',\n            query: {\n              id: courseId.value,\n              titleId: titleId.value\n            }\n          })\n        }\n      });\n    }).catch(res => {\n      if(res === 'cancel') {\n        router.go(-1)\n      }\n    })\n  } else {\n    if(map.time) {\n      clearInterval(map.time)\n      map.time = null\n    }\n    const params = {\n      practiceId: courseId.value,\n      practiceRecordId: map.list.practiceRecordId\n    }\n    if(map.list.practiceTitleRecordId) {\n      params.practiceTitleRecordId = map.list.practiceTitleRecordId\n    }\n    if(map.list.randomCombine) {\n      params.questionList = [...opts.questionIdList]\n    }\n    practiceTitleEndPathFinding(params).then((r) => {\n      if(r) {\n        ctrl.save = true\n        let obj = {\n          practiceRecordId: map.list.practiceRecordId,\n          practiceTitleRecordId: map.list.practiceTitleRecordId\n        }\n        Object.assign(obj, r)\n        setStore('practiceResult', obj)\n        router.replace({\n          path:'/practice/result',\n          query: {\n            id: courseId.value,\n            titleId: titleId.value\n          }\n        })\n      }\n    }).catch(()=>{\n      ctrl.save = true\n    });\n  }\n}\nconst initTime = () => {\n  console.log('initTime')\n  function adds(n) {\n    return n > 9 ? n : \"0\" + n;\n  }\n  const settime = () => {\n    map.examTime--;\n    if (map.examTime <= 0) {\n      clearInterval(map.time);\n      submit(false);\n    }\n    if (map.examTime > 3600) {\n      map.examTimeText =\n        adds(parseInt(map.examTime / 3600)) +\n        \":\" +\n        adds(parseInt((map.examTime % 3600) / 60)) +\n        \":\" +\n        adds(parseInt(map.examTime % 60));\n    } else {\n      map.examTimeText =\n        adds(parseInt(map.examTime / 60)) +\n        \":\" +\n        adds(parseInt(map.examTime % 60));\n    }\n  };\n  settime();\n  map.time = setInterval(settime, 1000);\n};\nonMounted(() => {\n  getUserView()\n  info.value = JSON.parse(getStore('practiceInfo'))\n  courseId.value = route.query.courseId\n  examType.value = parseInt(route.query.practiceType)\n  titleId.value = route.query.titleId\n\n  if(route.query.titleName){\n    info.value.titleName = route.query.titleName\n  }\n  ctrl.loading = true\n  getEnumList(\"QuestionTypeEnum\", \"obj\").then((res) => {\n    opts.questionTypeEnums = res;\n  });\n  getEnumList(\"DifficultyLevelEnum\", \"obj\").then((res) => {\n    opts.difficultyLevelEnums = res;\n  });\n  const d = {\n    practiceId: courseId.value,\n    practiceType: examType.value,\n    titleId:titleId.value\n  };\n  practiceTitleStartPathFinding(d).then((res) => {\n    if(res) {\n      map.list = res\n      console.log('examType.value', examType.value)\n      if(examType.value === 2) {\n        map.list.titleList = res.titleList\n      } else {\n        if(!res.titleList || res.titleList.length === 0) {\n          map.list.titleList = []\n        }\n        map.list.titleList[0] = {\n          questionList: res.questionList\n        }\n      }\n      let sequenceIndex = 0\n      let isJump = false\n      map.list.titleList.forEach((d) => {\n        d.questionList.forEach((i)=>{\n          i.qIndex = sequenceIndex++\n          if(!i.userAnswer && !isJump) {\n            isJump = true\n            i.isJump = true\n          }\n          if(map.list.randomCombine) {\n            opts.questionIdList.push(i.practiceQuestionId)\n          }\n          if (i.questionType === 3) {\n            i.optionList = []\n            i.optionList.push({\n              id: '对',\n              optionContent: '对'\n            }, {\n              id: '错',\n              optionContent: '错'\n            })\n          }\n          setOptionStatus(i)\n          nextTick(() => {\n            if(i.isJump && i.qIndex > 0) {\n              document.getElementById(i.qIndex).scrollIntoView()\n            }\n          })\n        })\n      })\n      if(examType.value === 4) { //2,每日一练、3,章节练习 4,闯关练习\n        map.examTime = res.surplusTime\n        initTime()\n      }\n      ctrl.loading = false\n    }\n  }).catch((e) => {\n    router.go(-1)\n  })\n})\nonUnmounted(() => {\n  if(examType.value === 4 && map.time) {\n    clearInterval(map.time)\n    map.time = null\n  }\n  //if(!ctrl.save) {\n  //  if(examType.value === 4) {\n  //    submit(false)\n  //  }\n  //}\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.exam_page {\n  position: fixed;\n  width: 100vw;\n  height: 100vh;\n  left: 0;\n  top: 0;\n  background: #f6f8fb;\n  z-index: 1001;\n}\n.close_exam {\n  position: absolute;\n  right: 30px;\n  top: 30px;\n}\n.exam_center {\n  width: 1058px;\n  margin-left: 146px;\n  .left {\n    position: relative;\n    background: #ffffff;\n    .question_box{\n      position: relative;\n      border-bottom: 1px solid #EBEEF5;\n      padding: 20px 33px 20px 30px;\n    }\n    .collect_item{\n      position: absolute;\n      right: 0;\n      top: 20px;\n      min-width: 80px;\n      height: 24px;\n      display: flex;\n      align-items: center;\n      color: #999;\n    }\n  }\n  .right {\n    position: relative;\n    flex: 1;\n    background: #ffffff;\n    border-radius: 10px;\n    padding: 30px 0;\n    padding-bottom: 0;\n    .problem {\n      height: calc(100% - 60px);\n      overflow-y: auto;\n    }\n    .title_type {\n      padding: 0 30px;\n      margin-bottom: 10px;\n      font-size: 16px;\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n      cursor: default;\n    }\n    .card_box {\n      padding: 0 30px;\n      .problem_num {\n        display: inline-block;\n        margin-right: 12px;\n        margin-bottom: 12px;\n        width: 40px;\n        height: 40px;\n        color: #999999;\n        border: 1px solid #ebeef5;\n        text-align: center;\n        line-height: 40px;\n        border-radius: 4px;\n        cursor: pointer;\n      }\n      .active_num {\n        border: 1px solid rgba(246, 24, 24, 0.1);\n        background: rgba(246, 24, 24, 0.1);\n        color: #f61818;\n      }\n      .now_num {\n        border: 1px solid rgba(34, 86, 246, 0.1);\n        background: rgba(34, 86, 246, 0.1);\n        color: #2256f6;\n      }\n    }\n    .right_bottom {\n      position: sticky;\n      bottom: 0;\n      width: 100%;\n      height: 60px;\n      z-index: 10;\n      box-sizing: border-box;\n      padding: 0 30px;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      border-top: 1px solid #ebeef5;\n      background: #fff;\n      color: #f61818;\n      img {\n        display: inline-block;\n        margin-right: 3px;\n      }\n    }\n  }\n}\n.exam_header{\n  width: 100%;\n  height: 54px;\n  background: #fff;\n  border-bottom: 1px solid #ebeef5;\n  .header_flex {\n    width: 1480px;\n    height: 100%;\n    margin: auto;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .exit_exam{\n    font-style: normal;\n    font-weight: 400;\n    font-size: 14px;\n    color: #333333;\n    cursor: pointer;\n  }\n  .exam_title{\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-style: normal;\n    font-weight: 400;\n    font-size: 18px;\n    color: #333333;\n  }\n  .exam_time_box{\n    min-width: 124px;\n    font-style: normal;\n    font-weight: 400;\n    font-size: 14px;\n    display: flex;\n    align-items: center;\n  }\n  .el-button{\n    width: 100px;\n    height: 32px;\n    border-radius: 4px;\n    margin-left: 24px;\n  }\n  .exam_time{\n    font-style: normal;\n    font-weight: 400;\n    font-size: 20px;\n    color: #F23C3C;\n  }\n}\n.exam_paper_box{\n  width: calc(100%);\n  max-width: 1480px;\n  padding-top: 16px;\n  max-height: 90vh;\n  overflow: auto;\n  margin: auto;\n  &::-webkit-scrollbar{\n    display: none;\n  }\n}\n.exam_right{\n  width: 260px;\n  background-color: #FFFFFF;\n  position: fixed;\n  top: 72px;\n  right: calc(50% - 740px);\n  .problem .card_box {\n    .problem_num {\n      display: inline-block;\n      margin-right: 12px;\n      margin-bottom: 12px;\n      width: 28px;\n      height: 28px;\n      color: #333333;\n      border: 1px solid #D9D9D9;\n      text-align: center;\n      line-height: 28px;\n      border-radius: 2px;\n      font-style: normal;\n      font-weight: 400;\n      font-size: 14px;\n      cursor: pointer;\n      &:nth-child(6n) {\n        margin-right: 0;\n      }\n    }\n    .collect_num{\n      position: relative;\n      &:after{\n        content: '';\n        width: 0;\n        height: 0;\n        border-top: 10px solid #FAC923;\n        border-right: 10px solid transparent;\n        position: absolute;\n        left: -1px;\n        top: -1px;\n      }\n    }\n    .active_num {\n      border: 1px solid rgba(61, 127, 255, 0.4);\n      background: rgba(61, 127, 255, 0.1);\n      color: #3D7FFF;\n    }\n    .now_num {\n      border: 1px solid #3D7FFF;\n      background: #3D7FFF;\n      color: #FFFFFF;\n    }\n    .wrong_num {\n      border: 1px solid rgba(242, 60, 60, 0.4);\n      background: rgba(242, 60, 60, 0.1);\n      color: #F23C3C;\n    }\n  }\n  .exam_right_title{\n    margin-top: 21px;\n    height: 54px;\n    width: 100%;\n    padding:18px 27px;\n    border-bottom:1px solid #EBEEF5;\n  }\n  .problem{\n    padding: 20px 16px;\n    max-height: calc(100vh - 172px);\n    overflow: auto;\n    padding-right: 11px;\n  }\n  .problem_exam_box{\n    width: 100%;\n    display: flex;\n    align-items: center;\n    column-gap: 12px;\n  }\n  .problem_exam_box_item{\n    font-style: normal;\n    font-weight: 400;\n    font-size: 12px;\n    color: #333333;\n    padding-left: 23px;\n    position: relative;\n    display: flex;\n    align-items: center;\n  }\n  .problem_exam_box_item:before{\n    content: '';\n    width: 16px;\n    height: 16px;\n    background: #FFFFFF;\n    border: 1px solid #D9D9D9;\n    border-radius: 1.6px;\n    left: 0;\n    position: absolute;\n  }\n  .problem_exam_box_item.true:before{\n    background: rgba(61, 127, 255, 0.1);\n    border-radius: 1.6px;\n    width: 16px;\n    height: 16px;\n    border: 1px solid rgba(61, 127, 255, 0.4);\n  }\n  .problem_exam_box_item.wrong:before{\n    background: rgba(242, 60, 60, 0.1);\n    border-radius: 1.6px;\n    width: 16px;\n    height: 16px;\n    border: 1px solid rgba(242, 60, 60, 0.4);\n  }\n  .problem_exam_box_item.collect:after{\n    content: '';\n    width: 0;\n    height: 0;\n    border-top: 10px solid #FAC923;\n    border-right: 10px solid transparent;\n    position: absolute;\n    left: 0;\n    top: 1px;\n  }\n  .title_type{\n    font-style: normal;\n    font-weight: 400;\n    font-size: 13px;\n    color: #333333;\n    margin-bottom: 14px;\n  }\n}\n.exam_user_paper{\n  background-color: #FFFFFF;\n  width: 130px;\n  position: fixed;\n  left: calc(50% - 740px);\n  top: 72px;\n  .exam_user_item{\n    width: 100%;\n    height: calc(100% / 3);\n    border-bottom: 1px solid #EBEEF5;\n    padding: 16px 9px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex-direction: column;\n    .exam_user_top{\n      font-style: normal;\n      font-weight: 400;\n      font-size: 14px;\n    }\n  }\n  .exam_user_bottom{\n    font-style: normal;\n    font-weight: 400;\n    font-size: 16px;\n    color: #333333;\n    margin-top: 6px;\n  }\n}\n.analysis {\n  width: calc(100%);\n  padding: 20px 26px;\n  margin-top: 20px;\n  margin-bottom: 10px;\n  background: rgba(51, 51, 51, 0.05);\n  z-index: 11;\n  font-style: normal;\n  font-weight: 400;\n  font-size: 14px;\n  color: #666666;\n  position: relative;\n  .icon_success,.icon_danger{\n    display: none;\n    position: absolute;\n    width: 20px;\n    height: 20px;\n    left: 0;\n    top: 0;\n  }\n  .analysis_item+.analysis_item{\n    margin-top: 15px;\n  }\n  .analysis_item{\n    display: flex;\n    align-items: top;\n    .left_text {\n      min-width: 72px;\n    }\n  }\n  &.success{\n    background: rgba(61, 127, 255, 0.05);\n  }\n  &.success .question_my,&.success .icon_success{\n    color: #3D7FFF;\n    display: block;\n  }\n  &.error{\n    background: rgba(242, 60, 60, 0.03);\n  }\n  &.error .question_my,&.error .icon_danger{\n    color: #F23C3C;\n    display: block;\n  }\n}\n.inline-b {\n  display: inline-block;\n}\n.blue_text {\n  color: #3D7FFF;\n}\n.red_text {\n  color: #F23C3C;\n}\n</style>\n"],"names":["cookieData","cookie","getShop","useHead","title","shopName","info","ref","courseId","examType","titleId","store","useUserStore","getEnumList","getUserView","userInfo","computed","userView","map","reactive","letter","split","index","list","examTime","examTimeText","opts","questionTypeEnums","difficultyLevelEnums","questionIdList","ctrl","loading","show","next","save","noTrue","router","useRouter","route","useRoute","getNumAnswer","val","type","join","num","forEach","el","i","id","indexOf","push","getNum","optionContent","getProblemAnswerStatus","p","userAnswer","questionType","correctAnswer","length","arr","questionAnswer","handleChangeNext","handleNextChange","queryAndSubmit","status","titleList","every","d","questionList","ElMessageBox","confirm","cancelButtonText","confirmButtonText","then","time","clearInterval","params","practiceId","value","practiceRecordId","practiceTitleRecordId","randomCombine","practiceTitleEndPathFinding","r","obj","Object","assign","setStore","replace","path","query","catch","center","submit","continueValue","document","getElementById","qIndex","scrollIntoView","handleChangeAnswer","checkIfJumpNext","problem","nextAndShowAction","setOptionStatus","optionList","o","oStatus","updateUserAnswer","e","questionId","bool","distinguishCancelAndClose","res","go","onMounted","JSON","parse","getStore","parseInt","practiceType","titleName","practiceTitleStartPathFinding","sequenceIndex","isJump","practiceQuestionId","nextTick","surplusTime","adds","n","settime","setInterval","initTime","onUnmounted","row","qId","collectionType","userOperateQuestion","handleType","operateType","sourceId","sourceType","ElMessage","success","errorQuestionAnswer"],"mappings":"6gEAmJA,IAAAA,EAAAC,EAAAC,UACAC,EAAA,CACAC,MAAA,MAAAJ,EAAAK,WAEA,IAAAC,EAAAC,EAAA,MACAC,EAAAD,EAAA,IACAE,EAAAF,EAAA,GACAG,EAAAH,EAAA,IACA,MAAAI,EAAAC,KACAC,YAAAA,GAAAC,YAAAA,IAAAH,EACAI,GAAAC,GAAA,IAAAL,EAAAM,WACAC,GAAAC,EAAA,CACAC,OAAA,6BAAAC,MAAA,IACAC,MAAA,EACAC,KAAA,CAAA,EACAC,SAAA,EACAC,aAAA,KAEAC,GAAAP,EAAA,CACAQ,kBAAA,GACAC,qBAAA,GACAC,eAAA,KAEAC,GAAAX,EAAA,CACAY,SAAA,EACAC,MAAA,EACAC,MAAA,EACAC,MAAA,EACAC,QAAA,IAEAC,GAAAC,IACAC,GAAAC,IAgBAC,GAAA,CAAAC,EAAAlB,EAAAmB,KACA,IAAAD,EACA,MAAA,GAEA,GAAA,IAAAC,EACA,OAAA,EACA,GAAA,IAAAA,EAAA,CAEA,OADAD,EAAApB,MAAA,KACAsB,KAAA,IACA,CACA,IAAApB,EAqBA,OAAAkB,EApBA,GAAA,IAAAC,EAAA,CACA,IAAAE,EAAA,KAMA,OALArB,EAAAsB,SAAA,CAAAC,EAAAC,KACAD,EAAAE,KAAAP,GAAA,OAAAG,IACAA,EAAAG,EACA,IAEA7B,GAAAE,OAAAwB,EACA,CAAA,GAAA,IAAAF,EAAA,CACA,IAAAE,EAAA,GAMA,OALArB,EAAAsB,SAAA,CAAAC,EAAAC,KACAN,EAAAQ,QAAAH,EAAAE,KAAA,IAAA,IAAAJ,EAAAK,QAAAH,EAAAE,KACAJ,EAAAM,KAAAhC,GAAAE,OAAA2B,GACA,IAEAH,EAAAD,KAAA,IACA,CAAA,OAAA,IAAAD,EACAD,OADA,CAKA,EAEAU,GAAA,CAAAV,EAAAlB,EAAAmB,KACA,GAAA,IAAAA,EACA,OAAA,EACA,GAAA,IAAAA,EAAA,CAEA,OADAD,EAAApB,MAAA,KACAsB,KAAA,IACA,CACA,IAAApB,EAqBA,OAAAkB,EApBA,GAAA,IAAAC,EAAA,CACA,IAAAE,EAAA,KAMA,OALArB,EAAAsB,SAAA,CAAAC,EAAAC,KACAD,EAAAM,gBAAAX,GAAA,OAAAG,IACAA,EAAAG,EACA,IAEA7B,GAAAE,OAAAwB,EACA,CAAA,GAAA,IAAAF,EAAA,CACA,IAAAE,EAAA,GAMA,OALArB,EAAAsB,SAAA,CAAAC,EAAAC,KACAN,EAAAQ,QAAAH,EAAAM,gBAAA,IAAA,IAAAR,EAAAK,QAAAH,EAAAM,gBACAR,EAAAM,KAAAhC,GAAAE,OAAA2B,GACA,IAEAH,EAAAD,KAAA,IACA,CAAA,OAAA,IAAAD,EACAD,OADA,CAKA,EAEAY,GAAAC,IACA,IAAAA,EAAAC,WACA,MAAA,GAEA,GAAA,IAAAD,EAAAE,cACA,GAAAF,EAAAG,eAAAH,EAAAG,cAAAC,OAAA,EACA,OAAAJ,EAAAC,WAAAN,QAAAK,EAAAG,gBAAA,EACA,EAEA,OAGA,GAAA,IAAAH,EAAAE,cACA,GAAAF,EAAAG,cAAAC,OAAA,EAAA,CACA,MAAAC,EAAA,GAOA,OANAL,EAAAG,cAAAZ,SAAAE,IACAO,EAAAC,WAAAN,QAAAF,IAAA,GACAY,EAAAT,KAAAH,EACA,IAGAY,EAAAD,SAAAJ,EAAAG,cAAAC,QAAAJ,EAAAG,cAAAC,SAAAJ,EAAAC,WAAAlC,MAAA,KACAqC,OACA,EAEA,CAEA,MACA,IAAA,IAAAJ,EAAAE,aACA,OAAAF,EAAAC,aAAAD,EAAAM,eACA,EAEA,KAEA,IAAAN,EAAAE,cAAA,IAAAF,EAAAE,aACA,OAAA,CACA,CACA,EAEAK,GAAApB,IACAA,IACAX,GAAAK,QAAA,EACA,EAEA2B,GAAArB,IACAA,IACAX,GAAAK,QAAA,EACA,EAEA4B,GAAA,KACA,IAAAC,EAAA,KACAA,EAAA9C,GAAAK,KAAA0C,UAAAC,OAAA,SAAAC,GACA,OAAAA,EAAAC,aAAAF,OAAA,SAAAnB,GAAA,OAAA,GAAAA,EAAAQ,YAAA,MAAAR,EAAAQ,UAAA,GACA,IACAS,EAmBAK,EAAAC,QAAA,WAAA,KAAA,CACAC,iBAAA,KACAC,kBAAA,KACA9B,KAAA,YACA+B,MAAA,KACAvD,GAAAwD,OACAC,cAAAzD,GAAAwD,MACAxD,GAAAwD,KAAA,MAEA,MAAAE,EAAA,CACAC,WAAArE,EAAAsE,MACAC,iBAAA7D,GAAAK,KAAAwD,kBAEA7D,GAAAK,KAAAyD,wBACAJ,EAAAI,sBAAA9D,GAAAK,KAAAyD,uBAEA9D,GAAAK,KAAA0D,gBACAL,EAAAR,aAAA,IAAA1C,GAAAG,iBAEAqD,EAAAN,GAAAH,MAAAU,IACA,GAAAA,EAAA,CACArD,GAAAI,MAAA,EACA,IAAAkD,EAAA,CACAL,iBAAA7D,GAAAK,KAAAwD,iBACAC,sBAAA9D,GAAAK,KAAAyD,uBAEAK,OAAAC,OAAAF,EAAAD,GACAI,EAAA,iBAAAH,GACAhD,GAAAoD,QAAA,CACAC,KAAA,mBACAC,MAAA,CACA1C,GAAAxC,EAAAsE,MACApE,QAAAA,EAAAoE,QAGA,IACA,IACAa,OAAA,SAvDAtB,EAAAC,QAAA,gBAAA,OAAA,CACAE,kBAAA,KACAD,iBAAA,OACAqB,QAAA,IACAnB,MAAA,KACAoB,IAAA,EAAA,IACAF,OAAA,KACA,IAAAG,GAAA,EACA5E,GAAAK,KAAA0C,UAAApB,SAAAsB,IACAA,EAAAC,aAAAvB,SAAAC,KACAA,EAAAS,YAAAuC,IACAA,GAAA,EACAC,SAAAC,eAAAlD,EAAAmD,QAAAC,iBACA,GACA,GACA,GAyCA,EAEAC,GAAA1D,IACAA,IACAX,GAAAE,MAAA,EACAF,GAAAG,MAAA,EACA,EAEAmE,GAAA,CAAA7C,EAAA8C,KACA,MAAA/E,EAAA+E,EAAAJ,OACAnE,GAAAG,OAAAH,GAAAE,MACA+D,SAAAC,eAAA1E,EAAA,IACAyE,SAAAC,eAAA1E,EAAA,GAAA4E,iBAEA,MAAAI,EAAA,KACAxE,GAAAG,MAAAH,GAAAE,MACA+D,SAAAC,eAAA1E,EAAA,IACAyE,SAAAC,eAAA1E,EAAA,GAAA4E,gBACA,EAEA,GAAA,IAAAG,EAAA7C,aACA6C,EAAA5C,eAAA4C,EAAA5C,cAAAC,OAAA,GACAH,EAAAN,QAAAoD,EAAA5C,gBAAA,GACA6C,SAGA,GAAA,IAAAD,EAAA7C,cACA,GAAA6C,EAAA5C,eAAA4C,EAAA5C,cAAAC,OAAA,EAAA,CACA,MAAAC,EAAA,GACA0C,EAAA5C,cAAAZ,SAAAE,IACAQ,EAAAN,QAAAF,IAAA,GACAY,EAAAT,KAAAH,EACA,IAGAY,EAAAD,SAAA2C,EAAA5C,cAAAC,QAAA2C,EAAA5C,cAAAC,SAAAH,EAAAlC,MAAA,KACAqC,QACA4C,GAEA,OACA,IAAAD,EAAA7C,aACAD,IAAA8C,EAAAzC,gBACA0C,IAEA,IAAAD,EAAA7C,cAAA,IAAA6C,EAAA7C,cACAD,GACA+C,GAEA,EAEAC,GAAAjD,IACAA,EAAAE,aAAA,GACAF,EAAAkD,WAAA3D,SAAA4D,IACAA,EAAAC,QAAA,EACApD,EAAAG,cAAAR,QAAAwD,EAAAzD,KAAA,EACAyD,EAAAC,QAAA,EAEApD,EAAAC,YAAAD,EAAAC,WAAAN,QAAAwD,EAAAzD,KAAA,IACAyD,EAAAC,QAAA,EAEA,IAGA,IAAApD,EAAAE,cACAF,EAAAkD,WAAA3D,SAAA4D,IACAA,EAAAC,QAAA,EACApD,EAAAC,WACAkD,EAAArD,eAAAE,EAAAM,eACA6C,EAAAC,QAAA,EAEAD,EAAArD,eAAAE,EAAAC,aACAkD,EAAAC,QAAA,GAIAD,EAAArD,eAAAE,EAAAM,iBACA6C,EAAAC,QAAA,EAEA,GAEA,EAEAC,GAAAxC,IACAjD,GAAAK,KAAA0C,UAAApB,SAAAC,IACAA,EAAAsB,aAAAvB,SAAA,CAAA+D,EAAAtF,KACAsF,EAAA5D,KAAAmB,EAAA0C,aACAD,EAAArD,WAAAY,EAAAZ,WACA,GAAAqD,EAAApD,cAAAW,EAAAZ,YACA6C,GAAAjC,EAAAZ,WAAAqD,GAEA,GAAAA,EAAApD,cACAW,EAAAZ,YAAAY,EAAAZ,WAAAG,OAAA,GACA0C,GAAAjC,EAAAZ,WAAAqD,GAGA,GAAAA,EAAApD,cAAAW,EAAAZ,YACA6C,GAAAjC,EAAAZ,WAAAqD,GAEA,GAAAA,EAAApD,cAAA,GAAAoD,EAAApD,cACA4C,GAAAjC,EAAAZ,WAAAqD,GAEAL,GAAAK,GACAA,EAAA5E,KAAAF,GAAAE,KACAF,GAAAK,SACAyE,EAAA5E,MAAA,GAGA,GACA,GACA,EAgCA6D,GAAA,CAAAiB,GAAA,KACA,GAAAA,EACAzC,EAAAC,QAAA,WAAA,KAAA,CACAyC,2BAAA,EACAxC,iBAAA,OACAC,kBAAA,OACA9B,KAAA,YACA+B,MAAA,KACAvD,GAAAwD,OACAC,cAAAzD,GAAAwD,MACAxD,GAAAwD,KAAA,MAEA,MAAAE,EAAA,CACAC,WAAArE,EAAAsE,MACAC,iBAAA7D,GAAAK,KAAAwD,kBAEA7D,GAAAK,KAAAyD,wBACAJ,EAAAI,sBAAA9D,GAAAK,KAAAyD,uBAEA9D,GAAAK,KAAA0D,gBACAL,EAAAR,aAAA,IAAA1C,GAAAG,iBAEAqD,EAAAN,GAAAH,MAAAU,IACA,GAAAA,EAAA,CACArD,GAAAI,MAAA,EACA,IAAAkD,EAAA,CACAL,iBAAA7D,GAAAK,KAAAwD,iBACAC,sBAAA9D,GAAAK,KAAAyD,uBAEAK,OAAAC,OAAAF,EAAAD,GACAI,EAAA,iBAAAH,GACAhD,GAAAoD,QAAA,CACAC,KAAA,mBACAC,MAAA,CACA1C,GAAAxC,EAAAsE,MACApE,QAAAA,EAAAoE,QAGA,IACA,IACAa,OAAAqB,IACA,WAAAA,GACA5E,GAAA6E,IAAA,EACA,QAEA,CACA/F,GAAAwD,OACAC,cAAAzD,GAAAwD,MACAxD,GAAAwD,KAAA,MAEA,MAAAE,EAAA,CACAC,WAAArE,EAAAsE,MACAC,iBAAA7D,GAAAK,KAAAwD,kBAEA7D,GAAAK,KAAAyD,wBACAJ,EAAAI,sBAAA9D,GAAAK,KAAAyD,uBAEA9D,GAAAK,KAAA0D,gBACAL,EAAAR,aAAA,IAAA1C,GAAAG,iBAEAqD,EAAAN,GAAAH,MAAAU,IACA,GAAAA,EAAA,CACArD,GAAAI,MAAA,EACA,IAAAkD,EAAA,CACAL,iBAAA7D,GAAAK,KAAAwD,iBACAC,sBAAA9D,GAAAK,KAAAyD,uBAEAK,OAAAC,OAAAF,EAAAD,GACAI,EAAA,iBAAAH,GACAhD,GAAAoD,QAAA,CACAC,KAAA,mBACAC,MAAA,CACA1C,GAAAxC,EAAAsE,MACApE,QAAAA,EAAAoE,QAGA,KACAa,OAAA,KACA7D,GAAAI,MAAA,CAAA,GAEA,UA8BAgF,GAAA,KACApG,KACAR,EAAAwE,MAAAqC,KAAAC,MAAAC,EAAA,iBACA7G,EAAAsE,MAAAxC,GAAAoD,MAAAlF,SACAC,EAAAqE,MAAAwC,SAAAhF,GAAAoD,MAAA6B,cACA7G,EAAAoE,MAAAxC,GAAAoD,MAAAhF,QAEA4B,GAAAoD,MAAA8B,YACAlH,EAAAwE,MAAA0C,UAAAlF,GAAAoD,MAAA8B,WAEA1F,GAAAC,SAAA,EACAlB,GAAA,mBAAA,OAAA4D,MAAAuC,IACAtF,GAAAC,kBAAAqF,CAAA,IAEAnG,GAAA,sBAAA,OAAA4D,MAAAuC,IACAtF,GAAAE,qBAAAoF,CAAA,IAEA,MAAA7C,EAAA,CACAU,WAAArE,EAAAsE,MACAyC,aAAA9G,EAAAqE,MACApE,QAAAA,EAAAoE,OAEA2C,EAAAtD,GAAAM,MAAAuC,IACA,GAAAA,EAAA,CACA9F,GAAAK,KAAAyF,EAEA,IAAAvG,EAAAqE,MACA5D,GAAAK,KAAA0C,UAAA+C,EAAA/C,WAEA+C,EAAA/C,WAAA,IAAA+C,EAAA/C,UAAAP,SACAxC,GAAAK,KAAA0C,UAAA,IAEA/C,GAAAK,KAAA0C,UAAA,GAAA,CACAG,aAAA4C,EAAA5C,eAGA,IAAAsD,EAAA,EACAC,GAAA,EACAzG,GAAAK,KAAA0C,UAAApB,SAAAsB,IACAA,EAAAC,aAAAvB,SAAAE,IACAA,EAAAkD,OAAAyB,IACA3E,EAAAQ,YAAAoE,IACAA,GAAA,EACA5E,EAAA4E,QAAA,GAEAzG,GAAAK,KAAA0D,eACAvD,GAAAG,eAAAqB,KAAAH,EAAA6E,oBAEA,IAAA7E,EAAAS,eACAT,EAAAyD,WAAA,GACAzD,EAAAyD,WAAAtD,KAAA,CACAF,GAAA,IACAI,cAAA,KACA,CACAJ,GAAA,IACAI,cAAA,OAGAmD,GAAAxD,GACA8E,GAAA,KACA9E,EAAA4E,QAAA5E,EAAAkD,OAAA,GACAF,SAAAC,eAAAjD,EAAAkD,QAAAC,gBACA,GACA,GACA,IAEA,IAAAzF,EAAAqE,QACA5D,GAAAM,SAAAwF,EAAAc,YA/FA,MAEA,SAAAC,EAAAC,GACA,OAAAA,EAAA,EAAAA,EAAA,IAAAA,CACA,CACA,MAAAC,EAAA,KACA/G,GAAAM,WACAN,GAAAM,UAAA,IACAmD,cAAAzD,GAAAwD,MACAmB,IAAA,IAEA3E,GAAAM,SAAA,KACAN,GAAAO,aACAsG,EAAAT,SAAApG,GAAAM,SAAA,OACA,IACAuG,EAAAT,SAAApG,GAAAM,SAAA,KAAA,KACA,IACAuG,EAAAT,SAAApG,GAAAM,SAAA,KAEAN,GAAAO,aACAsG,EAAAT,SAAApG,GAAAM,SAAA,KACA,IACAuG,EAAAT,SAAApG,GAAAM,SAAA,IACA,MAGAN,GAAAwD,KAAAwD,YAAAD,EAAA,IAAA,EAsEAE,IAEArG,GAAAC,SAAA,CACA,KACA4D,OAAAiB,IACAxE,GAAA6E,IAAA,EAAA,GACA,IAEAmB,GAAA,KACA,IAAA3H,EAAAqE,OAAA5D,GAAAwD,OACAC,cAAAzD,GAAAwD,MACAxD,GAAAwD,KAAA,KACA,wuDA5NA,CAAA2D,IACA,MAAAC,EAAAD,EAAAxB,YAAAwB,EAAArF,GACAqF,EAAAE,eAaAC,EAAA,CACAC,YAAA,EACAC,YAAA,EACA7B,WAAAyB,EACAK,SAAAnI,EAAAsE,MACA8D,WAAA,IACAnE,MAAAuC,IACA6B,EAAAC,QAAA9B,GACAqB,EAAAE,gBAAA,CAAA,IApBAC,EAAA,CACAO,oBAAAV,EAAA9E,YAAA,GACAkF,YAAA,EACAC,YAAA,EACA7B,WAAAyB,EACAK,SAAAnI,EAAAsE,MACA8D,WAAA,IACAnE,MAAAuC,IACA6B,EAAAC,QAAA9B,GACAqB,EAAAE,gBAAA,CAAA,GAaA,89CAEAjH,gBACAyE,SAAAC,eAAA1E,GAAA4E,iBADA,IAAA5E"}