{"version":3,"sources":["assets/img/tick.svg","context/app/AppContext.js","context/app/AppTypes.js","context/app/AppReducer.js","components/hooks/getWindowDimensions.js","context/app/AppState.js","context/modal/ModalContext.js","context/modal/ModalTypes.js","context/modal/ModalReducer.js","context/modal/ModalState.js","context/authentication/AuthenticationContext.js","context/authentication/AuthenticationTypes.js","context/authentication/AuthenticationReducer.js","authConfig.js","components/hooks/fetchMethods.js","context/authentication/AuthenticationState.js","context/AllContexts.js","assets/img/acca_logo_txt@3x.png","assets/img/quad.png","assets/img/quad@2x.png","assets/img/quad@3x.png","assets/img/pointer.svg","assets/img/reset.svg","assets/img/icon-tick-circled.svg","assets/img/icon-flag-circled.svg","assets/img/icon-plus-circled.svg","assets/img/icon-study-planning.svg","assets/img/icon-exam-planning.svg","assets/img/mood-1.svg","assets/img/mood-2.svg","assets/img/mood-3.svg","assets/img/mood-4.svg","assets/img/mood-5.svg","assets/img/mood-6.svg","assets/img/mood-7.svg","assets/img/mood-8.svg","assets/img/mood-9.svg","components/hooks/ImageAssets.js","assets/img/acca_logo.png","assets/img/acca_logo@2x.png","assets/img/acca_logo@3x.png","components/layout/PreRender.js","components/hooks/ProtectedRoute.js","assets/img/chevron-mid-b.png","components/layout/ExamsHeader.js","assets/img/chevron-tail-b.png","assets/img/chevron-point-b.png","components/hooks/utilityFunctions.js","components/layout/ExamCell.js","components/modals/TmplInsModal.js","components/modals/TmplSysModal.js","components/modals/ModalContentLogin.js","components/modals/ModalContentTagExam.js","components/modals/ModalContentExamSelect.js","components/modals/ModalContentExamPeriod.js","components/modals/ModalContentEPSMEvent.js","components/layout/ExamStick.js","assets/img/tick-wht.png","components/layout/ExamsFooter.js","assets/img/chevron-tail-c.png","assets/img/chevron-mid-c.png","assets/img/chevron-point-c.png","components/layout/LayerExams.js","components/layout/LayerCalendar.js","components/layout/LayerCalendarSticky.js","components/layout/Planner.js","assets/img/chevron-mid-bkgrnd-b.png","components/layout/MobileIntro.js","components/layout/MobileAction.js","components/layout/AppBody.js","components/layout/AppHeader.js","assets/img/acca_logo_txt.png","assets/img/acca_logo_txt@2x.png","assets/img/chevron-mid-a.png","components/layout/AppFooter.js","components/modals/ModalContentPromptLogin.js","components/pages/Home.js","components/pages/ErrorPage.js","components/modals/ModalChooseMood.js","components/modals/ModalChooseTask.js","components/layout/StudyPlanItem.js","components/modals/ModalContentCancelPlan.js","components/pages/StudyPlanner.js","components/modals/Modal.js","components/layout/AppSpinner.js","components/layout/Intro.js","components/layout/AppWrapper.js","components/layout/ErrorBox.js","App.js","reportWebVitals.js","index.js"],"names":["_path","AppContext","createContext","SET_IS_REDIRECT","SET_DISPLAY_TYPE","SET_STATICS_DATA","SET_IS_INTRO","SET_IS_INITIAL_LOAD","SET_SCROLL_TO_PLANNER","SET_SCREENSHOT_STATUS","SET_SCREENSHOT_ENABLE","SET_SCREENSHOT_TGT","SET_MODAL_FOOTER_TXT","SHOW_CHKBOX_MODAL","SHOW_PLAN_BTN_MODAL","SET_EXAM_HEADER_HEIGHT","SET_DOC_CLICKED","SET_HAS_TRANSITION","AppReducer","state","action","type","isRedirect","payload","displayType","staticsData","isIntro","isInitialLoad","scrollToPlanner","screenshotStatus","screenshotEnable","screenshotTgt","modalFtrTxt","showChkboxModal","showPlanBtnModal","examHeaderHeight","docClicked","status","docClickedTgt","clickTgt","hasTransition","useWindowDimensions","hasWindow","window","getWindowDimensions","winWidth","innerWidth","winHeight","innerHeight","useState","windowDimensions","setWindowDimensions","useEffect","handleResize","addEventListener","removeEventListener","AppState","props","useReducer","dispatch","docClickHandler","event","toggleDocClicks","target","setScreenshotStatus","enable","staticsJSON","Provider","value","selectedMood","setIsRedirect","setIsIntro","setIsInitialLoad","setScrollToPlanner","setScreenshotEnable","setScreenshotTgt","element","onClickTakeScreenshot","toggleCheckboxModal","setExamHeaderHeight","val","disablePlanBtnModal","setHasTransition","children","ModalContext","TOGGLE_MODAL","UPDATE_MODAL","ModalReducer","isVisible","ModalState","showModal","hideModal","updateModal","AuthenticationContext","SET_AUTH_APPLICATION","SET_USER_AUTHENTICATED","SET_RESPONSE_STATUS","SET_FETCH_ERROR","SET_CUR_FETCHING","SET_PUBLIC_DATA","SET_PRIVATE_DATA","SET_OVERRIDE_DATA","SET_STUDY_DAYS_DATA","CLEAR_STUDY_DAYS_DATA","UPDATE_STUDY_TASKS_DATA","UPDATE_USER_EXAMS","UPDATE_COMPLETED_EXAMS","RESET_EXAM_PLANNER","AuthenticationReducer","publicClientApplication","bearerToken","userAuthenticated","responseStatus","fetchError","curFetching","examsData","exam","examsSessionData","examSession","userExamData","userName","user","firstName","userData","userExam","examStudyDaysData","studyTasksData","studyDaysData","userExamTask","examsCompleted","msalConfig","auth","clientId","process","authority","knownAuthorities","redirectUri","postLogoutRedirectUri","cache","cacheLocation","storeAuthStateInCookie","system","tokenRenewalOffsetSeconds","loginConfig","prompt","scopes","apiUrlPrivate","getDataPublic","endPoint","a","apiUrl","axios","get","apiResponse","data","errorCode","code","description","errorDescription","statusText","response","getDataPrivate","headers","postDataPrivate","requestObj","post","postDataNoPayloadPrivate","putDataNoPayloadPrivate","put","AuthenticationState","setPublicClientApplication","setCurFetching","handleLoggedInError","error","accounts","InteractionRequiredAuthError","acquireTokenRedirect","account","getData","getAllAccounts","clearFetchError","length","acquireTokenSilent","tokenResponse","accessToken","then","req","postData","postDataNoPayload","putDataNoPayload","getStudyDayData","examUNID","sessionUNID","putDataAsync","taskUNID","Promise","resolve","reject","catch","hostname","location","overrideLogin","URLSearchParams","search","has","strAppears","forEach","item","includes","PublicClientApplication","handleRedirectPromise","console","signInUser","sessionStorage","setItem","loginRedirect","removeItem","log","signOutUser","logoutRedirect","updateUserExam","tmpArr","find","filteredArr","filter","updateCompletedArr","examsArr","itemA","itemB","UNID","resetUserExams","resetResponseStatus","clearStudyDaysData","addStudyDayTask","newTask","tasksArr","push","updateStudyDayTask","taskObj","idx","findIndex","splice","deleteStudyDayTask","postDataAsync","newTaskUNID","UserExamSessionTask","updateTaskUNID","oldUNID","newUNID","matchingTask","AllContexts","_excluded","_extends","Object","assign","i","arguments","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgTick","_ref","svgRef","title","titleId","xmlns","width","height","viewBox","ref","id","d","ForwardRef","SvgReset","fill","SvgIconTickCircled","cx","cy","r","style","stroke","strokeMiterlimit","strokeWidth","SvgIconFlagCircled","SvgIconPlusCircled","_g","SvgIconStudyPlanning","_path2","_path3","_path4","_path5","_path6","_path7","_path8","_path9","SvgIconExamPlanning","transform","SvgMood1","xmlnsXlink","undefined","fillRule","SvgMood2","SvgMood3","SvgMood4","SvgMood5","SvgMood6","SvgMood7","SvgMood8","SvgMood9","ImgLogo","src","alt","ImgQuad","ImgQuadX1","ImgQuadX2","ImgQuadX3","ImgQuadx3","IconTick","className","IconReset","IconTickCircled","IconFlagCircled","IconPlusCircled","IconStudyPlanning","IconExamPlanning","IconMood1","IconMood2","IconMood3","IconMood4","IconMood5","IconMood6","IconMood7","IconMood8","IconMood9","PreRender","Pointer","ProtectedRoute","Component","component","rest","history","useHistory","authenticationContext","useContext","render","ExamHeader","appContext","contentRef","useRef","getTitle","ID","section","examSectionType","label","getDescription","descID","description1","description2","onClickSectionHeader","current","clientHeight","onClick","ChevronMidB","openExtLink","url","newTab","open","defineMonths","isStr","curMonthIdx","Date","getMonth","monthsArr","passedArr","ongoingArr","defineYear","rowMonth","date","rowMonthIdx","curYearNum","getFullYear","getDateSuffix","getSince1970","units","misSince1970","getTime","Math","round","getSessionDate","session","dateObj","getSessionWeek","ExamCell","monthObj","eventsArr","examData","examStatus","dimBtns","onClickExamEvent","onClickGotoStudyPlanner","onClickExamTimeline","modalContext","cellRef","timelineRef","eventObj","setEventObj","btnDisabled","setBtnDisabled","btnPlanActive","setBtnPlanActive","hideTimeline","setHideTimeline","timeoutPlan","setTimeoutPlan","cssHighlight","examSessionUNID","cssDim","drawTimeline","statusType","cellHeight","barHeight","planning","studyActivityType","learning","revision","planningPeriod","getStudyPeriods","learningPeriod","revisionPeriod","weeksUntil","getWeeksUntil","periodArr","trimmedArr","slice","barType","htmlStr","color","innerHTML","activity","studyType","sessionStudyPeriods","studyPeriod","studyPeriodLength","lastStudyPeriod","revisionWeeks","exceedMax","planningWeeks","noStudyTime","statusKey","minWeeks","curDayNum","sessionDayNum","onClickBtnPlan","onClickTimeline","sessionMonth","sessionYear","parseInt","month","year","timer","setTimeout","clearTimeout","matchingEvent","examType","typeOnDemandExam","typeExam","typeEPSExam","btnPlanObj","callToActionButtons","timelinePos","btnDimDisable","noTime","bottom","backgroundColor","disabled","drawButton","TmplInsModal","txtTitleA","txtFooter","dangerouslySetInnerHTML","__html","DOMPurify","sanitize","TmplSysModal","txtTitleB","showLoginLnk","ModalContentLogin","cusAction","ModalContentTagExam","exmStatusArr","onClickAddExamStatusDone","curStatusID","setCurStatusID","shortName","map","statusObj","examStatusType","tag","exists","statusID","ModalContentExamSelect","ctaBtnTxtA","ctaBtnTxtB","ctaBtnFncA","ctaBtnFncB","selectedBtn","setSelectedBtn","ModalContentExamPeriod","selStudyWeeks","setSelStudyWeeks","btnIncStatus","setBtnIncStatus","btnDecStatus","setBtnDecStatus","setPlanningPeriod","setLearningPeriod","setRevisionPeriod","studyTypesArr","setStudyTypesArr","btnClicked","setBtnClicked","activityTypeArr","getUserExamData","getSessionStudyData","calculateLearningWeeks","examUser","studyData","numWeeks","defaultWeeks","minAllowed","maxAllowed","maxWeeks","studyObj","numWeeksPlanning","numWeeksLearning","numWeeksRevision","numWeeksExam","updateStudyPeriods","onClickBtnA","onClickBtnB","ModalContentEPSMEvent","ExamStick","sectionType","headRef","bodyRef","footerRef","setMonthsArr","setEventsArr","hdrMinHeight","setHdrMinHeight","bdyMinHeight","setBdyMinHeight","ftrMinHeight","setFtrMinHeight","setExamStatus","statusLabel","setStatusLabel","isStill","setIsStill","setExamData","setDimBtns","completed","setCompleted","statusColor","setStatusColor","examStatusClass","setExamStatusClass","setMinHeights","getSectionTitle","longLabel","showModalExamPeriod","isAmend","name","size","closeOnClickModal","content","onClickNoPeriod","onClickAddPeriod","defineExamStatusClass","newClass","toLowerCase","updateExamStatus","matchingStatus","exSeUNID","stPeLn","updateExamSession","showModalExamSummary","gotoStudyPlanner","onClickSessionSelectEPSM","onClickSessionSelect","onClickSessionUnselect","userExamSession","studyPlanningLength","studyExamLength","studyTypes","starterTasks","copy","starterTask1","starterTask2","starterTask3","starterTask4","starterTask5","starterTask6","starterTask7","onClickAddExamStatusModal","statusTypes","split","updateAddExamStatusModalStep1","onClickExamEventModal","showModalExamSelectEPSM","showModalExamSelect","onClickGotoPlan","toString","defineMonthsYears","getEvents","minHeight","hasSessionSelected","btnBookObj","bookURL","drawFooterBtn","ExamsFooter","guidance1","guidance2","LayerExams","drawExamSticks","spFilter","sort","b","sectionOrder","spFilterArr","ExamsHeader","LayerCalendar","LayerCalendarSticky","Planner","MobileIntro","MobileAction","AppBody","refMobScroll","scrollIntoView","behavior","AppHeader","useLocation","htmlBody","cusFtrTxt","pathname","ImgAccaLogoTxtX3","AppFooter","ModalContentPromptLogin","statusCodeVal","Home","selectedExams","tgtRef","isHide","setIsHide","showLoginVal","getItem","updateSelectedExams","checked","checkExamsCompleted","matchingArr","addBreakOnDskTop","showModalStep2","arrayAK","arrayAS","arrayEM","arraySP","completedAK","completedAS","completedEM","completedSP","onChange","defaultChecked","onClickUpdateExams","showPlanner","showModalStep3","takeScreenshot","html2canvas","windowWidth","windowHeight","onclone","clonedDoc","querySelector","maxHeight","overflow","flex","overflowX","overflowY","minWidth","display","querySelectorAll","el","padding","onCloneDoc","canvas","dataUrl","toDataURL","document","createElement","setAttribute","body","appendChild","click","removeChild","ftrText","screenshotSuccessModal","ErrorPage","error404","ModalChooseMood","moodArr","itemData","curMood","setCurMood","tipTxtArr","setTipTxtArr","moodScroll","setMoodScroll","scrollerRef","drawMoodBtns","btnArr","onClickUpdateMood","icon","moodType","studyMoodType","scrollerHeight","contentHeight","tip","itemUNID","userExamSessionDay","ModalChooseTask","addServerTask","updateServerTask","disabledTasks","txtRefs","toggleBtnRef","newTextRef","showSelector","setShowSelector","taskTypesArr","setTaskTypesArr","curTaskType","setCurTaskType","newTaskText","setNewTaskText","taskListArr","setTaskListArr","hasMilestone","setHasMilestone","confirmBtnIdx","setConfirmBtnIdx","dirtyText","setDirtyText","isAddTask","setIsAddTask","setTaskHeights","scrollHeight","onClickAddTask","tmpUNID","userExamStudyDayUNID","userExamSessionTask","focus","onChangeTaskText","text","task","currentTarget","onFocusTaskText","onBlurTaskText","onKeyDownTaskText","preventDefault","blur","onClickDeleteTask","onClickTaskCompleted","clonedTask","newState","milestoneType","scrollTop","curType","filteredTasksArr","clonedArr","JSON","parse","stringify","filterDaysTasks","selType","onClickSelectorOption","maxLength","rows","onFocus","onBlur","onKeyDown","onKeyDownTaskSubmit","StudyPlanItem","tasks","setMoodArr","itemDate","setItemDate","unidValues","setUnidValues","setDisabledTasks","formatDate","dayNum","getDate","dayName","getDay","monthName","yearNum","curItems","tmpDate","substring","htmlDate","showMood","getActivityType","ModalContentCancelPlan","StudyPlanner","trackRef","scrubberRef","listRef","scrubberPos","setScrubberPos","isScrolling","setIsScrolling","studyDaysArr","setStudyDaysArr","setTasksArr","getModalProps","cancelThisPlan","onClickExamEventUpdatePeriod","onClickGoToHome","userExamStudyDay","sectionName","examNameMob","examNameDsk","dateMob","dateDsk","getBreadcrumbTxt","onScroll","onScrollTaskList","dayUNID","min","max","onMouseDown","onMouseUp","onTouchStart","onTouchEnd","Modal","visible","onCancel","lockScroll","showClose","customClass","Body","AppSpinner","Intro","AppWrapper","introEnd","setIntroEnd","redirectVal","exact","path","to","ErrorBox","errorMsg","setErrorMsg","clearError","setErrorHTTP","App","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.b580594b.chunk.js","sourcesContent":["var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTick(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"69.37mm\",\n height: \"58.24mm\",\n viewBox: \"0 0 196.64 165.1\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M196.64,1.05C185.44,8.42,176.09,17.87,167,27.59,141.46,55,121,86,101.52,117.81,92,133.41,82.45,149,72.62,165.1c-4.5-4.9-8.82-9.58-13.13-14.28Q30.66,119.41,1.8,88.05c-2.23-2.41-2.62-3.83.19-6,3.81-2.92,7-7.9,11.1-8.87s8.43,3.7,12.6,6C37.1,85.36,48.46,91.68,59.63,98.31,63.25,100.47,65.23,100,68,97c16.18-18,32-36.46,50-52.78a427.84,427.84,0,0,1,56-42.4A10.83,10.83,0,0,1,180.26,0c5.46.1,10.92.07,16.38.08Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTick);\nexport default __webpack_public_path__ + \"static/media/tick.ef336bb0.svg\";\nexport { ForwardRef as ReactComponent };","import { createContext } from 'react';\r\n\r\n\r\nconst AppContext = createContext();\r\n\r\nexport default AppContext;\r\n\r\n\r\n/*** Scripts end... */\r\n","export const SET_IS_REDIRECT = 'SET_IS_REDIRECT';\r\nexport const SET_DISPLAY_TYPE = 'SET_DISPLAY_TYPE';\r\nexport const SET_STATICS_DATA = 'SET_STATICS_DATA';\r\nexport const SET_USER_AUTHENTICATED = 'SET_USER_AUTHENTICATED';\r\nexport const SET_IS_INTRO = 'SET_IS_INTRO';\r\nexport const SET_IS_INITIAL_LOAD = 'SET_IS_INITIAL_LOAD';\r\nexport const SET_SCROLL_TO_PLANNER = 'SET_SCROLL_TO_PLANNER';\r\nexport const SET_SCREENSHOT_STATUS = 'SET_SCREENSHOT_STATUS';\r\nexport const SET_SCREENSHOT_ENABLE = 'SET_SCREENSHOT_ENABLE';\r\nexport const SET_SCREENSHOT_TGT = 'SET_SCREENSHOT_TGT';\r\nexport const SET_MODAL_FOOTER_TXT = 'SET_MODAL_FOOTER_TXT';\r\nexport const SHOW_CHKBOX_MODAL = 'SHOW_CHKBOX_MODAL';\r\nexport const SHOW_PLAN_BTN_MODAL = 'SHOW_PLAN_BTN_MODAL';\r\nexport const SET_EXAM_HEADER_HEIGHT = 'SET_EXAM_HEADER_HEIGHT';\r\nexport const SET_DOC_CLICKED = 'SET_DOC_CLICKED';\r\nexport const SET_HAS_TRANSITION = 'SET_HAS_TRANSITION';\r\n\r\n\r\n/*** Scripts end... */\r\n","import { SET_IS_REDIRECT,\r\n SET_DISPLAY_TYPE,\r\n SET_STATICS_DATA,\r\n SET_IS_INTRO,\r\n SET_IS_INITIAL_LOAD,\r\n SET_SCROLL_TO_PLANNER,\r\n SET_SCREENSHOT_STATUS,\r\n SET_SCREENSHOT_ENABLE,\r\n SET_SCREENSHOT_TGT,\r\n SET_MODAL_FOOTER_TXT,\r\n SHOW_CHKBOX_MODAL,\r\n SHOW_PLAN_BTN_MODAL,\r\n SET_EXAM_HEADER_HEIGHT,\r\n SET_DOC_CLICKED,\r\n SET_HAS_TRANSITION } from './AppTypes';\r\n\r\n\r\nconst AppReducer = (state, action) => {\r\n \r\n switch (action.type) {\r\n case SET_IS_REDIRECT:\r\n return {\r\n ...state,\r\n isRedirect : action.payload\r\n };\r\n case SET_DISPLAY_TYPE:\r\n return {\r\n ...state,\r\n displayType : action.payload\r\n };\r\n case SET_STATICS_DATA:\r\n return {\r\n ...state,\r\n staticsData : action.payload\r\n };\r\n case SET_IS_INTRO:\r\n return {\r\n ...state,\r\n isIntro : action.payload\r\n };\r\n case SET_IS_INITIAL_LOAD:\r\n return {\r\n ...state,\r\n isInitialLoad : action.payload\r\n };\r\n case SET_SCROLL_TO_PLANNER:\r\n return {\r\n ...state,\r\n scrollToPlanner : action.payload\r\n };\r\n case SET_SCREENSHOT_STATUS:\r\n return {\r\n ...state,\r\n screenshotStatus : action.payload\r\n };\r\n case SET_SCREENSHOT_ENABLE:\r\n return {\r\n ...state,\r\n screenshotEnable : action.payload\r\n };\r\n case SET_SCREENSHOT_TGT:\r\n return {\r\n ...state,\r\n screenshotTgt : action.payload\r\n };\r\n case SET_MODAL_FOOTER_TXT:\r\n return {\r\n ...state,\r\n modalFtrTxt : action.payload\r\n };\r\n case SHOW_CHKBOX_MODAL:\r\n return {\r\n ...state,\r\n showChkboxModal : action.payload\r\n };\r\n case SHOW_PLAN_BTN_MODAL:\r\n return {\r\n ...state,\r\n showPlanBtnModal : action.payload\r\n };\r\n case SET_EXAM_HEADER_HEIGHT:\r\n return {\r\n ...state,\r\n examHeaderHeight : action.payload\r\n };\r\n case SET_DOC_CLICKED:\r\n return {\r\n ...state,\r\n docClicked : action.payload.status,\r\n docClickedTgt : action.payload.clickTgt\r\n };\r\n case SET_HAS_TRANSITION:\r\n return {\r\n ...state,\r\n hasTransition : action.payload\r\n };\r\n default:\r\n return state;\r\n };\r\n \r\n};\r\n\r\nexport default AppReducer;\r\n\r\n\r\n/*** Scripts end... */\r\n","import { useState, useEffect } from 'react';\r\n\r\n\r\nconst useWindowDimensions = () => {\r\n\r\n const hasWindow = typeof window !== 'undefined';\r\n\r\n function getWindowDimensions() {\r\n \r\n const winWidth = hasWindow ? window.innerWidth : null;\r\n const winHeight = hasWindow ? window.innerHeight : null;\r\n \r\n return {\r\n winWidth,\r\n winHeight,\r\n };\r\n \r\n }\r\n\r\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\r\n\r\n useEffect(() => {\r\n \r\n if (hasWindow) {\r\n \r\n function handleResize() {\r\n \r\n setWindowDimensions(getWindowDimensions());\r\n \r\n }\r\n\r\n window.addEventListener('resize', handleResize);\r\n \r\n return () => window.removeEventListener('resize', handleResize);\r\n \r\n }\r\n \r\n // The eslint comment below removes missing dependency warning from console.\r\n // eslint-disable-next-line\r\n }, [hasWindow]);\r\n\r\n return windowDimensions;\r\n \r\n}\r\n\r\nexport default useWindowDimensions;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useReducer, useEffect } from 'react';\r\n\r\nimport AppContext from './AppContext';\r\nimport AppReducer from './AppReducer';\r\nimport { SET_IS_REDIRECT,\r\n SET_DISPLAY_TYPE,\r\n SET_STATICS_DATA,\r\n SET_IS_INTRO,\r\n SET_IS_INITIAL_LOAD,\r\n SET_SCROLL_TO_PLANNER,\r\n SET_SCREENSHOT_STATUS,\r\n SET_SCREENSHOT_ENABLE,\r\n SET_SCREENSHOT_TGT,\r\n SET_MODAL_FOOTER_TXT,\r\n SHOW_CHKBOX_MODAL,\r\n SHOW_PLAN_BTN_MODAL,\r\n SET_EXAM_HEADER_HEIGHT,\r\n SET_DOC_CLICKED,\r\n SET_HAS_TRANSITION } from './AppTypes';\r\nimport useWindowDimensions from '../../components/hooks/getWindowDimensions';\r\n\r\nimport staticsJSON from '../../assets/data/statics.json';\r\n\r\n\r\nconst AppState = props => {\r\n \r\n \r\n // Define initial state.\r\n const initialState = {\r\n isRedirect : false,\r\n displayType : null,\r\n staticsData : null, \r\n isIntro : true,\r\n isInitialLoad : true,\r\n scrollToPlanner : false,\r\n screenshotStatus : false,\r\n screenshotEnable : false,\r\n screenshotTgt : null,\r\n modalFtrTxt : '',\r\n showChkboxModal : false,\r\n showPlanBtnModal : true,\r\n examHeaderHeight : 0,\r\n docClicked : false,\r\n docClickedTgt : null,\r\n hasTransition : false\r\n };\r\n \r\n // Initialize Reducer hook.\r\n const [state, dispatch] = useReducer(AppReducer, initialState);\r\n \r\n // Get window dimensions.\r\n const { winWidth, \r\n winHeight } = useWindowDimensions();\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n // Populate 'staticsData' with JSON data. \r\n const populateStaticsData = data => {\r\n \r\n dispatch({\r\n type : SET_STATICS_DATA,\r\n payload : data\r\n });\r\n \r\n };\r\n \r\n // Create the default modal footer content.\r\n const defineModalFooterTxt = () => {\r\n \r\n dispatch({\r\n type : SET_MODAL_FOOTER_TXT,\r\n payload : 'This tool is designed for general planning purposes, for detailed information on progression rules and exam availability please refer to the ACCA website.'\r\n });\r\n \r\n };\r\n \r\n // Handle clicks on document (i.e. close a dropdown).\r\n const docClickHandler = event => {\r\n \r\n toggleDocClicks(false);\r\n \r\n // First call will close the selector.\r\n dispatch({\r\n type : SET_DOC_CLICKED,\r\n payload : { status: true, clickTgt: event.target }\r\n });\r\n \r\n // Second call resets the context state.\r\n dispatch({\r\n type : SET_DOC_CLICKED,\r\n payload : { status: false, clickTgt: event.target }\r\n });\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * API methods.\r\n */\r\n \r\n const setIsRedirect = status => {\r\n \r\n dispatch({\r\n type : SET_IS_REDIRECT,\r\n payload : status\r\n });\r\n \r\n };\r\n\r\n // When intro animation & modals have finished set isIntro to false to show planner content.\r\n const setIsIntro = status => {\r\n \r\n dispatch({\r\n type : SET_IS_INTRO,\r\n payload : status\r\n });\r\n \r\n };\r\n \r\n // On an initial load the home page should fade in and modls should apear, otherwise not.\r\n const setIsInitialLoad = status => {\r\n \r\n dispatch({\r\n type : SET_IS_INITIAL_LOAD,\r\n payload : status\r\n });\r\n \r\n };\r\n \r\n // Scrolls horizontally to exam planner in mobile view..\r\n const setScrollToPlanner = status => {\r\n \r\n dispatch({\r\n type : SET_SCROLL_TO_PLANNER,\r\n payload : status\r\n });\r\n \r\n };\r\n \r\n // If 'screenshotStatus' changes turn on and off elements to grab.\r\n const setScreenshotStatus = status => {\r\n \r\n dispatch({\r\n type : SET_SCREENSHOT_STATUS,\r\n payload : status\r\n });\r\n \r\n };\r\n \r\n // Enable the screenshot button when the user has selected an event.\r\n const setScreenshotEnable = status => {\r\n \r\n dispatch({\r\n type : SET_SCREENSHOT_ENABLE,\r\n payload : status\r\n });\r\n \r\n };\r\n \r\n // Set the target to be captured.\r\n const setScreenshotTgt = element => {\r\n \r\n dispatch({\r\n type : SET_SCREENSHOT_TGT,\r\n payload : element\r\n });\r\n \r\n };\r\n \r\n // Take a screenshot of the planner.\r\n const onClickTakeScreenshot = () => {\r\n \r\n setScreenshotStatus(true);\r\n\r\n };\r\n \r\n // Toggle the intro checkbox modal (modal is created on the home page).\r\n const toggleCheckboxModal = status => {\r\n \r\n dispatch({\r\n type : SHOW_CHKBOX_MODAL,\r\n payload : status\r\n });\r\n \r\n };\r\n \r\n // Note the height of the exam header bar which is required as a style by the reset btn.\r\n const setExamHeaderHeight = val => {\r\n \r\n dispatch({\r\n type : SET_EXAM_HEADER_HEIGHT,\r\n payload : val\r\n });\r\n \r\n };\r\n \r\n // Enable/Disable document event listener for clicks.\r\n const toggleDocClicks = enable => {\r\n \r\n if ( enable ) window.addEventListener( 'click', docClickHandler, false );\r\n else window.removeEventListener( 'click', docClickHandler, false );\r\n \r\n };\r\n \r\n //\r\n const disablePlanBtnModal = () => {\r\n \r\n dispatch({\r\n type : SHOW_PLAN_BTN_MODAL,\r\n payload : false\r\n });\r\n \r\n };\r\n \r\n // Prevent exam sticks animating when entering Exam Planner by\r\n // stopping CSS transition.\r\n const setHasTransition = status => {\r\n \r\n dispatch({\r\n type : SET_HAS_TRANSITION,\r\n payload : status\r\n });\r\n \r\n };\r\n\r\n \r\n\r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // Load local statics data.\r\n populateStaticsData(staticsJSON);\r\n\r\n // Define modal footer text.\r\n defineModalFooterTxt();\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n useEffect(() => {\r\n \r\n // If screen is wider than 667 use PC layout,\r\n // else use table/mobile layout.\r\n dispatch({\r\n type : SET_DISPLAY_TYPE,\r\n payload : winWidth > 667 ? 'dsk' : 'mob'\r\n });\r\n \r\n // eslint-disable-next-line\r\n }, [winWidth, winHeight]);\r\n \r\n \r\n /*\r\n * Return context state & methods.\r\n */\r\n \r\n return \r\n {props.children}\r\n \r\n \r\n};\r\n\r\nexport default AppState;\r\n\r\n\r\n/*** Scripts end... */\r\n","import { createContext } from 'react';\r\n\r\n\r\nconst ModalContext = createContext();\r\n\r\nexport default ModalContext;\r\n\r\n\r\n/*** Scripts end... */\r\n","export const TOGGLE_MODAL = 'TOGGLE_MODAL';\r\nexport const UPDATE_MODAL = 'UPDATE_MODAL';\r\n\r\n\r\n/*** Scripts end... */","import { TOGGLE_MODAL, \r\n UPDATE_MODAL } from './ModalTypes';\r\n\r\n\r\nconst ModalReducer = (state, action) => {\r\n\r\n switch (action.type) {\r\n case TOGGLE_MODAL:\r\n return {\r\n ...state,\r\n isVisible : action.payload.status,\r\n props : action.payload.props\r\n };\r\n case UPDATE_MODAL:\r\n return {\r\n ...state,\r\n props : action.payload.props\r\n };\r\n default:\r\n return state;\r\n };\r\n\r\n};\r\n\r\nexport default ModalReducer;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useReducer } from 'react';\r\n\r\nimport ModalContext from './ModalContext';\r\nimport ModalReducer from './ModalReducer';\r\nimport { TOGGLE_MODAL, \r\n UPDATE_MODAL } from './ModalTypes';\r\n\r\n\r\nconst ModalState = props => {\r\n \r\n \r\n // Define initial state.\r\n const initialState = {\r\n isVisible : false,\r\n props : null\r\n };\r\n \r\n // Initialize Reducer hook.\r\n const [state, dispatch] = useReducer(ModalReducer, initialState);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const showModal = props => {\r\n \r\n dispatch({\r\n type : TOGGLE_MODAL,\r\n payload : props\r\n });\r\n \r\n };\r\n \r\n const hideModal = () => {\r\n \r\n dispatch({\r\n type : TOGGLE_MODAL,\r\n payload : {\r\n status : false,\r\n props : null\r\n }\r\n });\r\n \r\n };\r\n \r\n const updateModal = props => {\r\n \r\n dispatch({\r\n type : UPDATE_MODAL,\r\n payload : props\r\n });\r\n \r\n };\r\n \r\n \r\n /*\r\n * Return context state & methods.\r\n */\r\n \r\n return \r\n {props.children}\r\n \r\n \r\n};\r\n\r\nexport default ModalState;\r\n\r\n\r\n/*** Scripts end... */\r\n","import { createContext } from 'react';\r\n\r\n\r\nconst AuthenticationContext = createContext();\r\n\r\nexport default AuthenticationContext;\r\n\r\n\r\n/*** Scripts end... */\r\n","export const SET_AUTH_APPLICATION = 'SET_AUTH_APPLICATION';\r\nexport const SET_BEARER_TOKEN = 'SET_BEARER_TOKEN';\r\nexport const SET_USER_AUTHENTICATED = 'SET_USER_AUTHENTICATED';\r\nexport const SET_RESPONSE_STATUS = 'SET_RESPONSE_STATUS';\r\nexport const SET_FETCH_ERROR = 'SET_FETCH_ERROR';\r\nexport const SET_CUR_FETCHING = 'SET_CUR_FETCHING';\r\nexport const SET_PUBLIC_DATA = 'SET_PUBLIC_DATA';\r\nexport const SET_PRIVATE_DATA = 'SET_PRIVATE_DATA';\r\nexport const SET_OVERRIDE_DATA = 'SET_OVERRIDE_DATA';\r\nexport const SET_STUDY_DAYS_DATA = 'SET_STUDY_DAYS_DATA';\r\nexport const CLEAR_STUDY_DAYS_DATA = 'CLEAR_STUDY_DAYS_DATA';\r\nexport const UPDATE_STUDY_TASKS_DATA = 'UPDATE_STUDY_TASKS_DATA';\r\nexport const UPDATE_USER_EXAMS = 'UPDATE_USER_EXAMS';\r\nexport const UPDATE_COMPLETED_EXAMS = 'UPDATE_COMPLETED_EXAMS';\r\nexport const RESET_EXAM_PLANNER = 'RESET_EXAM_PLANNER';\r\n\r\n\r\n/*** Scripts end... */","import { SET_AUTH_APPLICATION,\r\n SET_BEARER_TOKEN,\r\n SET_USER_AUTHENTICATED,\r\n SET_RESPONSE_STATUS,\r\n SET_FETCH_ERROR,\r\n SET_CUR_FETCHING,\r\n SET_PUBLIC_DATA,\r\n SET_PRIVATE_DATA,\r\n SET_OVERRIDE_DATA,\r\n SET_STUDY_DAYS_DATA,\r\n CLEAR_STUDY_DAYS_DATA,\r\n UPDATE_STUDY_TASKS_DATA,\r\n UPDATE_USER_EXAMS,\r\n UPDATE_COMPLETED_EXAMS,\r\n RESET_EXAM_PLANNER } from './AuthenticationTypes';\r\n\r\n\r\nconst AuthenticationReducer = (state, action) => {\r\n\r\nswitch (action.type) {\r\n case SET_AUTH_APPLICATION:\r\n return {\r\n ...state,\r\n publicClientApplication : action.payload\r\n };\r\n case SET_BEARER_TOKEN:\r\n return {\r\n ...state,\r\n bearerToken : action.payload\r\n };\r\n case SET_USER_AUTHENTICATED:\r\n return {\r\n ...state,\r\n userAuthenticated : action.payload\r\n };\r\n case SET_RESPONSE_STATUS:\r\n return {\r\n ...state,\r\n responseStatus : action.payload\r\n };\r\n case SET_FETCH_ERROR:\r\n return {\r\n ...state,\r\n fetchError : action.payload\r\n };\r\n case SET_CUR_FETCHING:\r\n return {\r\n ...state,\r\n curFetching : action.payload\r\n };\r\n case SET_PUBLIC_DATA:\r\n return {\r\n ...state,\r\n examsData : action.payload.exam,\r\n examsSessionData : action.payload.examSession,\r\n userExamData : []\r\n };\r\n case SET_PRIVATE_DATA:\r\n return {\r\n ...state,\r\n examsData : action.payload.exam,\r\n examsSessionData : action.payload.examSession,\r\n userName : action.payload.user.firstName,\r\n userData : action.payload.user,\r\n userExamData : action.payload.userExam\r\n };\r\n case SET_OVERRIDE_DATA:\r\n return {\r\n ...state,\r\n publicClientApplication : 'override',\r\n userAuthenticated : true,\r\n userName : 'Override User'\r\n };\r\n case SET_STUDY_DAYS_DATA:\r\n return {\r\n ...state,\r\n examStudyDaysData : action.payload,\r\n studyTasksData : action.payload.studyDaysData.userExamTask\r\n };\r\n case CLEAR_STUDY_DAYS_DATA:\r\n return {\r\n ...state,\r\n examStudyDaysData : null,\r\n studyTasksData : null\r\n };\r\n case UPDATE_STUDY_TASKS_DATA:\r\n return {\r\n ...state,\r\n studyTasksData : action.payload\r\n };\r\n case UPDATE_USER_EXAMS:\r\n return {\r\n ...state,\r\n userExamData : action.payload\r\n };\r\n case UPDATE_COMPLETED_EXAMS:\r\n return {\r\n ...state,\r\n examsCompleted : action.payload\r\n };\r\n case RESET_EXAM_PLANNER:\r\n return {\r\n ...state,\r\n userExamData : [],\r\n examsCompleted : []\r\n };\r\n default:\r\n return state;\r\n};\r\n\r\n};\r\n\r\nexport default AuthenticationReducer;\r\n\r\n\r\n/*** Scripts end... */\r\n","/*\r\n * Config object to be passed to Msal on creation.\r\n * redirectUri: 'http://localhost:3000' / process.env.REACT_APP_REDIRECT_URI\r\n * scopes: process.env.REACT_APP_B2C_SCOPES\r\n */\r\nexport const msalConfig = {\r\n auth: {\r\n clientId : process.env.REACT_APP_CLIENT_ID,\r\n authority : process.env.REACT_APP_AUTHORITY,\r\n knownAuthorities : [process.env.REACT_APP_KNOWN_AUTHORITY],\r\n redirectUri : process.env.REACT_APP_REDIRECT_URI,\r\n postLogoutRedirectUri : process.env.REACT_APP_REDIRECT_URI\r\n },\r\n cache: {\r\n cacheLocation : 'sessionStorage',\r\n storeAuthStateInCookie : true\r\n },\r\n system: {\r\n tokenRenewalOffsetSeconds : 60\r\n }\r\n};\r\n\r\n\r\n/*\r\n * Scopes you add here will be prompted for consent during login.\r\n */\r\nexport const loginConfig = {\r\n prompt: 'login',\r\n scopes: [process.env.REACT_APP_B2C_SCOPES]\r\n};\r\n\r\n\r\n/*\r\n * Public & Private API URL address.\r\n */\r\nexport const apiUrlPublic = process.env.REACT_APP_API_DOMAIN + '/api/public/';\r\nexport const apiUrlPrivate = process.env.REACT_APP_API_DOMAIN + '/api/private/';","import axios from 'axios';\r\n\r\nimport { apiUrlPublic,\r\n apiUrlPrivate } from '../../authConfig';\r\n\r\n\r\n/*\r\n * Global methods to call public & private server API's.\r\n */\r\n\r\n\r\n// GET: '/api/public' data.\r\nexport const getDataPublic = async endPoint => {\r\n \r\n try {\r\n \r\n const apiUrl = apiUrlPublic + endPoint;\r\n const apiResponse = await axios.get(apiUrl);\r\n \r\n // HTTP SUCCESS.\r\n if ( apiResponse && apiResponse.status === 200 ) {\r\n \r\n // Server SUCCESS.\r\n if ( apiResponse.data.errorCode === 0 ) return { status: 'SUCCESS', data: apiResponse.data.payload };\r\n \r\n // Server ERROR.\r\n else return { status: 'ERROR', data: { type: 'server', code: apiResponse.data.errorCode, description: apiResponse.data.errorDescription } };\r\n \r\n }\r\n \r\n // HTTP ERROR.\r\n else return { status: 'ERROR', data: { type: 'http', code: apiResponse.status, description: apiResponse.statusText } }\r\n \r\n }\r\n catch ( error ) {\r\n \r\n // HTTP ERROR.\r\n return { status: 'ERROR', data: { type: 'http', code: error.response.status, description: error.response.statusText } }\r\n \r\n } \r\n \r\n};\r\n\r\n// GET: '/api/private' data.\r\nexport const getDataPrivate = async (endPoint, bearerToken) => {\r\n \r\n try {\r\n \r\n const apiUrl = apiUrlPrivate + endPoint;\r\n const apiResponse = await axios.get(apiUrl, { headers: { 'Authorization': bearerToken } });\r\n \r\n // HTTP SUCCESS.\r\n if ( apiResponse && apiResponse.status === 200 ) {\r\n \r\n // Server SUCCESS.\r\n if ( apiResponse.data.errorCode === 0 ) return { status: 'SUCCESS', data: apiResponse.data.payload };\r\n \r\n // Server ERROR.\r\n else return { status: 'ERROR', data: { type: 'server', code: apiResponse.data.errorCode, description: apiResponse.data.errorDescription } };\r\n \r\n }\r\n \r\n // HTTP ERROR.\r\n else return { status: 'ERROR', data: { type: 'http', code: apiResponse.status, description: apiResponse.statusText } }\r\n \r\n }\r\n catch (error) {\r\n \r\n // HTTP ERROR.\r\n return { status: 'ERROR', data: { type: 'http', code: error.response.status, description: error.response.statusText } }\r\n \r\n }\r\n \r\n};\r\n\r\n// POST: '/api/private' data.\r\n// This API returns a payload, check payload for success status.\r\nexport const postDataPrivate = async (endPoint, requestObj, bearerToken) => {\r\n \r\n try {\r\n \r\n const apiUrl = apiUrlPrivate + endPoint;\r\n const apiResponse = await axios.post(apiUrl, requestObj, { headers: { 'Authorization': bearerToken } });\r\n \r\n // HTTP SUCCESS.\r\n if ( apiResponse && apiResponse.status === 200 ) {\r\n \r\n // Server SUCCESS.\r\n if ( apiResponse.data.errorCode === 0 ) return { status: 'SUCCESS', data: apiResponse.data.payload };\r\n \r\n // Server ERROR.\r\n else return { status: 'ERROR', data: { type: 'server', code: apiResponse.data.errorCode, description: apiResponse.data.errorDescription } };\r\n \r\n }\r\n \r\n // HTTP ERROR.\r\n else return { status: 'ERROR', data: { type: 'http', code: apiResponse.status, description: apiResponse.statusText } }\r\n \r\n }\r\n catch (error) {\r\n \r\n // HTTP ERROR.\r\n return { status: 'ERROR', data: { type: 'http', code: error.response.status, description: error.response.statusText } }\r\n \r\n }\r\n \r\n};\r\n\r\n// POST: '/api/private' data.\r\n// This API will not return a payload, if response status is 200 then it is a success.\r\nexport const postDataNoPayloadPrivate = async (endPoint, requestObj, bearerToken) => {\r\n \r\n try {\r\n \r\n const apiUrl = apiUrlPrivate + endPoint;\r\n const apiResponse = await axios.post(apiUrl, requestObj, { headers: { 'Authorization': bearerToken } });\r\n \r\n // HTTP SUCCESS.\r\n if ( apiResponse && apiResponse.status === 200 ) {\r\n \r\n return { status: 'SUCCESS' };\r\n \r\n }\r\n \r\n // HTTP ERROR.\r\n else return { status: 'ERROR', data: { type: 'http', code: apiResponse.status, description: apiResponse.statusText } }\r\n \r\n }\r\n catch (error) {\r\n \r\n // HTTP ERROR.\r\n return { status: 'ERROR', data: { type: 'http', code: error.response.status, description: error.response.statusText } }\r\n \r\n }\r\n \r\n};\r\n\r\n// PUT: '/api/private' data.\r\n// This API will not return a payload, if response status is 200 then it is a success.\r\nexport const putDataNoPayloadPrivate = async (endPoint, requestObj, bearerToken) => {\r\n \r\n try {\r\n \r\n const apiUrl = apiUrlPrivate + endPoint;\r\n const apiResponse = await axios.put(apiUrl, requestObj, { headers: { 'Authorization': bearerToken } });\r\n \r\n // HTTP SUCCESS.\r\n if ( apiResponse && apiResponse.status === 200 ) {\r\n \r\n return { status: 'SUCCESS' };\r\n \r\n }\r\n \r\n // HTTP ERROR.\r\n else return { status: 'ERROR', data: { type: 'http', code: apiResponse.status, description: apiResponse.statusText } }\r\n \r\n }\r\n catch (error) {\r\n \r\n // HTTP ERROR.\r\n return { status: 'ERROR', data: { type: 'http', code: error.response.status, description: error.response.statusText } }\r\n \r\n }\r\n \r\n};\r\n\r\n\r\n/*** Scripts end... */","import React, { useReducer, useState, useEffect } from 'react';\r\nimport { PublicClientApplication,\r\n InteractionRequiredAuthError } from '@azure/msal-browser';\r\nimport axios from 'axios';\r\n\r\nimport AuthenticationContext from './AuthenticationContext';\r\nimport AuthenticationReducer from './AuthenticationReducer';\r\nimport { SET_AUTH_APPLICATION,\r\n SET_BEARER_TOKEN,\r\n SET_USER_AUTHENTICATED,\r\n SET_RESPONSE_STATUS,\r\n SET_FETCH_ERROR,\r\n SET_CUR_FETCHING,\r\n SET_PUBLIC_DATA,\r\n SET_PRIVATE_DATA,\r\n SET_OVERRIDE_DATA,\r\n SET_STUDY_DAYS_DATA,\r\n CLEAR_STUDY_DAYS_DATA,\r\n UPDATE_STUDY_TASKS_DATA,\r\n UPDATE_USER_EXAMS,\r\n UPDATE_COMPLETED_EXAMS,\r\n RESET_EXAM_PLANNER } from './AuthenticationTypes';\r\nimport { getDataPublic, \r\n getDataPrivate,\r\n postDataPrivate,\r\n postDataNoPayloadPrivate,\r\n putDataNoPayloadPrivate } from '../../components/hooks/fetchMethods';\r\n\r\nimport { msalConfig, \r\n loginConfig,\r\n apiUrlPrivate } from '../../authConfig.js';\r\n\r\n\r\n/*\r\n * We are using Azure AD B2C to handle authentication. When a user clicks 'sign in' they are redirected\r\n * to an Azure log in page where they can enter their details. THey will then be redirected back to this\r\n * app via the server. The server will append an ID Token as a cookie to the redirect url which we can then \r\n * use to authorize future server calls. If the user signs out then they should be signed out of Azure and \r\n * also their local cookies & session storage will be cleared so they can no longer call the server using \r\n * the ID Token.\r\n */\r\nconst AuthenticationState = props => {\r\n \r\n \r\n // Define initial state.\r\n const initialState = {\r\n publicClientApplication : null,\r\n bearerToken : '',\r\n userAuthenticated : false,\r\n responseStatus : null,\r\n userName : '',\r\n examsData : null,\r\n examsSessionData : null,\r\n examStudyDaysData : null,\r\n studyTasksData : null,\r\n userData : null,\r\n userExamData : null,\r\n fetchError : null,\r\n examsCompleted : [],\r\n curFetching : ''\r\n };\r\n \r\n // Initialize Reducer hook.\r\n const [state, dispatch] = useReducer(AuthenticationReducer, initialState);\r\n \r\n // Component state.\r\n const [publicClientApplication, setPublicClientApplication] = useState(null);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */ \r\n \r\n // Initialize Azure AD B2C instance.\r\n const initB2C = () => {\r\n \r\n setPublicClientApplication(new PublicClientApplication(msalConfig));\r\n \r\n };\r\n \r\n // Set current fetching value so that we can add/remove a spinner to/from the appropriate button.\r\n const setCurFetching = val => {\r\n\r\n dispatch({\r\n type : SET_CUR_FETCHING,\r\n payload : val\r\n });\r\n \r\n };\r\n \r\n const handleLoggedInError = (error, accounts) => {\r\n \r\n setCurFetching('');\r\n \r\n if ( error instanceof InteractionRequiredAuthError ) {\r\n \r\n publicClientApplication.acquireTokenRedirect({ scopes: loginConfig.scopes, account: accounts[0] });\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'http', code: 401, description: '' }\r\n });\r\n \r\n }\r\n \r\n };\r\n \r\n \r\n \r\n \r\n /*\r\n * API methods.\r\n */\r\n \r\n const getData = async (endPoint, action) => {\r\n \r\n const accounts = publicClientApplication.getAllAccounts();\r\n \r\n clearFetchError();\r\n \r\n // Use the PRIVATE API if we have a local B2C account (user is logged in).\r\n // MSAL Docs: https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-acquire-token?tabs=javascript2\r\n if ( accounts.length > 0 ) {\r\n \r\n try {\r\n \r\n const tokenResponse = await publicClientApplication.acquireTokenSilent({ scopes: loginConfig.scopes, account: accounts[0] });\r\n \r\n if ( !tokenResponse.accessToken || tokenResponse.accessToken === '' ) publicClientApplication.acquireTokenRedirect({ scopes: loginConfig.scopes, account: accounts[0] });\r\n else {\r\n \r\n //const brToken = `Bearer ${tokenResponse.accessToken}`;\r\n \r\n // Store the bearer token for future use.\r\n // dispatch({\r\n // type : SET_BEARER_TOKEN,\r\n // payload : brToken\r\n // });\r\n \r\n getDataPrivate(endPoint, `Bearer ${tokenResponse.accessToken}`)\r\n .then(response => {\r\n \r\n if ( response.status === 'SUCCESS' ) {\r\n \r\n dispatch({\r\n type : action,\r\n payload : response.data\r\n });\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { ...response.data, req: { endPoint } }\r\n });\r\n \r\n }\r\n \r\n }); \r\n \r\n }\r\n\r\n }\r\n catch (error) {\r\n \r\n handleLoggedInError(error, accounts);\r\n \r\n }\r\n \r\n }\r\n \r\n // Use the PUBLIC API if we have no local account (user not logged in).\r\n else {\r\n \r\n getDataPublic(endPoint)\r\n .then(response => {\r\n \r\n if ( response.status === 'SUCCESS' ) {\r\n \r\n dispatch({\r\n type : SET_PUBLIC_DATA,\r\n payload : response.data\r\n });\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { ...response.data, req: { endPoint } }\r\n });\r\n \r\n }\r\n\r\n });\r\n \r\n }\r\n \r\n };\r\n \r\n const postData = async (endPoint, requestObj) => {\r\n\r\n const accounts = publicClientApplication.getAllAccounts();\r\n \r\n clearFetchError();\r\n setCurFetching(endPoint);\r\n \r\n try {\r\n \r\n const tokenResponse = await publicClientApplication.acquireTokenSilent({ scopes: loginConfig.scopes, account: accounts[0] });\r\n \r\n if ( !tokenResponse.accessToken || tokenResponse.accessToken === '' ) publicClientApplication.acquireTokenRedirect({ scopes: loginConfig.scopes, account: accounts[0] });\r\n else {\r\n \r\n postDataPrivate(endPoint, requestObj, `Bearer ${tokenResponse.accessToken}`)\r\n .then(response => {\r\n \r\n setCurFetching('');\r\n \r\n if ( response.status === 'SUCCESS' ) {\r\n \r\n //...\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { ...response.data, req: { endPoint } }\r\n });\r\n \r\n }\r\n \r\n });\r\n \r\n }\r\n \r\n }\r\n catch (error) {\r\n \r\n \r\n handleLoggedInError(error, accounts);\r\n \r\n }\r\n \r\n };\r\n \r\n const postDataNoPayload = async (endPoint, props, requestObj) => {\r\n\r\n const accounts = publicClientApplication.getAllAccounts();\r\n \r\n clearFetchError();\r\n setCurFetching(endPoint);\r\n \r\n try {\r\n \r\n const tokenResponse = await publicClientApplication.acquireTokenSilent({ scopes: loginConfig.scopes, account: accounts[0] });\r\n \r\n if ( !tokenResponse.accessToken || tokenResponse.accessToken === '' ) publicClientApplication.acquireTokenRedirect({ scopes: loginConfig.scopes, account: accounts[0] });\r\n else {\r\n \r\n postDataNoPayloadPrivate(endPoint, requestObj, `Bearer ${tokenResponse.accessToken}`)\r\n .then(response => {\r\n \r\n setCurFetching('');\r\n \r\n if ( response.status === 'SUCCESS' ) {\r\n \r\n dispatch({\r\n type : SET_RESPONSE_STATUS,\r\n payload : { status: true, endPoint, props }\r\n });\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { ...response.data, req: { endPoint } }\r\n });\r\n \r\n }\r\n \r\n });\r\n \r\n }\r\n \r\n }\r\n catch (error) {\r\n \r\n handleLoggedInError(error, accounts);\r\n \r\n }\r\n \r\n };\r\n \r\n const putDataNoPayload = async (endPoint, props, requestObj) => {\r\n\r\n const accounts = publicClientApplication.getAllAccounts();\r\n \r\n clearFetchError();\r\n setCurFetching(endPoint);\r\n \r\n try {\r\n \r\n const tokenResponse = await publicClientApplication.acquireTokenSilent({ scopes: loginConfig.scopes, account: accounts[0] });\r\n \r\n if ( !tokenResponse.accessToken || tokenResponse.accessToken === '' ) publicClientApplication.acquireTokenRedirect({ scopes: loginConfig.scopes, account: accounts[0] });\r\n else {\r\n \r\n putDataNoPayloadPrivate(endPoint, requestObj, `Bearer ${tokenResponse.accessToken}`)\r\n .then(response => {\r\n \r\n setCurFetching('');\r\n \r\n if ( response.status === 'SUCCESS' ) {\r\n \r\n dispatch({\r\n type : SET_RESPONSE_STATUS,\r\n payload : { status: true, endPoint, props }\r\n });\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { ...response.data, req: { endPoint } }\r\n });\r\n \r\n }\r\n \r\n });\r\n \r\n }\r\n \r\n }\r\n catch (error) {\r\n \r\n handleLoggedInError(error, accounts);\r\n \r\n }\r\n \r\n };\r\n \r\n const getStudyDayData = async (endPoint, examUNID, sessionUNID) => {\r\n \r\n const accounts = publicClientApplication.getAllAccounts();\r\n \r\n clearFetchError();\r\n \r\n // Use the PRIVATE API if we have a local B2C account (user is logged in).\r\n // MSAL Docs: https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-acquire-token?tabs=javascript2\r\n if ( accounts.length > 0 ) {\r\n \r\n setCurFetching(endPoint);\r\n \r\n try {\r\n \r\n const tokenResponse = await publicClientApplication.acquireTokenSilent({ scopes: loginConfig.scopes, account: accounts[0] });\r\n \r\n if ( !tokenResponse.accessToken || tokenResponse.accessToken === '' ) publicClientApplication.acquireTokenRedirect({ scopes: loginConfig.scopes, account: accounts[0] });\r\n else {\r\n \r\n getDataPrivate(endPoint + '?id=' + sessionUNID, `Bearer ${tokenResponse.accessToken}`)\r\n .then(response => {\r\n \r\n setCurFetching('');\r\n \r\n if ( response.status === 'SUCCESS' ) {\r\n \r\n dispatch({\r\n type : SET_STUDY_DAYS_DATA,\r\n payload : { \r\n examUNID : examUNID,\r\n sessionUNID : sessionUNID,\r\n studyDaysData : response.data\r\n }\r\n });\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { ...response.data, req: { endPoint } }\r\n });\r\n \r\n }\r\n \r\n });\r\n \r\n }\r\n \r\n }\r\n catch (error) {\r\n \r\n handleLoggedInError(error, accounts);\r\n \r\n }\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'loggedout' }\r\n });\r\n \r\n }\r\n \r\n };\r\n \r\n // Call a Promise to send data to the server.\r\n // This fetch is async so the client will update even before a response has come back.\r\n // The client will disable the updated Task until a success response is received or show an error mesasage if applicable.\r\n const postDataAsync = (endPoint, requestObj, taskUNID) => {\r\n \r\n const accounts = publicClientApplication.getAllAccounts();\r\n \r\n clearFetchError();\r\n\r\n return new Promise((resolve, reject) => {\r\n \r\n if ( accounts.length > 0 ) {\r\n \r\n try {\r\n \r\n publicClientApplication.acquireTokenSilent({ scopes: loginConfig.scopes, account: accounts[0] })\r\n .then(tokenResponse => {\r\n \r\n axios.post(apiUrlPrivate + endPoint, requestObj, { headers: { 'Authorization': `Bearer ${tokenResponse.accessToken}` } })\r\n .then(response => {\r\n \r\n if ( response.status === 200 ) {\r\n \r\n if ( response.data.errorCode === 0 ) resolve({ taskUNID, newTaskUNID: response.data.payload.UserExamSessionTask.UNID });\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'server', code: response.data.errorCode, description: response.data.errorDescription }\r\n });\r\n reject('Failed');\r\n \r\n }\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'http', code: response.status, description: response.statusText }\r\n });\r\n reject('Failed');\r\n \r\n } \r\n \r\n })\r\n .catch(error => {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'http', code: error.response.status, description: error.response.statusText }\r\n });\r\n reject('Failed');\r\n \r\n });\r\n \r\n })\r\n .catch(error => {\r\n \r\n publicClientApplication.acquireTokenRedirect({ scopes: loginConfig.scopes, account: accounts[0] });\r\n reject('Failed');\r\n \r\n });\r\n \r\n }\r\n catch (error) {\r\n \r\n handleLoggedInError(error, accounts);\r\n reject('Failed');\r\n \r\n }\r\n\r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'loggedout' }\r\n });\r\n \r\n reject('Failed');\r\n \r\n }\r\n \r\n });\r\n \r\n };\r\n \r\n // Call a Promise to send data to the server.\r\n // This fetch is async so the client will update even before a response has come back.\r\n // The client will disable the updated Task until a success response is received or show an error mesasage if applicable.\r\n const putDataAsync = async (endPoint, requestObj, taskUNID) => {\r\n \r\n const accounts = publicClientApplication.getAllAccounts();\r\n \r\n clearFetchError();\r\n\r\n return new Promise((resolve, reject) => {\r\n \r\n if ( accounts.length > 0 ) {\r\n \r\n try {\r\n \r\n publicClientApplication.acquireTokenSilent({ scopes: loginConfig.scopes, account: accounts[0] })\r\n .then(tokenResponse => {\r\n \r\n axios.put(apiUrlPrivate + endPoint, requestObj, { headers: { 'Authorization': `Bearer ${tokenResponse.accessToken}` } })\r\n .then(response => {\r\n\r\n if ( response.status === 200 ) {\r\n \r\n if ( response.data.errorCode === 0 ) resolve({ taskUNID });\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'server', code: response.data.errorCode, description: response.data.errorDescription }\r\n });\r\n reject('Failed');\r\n \r\n }\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'http', code: response.status, description: response.statusText }\r\n });\r\n reject('Failed');\r\n \r\n } \r\n \r\n })\r\n .catch(error => {\r\n\r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'http', code: error.response.status, description: error.response.statusText }\r\n });\r\n reject('Failed');\r\n \r\n });\r\n \r\n })\r\n .catch(error => {\r\n \r\n publicClientApplication.acquireTokenRedirect({ scopes: loginConfig.scopes, account: accounts[0] });\r\n reject('Failed');\r\n \r\n });\r\n \r\n }\r\n catch (error) {\r\n \r\n handleLoggedInError(error, accounts);\r\n reject('Failed');\r\n \r\n }\r\n \r\n }\r\n else {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : { type: 'loggedout' }\r\n });\r\n \r\n reject('Failed');\r\n \r\n }\r\n \r\n });\r\n \r\n };\r\n \r\n // Sign user in. This will redirect browser to Azure B2C login page, \r\n // then bring the user back here via the server.\r\n const signInUser = () => {\r\n \r\n try {\r\n \r\n sessionStorage.setItem(\"is_redirect\", \"true\");\r\n publicClientApplication.loginRedirect(loginConfig);\r\n \r\n }\r\n catch(error) {\r\n \r\n sessionStorage.removeItem(\"is_redirect\");\r\n console.log('ERROR:', error);\r\n \r\n }\r\n \r\n };\r\n \r\n // Sign out user will set 'userAuthenticated' to false, \r\n // clear seassion storage & clear all cookies.\r\n const signOutUser = (status) => {\r\n \r\n try {\r\n \r\n sessionStorage.setItem(\"is_redirect\", \"true\");\r\n \r\n if ( typeof status !== 'undefined' &&\r\n ( status === 401 || status === 403 ) ) {\r\n \r\n sessionStorage.setItem(\"show_login\", \"true\");\r\n sessionStorage.setItem(\"status_code\", status);\r\n \r\n }\r\n \r\n publicClientApplication.logoutRedirect();\r\n \r\n }\r\n catch(error) {\r\n \r\n sessionStorage.removeItem(\"is_redirect\");\r\n sessionStorage.removeItem(\"show_login\");\r\n sessionStorage.removeItem(\"status_code\");\r\n console.log('ERROR:', error);\r\n \r\n }\r\n \r\n };\r\n \r\n // UPDATE or ADD a userExam in the 'userExamData' array.\r\n const updateUserExam = exam => {\r\n \r\n let tmpArr = [];\r\n \r\n // If we already have this exam in the array update it instead of adding it again.\r\n const examMatch = state.userExamData.find(item => item.examUNID === exam.examUNID);\r\n \r\n // UPDATE: The array already has this exam.\r\n if ( typeof examMatch !== 'undefined' ) {\r\n \r\n const filteredArr = state.userExamData.filter(item => item.examUNID !== exam.examUNID);\r\n \r\n tmpArr = [...filteredArr, exam];\r\n \r\n }\r\n \r\n // ADD: The array doesn't yet have this exam.\r\n else tmpArr = [...state.userExamData, exam];\r\n\r\n dispatch({\r\n type : UPDATE_USER_EXAMS,\r\n payload : tmpArr\r\n });\r\n \r\n };\r\n \r\n // UPDATE exam completed array, only used by logged out users.\r\n // Any completed exams should be removed from the 'userExamData' array.\r\n const updateCompletedArr = (examsArr) => {\r\n \r\n // Update completed exams array.\r\n dispatch({\r\n type : UPDATE_COMPLETED_EXAMS,\r\n payload : examsArr\r\n });\r\n \r\n // Update user exams array.\r\n const filteredArr = state.userExamData.filter(itemA => !examsArr.find(itemB => itemB.UNID === itemA.examUNID));\r\n \r\n dispatch({\r\n type : UPDATE_USER_EXAMS,\r\n payload : filteredArr\r\n });\r\n \r\n };\r\n \r\n // Reset user exam data, only available to logged out users.\r\n const resetUserExams = () => {\r\n \r\n dispatch({\r\n type : RESET_EXAM_PLANNER\r\n });\r\n \r\n };\r\n \r\n // Reset 'responseStatus' to FALSE.\r\n const resetResponseStatus = () => {\r\n \r\n dispatch({\r\n type : SET_RESPONSE_STATUS,\r\n payload : null\r\n });\r\n \r\n };\r\n\r\n // Clear 'examStudyDaysData' when leaving the Study Planner, so that we always get new data when returning.\r\n const clearStudyDaysData = () => {\r\n \r\n dispatch({\r\n type : CLEAR_STUDY_DAYS_DATA\r\n });\r\n \r\n };\r\n \r\n // Add a task to the tasks array.\r\n const addStudyDayTask = newTask => {\r\n \r\n const tasksArr = [...state.studyTasksData];\r\n \r\n tasksArr.push(newTask);\r\n \r\n dispatch({\r\n type : UPDATE_STUDY_TASKS_DATA,\r\n payload : tasksArr\r\n });\r\n \r\n };\r\n \r\n // Update a task in the tasks array.\r\n const updateStudyDayTask = taskObj => {\r\n \r\n const idx = state.studyTasksData.findIndex(item => item.UNID === taskObj.UNID);\r\n const filteredArr = state.studyTasksData.filter(item => item.UNID !== taskObj.UNID);\r\n \r\n filteredArr.splice(idx, 0, taskObj);\r\n \r\n dispatch({\r\n type : UPDATE_STUDY_TASKS_DATA,\r\n payload : filteredArr\r\n });\r\n \r\n };\r\n \r\n // Delete a task from the tasks array.\r\n const deleteStudyDayTask = taskUNID => {\r\n \r\n const filteredArr = state.studyTasksData.filter(item => item.UNID !== taskUNID); \r\n \r\n dispatch({\r\n type : UPDATE_STUDY_TASKS_DATA,\r\n payload : filteredArr\r\n });\r\n \r\n };\r\n \r\n // Update an existing tasks UNID, this is done after a new task has been created with a temporary UNID.\r\n const updateTaskUNID = ({ oldUNID, newUNID }) => {\r\n \r\n const idx = state.studyTasksData.findIndex(item => item.UNID === oldUNID);\r\n const matchingTask = state.studyTasksData.find(item => item.UNID === oldUNID);\r\n const filteredArr = state.studyTasksData.filter(item => item.UNID !== oldUNID); \r\n const taskObj = {...matchingTask};\r\n \r\n taskObj.UNID = newUNID;\r\n \r\n filteredArr.splice(idx, 0, taskObj);\r\n \r\n dispatch({\r\n type : UPDATE_STUDY_TASKS_DATA,\r\n payload : filteredArr\r\n });\r\n \r\n };\r\n \r\n const clearFetchError = () => {\r\n \r\n dispatch({\r\n type : SET_FETCH_ERROR,\r\n payload : null\r\n });\r\n \r\n };\r\n \r\n \r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n const hostname = window.location.hostname;\r\n const allowedNamesArr = ['localhost', 'globebyte'];\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const overrideLogin = urlParams.has('overridelogin');\r\n \r\n let strAppears = false;\r\n \r\n allowedNamesArr.forEach(item => {\r\n \r\n if ( hostname.includes(item) ) strAppears = true;\r\n \r\n });\r\n \r\n // If we are on an allowed domain name & if the querystring\r\n // includes 'overridelogin' then set authenticated to true.\r\n if ( strAppears && overrideLogin ) {\r\n \r\n dispatch({\r\n type : SET_OVERRIDE_DATA\r\n });\r\n \r\n // Fetch initial PUBLIC API data.\r\n getData('exam', SET_PRIVATE_DATA);\r\n \r\n }\r\n \r\n // Else user will need to authenticate.\r\n else initB2C();\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n \r\n useEffect(() => {\r\n\r\n // If 'publicClientApplication' exists\r\n if ( publicClientApplication && publicClientApplication !== 'override' ) {\r\n \r\n dispatch({\r\n type : SET_AUTH_APPLICATION,\r\n payload : publicClientApplication\r\n });\r\n\r\n // This listener is fired when the site reloads following a login or logout event.\r\n // If a user has successfully logged in then we can fetch user data.\r\n publicClientApplication.handleRedirectPromise()\r\n .then(tokenResponse => {\r\n \r\n // Token response FAIL, but check to see whether we\r\n // have an account stored locally. If we do then we are still authorized,\r\n // as we are responding to a logged in browser refresh.\r\n if ( tokenResponse === null ) {\r\n \r\n const accounts = publicClientApplication.getAllAccounts();\r\n \r\n // Local account not found.\r\n if ( accounts.length === 0 ) {\r\n \r\n dispatch({\r\n type : SET_USER_AUTHENTICATED,\r\n payload : false\r\n });\r\n \r\n }\r\n \r\n // Local account exists.\r\n else {\r\n \r\n dispatch({\r\n type : SET_USER_AUTHENTICATED,\r\n payload : true\r\n });\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n // Token response SUCCESS.\r\n else {\r\n \r\n dispatch({\r\n type : SET_USER_AUTHENTICATED,\r\n payload : true\r\n });\r\n \r\n }\r\n \r\n // Fetch initial PUBLIC or PRIVATE API data.\r\n getData('exam', SET_PRIVATE_DATA);\r\n \r\n })\r\n .catch(error => {\r\n \r\n console.error(error);\r\n \r\n // Instead of showing an error msg the user can interact with the \r\n // site in sandbox mode, with the option of logging in later.\r\n dispatch({\r\n type : SET_USER_AUTHENTICATED,\r\n payload : false\r\n });\r\n \r\n // Fetch initial PUBLIC API data.\r\n getData('exam', SET_PRIVATE_DATA);\r\n \r\n });\r\n \r\n }\r\n\r\n // eslint-disable-next-line\r\n }, [publicClientApplication]);\r\n \r\n \r\n \r\n \r\n /*\r\n * Return context state & methods.\r\n */\r\n \r\n return \r\n {props.children}\r\n \r\n \r\n};\r\n\r\nexport default AuthenticationState;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React from 'react';\r\n\r\nimport AppState from './app/AppState';\r\nimport ModalState from './modal/ModalState';\r\nimport AuthenticationState from './authentication/AuthenticationState';\r\n\r\n\r\nconst AllContexts = ({ children }) => (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n);\r\n\r\nexport default AllContexts;\r\n\r\n\r\n/*** Scripts end... */\r\n","export default __webpack_public_path__ + \"static/media/acca_logo_txt@3x.3c967c07.png\";","export default __webpack_public_path__ + \"static/media/quad.1ef672df.png\";","export default __webpack_public_path__ + \"static/media/quad@2x.13532588.png\";","export default __webpack_public_path__ + \"static/media/quad@3x.832bcebe.png\";","export default __webpack_public_path__ + \"static/media/pointer.4691f1b2.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgReset(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 106.8 104.42\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.58,0A52.47,52.47,0,0,0,12.17,21.93L0,18,7.24,52.21l26-23.39-11.35-3.7A42.07,42.07,0,0,1,54.58,9.75a42.46,42.46,0,1,1,0,84.92c-.19,0-19.14-.19-29.32-12.58l-7.53,6.19c13.06,15.91,35.61,16.14,36.83,16.14h0A52.21,52.21,0,1,0,54.58,0Z\",\n fill: \"#fff\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgReset);\nexport default __webpack_public_path__ + \"static/media/reset.eee8bddf.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconTickCircled(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 47.03,\n height: 47.03,\n viewBox: \"0 0 47.03 47.03\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 23.52,\n cy: 23.52,\n r: 21.68,\n style: {\n fill: \"#c8c8c8\",\n stroke: \"#000\",\n strokeMiterlimit: 10,\n strokeWidth: \"3.66451439683034px\"\n }\n }), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.82,13.86a20.55,20.55,0,0,0-3.71,3.32,68.85,68.85,0,0,0-8.2,11.3c-1.2,1.95-2.39,3.91-3.62,5.92l-1.65-1.79c-2.4-2.62-4.81-5.25-7.22-7.86-.28-.3-.33-.48,0-.74s.87-1,1.39-1.12,1.06.47,1.58.75c1.43.78,2.85,1.57,4.25,2.4a.7.7,0,0,0,1.05-.17A84.93,84.93,0,0,1,27,19.26,53,53,0,0,1,34,14a1.35,1.35,0,0,1,.8-.22h2Z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconTickCircled);\nexport default __webpack_public_path__ + \"static/media/icon-tick-circled.894a6b8d.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconFlagCircled(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 47.03,\n height: 47.03,\n viewBox: \"0 0 47.03 47.03\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 23.52,\n cy: 23.52,\n r: 21.68,\n style: {\n fill: \"#c8c8c8\",\n stroke: \"#000\",\n strokeMiterlimit: 10,\n strokeWidth: \"3.66451439683034px\"\n }\n }), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.64,15c-1.69,9.8-10.2,12-12.53,12.49a.47.47,0,0,1-.55-.49l.09-1.26a5.08,5.08,0,0,1,2.05-.24l.23-10.82c3.69,1.23,8.48.25,10.18-.17A.43.43,0,0,1,38.64,15ZM21.29,38.6a.81.81,0,0,1-.53,1l-.23,0a.79.79,0,0,1-.76-.56L13.09,16.68H13a3,3,0,1,1,3-3,2.7,2.7,0,0,1-.08.58,23.29,23.29,0,0,1,11-2.31L26.71,24.5s-3.24-.21-8.61,3.43Zm-6.83-25A1.45,1.45,0,1,0,13,15.1,1.45,1.45,0,0,0,14.46,13.65Z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconFlagCircled);\nexport default __webpack_public_path__ + \"static/media/icon-flag-circled.db388996.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconPlusCircled(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 2C6.486 2 2 6.486 2 12s4.486 10 10 10 10-4.486 10-10S17.514 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconPlusCircled);\nexport default __webpack_public_path__ + \"static/media/icon-plus-circled.06753e94.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconStudyPlanning(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 62.2,\n height: 62.17,\n viewBox: \"0 0 62.2 62.17\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.16,3V0H40.09V3H3v7.52H0v1.84H3V31.64H0v1.84H3V52.81H0v1.84H3v7.52H62.2V3ZM41.93,1.84H54.32V27.19l-6.2-4-6.19,4ZM4.82,54.65h3V52.81h-3V33.48h3V31.64h-3V12.31h3V10.47h-3V4.79h6.51V60.33H4.82Zm55.54,5.68H13.18V4.79H40.09V30.57l8-5.19,8,5.19V4.79h4.2Z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconStudyPlanning);\nexport default __webpack_public_path__ + \"static/media/icon-study-planning.bf72abe9.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconExamPlanning(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 59.22,\n height: 62.2,\n viewBox: \"0 0 59.22 62.2\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.54,27.31V19.07h8.4v8.24Zm.84-.84H20.1V19.91H13.38Z\",\n transform: \"translate(-0.5 -0.5)\",\n style: {\n fill: \"#fff\"\n }\n }), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.44,18.57H12v9.24h9.4V18.57ZM13.88,26V20.41H19.6V26Z\",\n transform: \"translate(-0.5 -0.5)\"\n }))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.88,27.31V19.07h8.4v8.24Zm.84-.84h6.72V19.91H26.72Z\",\n transform: \"translate(-0.5 -0.5)\",\n style: {\n fill: \"#fff\"\n }\n }), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.78,18.57h-9.4v9.24h9.4V18.57ZM27.22,26V20.41h5.72V26Z\",\n transform: \"translate(-0.5 -0.5)\"\n }))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.28,27.31V19.07h8.4v8.24Zm.84-.84h6.72V19.91H40.12Z\",\n transform: \"translate(-0.5 -0.5)\",\n style: {\n fill: \"#fff\"\n }\n }), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.18,18.57h-9.4v9.24h9.4V18.57ZM40.62,26V20.41h5.72V26Z\",\n transform: \"translate(-0.5 -0.5)\"\n }))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.54,41.11V32.87h8.4v8.24Zm.84-.84H20.1V33.71H13.38Z\",\n transform: \"translate(-0.5 -0.5)\",\n style: {\n fill: \"#fff\"\n }\n }), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.44,32.37H12v9.24h9.4V32.37Zm-7.56,7.4V34.21H19.6v5.56Z\",\n transform: \"translate(-0.5 -0.5)\"\n }))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.88,41.11V32.87h8.4v8.24Zm.84-.84h6.72V33.71H26.72Z\",\n transform: \"translate(-0.5 -0.5)\",\n style: {\n fill: \"#fff\"\n }\n }), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.78,32.37h-9.4v9.24h9.4V32.37Zm-7.56,7.4V34.21h5.72v5.56Z\",\n transform: \"translate(-0.5 -0.5)\"\n }))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.28,41.11V32.87h8.4v8.24Zm.84-.84h6.72V33.71H40.12Z\",\n transform: \"translate(-0.5 -0.5)\",\n style: {\n fill: \"#fff\"\n }\n }), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.18,32.37h-9.4v9.24h9.4V32.37Zm-7.56,7.4V34.21h5.72v5.56Z\",\n transform: \"translate(-0.5 -0.5)\"\n }))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.54,54.91V46.67h8.4v8.24Zm.84-.84H20.1V47.51H13.38Z\",\n transform: \"translate(-0.5 -0.5)\",\n style: {\n fill: \"#fff\"\n }\n }), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.44,46.17H12v9.24h9.4V46.17Zm-7.56,7.4V48H19.6v5.56Z\",\n transform: \"translate(-0.5 -0.5)\"\n }))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.88,54.91V46.67h8.4v8.24Zm.84-.84h6.72V47.51H26.72Z\",\n transform: \"translate(-0.5 -0.5)\",\n style: {\n fill: \"#fff\"\n }\n }), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.78,46.17h-9.4v9.24h9.4V46.17Zm-7.56,7.4V48h5.72v5.56Z\",\n transform: \"translate(-0.5 -0.5)\"\n }))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1,62.2V4H8.52V1h.84V4h41.5V1h.84V4h7.52V62.2Zm.84-.84H58.38V13.18H1.84Zm0-49H58.38V4.82H51.7v3h-.84v-3H9.36v3H8.52v-3H1.84Z\",\n transform: \"translate(-0.5 -0.5)\",\n style: {\n fill: \"#fff\"\n }\n }), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.2.5H50.36v3H9.86V.5H8v3H.5V62.7H59.72V3.48H52.2V.5ZM50.36,8.3H52.2v-3h5.68v6.52H2.34V5.32H8v3H9.86v-3h40.5v3Zm-48,52.56V13.68H57.88V60.86Z\",\n transform: \"translate(-0.5 -0.5)\"\n })))))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconExamPlanning);\nexport default __webpack_public_path__ + \"static/media/icon-exam-planning.7b9584df.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMood1(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"64px\",\n height: \"64px\",\n viewBox: \"0 0 64 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"EMOJI 01 VERY SAD 64x64@2x\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"EMOJI-01-VERY-SAD-64x64\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"YELLOW-BACKGROUND-BLEED\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\",\n cx: 32,\n cy: 32,\n r: 31\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,1.92 C36.0624,1.92 40,2.7152 43.7072,4.2832 C47.2896,5.7984 50.5056,7.968 53.2688,10.7296 C56.032,13.4928 58.2016,16.7104 59.7152,20.2912 C61.2832,23.9984 62.0784,27.9376 62.0784,31.9984 L62.071181,32.6676006 C62.065746,32.9191504 62.0572436,33.1702069 62.0456791,33.4207438 L62.0625401,32.9896016 C62.056199,33.1873214 62.0479577,33.3847284 62.0378191,33.5818097 L62.0456791,33.4207438 C62.0348553,33.6552376 62.021349,33.8892761 62.0051647,34.1228375 L62.0378191,33.5818097 C62.023938,33.8516388 62.0065002,34.1208574 61.9855124,34.3894322 L62.0051647,34.1228375 C61.9885227,34.3630048 61.969049,34.6026677 61.9467486,34.8418024 L61.9855124,34.3894322 C61.9679202,34.6145535 61.9478339,34.8392224 61.9252573,35.0634195 L61.9467486,34.8418024 C61.9214461,35.113129 61.8925045,35.3837757 61.8599307,35.6537081 L61.9252573,35.0634195 C61.9023983,35.290421 61.8769864,35.5169387 61.8490257,35.7429523 L61.8490602,35.7426738 C61.8187251,35.9878801 61.7854312,36.232216 61.7491493,36.4759341 L61.7425822,36.5198243 L61.7425822,36.5198243 C60.8377745,36.5958422 59.9234081,36.6352 59,36.6352 L59,36.6368 C41.3264,36.6368 27,22.3104 27,4.6368 C27,3.85749652 27.0284811,3.08462426 27.0837204,2.31916779 L27.7565027,2.21535524 C27.9600536,2.18669592 28.1640282,2.16011533 28.3684117,2.13561651 L27.8309626,2.20574561 C28.0837741,2.17065861 28.3372185,2.13880197 28.5912704,2.11017618 L28.3684117,2.13561651 C28.6024547,2.10756249 28.8370339,2.08223827 29.0721266,2.05964843 L28.5912704,2.11017618 C28.8140717,2.08507161 29.0373403,2.06245195 29.2610588,2.04231753 L29.0721266,2.05964843 C29.2901201,2.03870163 29.5085553,2.0201059 29.7274141,2.00386489 L29.2610588,2.04231753 C29.4940536,2.02134825 29.7275365,2.00307459 29.9614881,1.98749694 L29.7274141,2.00386489 C29.9437443,1.98781153 30.1604883,1.97405878 30.377629,1.96261017 L29.9614881,1.98749694 C30.1908848,1.97222256 30.4207321,1.95954024 30.6510117,1.94945033 L30.377629,1.96261017 C30.6556643,1.94795091 30.9343499,1.93706933 31.2136494,1.92997281 L30.6510117,1.94945033 C30.8667157,1.93999906 31.082799,1.93282243 31.2992465,1.92792073 L31.2997527,1.92790542 L32,1.92 L32,1.92 Z M38.6223608,20.5275497 C37.6195624,20.258903 36.5800077,20.8380038 36.284765,21.8394629 C35.9849092,22.8565698 36.566356,23.9241791 37.5834629,24.224035 L37.5834629,24.224035 L46.9290629,26.979235 L46.9760392,26.9924503 C47.9788376,27.261097 49.0183923,26.6819962 49.313635,25.6805371 C49.6134908,24.6634302 49.032044,23.5958209 48.0149371,23.295965 L48.0149371,23.295965 L38.6693371,20.540765 Z\",\n id: \"RIGHT-DANDELION\",\n fill: \"#FAE6B9\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8129734,2.55418304 C19.7572683,7.93371505 15.7580298,15.5762938 15.1422721,24.1565466 C14.878365,24.5991142 14.793019,25.1467301 14.9503398,25.6804516 C14.9804305,25.7825362 15.0182553,25.8802327 15.0629869,25.9730903 L15.0592,26.48 L15.0592,26.48 C15.0592,27.5599878 15.1126964,28.6274767 15.217184,29.6799616 C14.0713708,30.923945 12.056,33.3826028 12.056,35.28 C12.056,37.9312 13.8176,40.08 15.992,40.08 C16.6562201,40.08 17.2819203,39.8794876 17.8306534,39.5253932 C18.3489745,40.6861252 18.9349842,41.8104368 19.5831868,42.8932364 C18.5987124,43.9771705 17.7321866,45.1974041 17.0100891,46.533545 C16.5059332,47.4664152 16.8534748,48.631355 17.786345,49.1355109 C18.7192152,49.6396668 19.884155,49.2921252 20.3883109,48.359255 L20.3883109,48.359255 L20.4611344,48.2261034 C20.8670366,47.4926991 21.3268125,46.8058406 21.8333885,46.170519 C27.5438544,53.4766864 36.3580244,58.2374892 46.2926917,58.4710006 C45.9172206,58.6757101 45.535398,58.8714693 45.1489438,59.0592444 L45.609587,58.8302444 C45.3946418,58.9393765 45.178143,59.0459998 44.9601385,59.1500977 L45.1489438,59.0592444 C44.9355697,59.1629213 44.7207836,59.2641642 44.5046066,59.3629588 L44.9601385,59.1500977 C44.7571821,59.2470102 44.5529207,59.3417339 44.3473928,59.4342556 L44.3469165,59.4344791 L43.7072,59.7136 L43.7072,59.7136 C40.1951158,61.1990737 36.47481,61.990954 32.6401523,62.070195 L32,62.0768 C27.9392,62.0768 24,61.2816 20.2928,59.7136 C16.7104,58.1984 13.4944,56.0288 10.7312,53.2672 C10.1472927,52.6836308 9.5898922,52.0796278 9.05958729,51.4560969 C7.08072265,49.1285237 5.47869061,46.5300473 4.2848,43.7056 C2.7168,39.9984 1.9216,36.0592 1.9216,31.9984 C1.9216,27.9376 2.7168,23.9984 4.2848,20.2912 C5.8,16.7088 7.9696,13.4928 10.7312,10.7296 C13.4944,7.9664 16.712,5.7968 20.2928,4.2832 L20.9349038,4.02025808 C21.1375572,3.93997852 21.3408754,3.86197962 21.5448408,3.78626495 L21.0715107,3.96652707 C21.3291715,3.86590693 21.5878975,3.76896407 21.8476525,3.67570582 L21.5448408,3.78626495 C21.7494363,3.71031638 21.9546829,3.63666619 22.1605629,3.56531798 L21.8476525,3.67570582 C22.0506333,3.60283085 22.2542425,3.53220584 22.4584629,3.46383428 L22.1605629,3.56531798 C22.3841624,3.48782902 22.608509,3.41305535 22.8335798,3.34100161 L22.4584629,3.46383428 C22.6766467,3.39078785 22.895528,3.32031357 23.1150859,3.25241569 L22.8335798,3.34100161 C23.041902,3.27430973 23.2508447,3.20994802 23.4603897,3.14792017 L23.1150859,3.25241569 C23.3254875,3.18734941 23.5365103,3.12464913 23.7481359,3.0643186 L23.4603897,3.14792017 C23.6976943,3.07767517 23.9357714,3.01042333 24.1745947,2.94617 L23.7481359,3.0643186 C23.9577295,3.00456734 24.1679144,2.94714055 24.3786726,2.89204187 L24.1745947,2.94617 C24.3982605,2.88599466 24.6225808,2.82844928 24.847534,2.77353826 L24.3786726,2.89204187 C24.6048001,2.83292519 24.8315876,2.77648856 25.0590127,2.72273647 L25.058675,2.72281629 L25.7053588,2.57756524 L25.7053588,2.57756524 L25.8129734,2.55418304 Z\",\n id: \"LEFT-DANDELION\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.3558778,2.44663197 C26.585114,2.40314779 26.8149433,2.36234447 27.0453437,2.32422647 L27.0452508,2.32424185 L27.0853093,2.31764233 L27.0853093,2.31764233 C27.0284958,3.08422723 27,3.85729635 27,4.6368 C27,22.133664 41.0413046,36.3499373 58.4708071,36.6325131 L59,36.6368 C59.9233977,36.6358775 60.837754,36.59613 61.7412289,36.5190905 C61.6802773,36.9341371 61.609306,37.346799 61.5297152,37.7575418 L61.6097323,37.3257416 C61.5731753,37.530703 61.5344822,37.7351965 61.4936563,37.9392069 L61.5297152,37.7575418 C61.4872454,37.9767148 61.4423214,38.1953414 61.3949471,38.4134022 L61.4936563,37.9392069 C61.4427565,38.1935579 61.3885415,38.447158 61.331018,38.6999777 L61.3949471,38.4134022 C61.3512885,38.6143595 61.305549,38.8148362 61.2577316,39.0148174 L61.331018,38.6999777 C61.2821466,38.9147711 61.230887,39.1290011 61.1772434,39.3426497 L61.2577316,39.0148174 C61.1996976,39.2575255 61.138603,39.4995036 61.0744532,39.7407246 L61.1772434,39.3426497 C61.1271141,39.5423015 61.0749029,39.7414456 61.020613,39.9400671 L61.0744532,39.7407246 C61.0227066,39.9353061 60.968972,40.1293949 60.9132523,40.3229769 L61.020613,39.9400671 C60.9579178,40.1694402 60.8924503,40.3981165 60.8242159,40.626073 L60.9132523,40.3229769 C60.848965,40.5463242 60.7820353,40.7689969 60.7124674,40.9909732 L60.8242159,40.626073 C60.7671057,40.8168657 60.7080572,41.0071543 60.6470733,41.1969253 L60.7124674,40.9909732 C60.6472982,41.1989144 60.5798139,41.4062445 60.5100182,41.6129456 L60.6470733,41.1969253 C60.575927,41.4183199 60.5021465,41.6390102 60.4257366,41.858975 L60.4258081,41.8588014 C60.2830685,42.2696802 60.1312335,42.6778562 59.9702625,43.0833649 L59.9702318,43.0834434 L59.8490431,43.3840115 L59.8490431,43.3840115 L59.7152,43.7056 C59.6612072,43.8332557 59.6063834,43.9604461 59.5507315,44.0871673 L59.7152,43.7056 C58.2,47.288 56.0304,50.504 53.2688,53.2672 C52.9624103,53.5735897 52.6504338,53.8726812 52.3329948,54.1643894 L52.3330464,54.164342 C52.0222485,54.4499474 51.7062676,54.7284302 51.3851688,54.999758 L51.6355731,54.78582 C51.5030198,54.9003226 51.3695744,55.0135889 51.2352451,55.1256131 L51.3851688,54.999758 C51.2292663,55.1314953 51.0721572,55.2615458 50.9138551,55.3899005 L51.2352451,55.1256131 C51.0451572,55.2841375 50.8532995,55.4401746 50.6596959,55.5937082 L50.9138551,55.3899005 C50.7459747,55.5260215 50.5767525,55.6602351 50.4062042,55.7925306 L50.6596959,55.5937082 C50.4748368,55.7403072 50.288386,55.8846236 50.1003642,56.0266434 L50.4062042,55.7925306 C50.2492364,55.9142916 50.0911454,56.0344279 49.9319435,56.1529307 L50.1003642,56.0266434 C49.9384766,56.1489231 49.7754244,56.2695001 49.6112209,56.3883654 L49.9319435,56.1529307 C49.755583,56.2842058 49.5778592,56.4134765 49.3987893,56.5407312 L49.6112209,56.3883654 C49.4437826,56.5095724 49.2751471,56.6289996 49.1053285,56.7466374 L49.3987893,56.5407312 C49.231739,56.6594443 49.0635171,56.7764029 48.8941374,56.8915977 L49.1053285,56.7466374 C48.9207527,56.8744979 48.7347792,57.0002445 48.547426,57.1238649 L48.8941374,56.8915977 C48.7240197,57.0072944 48.552734,57.1212119 48.3802942,57.2333408 L48.547426,57.1238649 C48.3988883,57.2218739 48.2494833,57.3185465 48.0992202,57.4138764 L48.3802942,57.2333408 C48.1778017,57.3650114 47.9737177,57.4942155 47.7680648,57.6209378 L48.0992202,57.4138764 C47.9368792,57.5168687 47.7735364,57.6182939 47.6092033,57.7181442 L47.7680648,57.6209378 C47.5969053,57.7264054 47.4246589,57.8301539 47.2513388,57.9321745 L47.6092033,57.7181442 C47.4319973,57.8258162 47.2536396,57.9316568 47.0741445,58.0356565 L47.2513388,57.9321745 C47.0581185,58.0459087 46.8635637,58.1574953 46.6676921,58.2669221 L47.0741445,58.0356565 C46.8865282,58.1443616 46.6976692,58.2510554 46.5075838,58.3557267 L46.5076641,58.3556825 L46.2927331,58.4728916 L46.2927331,58.4728916 C36.3592016,58.2382125 27.5436254,53.4767839 21.8328397,46.1709685 C24.3510656,43.0135537 28.0228945,41.1296 31.9824,41.1296 C36.7888701,41.1296 41.1783013,43.9117152 43.5818124,48.3716599 L43.5818124,48.3716599 L43.6058741,48.4149869 C44.1212015,49.3158204 45.2639804,49.6461814 46.1828599,49.1509876 C47.1163247,48.6479336 47.4652417,47.483405 46.9621876,46.5499401 C43.9064936,40.8798075 38.2421095,37.2896 31.9824,37.2896 C27.2017845,37.2896 22.7725638,39.38009 19.5834956,42.89253 C18.9351185,41.8106531 18.3489622,40.6860808 17.8299671,39.5249154 C19.078716,38.7194621 19.928,37.1208369 19.928,35.28 C19.928,33.2768 17.6816,30.648 16.5824,29.4816 C16.2624,29.1408 15.7216,29.1408 15.4016,29.4816 C15.3436888,29.5430517 15.2825932,29.6085625 15.2188097,29.6778272 C15.1126693,28.6269347 15.0592,27.5597136 15.0592,26.48 C15.0592,26.3097022 15.0605304,26.1397155 15.0631815,25.9700499 C15.4623819,26.8046971 16.4190702,27.2491978 17.3348516,26.9792602 L17.3348516,26.9792602 L26.6820516,24.2240602 L26.7286847,24.2096807 C27.716856,23.8914148 28.2760564,22.8410213 27.9808602,21.8395484 C27.6810515,20.8224276 26.6134693,20.2409312 25.5963484,20.5407398 L25.5963484,20.5407398 L16.2491484,23.2959398 L16.2025153,23.3103193 C15.7413687,23.4588434 15.3736424,23.7668086 15.1425723,24.1548373 C15.7584996,15.5764883 19.7565127,7.93559306 25.8102932,2.5565642 Z\",\n id: \"MIDDLE-DANDELION\",\n fill: \"#F9D076\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,0 C49.6736,0 64,14.3264 64,32 C64,49.6736 49.6736,64 32,64 C14.3264,64 0,49.6736 0,32 C0,14.3264 14.3264,0 32,0 Z M32,1.92 C27.9392,1.92 24,2.7152 20.2928,4.2832 C16.712,5.7968 13.4928,7.9664 10.7312,10.7296 C7.9696,13.4928 5.8,16.7088 4.2848,20.2912 C2.7168,23.9984 1.9216,27.9376 1.9216,31.9984 C1.9216,36.0592 2.7168,39.9984 4.2848,43.7056 C5.7984,47.2864 7.968,50.5056 10.7312,53.2672 C13.4944,56.0288 16.7104,58.1984 20.2928,59.7136 C24,61.2816 27.9392,62.0768 32,62.0768 C36.0608,62.0768 40,61.2816 43.7072,59.7136 C47.288,58.2 50.5056,56.0304 53.2688,53.2672 C56.0304,50.504 58.2,47.288 59.7152,43.7056 C61.2832,39.9984 62.0784,36.0592 62.0784,31.9984 C62.0784,27.9376 61.2832,23.9984 59.7152,20.2912 C58.2016,16.7104 56.032,13.4928 53.2688,10.7296 C50.5056,7.968 47.2896,5.7984 43.7072,4.2832 C40,2.7152 36.0624,1.92 32,1.92 Z M31.9824,37.2896 C38.2421095,37.2896 43.9064936,40.8798075 46.9621876,46.5499401 C47.4652417,47.483405 47.1163247,48.6479336 46.1828599,49.1509876 C45.2639804,49.6461814 44.1212015,49.3158204 43.6058741,48.4149869 L43.5818124,48.3716599 C41.1783013,43.9117152 36.7888701,41.1296 31.9824,41.1296 C27.2254621,41.1296 22.8837435,43.8488133 20.4611344,48.2261034 L20.3883109,48.359255 C19.884155,49.2921252 18.7192152,49.6396668 17.786345,49.1355109 C16.8534748,48.631355 16.5059332,47.4664152 17.0100891,46.533545 C20.0705878,40.8705188 25.7255319,37.2896 31.9824,37.2896 Z M27.9808602,21.8395484 C28.2760564,22.8410213 27.716856,23.8914148 26.7286847,24.2096807 L26.6820516,24.2240602 L17.3348516,26.9792602 C16.3177307,27.2790688 15.2501485,26.6975724 14.9503398,25.6804516 C14.6551436,24.6789787 15.214344,23.6285852 16.2025153,23.3103193 L16.2491484,23.2959398 L25.5963484,20.5407398 C26.6134693,20.2409312 27.6810515,20.8224276 27.9808602,21.8395484 Z M38.6223608,20.5275497 L38.6693371,20.540765 L48.0149371,23.295965 C49.032044,23.5958209 49.6134908,24.6634302 49.313635,25.6805371 C49.0183923,26.6819962 47.9788376,27.261097 46.9760392,26.9924503 L46.9290629,26.979235 L37.5834629,24.224035 C36.566356,23.9241791 35.9849092,22.8565698 36.284765,21.8394629 C36.5800077,20.8380038 37.6195624,20.258903 38.6223608,20.5275497 Z\",\n id: \"FACE-OCEAN\",\n fill: \"#1B3140\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.928,35.28 C19.928,37.9312 18.1664,40.08 15.992,40.08 C13.8176,40.08 12.056,37.9312 12.056,35.28 C12.056,33.2768 14.3024,30.648 15.4016,29.4816 C15.7216,29.1408 16.2624,29.1408 16.5824,29.4816 C17.6816,30.648 19.928,33.2768 19.928,35.28 Z\",\n id: \"CRY-OCEAN\",\n fill: \"#97ADBD\",\n fillRule: \"nonzero\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMood1);\nexport default __webpack_public_path__ + \"static/media/mood-1.506b0883.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMood2(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"64px\",\n height: \"64px\",\n viewBox: \"0 0 64 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"EMOJI 02 SAD 64x64@2x\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"EMOJI-02-SAD-64x64\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,1.92 C36.0624,1.92 40,2.7152 43.7072,4.2832 C47.2896,5.7984 50.5056,7.968 53.2688,10.7296 C56.032,13.4928 58.2016,16.7104 59.7152,20.2912 C61.2832,23.9984 62.0784,27.9376 62.0784,31.9984 L62.071181,32.6676006 C62.065746,32.9191504 62.0572436,33.1702069 62.0456791,33.4207438 L62.0613958,33.024657 C62.0552181,33.2106557 62.0473585,33.3963769 62.0378191,33.5818097 L62.0456791,33.4207438 C62.0348553,33.6552376 62.021349,33.8892761 62.0051647,34.1228375 L62.0378191,33.5818097 C62.0235238,33.8596901 62.0054564,34.1369229 61.9836242,34.413472 L62.0051647,34.1228375 C61.9884763,34.3636735 61.9689406,34.6040022 61.9465622,34.8437998 L61.9836242,34.413472 C61.966116,34.6352474 61.9461867,34.8565831 61.9238401,35.0774602 L61.9465622,34.8437998 C61.921304,35.1144572 61.8924245,35.3844381 61.8599307,35.6537081 L61.9238401,35.0774602 C61.9025669,35.2877273 61.8791029,35.4975789 61.8534516,35.7069989 L61.8534889,35.7066939 C61.8219757,35.9639705 61.7872063,36.2202922 61.7491493,36.4759341 L61.7425822,36.5198243 L61.7425822,36.5198243 C60.8377745,36.5958422 59.9234081,36.6352 59,36.6352 L59,36.6368 C41.3264,36.6368 27,22.3104 27,4.6368 C27,3.85749652 27.0284811,3.08462426 27.0837204,2.31916779 L27.7565027,2.21535524 C27.9600536,2.18669592 28.1640282,2.16011533 28.3684117,2.13561651 L27.8309626,2.20574561 C28.0837741,2.17065861 28.3372185,2.13880197 28.5912704,2.11017618 L28.3684117,2.13561651 C28.6024547,2.10756249 28.8370339,2.08223827 29.0721266,2.05964843 L28.5912704,2.11017618 C28.8140717,2.08507161 29.0373403,2.06245195 29.2610588,2.04231753 L29.0721266,2.05964843 C29.2901201,2.03870163 29.5085553,2.0201059 29.7274141,2.00386489 L29.2610588,2.04231753 C29.4940536,2.02134825 29.7275365,2.00307459 29.9614881,1.98749694 L29.7274141,2.00386489 C29.9437443,1.98781153 30.1604883,1.97405878 30.377629,1.96261017 L29.9614881,1.98749694 C30.1908848,1.97222256 30.4207321,1.95954024 30.6510117,1.94945033 L30.377629,1.96261017 C30.6556643,1.94795091 30.9343499,1.93706933 31.2136494,1.92997281 L30.6510117,1.94945033 C30.8667111,1.93999927 31.0827897,1.93282274 31.2992324,1.92792105 L31.2997527,1.92790542 L32,1.92 L32,1.92 Z M41.08,18 C38.3185763,18 36.08,20.2385763 36.08,23 C36.08,25.7614237 38.3185763,28 41.08,28 C43.8414237,28 46.08,25.7614237 46.08,23 C46.08,20.2385763 43.8414237,18 41.08,18 Z M47.2910804,14.3316415 C45.87765,11.1984214 42.6746765,9.98293402 39.8202124,11.092413 C39.3260351,11.2844908 39.0811352,11.8408104 39.273213,12.3349876 C39.4652908,12.8291649 40.0216104,13.0740648 40.5157876,12.881987 C42.4381982,12.1347805 44.5563374,12.9385872 45.5409196,15.1211585 C45.7589387,15.6044521 46.3274649,15.8194995 46.8107585,15.6014804 C47.2940521,15.3834613 47.5090995,14.8149351 47.2910804,14.3316415 Z\",\n id: \"RIGHT-DANDELION\",\n fill: \"#FAE6B9\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8129734,2.55418304 C22.8309941,5.20319793 20.3476713,8.40096131 18.5214561,11.9892181 C17.8064435,12.5790578 17.1989,13.3637142 16.7619019,14.3312377 C16.5825353,14.7283592 16.6956654,15.1831877 17.0099041,15.4537812 C15.7482882,18.8897769 15.0592,22.6042998 15.0592,26.48 C15.0592,33.0717657 17.0521232,39.1979076 20.4683289,44.2887852 C18.5605487,45.8693965 16.931003,47.848577 15.691724,50.1414804 C15.1875324,51.0743313 15.5350295,52.2392844 16.4678804,52.743476 C17.4007313,53.2476676 18.5656844,52.9001705 19.069876,51.9673196 L19.069876,51.9673196 L19.1509094,51.8191716 C20.1171989,50.0734202 21.3583764,48.5642689 22.7972621,47.3464019 C28.5116167,53.9840431 36.9015287,58.2502641 46.2926917,58.4710006 C45.9172206,58.6757101 45.535398,58.8714693 45.1489438,59.0592444 L45.609587,58.8302444 C45.3946418,58.9393765 45.178143,59.0459998 44.9601385,59.1500977 L45.1489438,59.0592444 C44.9355697,59.1629213 44.7207836,59.2641642 44.5046066,59.3629588 L44.9601385,59.1500977 C44.7571821,59.2470102 44.5529207,59.3417339 44.3473928,59.4342556 L44.3469165,59.4344791 L43.7072,59.7136 L43.7072,59.7136 C40.1951158,61.1990737 36.47481,61.990954 32.6401523,62.070195 L32,62.0768 C27.9392,62.0768 24,61.2816 20.2928,59.7136 C16.7104,58.1984 13.4944,56.0288 10.7312,53.2672 C7.968,50.504 5.7984,47.2864 4.2848,43.7056 C2.7168,39.9984 1.9216,36.0592 1.9216,31.9984 C1.9216,27.9376 2.7168,23.9984 4.2848,20.2912 C5.8,16.7088 7.9696,13.4928 10.7312,10.7296 C13.4944,7.9664 16.712,5.7968 20.2928,4.2832 L20.2928,4.2832 L20.9349038,4.02025808 C21.1375572,3.93997852 21.3408754,3.86197962 21.5448408,3.78626495 L21.0715107,3.96652707 C21.3291715,3.86590693 21.5878975,3.76896407 21.8476525,3.67570582 L21.5448408,3.78626495 C21.7494363,3.71031638 21.9546829,3.63666619 22.1605629,3.56531798 L21.8476525,3.67570582 C22.0506333,3.60283085 22.2542425,3.53220584 22.4584629,3.46383428 L22.1605629,3.56531798 C22.3841624,3.48782902 22.608509,3.41305535 22.8335798,3.34100161 L22.4584629,3.46383428 C22.6766467,3.39078785 22.895528,3.32031357 23.1150859,3.25241569 L22.8335798,3.34100161 C23.041902,3.27430973 23.2508447,3.20994802 23.4603897,3.14792017 L23.1150859,3.25241569 C23.3254875,3.18734941 23.5365103,3.12464913 23.7481359,3.0643186 L23.4603897,3.14792017 C23.6976943,3.07767517 23.9357714,3.01042333 24.1745947,2.94617 L23.7481359,3.0643186 C23.9577295,3.00456734 24.1679144,2.94714055 24.3786726,2.89204187 L24.1745947,2.94617 C24.3982605,2.88599466 24.6225808,2.82844928 24.847534,2.77353826 L24.3786726,2.89204187 C24.6048001,2.83292519 24.8315876,2.77648856 25.0590127,2.72273647 L25.058675,2.72281629 L25.7053588,2.57756524 L25.7053588,2.57756524 L25.8129734,2.55418304 Z\",\n id: \"LEFT-DANDELIONy\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.3558778,2.44663197 C26.585114,2.40314779 26.8149433,2.36234447 27.0453437,2.32422647 L27.0452508,2.32424185 L27.0853093,2.31764233 L27.0853093,2.31764233 C27.0284958,3.08422723 27,3.85729635 27,4.6368 C27,22.133664 41.0413046,36.3499373 58.4708071,36.6325131 L59,36.6368 C59.9233977,36.6358775 60.837754,36.59613 61.7412289,36.5190905 C61.6787582,36.9442388 61.6058412,37.366914 61.5238801,37.787572 L61.6007678,37.3757553 C61.5612997,37.5948725 61.5193887,37.8134533 61.475039,38.0314789 L61.5238801,37.787572 C61.4831363,37.9966862 61.4401574,38.2053018 61.3949471,38.4134022 L61.475039,38.0314789 C61.4295915,38.2549015 61.381583,38.4777411 61.331018,38.6999777 L61.3949471,38.4134022 C61.3512885,38.6143595 61.305549,38.8148362 61.2577316,39.0148174 L61.331018,38.6999777 C61.2821466,38.9147711 61.230887,39.1290011 61.1772434,39.3426497 L61.2577316,39.0148174 C61.1996976,39.2575255 61.138603,39.4995036 61.0744532,39.7407246 L61.1772434,39.3426497 C61.1271141,39.5423015 61.0749029,39.7414456 61.020613,39.9400671 L61.0744532,39.7407246 C61.027702,39.9165218 60.9793282,40.0919169 60.9293337,40.2668994 L61.020613,39.9400671 C60.9584688,40.167424 60.8936011,40.3940963 60.8260146,40.6200617 L60.9293337,40.2668994 C60.8601468,40.5090567 60.7878561,40.7504239 60.7124674,40.9909732 L60.8260146,40.6200617 C60.7725673,40.7987549 60.7174198,40.9770062 60.6605746,41.1548045 L60.7124674,40.9909732 C60.6472982,41.1989144 60.5798139,41.4062445 60.5100182,41.6129456 L60.6605746,41.1548045 C60.586133,41.3876399 60.50878,41.6196984 60.4285211,41.8509555 L60.428581,41.8508155 C60.260344,42.3355387 60.0794073,42.8166028 59.8857614,43.2939212 L59.7152,43.7056 C59.6467524,43.8674312 59.5769694,44.0285147 59.5058567,44.1888425 L59.7152,43.7056 C58.2,47.288 56.0304,50.504 53.2688,53.2672 C52.9624103,53.5735897 52.6504338,53.8726812 52.3329948,54.1643894 L52.3330464,54.164342 C52.0222485,54.4499474 51.7062676,54.7284302 51.3851688,54.999758 L51.6355731,54.78582 C51.5030198,54.9003226 51.3695744,55.0135889 51.2352451,55.1256131 L51.3851688,54.999758 C51.2292663,55.1314953 51.0721572,55.2615458 50.9138551,55.3899005 L51.2352451,55.1256131 C51.0451572,55.2841375 50.8532995,55.4401746 50.6596959,55.5937082 L50.9138551,55.3899005 C50.7459747,55.5260215 50.5767525,55.6602351 50.4062042,55.7925306 L50.6596959,55.5937082 C50.4748368,55.7403072 50.288386,55.8846236 50.1003642,56.0266434 L50.4062042,55.7925306 C50.2492364,55.9142916 50.0911454,56.0344279 49.9319435,56.1529307 L50.1003642,56.0266434 C49.9384766,56.1489231 49.7754244,56.2695001 49.6112209,56.3883654 L49.9319435,56.1529307 C49.755583,56.2842058 49.5778592,56.4134765 49.3987893,56.5407312 L49.6112209,56.3883654 C49.4437826,56.5095724 49.2751471,56.6289996 49.1053285,56.7466374 L49.3987893,56.5407312 C49.231739,56.6594443 49.0635171,56.7764029 48.8941374,56.8915977 L49.1053285,56.7466374 C48.9207527,56.8744979 48.7347792,57.0002445 48.547426,57.1238649 L48.8941374,56.8915977 C48.7240197,57.0072944 48.552734,57.1212119 48.3802942,57.2333408 L48.547426,57.1238649 C48.3988883,57.2218739 48.2494833,57.3185465 48.0992202,57.4138764 L48.3802942,57.2333408 C48.1778017,57.3650114 47.9737177,57.4942155 47.7680648,57.6209378 L48.0992202,57.4138764 C47.9368792,57.5168687 47.7735364,57.6182939 47.6092033,57.7181442 L47.7680648,57.6209378 C47.5969053,57.7264054 47.4246589,57.8301539 47.2513388,57.9321745 L47.6092033,57.7181442 C47.4319973,57.8258162 47.2536396,57.9316568 47.0741445,58.0356565 L47.2513388,57.9321745 C47.0581185,58.0459087 46.8635637,58.1574953 46.6676921,58.2669221 L47.0741445,58.0356565 C46.8865282,58.1443616 46.6976692,58.2510554 46.5075838,58.3557267 L46.5076641,58.3556825 L46.2927331,58.4728916 L46.2927331,58.4728916 C36.9027298,58.2509606 28.5114029,53.9841346 22.7975238,47.3466883 C25.3734309,45.1663231 28.581725,43.92 31.9808,43.92 C37.3351485,43.92 42.2240742,47.018516 44.8987441,51.9799042 L44.8987441,51.9799042 L44.9228121,52.0232278 C45.4382697,52.9239867 46.5810964,53.2541826 47.4999042,52.7588559 C48.4332963,52.255667 48.7820449,51.0910879 48.2788559,50.1576958 C44.95195,43.9864401 38.7882591,40.08 31.9808,40.08 C27.7068445,40.08 23.6899554,41.6174475 20.4677311,44.2886025 C17.0521232,39.1979076 15.0592,33.0717657 15.0592,26.48 C15.0592,22.6046275 15.7481717,18.890405 17.0103238,15.4529804 C17.0783862,15.5126705 17.1557741,15.5625164 17.2416377,15.6012981 C17.7248306,15.8195403 18.293456,15.6047552 18.5116981,15.1215623 C19.4976098,12.938732 21.6160813,12.1347993 23.5367872,12.8818995 L23.5367872,12.8818995 L23.571357,12.8946023 C24.0565973,13.0625825 24.5917671,12.8178503 24.7794995,12.3352128 C24.9717016,11.8410839 24.7269416,11.2847027 24.2328128,11.0925005 C22.261463,10.3257013 20.1228242,10.6692217 18.5225331,11.9884673 C20.3475361,8.40150586 22.8297534,5.20489436 25.8102932,2.5565642 Z M23,18 C20.2385763,18 18,20.2385763 18,23 C18,25.7614237 20.2385763,28 23,28 C25.7614237,28 28,25.7614237 28,23 C28,20.2385763 25.7614237,18 23,18 Z\",\n id: \"MIDDLE-DANDELION\",\n fill: \"#F9D076\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,0 C49.6736,0 64,14.3264 64,32 C64,49.6736 49.6736,64 32,64 C14.3264,64 0,49.6736 0,32 C0,14.3264 14.3264,0 32,0 Z M32,1.92 C27.9392,1.92 24,2.7152 20.2928,4.2832 C16.712,5.7968 13.4944,7.9664 10.7312,10.7296 C7.9696,13.4928 5.8,16.7088 4.2848,20.2912 C2.7168,23.9984 1.9216,27.9376 1.9216,31.9984 C1.9216,36.0592 2.7168,39.9984 4.2848,43.7056 C5.7984,47.2864 7.968,50.504 10.7312,53.2672 C13.4944,56.0288 16.7104,58.1984 20.2928,59.7136 C24,61.2816 27.9392,62.0768 32,62.0768 C36.0608,62.0768 40,61.2816 43.7072,59.7136 C47.288,58.2 50.5056,56.0304 53.2688,53.2672 C56.0304,50.504 58.2,47.288 59.7152,43.7056 C61.2832,39.9984 62.0784,36.0592 62.0784,31.9984 C62.0784,27.9376 61.2832,23.9984 59.7152,20.2912 C58.2016,16.7104 56.032,13.4928 53.2688,10.7296 C50.5056,7.968 47.2896,5.7984 43.7072,4.2832 C40,2.7152 36.0624,1.92 32,1.92 Z M31.9808,40.08 C38.7882591,40.08 44.95195,43.9864401 48.2788559,50.1576958 C48.7820449,51.0910879 48.4332963,52.255667 47.4999042,52.7588559 C46.5810964,53.2541826 45.4382697,52.9239867 44.9228121,52.0232278 L44.8987441,51.9799042 C42.2240742,47.018516 37.3351485,43.92 31.9808,43.92 C26.6819186,43.92 21.8466783,46.9488484 19.1509094,51.8191716 L19.069876,51.9673196 C18.5656844,52.9001705 17.4007313,53.2476676 16.4678804,52.743476 C15.5350295,52.2392844 15.1875324,51.0743313 15.691724,50.1414804 C19.0235845,43.9769008 25.1764049,40.08 31.9808,40.08 Z M23,18 C25.7614237,18 28,20.2385763 28,23 C28,25.7614237 25.7614237,28 23,28 C20.2385763,28 18,25.7614237 18,23 C18,20.2385763 20.2385763,18 23,18 Z M41.08,18 C43.8414237,18 46.08,20.2385763 46.08,23 C46.08,25.7614237 43.8414237,28 41.08,28 C38.3185763,28 36.08,25.7614237 36.08,23 C36.08,20.2385763 38.3185763,18 41.08,18 Z M47.2910804,14.3316415 C47.5090995,14.8149351 47.2940521,15.3834613 46.8107585,15.6014804 C46.3274649,15.8194995 45.7589387,15.6044521 45.5409196,15.1211585 C44.5563374,12.9385872 42.4381982,12.1347805 40.5157876,12.881987 C40.0216104,13.0740648 39.4652908,12.8291649 39.273213,12.3349876 C39.0811352,11.8408104 39.3260351,11.2844908 39.8202124,11.092413 C42.6746765,9.98293402 45.87765,11.1984214 47.2910804,14.3316415 Z M24.2328128,11.0925005 C24.7269416,11.2847027 24.9717016,11.8410839 24.7794995,12.3352128 C24.5917671,12.8178503 24.0565973,13.0625825 23.571357,12.8946023 L23.5367872,12.8818995 C21.6160813,12.1347993 19.4976098,12.938732 18.5116981,15.1215623 C18.293456,15.6047552 17.7248306,15.8195403 17.2416377,15.6012981 C16.7584448,15.383056 16.5436597,14.8144306 16.7619019,14.3312377 C18.1769049,11.1983895 21.3800246,9.98284671 24.2328128,11.0925005 Z\",\n id: \"FACE-OCEAN\",\n fill: \"#1B3140\",\n fillRule: \"nonzero\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMood2);\nexport default __webpack_public_path__ + \"static/media/mood-2.568e3ec9.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMood3(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"64px\",\n height: \"64px\",\n viewBox: \"0 0 64 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"EMOJI 03 QUITE SAD 64x64@2x\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"EMOJI-03-QUITE-SAD-64x64\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"YELLOW-BACKGROUND-BLEED\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\",\n cx: 32,\n cy: 32,\n r: 31\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,1.92 C36.0624,1.92 40,2.7152 43.7072,4.2832 C47.2896,5.7984 50.5056,7.968 53.2688,10.7296 C56.032,13.4928 58.2016,16.7104 59.7152,20.2912 C61.2832,23.9984 62.0784,27.9376 62.0784,31.9984 L62.071181,32.6676006 C62.065746,32.9191504 62.0572436,33.1702069 62.0456791,33.4207438 L62.0613958,33.024657 C62.0552181,33.2106557 62.0473585,33.3963769 62.0378191,33.5818097 L62.0456791,33.4207438 C62.0348553,33.6552376 62.021349,33.8892761 62.0051647,34.1228375 L62.0378191,33.5818097 C62.0235238,33.8596901 62.0054564,34.1369229 61.9836242,34.413472 L62.0051647,34.1228375 C61.9884763,34.3636735 61.9689406,34.6040022 61.9465622,34.8437998 L61.9836242,34.413472 C61.966116,34.6352474 61.9461867,34.8565831 61.9238401,35.0774602 L61.9465622,34.8437998 C61.921304,35.1144572 61.8924245,35.3844381 61.8599307,35.6537081 L61.9238401,35.0774602 C61.9025669,35.2877273 61.8791029,35.4975789 61.8534516,35.7069989 L61.8534889,35.7066939 C61.8219757,35.9639705 61.7872063,36.2202922 61.7491493,36.4759341 L61.7425822,36.5198243 L61.7425822,36.5198243 C60.8377745,36.5958422 59.9234081,36.6352 59,36.6352 L59,36.6368 C41.3264,36.6368 27,22.3104 27,4.6368 C27,3.85749652 27.0284811,3.08462426 27.0837204,2.31916779 L27.7565027,2.21535524 C27.9600536,2.18669592 28.1640282,2.16011533 28.3684117,2.13561651 L27.8309626,2.20574561 C28.0837741,2.17065861 28.3372185,2.13880197 28.5912704,2.11017618 L28.3684117,2.13561651 C28.6024547,2.10756249 28.8370339,2.08223827 29.0721266,2.05964843 L28.5912704,2.11017618 C28.8140717,2.08507161 29.0373403,2.06245195 29.2610588,2.04231753 L29.0721266,2.05964843 C29.2901201,2.03870163 29.5085553,2.0201059 29.7274141,2.00386489 L29.2610588,2.04231753 C29.4940536,2.02134825 29.7275365,2.00307459 29.9614881,1.98749694 L29.7274141,2.00386489 C29.9437443,1.98781153 30.1604883,1.97405878 30.377629,1.96261017 L29.9614881,1.98749694 C30.1908848,1.97222256 30.4207321,1.95954024 30.6510117,1.94945033 L30.377629,1.96261017 C30.6556643,1.94795091 30.9343499,1.93706933 31.2136494,1.92997281 L30.6510117,1.94945033 C30.8667111,1.93999927 31.0827897,1.93282274 31.2992324,1.92792105 L31.2997527,1.92790542 L32,1.92 L32,1.92 Z M41.08,14.16 C38.3185763,14.16 36.08,17.2581895 36.08,21.08 C36.08,24.9018105 38.3185763,28 41.08,28 C43.8414237,28 46.08,24.9018105 46.08,21.08 C46.08,17.2581895 43.8414237,14.16 41.08,14.16 Z M47.4510804,12.5716415 C46.03765,9.43842139 42.8346765,8.22293402 39.9802124,9.33241301 C39.4860351,9.52449082 39.2411352,10.0808104 39.433213,10.5749876 C39.6252908,11.0691649 40.1816104,11.3140648 40.6757876,11.121987 C42.5981982,10.3747805 44.7163374,11.1785872 45.7009196,13.3611585 C45.9189387,13.8444521 46.4874649,14.0594995 46.9707585,13.8414804 C47.4540521,13.6234613 47.6690995,13.0549351 47.4510804,12.5716415 Z\",\n id: \"RIGHT-DANDELION\",\n fill: \"#FAE6B9\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8129734,2.55418304 C23.6747147,4.45368619 21.7928529,6.63534228 20.2258081,9.04080348 L20.1259158,9.10680153 L20.1259158,9.10680153 L19.9433622,9.23629499 L19.8380668,9.3150363 C19.8028574,9.34184747 19.76754,9.36921867 19.732123,9.3971378 L19.732123,9.3971378 L19.6255821,9.48252689 L19.5184949,9.57113094 C19.5006044,9.58616216 19.4826932,9.60132432 19.4647625,9.61661589 L19.4647625,9.61661589 L19.3569518,9.70990627 L19.2487227,9.80623009 C19.1945119,9.85513827 19.1401634,9.90515676 19.0857058,9.95624473 L19.0857058,9.95624473 L18.9766536,10.0598345 C18.94026,10.0948317 18.9038265,10.1302921 18.8673615,10.1662037 L18.8673615,10.1662037 L18.7578807,10.2752795 L18.6482621,10.3869895 L18.5385568,10.5012609 L18.4288158,10.6180213 L18.3190902,10.7371979 L18.2094311,10.8587182 L18.0998895,10.9825096 L17.9905165,11.1084995 L17.881363,11.2366152 C17.8631919,11.2581409 17.8450321,11.2797522 17.8268846,11.3014475 L17.8268846,11.3014475 L17.7181563,11.4326159 L17.7181563,11.4326159 L17.6639191,11.4989337 L17.5557308,11.6329914 L17.4479663,11.7688844 L17.3406766,11.9065403 L17.2339129,12.0458864 C17.2161656,12.0692476 17.1984423,12.0926761 17.1807442,12.1161706 L17.1807442,12.1161706 L17.074865,12.2579159 L16.9696394,12.4011698 C16.6574714,12.829721 16.7518186,13.4301926 17.1803698,13.7423606 C17.3148343,13.840308 17.466224,13.8982346 17.6203229,13.9183741 C15.9713929,17.7749784 15.0592,22.0208086 15.0592,26.48 C15.0592,31.9128125 16.4129438,37.0293382 18.80152,41.5106659 C18.6222294,41.6945209 18.4630731,41.8849399 18.2883587,42.1214156 L18.2883587,42.1214156 L18.2113071,42.2272546 L18.1316443,42.3396256 C18.1181134,42.3589389 18.1044466,42.3785547 18.0906303,42.3984881 L18.0906303,42.3984881 L18.0058305,42.522022 L17.9167929,42.6539076 L17.8228668,42.7948727 L17.6591186,43.0431222 L17.5409624,43.2200416 L17.4357562,43.3741789 L17.3646784,43.4757435 L17.3207586,43.5371238 L17.2597284,43.620174 L17.2040988,43.6929688 L17.1697802,43.7361173 L17.1221051,43.7932418 L17.0926536,43.8265358 L17.0649046,43.8562198 L17.0387188,43.8824835 L17.0139565,43.9055164 L16.9904783,43.9255082 L16.9681446,43.9426484 L16.9468158,43.9571266 L16.9364847,43.9634267 L16.9164018,43.9742674 L16.8969751,43.9829201 L16.8780649,43.9895745 L16.8595319,43.99442 L16.8412364,43.9976464 L16.8139334,43.9998648 L16.756004,44.000608 C15.7181671,44.0264972 14.8848,44.8759269 14.8848,45.92 C14.8848,46.9803867 15.7444133,47.84 16.8048,47.84 C17.8938753,47.84 18.8252079,47.4431354 19.5976111,46.7378338 L19.5976111,46.7378338 L19.6843337,46.6572845 L19.7671615,46.5774816 C19.9834205,46.3650219 20.1650739,46.1527591 20.3676413,45.8785844 L20.3676413,45.8785844 L20.4446929,45.7727454 L20.5243557,45.6603744 C20.5378866,45.6410611 20.5515534,45.6214453 20.5653697,45.6015119 L20.5653697,45.6015119 L20.6501695,45.477978 L20.7392071,45.3460924 L20.8331332,45.2051273 L20.9638199,45.0059138 C26.6254738,52.9666179 35.8387344,58.2252834 46.2926917,58.4710006 C45.9172206,58.6757101 45.535398,58.8714693 45.1489438,59.0592444 L45.609587,58.8302444 C45.3946418,58.9393765 45.178143,59.0459998 44.9601385,59.1500977 L45.1489438,59.0592444 C44.9355697,59.1629213 44.7207836,59.2641642 44.5046066,59.3629588 L44.9601385,59.1500977 C44.7571821,59.2470102 44.5529207,59.3417339 44.3473928,59.4342556 L44.3469165,59.4344791 L43.7072,59.7136 L43.7072,59.7136 C40.1951158,61.1990737 36.47481,61.990954 32.6401523,62.070195 L32,62.0768 C27.9392,62.0768 24,61.2816 20.2928,59.7136 C16.7104,58.1984 13.4944,56.0288 10.7312,53.2672 C7.968,50.504 5.7984,47.2864 4.2848,43.7056 C2.7168,39.9984 1.9216,36.0592 1.9216,31.9984 C1.9216,27.9376 2.7168,23.9984 4.2848,20.2912 C5.8,16.7088 7.9696,13.4928 10.7312,10.7296 C13.4944,7.9664 16.712,5.7968 20.2928,4.2832 L20.2928,4.2832 L20.9349038,4.02025808 C21.1375572,3.93997852 21.3408754,3.86197962 21.5448408,3.78626495 L21.0715107,3.96652707 C21.3291715,3.86590693 21.5878975,3.76896407 21.8476525,3.67570582 L21.5448408,3.78626495 C21.7494363,3.71031638 21.9546829,3.63666619 22.1605629,3.56531798 L21.8476525,3.67570582 C22.0506333,3.60283085 22.2542425,3.53220584 22.4584629,3.46383428 L22.1605629,3.56531798 C22.3841624,3.48782902 22.608509,3.41305535 22.8335798,3.34100161 L22.4584629,3.46383428 C22.6766467,3.39078785 22.895528,3.32031357 23.1150859,3.25241569 L22.8335798,3.34100161 C23.041902,3.27430973 23.2508447,3.20994802 23.4603897,3.14792017 L23.1150859,3.25241569 C23.3254875,3.18734941 23.5365103,3.12464913 23.7481359,3.0643186 L23.4603897,3.14792017 C23.6976943,3.07767517 23.9357714,3.01042333 24.1745947,2.94617 L23.7481359,3.0643186 C23.9577295,3.00456734 24.1679144,2.94714055 24.3786726,2.89204187 L24.1745947,2.94617 C24.3982605,2.88599466 24.6225808,2.82844928 24.847534,2.77353826 L24.3786726,2.89204187 C24.6048001,2.83292519 24.8315876,2.77648856 25.0590127,2.72273647 L25.058675,2.72281629 L25.7053588,2.57756524 L25.7053588,2.57756524 L25.8129734,2.55418304 Z\",\n id: \"LEFT-DANDELION\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.1150376,44.7799584 L21.2202438,44.6258211 L21.2913216,44.5242565 L21.3352414,44.4628762 L21.3962716,44.379826 L21.4519012,44.3070312 L21.4862198,44.2638827 L21.5338949,44.2067582 L21.5633464,44.1734642 L21.5910954,44.1437802 L21.6172812,44.1175165 L21.6420435,44.0944836 L21.6655217,44.0744918 L21.6878554,44.0573516 L21.7091842,44.0428734 L21.7195153,44.0365733 L21.7395982,44.0257326 L21.7590249,44.0170799 L21.7779351,44.0104255 L21.7964681,44.00558 L21.8147636,44.0023536 L21.8420666,44.0001352 L21.869439,44.0005568 L21.8876364,44.0023536 L21.9059319,44.00558 L21.9244649,44.0104255 L21.9433751,44.0170799 L21.9628018,44.0257326 L21.9628018,44.0257326 L21.9727525,44.0308676 L21.9932158,44.0428734 L22.0145446,44.0573516 L22.0368783,44.0744918 L22.0603565,44.0944836 L22.0851188,44.1175165 L22.1113046,44.1437802 L22.1390536,44.1734642 L22.1685051,44.2067582 L22.2161802,44.2638827 L22.2504988,44.3070312 L22.3061284,44.379826 L22.3461861,44.4340138 L22.4110784,44.5242565 L22.4577472,44.5906687 L22.5598904,44.7393475 L22.644752,44.8654755 L22.8692668,45.2051273 L23.0082821,45.4131246 L23.0951195,45.5407434 L23.1780443,45.6603744 L23.2577071,45.7727454 L23.3347587,45.8785844 C23.5373261,46.1527591 23.7189795,46.3650219 23.9352385,46.5774816 L23.9352385,46.5774816 L24.0180663,46.6572845 L24.1047889,46.7378338 C24.8771921,47.4431354 25.8085247,47.84 26.8976,47.84 C27.9866753,47.84 28.9180079,47.4431354 29.6904111,46.7378338 L29.6904111,46.7378338 L29.7771337,46.6572845 L29.8599615,46.5774816 C30.0762205,46.3650219 30.2578739,46.1527591 30.4604413,45.8785844 L30.4604413,45.8785844 L30.5374929,45.7727454 L30.6171557,45.6603744 C30.6306866,45.6410611 30.6443534,45.6214453 30.6581697,45.6015119 L30.6581697,45.6015119 L30.7429695,45.477978 L30.8320071,45.3460924 L30.9259332,45.2051273 L31.0896814,44.9568778 L31.2078376,44.7799584 L31.3130438,44.6258211 L31.3841216,44.5242565 L31.4280414,44.4628762 L31.4890716,44.379826 L31.5447012,44.3070312 L31.5790198,44.2638827 L31.6266949,44.2067582 L31.6561464,44.1734642 L31.6838954,44.1437802 L31.7100812,44.1175165 L31.7348435,44.0944836 L31.7583217,44.0744918 L31.7806554,44.0573516 L31.8019842,44.0428734 C31.805463,44.0406717 31.8089057,44.038573 31.8123153,44.0365733 L31.8123153,44.0365733 L31.8323982,44.0257326 L31.8518249,44.0170799 L31.8707351,44.0104255 L31.8892681,44.00558 L31.9075636,44.0023536 L31.9348666,44.0001352 L31.962239,44.0005568 L31.9804364,44.0023536 L31.9987319,44.00558 L32.0172649,44.0104255 L32.0361751,44.0170799 L32.0556018,44.0257326 L32.0556018,44.0257326 L32.0860158,44.0428734 L32.1073446,44.0573516 L32.1296783,44.0744918 L32.1531565,44.0944836 L32.1779188,44.1175165 L32.2041046,44.1437802 L32.2318536,44.1734642 L32.2613051,44.2067582 L32.3089802,44.2638827 L32.3432988,44.3070312 L32.3989284,44.379826 L32.4389861,44.4340138 L32.5038784,44.5242565 L32.5505472,44.5906687 L32.6526904,44.7393475 L32.737552,44.8654755 L32.9620668,45.2051273 L33.1010821,45.4131246 L33.1879195,45.5407434 L33.2708443,45.6603744 L33.3505071,45.7727454 L33.4275587,45.8785844 C33.6301261,46.1527591 33.8117795,46.3650219 34.0280385,46.5774816 L34.0280385,46.5774816 L34.1108663,46.6572845 L34.1975889,46.7378338 C34.9699921,47.4431354 35.9013247,47.84 36.9904,47.84 C38.0794753,47.84 39.0108079,47.4431354 39.7832111,46.7378338 L39.7832111,46.7378338 L39.8699337,46.6572845 L39.9527615,46.5774816 C40.1690205,46.3650219 40.3506739,46.1527591 40.5532413,45.8785844 L40.5532413,45.8785844 L40.6302929,45.7727454 L40.7099557,45.6603744 C40.7234866,45.6410611 40.7371534,45.6214453 40.7509697,45.6015119 L40.7509697,45.6015119 L40.8357695,45.477978 L40.9248071,45.3460924 L41.0187332,45.2051273 L41.1824814,44.9568778 L41.3006376,44.7799584 L41.4058438,44.6258211 L41.4769216,44.5242565 L41.5208414,44.4628762 L41.5818716,44.379826 L41.6375012,44.3070312 L41.6718198,44.2638827 L41.7194949,44.2067582 L41.7489464,44.1734642 L41.7766954,44.1437802 L41.8028812,44.1175165 L41.8276435,44.0944836 L41.8511217,44.0744918 L41.8734554,44.0573516 L41.8947842,44.0428734 C41.898263,44.0406717 41.9017057,44.038573 41.9051153,44.0365733 L41.9051153,44.0365733 L41.9251982,44.0257326 L41.9446249,44.0170799 L41.9635351,44.0104255 L41.9820681,44.00558 L42.0003636,44.0023536 L42.0276666,44.0001352 L42.055039,44.0005568 L42.0732364,44.0023536 L42.0915319,44.00558 L42.1100649,44.0104255 L42.1289751,44.0170799 L42.1484018,44.0257326 L42.1484018,44.0257326 L42.1788158,44.0428734 L42.2001446,44.0573516 L42.2224783,44.0744918 L42.2459565,44.0944836 L42.2707188,44.1175165 L42.2969046,44.1437802 L42.3246536,44.1734642 L42.3541051,44.2067582 L42.4017802,44.2638827 L42.4360988,44.3070312 L42.4917284,44.379826 L42.5317861,44.4340138 L42.5966784,44.5242565 L42.6433472,44.5906687 L42.7454904,44.7393475 L42.830352,44.8654755 L43.0548668,45.2051273 L43.1938821,45.4131246 L43.2807195,45.5407434 L43.3636443,45.6603744 L43.4433071,45.7727454 L43.5203587,45.8785844 C43.7229261,46.1527591 43.9045795,46.3650219 44.1208385,46.5774816 L44.1208385,46.5774816 L44.2036663,46.6572845 L44.2903889,46.7378338 C45.0627921,47.4431354 45.9941247,47.84 47.0832,47.84 C48.1435867,47.84 49.0032,46.9803867 49.0032,45.92 C49.0032,44.8596133 48.1435867,44 47.0832,44 L47.0832,44 L47.064961,43.9994432 L47.0467636,43.9976464 L47.0284681,43.99442 L47.0099351,43.9895745 L46.9910249,43.9829201 L46.9715982,43.9742674 C46.9683096,43.9726482 46.9649937,43.9709378 46.9616475,43.9691324 L46.9616475,43.9691324 L46.9411842,43.9571266 L46.9198554,43.9426484 L46.8975217,43.9255082 L46.8740435,43.9055164 L46.8492812,43.8824835 L46.8230954,43.8562198 L46.7953464,43.8265358 L46.7658949,43.7932418 L46.7182198,43.7361173 L46.6839012,43.6929688 L46.6282716,43.620174 L46.5882139,43.5659862 L46.5233216,43.4757435 L46.4766528,43.4093313 L46.3745096,43.2606525 L46.289648,43.1345245 L46.0651332,42.7948727 L45.9261179,42.5868754 L45.8392805,42.4592566 L45.7563557,42.3396256 L45.6766929,42.2272546 L45.5996413,42.1214156 C45.3970739,41.8472409 45.2154205,41.6349781 44.9991615,41.4225184 L44.9991615,41.4225184 L44.9163337,41.3427155 L44.8296111,41.2621662 C44.0572079,40.5568646 43.1258753,40.16 42.0368,40.16 C40.9477247,40.16 40.0163921,40.5568646 39.2439889,41.2621662 L39.2439889,41.2621662 L39.1572663,41.3427155 L39.0744385,41.4225184 C38.8581795,41.6349781 38.6765261,41.8472409 38.4739587,42.1214156 L38.4739587,42.1214156 L38.3969071,42.2272546 L38.3172443,42.3396256 C38.3037134,42.3589389 38.2900466,42.3785547 38.2762303,42.3984881 L38.2762303,42.3984881 L38.1914305,42.522022 L38.1023929,42.6539076 L38.0084668,42.7948727 L37.8447186,43.0431222 L37.7265624,43.2200416 L37.6213562,43.3741789 L37.5502784,43.4757435 L37.5063586,43.5371238 L37.4453284,43.620174 L37.3896988,43.6929688 L37.3553802,43.7361173 L37.3077051,43.7932418 L37.2782536,43.8265358 L37.2505046,43.8562198 L37.2243188,43.8824835 L37.1995565,43.9055164 L37.1760783,43.9255082 L37.1537446,43.9426484 L37.1324158,43.9571266 L37.1220847,43.9634267 L37.1020018,43.9742674 L37.0825751,43.9829201 L37.0636649,43.9895745 L37.0451319,43.99442 L37.0268364,43.9976464 L37.008639,43.9994432 L36.9904,44 L36.972161,43.9994432 L36.9539636,43.9976464 L36.9356681,43.99442 L36.9171351,43.9895745 L36.8982249,43.9829201 L36.8787982,43.9742674 C36.8755096,43.9726482 36.8721937,43.9709378 36.8688475,43.9691324 L36.8688475,43.9691324 L36.8483842,43.9571266 L36.8270554,43.9426484 L36.8047217,43.9255082 L36.7812435,43.9055164 L36.7564812,43.8824835 L36.7302954,43.8562198 L36.7025464,43.8265358 L36.6730949,43.7932418 L36.6254198,43.7361173 L36.5911012,43.6929688 L36.5354716,43.620174 L36.4954139,43.5659862 L36.4305216,43.4757435 L36.3838528,43.4093313 L36.2817096,43.2606525 L36.196848,43.1345245 L35.9723332,42.7948727 L35.8333179,42.5868754 L35.7464805,42.4592566 L35.6635557,42.3396256 L35.5838929,42.2272546 L35.5068413,42.1214156 C35.3042739,41.8472409 35.1226205,41.6349781 34.9063615,41.4225184 L34.9063615,41.4225184 L34.8235337,41.3427155 L34.7368111,41.2621662 C33.9644079,40.5568646 33.0330753,40.16 31.944,40.16 C30.8549247,40.16 29.9235921,40.5568646 29.1511889,41.2621662 L29.1511889,41.2621662 L29.0644663,41.3427155 L28.9816385,41.4225184 C28.7653795,41.6349781 28.5837261,41.8472409 28.3811587,42.1214156 L28.3811587,42.1214156 L28.3041071,42.2272546 L28.2244443,42.3396256 C28.2109134,42.3589389 28.1972466,42.3785547 28.1834303,42.3984881 L28.1834303,42.3984881 L28.0986305,42.522022 L28.0095929,42.6539076 L27.9156668,42.7948727 L27.7519186,43.0431222 L27.6337624,43.2200416 L27.5285562,43.3741789 L27.4574784,43.4757435 L27.4135586,43.5371238 L27.3525284,43.620174 L27.2968988,43.6929688 L27.2625802,43.7361173 L27.2149051,43.7932418 L27.1854536,43.8265358 L27.1577046,43.8562198 L27.1315188,43.8824835 L27.1067565,43.9055164 L27.0832783,43.9255082 L27.0609446,43.9426484 L27.0396158,43.9571266 L27.0292847,43.9634267 L27.0092018,43.9742674 L26.9897751,43.9829201 L26.9708649,43.9895745 L26.9523319,43.99442 L26.9340364,43.9976464 L26.915839,43.9994432 L26.8976,44 L26.879361,43.9994432 L26.8611636,43.9976464 L26.8428681,43.99442 L26.8243351,43.9895745 L26.8054249,43.9829201 L26.7859982,43.9742674 C26.7827096,43.9726482 26.7793937,43.9709378 26.7760475,43.9691324 L26.7760475,43.9691324 L26.7555842,43.9571266 L26.7342554,43.9426484 L26.7119217,43.9255082 L26.6884435,43.9055164 L26.6636812,43.8824835 L26.6374954,43.8562198 L26.6097464,43.8265358 L26.5802949,43.7932418 L26.5326198,43.7361173 L26.4983012,43.6929688 L26.4426716,43.620174 L26.4026139,43.5659862 L26.3377216,43.4757435 L26.2910528,43.4093313 L26.1889096,43.2606525 L26.104048,43.1345245 L25.8795332,42.7948727 L25.7405179,42.5868754 L25.6536805,42.4592566 L25.5707557,42.3396256 L25.4910929,42.2272546 L25.4140413,42.1214156 C25.2114739,41.8472409 25.0298205,41.6349781 24.8135615,41.4225184 L24.8135615,41.4225184 L24.7307337,41.3427155 L24.6440111,41.2621662 C23.8716079,40.5568646 22.9402753,40.16 21.8512,40.16 C20.7621247,40.16 19.8307921,40.5568646 19.0583889,41.2621662 L19.0583889,41.2621662 L18.9716663,41.3427155 L18.8888385,41.4225184 C18.858765,41.4520636 18.8293607,41.4816049 18.8004763,41.5113095 C16.4131456,37.0301012 15.0592,31.9132176 15.0592,26.48 C15.0592,22.020413 15.9715547,17.7742252 17.6198153,13.9176671 C17.9567124,13.9626706 18.3071443,13.8259856 18.5215606,13.5316302 C19.1710506,12.6399958 19.935407,11.7799756 20.6208195,11.1665453 C20.9514493,10.8706384 21.2493301,10.6453562 21.4873458,10.5081397 L21.4873458,10.5081397 L21.5237456,10.4875897 C21.5829187,10.4549108 21.6345114,10.4300818 21.6768124,10.4130269 L21.6768124,10.4130269 L21.69184,10.4072 L21.7432008,10.4279855 L21.8111505,10.4578246 L21.8875429,10.4935791 C21.9009906,10.500037 21.9147989,10.5067458 21.9289726,10.5137077 L21.9289726,10.5137077 L22.0184333,10.5585339 L22.1168755,10.6095407 L22.2231742,10.6660792 L22.4262611,10.7770212 L23.0940785,11.1509875 L23.3696392,11.3035786 L23.588601,11.4222801 L23.7272183,11.4958401 C23.7855329,11.5264879 23.8428315,11.5562304 23.8991957,11.58507 L23.8991957,11.58507 L24.0655074,11.6688823 C24.6653116,11.9662785 25.1571584,12.154701 25.6103524,12.2372573 C26.1319617,12.3322766 26.631838,11.986457 26.7268573,11.4648476 C26.8218766,10.9432383 26.476057,10.443362 25.9544476,10.3483427 L25.9544476,10.3483427 L25.920005,10.3416068 C25.7795384,10.3123261 25.6067213,10.25501 25.401521,10.1699651 L25.401521,10.1699651 L25.2962221,10.1251333 C25.2602229,10.1094201 25.2233239,10.092938 25.1855251,10.0756885 L25.1855251,10.0756885 L25.0694291,10.0216393 L25.0694291,10.0216393 L25.0093562,9.99289067 L24.88516,9.93195071 L24.7555626,9.86642758 L24.620563,9.79632978 L24.493647,9.72897011 L24.3604656,9.65703757 L24.1441377,9.53808255 L23.2576736,9.04301538 L23.0888346,8.95166818 L22.9442891,8.87561039 L22.8185298,8.81145841 L22.6998595,8.75324371 C22.3921811,8.60581902 22.1520029,8.52050317 21.9144047,8.48751895 C21.4332745,8.42016048 20.8536183,8.62854287 20.2273084,9.03889124 C21.7925738,6.63591179 23.6733556,4.45531972 25.8102932,2.5565642 C26.2200266,2.46972595 26.6317652,2.39264992 27.0453437,2.32422647 L27.0452508,2.32424185 L27.0853093,2.31764233 L27.0853093,2.31764233 C27.0284958,3.08422723 27,3.85729635 27,4.6368 C27,22.133664 41.0413046,36.3499373 58.4708071,36.6325131 L59,36.6368 C59.9233977,36.6358775 60.837754,36.59613 61.7412289,36.5190905 C61.6787582,36.9442388 61.6058412,37.366914 61.5238801,37.787572 L61.6007678,37.3757553 C61.5612997,37.5948725 61.5193887,37.8134533 61.475039,38.0314789 L61.5238801,37.787572 C61.4831363,37.9966862 61.4401574,38.2053018 61.3949471,38.4134022 L61.475039,38.0314789 C61.4295915,38.2549015 61.381583,38.4777411 61.331018,38.6999777 L61.3949471,38.4134022 C61.3512885,38.6143595 61.305549,38.8148362 61.2577316,39.0148174 L61.331018,38.6999777 C61.2821466,38.9147711 61.230887,39.1290011 61.1772434,39.3426497 L61.2577316,39.0148174 C61.1996976,39.2575255 61.138603,39.4995036 61.0744532,39.7407246 L61.1772434,39.3426497 C61.1271141,39.5423015 61.0749029,39.7414456 61.020613,39.9400671 L61.0744532,39.7407246 C61.0273452,39.9178636 60.9785897,40.0945942 60.9281887,40.2709059 L61.020613,39.9400671 C60.9611325,40.1576791 60.8991567,40.3746639 60.8346902,40.5910019 L60.9281887,40.2709059 C60.8623227,40.5013176 60.7936465,40.7310137 60.7221652,40.9599704 L60.8346902,40.5910019 C60.7785403,40.779431 60.7205008,40.9673694 60.6605746,41.1548045 L60.7221652,40.9599704 C60.6571428,41.1682389 60.5897993,41.3758955 60.5201383,41.5829223 L60.6605746,41.1548045 C60.5852725,41.3903314 60.5069913,41.6250634 60.4257366,41.858975 L60.5201383,41.5829223 C60.4475607,41.7986168 60.3724675,42.0136277 60.2948628,42.2279345 L60.4257366,41.858975 C60.3665409,42.0293843 60.3057671,42.1993582 60.2434173,42.3688867 L60.2434676,42.3687619 C60.0783739,42.8176388 59.9022879,43.2632708 59.7152,43.7056 C58.2,47.288 56.0304,50.504 53.2688,53.2672 C52.9624103,53.5735897 52.6504338,53.8726812 52.3329948,54.1643894 L52.3330464,54.164342 C52.0222485,54.4499474 51.7062676,54.7284302 51.3851688,54.999758 L51.6355731,54.78582 C51.5030198,54.9003226 51.3695744,55.0135889 51.2352451,55.1256131 L51.3851688,54.999758 C51.2292663,55.1314953 51.0721572,55.2615458 50.9138551,55.3899005 L51.2352451,55.1256131 C51.0451572,55.2841375 50.8532995,55.4401746 50.6596959,55.5937082 L50.9138551,55.3899005 C50.7459747,55.5260215 50.5767525,55.6602351 50.4062042,55.7925306 L50.6596959,55.5937082 C50.4748368,55.7403072 50.288386,55.8846236 50.1003642,56.0266434 L50.4062042,55.7925306 C50.2492364,55.9142916 50.0911454,56.0344279 49.9319435,56.1529307 L50.1003642,56.0266434 C49.9384766,56.1489231 49.7754244,56.2695001 49.6112209,56.3883654 L49.9319435,56.1529307 C49.755583,56.2842058 49.5778592,56.4134765 49.3987893,56.5407312 L49.6112209,56.3883654 C49.4437826,56.5095724 49.2751471,56.6289996 49.1053285,56.7466374 L49.3987893,56.5407312 C49.231739,56.6594443 49.0635171,56.7764029 48.8941374,56.8915977 L49.1053285,56.7466374 C48.9207527,56.8744979 48.7347792,57.0002445 48.547426,57.1238649 L48.8941374,56.8915977 C48.7240197,57.0072944 48.552734,57.1212119 48.3802942,57.2333408 L48.547426,57.1238649 C48.3988883,57.2218739 48.2494833,57.3185465 48.0992202,57.4138764 L48.3802942,57.2333408 C48.1778017,57.3650114 47.9737177,57.4942155 47.7680648,57.6209378 L48.0992202,57.4138764 C47.9368792,57.5168687 47.7735364,57.6182939 47.6092033,57.7181442 L47.7680648,57.6209378 C47.5969053,57.7264054 47.4246589,57.8301539 47.2513388,57.9321745 L47.6092033,57.7181442 C47.4319973,57.8258162 47.2536396,57.9316568 47.0741445,58.0356565 L47.2513388,57.9321745 C47.0581185,58.0459087 46.8635637,58.1574953 46.6676921,58.2669221 L47.0741445,58.0356565 C46.8865282,58.1443616 46.6976692,58.2510554 46.5075838,58.3557267 L46.5076641,58.3556825 L46.2927331,58.4728916 L46.2927331,58.4728916 C35.8403247,58.2260425 26.6259993,52.9671608 20.9638849,45.0059276 L21.1150376,44.7799584 Z M23,14.16 C20.2385763,14.16 18,17.2581895 18,21.08 C18,24.9018105 20.2385763,28 23,28 C25.7614237,28 28,24.9018105 28,21.08 C28,17.2581895 25.7614237,14.16 23,14.16 Z\",\n id: \"MIDDLE-DANDELION\",\n fill: \"#F9D076\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,0 C49.6736,0 64,14.3264 64,32 C64,49.6736 49.6736,64 32,64 C14.3264,64 0,49.6736 0,32 C0,14.3264 14.3264,0 32,0 Z M32,1.92 C27.9392,1.92 24,2.7152 20.2928,4.2832 C16.712,5.7968 13.4944,7.9664 10.7312,10.7296 C7.9696,13.4928 5.8,16.7088 4.2848,20.2912 C2.7168,23.9984 1.9216,27.9376 1.9216,31.9984 C1.9216,36.0592 2.7168,39.9984 4.2848,43.7056 C5.7984,47.2864 7.968,50.504 10.7312,53.2672 C13.4944,56.0288 16.7104,58.1984 20.2928,59.7136 C24,61.2816 27.9392,62.0768 32,62.0768 C36.0608,62.0768 40,61.2816 43.7072,59.7136 C47.288,58.2 50.5056,56.0304 53.2688,53.2672 C56.0304,50.504 58.2,47.288 59.7152,43.7056 C61.2832,39.9984 62.0784,36.0592 62.0784,31.9984 C62.0784,27.9376 61.2832,23.9984 59.7152,20.2912 C58.2016,16.7104 56.032,13.4928 53.2688,10.7296 C50.5056,7.968 47.2896,5.7984 43.7072,4.2832 C40,2.7152 36.0624,1.92 32,1.92 Z M42.0368,40.16 C43.1258753,40.16 44.0572079,40.5568646 44.8296111,41.2621662 L44.9163337,41.3427155 L44.9991615,41.4225184 C45.2154205,41.6349781 45.3970739,41.8472409 45.5996413,42.1214156 L45.6766929,42.2272546 L45.7563557,42.3396256 L45.8392805,42.4592566 L45.9261179,42.5868754 L46.0651332,42.7948727 L46.289648,43.1345245 L46.3745096,43.2606525 L46.4766528,43.4093313 L46.5233216,43.4757435 L46.5882139,43.5659862 L46.6282716,43.620174 L46.6839012,43.6929688 L46.7182198,43.7361173 L46.7658949,43.7932418 L46.7953464,43.8265358 L46.8230954,43.8562198 L46.8492812,43.8824835 L46.8740435,43.9055164 L46.8975217,43.9255082 L46.9198554,43.9426484 L46.9411842,43.9571266 L46.9616475,43.9691324 C46.9649937,43.9709378 46.9683096,43.9726482 46.9715982,43.9742674 L46.9910249,43.9829201 L47.0099351,43.9895745 L47.0284681,43.99442 L47.0467636,43.9976464 L47.064961,43.9994432 L47.0832,44 C48.1435867,44 49.0032,44.8596133 49.0032,45.92 C49.0032,46.9803867 48.1435867,47.84 47.0832,47.84 C45.9941247,47.84 45.0627921,47.4431354 44.2903889,46.7378338 L44.2036663,46.6572845 L44.1208385,46.5774816 C43.9045795,46.3650219 43.7229261,46.1527591 43.5203587,45.8785844 L43.4433071,45.7727454 L43.3636443,45.6603744 L43.2807195,45.5407434 L43.1938821,45.4131246 L43.0548668,45.2051273 L42.830352,44.8654755 L42.7454904,44.7393475 L42.6433472,44.5906687 L42.5966784,44.5242565 L42.5317861,44.4340138 L42.4917284,44.379826 L42.4360988,44.3070312 L42.4017802,44.2638827 L42.3541051,44.2067582 L42.3246536,44.1734642 L42.2969046,44.1437802 L42.2707188,44.1175165 L42.2459565,44.0944836 L42.2224783,44.0744918 L42.2001446,44.0573516 L42.1788158,44.0428734 L42.1583525,44.0308676 C42.1550063,44.0290622 42.1516904,44.0273518 42.1484018,44.0257326 L42.1289751,44.0170799 L42.1100649,44.0104255 L42.0915319,44.00558 L42.0732364,44.0023536 L42.055039,44.0005568 L42.0276666,44.0001352 L42.0003636,44.0023536 L41.9820681,44.00558 L41.9635351,44.0104255 L41.9446249,44.0170799 L41.9251982,44.0257326 L41.9051153,44.0365733 C41.9017057,44.038573 41.898263,44.0406717 41.8947842,44.0428734 L41.8734554,44.0573516 L41.8511217,44.0744918 L41.8276435,44.0944836 L41.8028812,44.1175165 L41.7766954,44.1437802 L41.7489464,44.1734642 L41.7194949,44.2067582 L41.6718198,44.2638827 L41.6375012,44.3070312 L41.5818716,44.379826 L41.5208414,44.4628762 L41.4769216,44.5242565 L41.4058438,44.6258211 L41.3006376,44.7799584 L41.1824814,44.9568778 L41.0187332,45.2051273 L40.9248071,45.3460924 L40.8357695,45.477978 L40.7509697,45.6015119 C40.7371534,45.6214453 40.7234866,45.6410611 40.7099557,45.6603744 L40.6302929,45.7727454 L40.5532413,45.8785844 C40.3506739,46.1527591 40.1690205,46.3650219 39.9527615,46.5774816 L39.8699337,46.6572845 L39.7832111,46.7378338 C39.0108079,47.4431354 38.0794753,47.84 36.9904,47.84 C35.9013247,47.84 34.9699921,47.4431354 34.1975889,46.7378338 L34.1108663,46.6572845 L34.0280385,46.5774816 C33.8117795,46.3650219 33.6301261,46.1527591 33.4275587,45.8785844 L33.3505071,45.7727454 L33.2708443,45.6603744 L33.1879195,45.5407434 L33.1010821,45.4131246 L32.9620668,45.2051273 L32.737552,44.8654755 L32.6526904,44.7393475 L32.5505472,44.5906687 L32.5038784,44.5242565 L32.4389861,44.4340138 L32.3989284,44.379826 L32.3432988,44.3070312 L32.3089802,44.2638827 L32.2613051,44.2067582 L32.2318536,44.1734642 L32.2041046,44.1437802 L32.1779188,44.1175165 L32.1531565,44.0944836 L32.1296783,44.0744918 L32.1073446,44.0573516 L32.0860158,44.0428734 L32.0655525,44.0308676 C32.0622063,44.0290622 32.0588904,44.0273518 32.0556018,44.0257326 L32.0361751,44.0170799 L32.0172649,44.0104255 L31.9987319,44.00558 L31.9804364,44.0023536 L31.962239,44.0005568 L31.9348666,44.0001352 L31.9075636,44.0023536 L31.8892681,44.00558 L31.8707351,44.0104255 L31.8518249,44.0170799 L31.8323982,44.0257326 L31.8123153,44.0365733 C31.8089057,44.038573 31.805463,44.0406717 31.8019842,44.0428734 L31.7806554,44.0573516 L31.7583217,44.0744918 L31.7348435,44.0944836 L31.7100812,44.1175165 L31.6838954,44.1437802 L31.6561464,44.1734642 L31.6266949,44.2067582 L31.5790198,44.2638827 L31.5447012,44.3070312 L31.4890716,44.379826 L31.4280414,44.4628762 L31.3841216,44.5242565 L31.3130438,44.6258211 L31.2078376,44.7799584 L31.0896814,44.9568778 L30.9259332,45.2051273 L30.8320071,45.3460924 L30.7429695,45.477978 L30.6581697,45.6015119 C30.6443534,45.6214453 30.6306866,45.6410611 30.6171557,45.6603744 L30.5374929,45.7727454 L30.4604413,45.8785844 C30.2578739,46.1527591 30.0762205,46.3650219 29.8599615,46.5774816 L29.7771337,46.6572845 L29.6904111,46.7378338 C28.9180079,47.4431354 27.9866753,47.84 26.8976,47.84 C25.8085247,47.84 24.8771921,47.4431354 24.1047889,46.7378338 L24.0180663,46.6572845 L23.9352385,46.5774816 C23.7189795,46.3650219 23.5373261,46.1527591 23.3347587,45.8785844 L23.2577071,45.7727454 L23.1780443,45.6603744 L23.0951195,45.5407434 L23.0082821,45.4131246 L22.8692668,45.2051273 L22.644752,44.8654755 L22.5598904,44.7393475 L22.4577472,44.5906687 L22.4110784,44.5242565 L22.3461861,44.4340138 L22.3061284,44.379826 L22.2504988,44.3070312 L22.2161802,44.2638827 L22.1685051,44.2067582 L22.1390536,44.1734642 L22.1113046,44.1437802 L22.0851188,44.1175165 L22.0603565,44.0944836 L22.0368783,44.0744918 L22.0145446,44.0573516 L21.9932158,44.0428734 L21.9727525,44.0308676 C21.9694063,44.0290622 21.9660904,44.0273518 21.9628018,44.0257326 L21.9433751,44.0170799 L21.9244649,44.0104255 L21.9059319,44.00558 L21.8876364,44.0023536 L21.869439,44.0005568 L21.8420666,44.0001352 L21.8147636,44.0023536 L21.7964681,44.00558 L21.7779351,44.0104255 L21.7590249,44.0170799 L21.7395982,44.0257326 L21.7195153,44.0365733 L21.7091842,44.0428734 L21.7091842,44.0428734 L21.6878554,44.0573516 L21.6655217,44.0744918 L21.6420435,44.0944836 L21.6172812,44.1175165 L21.5910954,44.1437802 L21.5633464,44.1734642 L21.5338949,44.2067582 L21.4862198,44.2638827 L21.4519012,44.3070312 L21.3962716,44.379826 L21.3352414,44.4628762 L21.2913216,44.5242565 L21.2202438,44.6258211 L21.1150376,44.7799584 L20.9968814,44.9568778 L20.8331332,45.2051273 L20.7392071,45.3460924 L20.6501695,45.477978 L20.5653697,45.6015119 C20.5515534,45.6214453 20.5378866,45.6410611 20.5243557,45.6603744 L20.4446929,45.7727454 L20.3676413,45.8785844 C20.1650739,46.1527591 19.9834205,46.3650219 19.7671615,46.5774816 L19.6843337,46.6572845 L19.5976111,46.7378338 C18.8252079,47.4431354 17.8938753,47.84 16.8048,47.84 C15.7444133,47.84 14.8848,46.9803867 14.8848,45.92 C14.8848,44.8759269 15.7181671,44.0264972 16.756004,44.000608 L16.8139334,43.9998648 L16.8412364,43.9976464 L16.8595319,43.99442 L16.8780649,43.9895745 L16.8969751,43.9829201 L16.9164018,43.9742674 L16.9364847,43.9634267 L16.9468158,43.9571266 L16.9468158,43.9571266 L16.9681446,43.9426484 L16.9904783,43.9255082 L17.0139565,43.9055164 L17.0387188,43.8824835 L17.0649046,43.8562198 L17.0926536,43.8265358 L17.1221051,43.7932418 L17.1697802,43.7361173 L17.2040988,43.6929688 L17.2597284,43.620174 L17.3207586,43.5371238 L17.3646784,43.4757435 L17.4357562,43.3741789 L17.5409624,43.2200416 L17.6591186,43.0431222 L17.8228668,42.7948727 L17.9167929,42.6539076 L18.0058305,42.522022 L18.0906303,42.3984881 C18.1044466,42.3785547 18.1181134,42.3589389 18.1316443,42.3396256 L18.2113071,42.2272546 L18.2883587,42.1214156 C18.4909261,41.8472409 18.6725795,41.6349781 18.8888385,41.4225184 L18.9716663,41.3427155 L19.0583889,41.2621662 C19.8307921,40.5568646 20.7621247,40.16 21.8512,40.16 C22.9402753,40.16 23.8716079,40.5568646 24.6440111,41.2621662 L24.7307337,41.3427155 L24.8135615,41.4225184 C25.0298205,41.6349781 25.2114739,41.8472409 25.4140413,42.1214156 L25.4910929,42.2272546 L25.5707557,42.3396256 L25.6536805,42.4592566 L25.7405179,42.5868754 L25.8795332,42.7948727 L26.104048,43.1345245 L26.1889096,43.2606525 L26.2910528,43.4093313 L26.3377216,43.4757435 L26.4026139,43.5659862 L26.4426716,43.620174 L26.4983012,43.6929688 L26.5326198,43.7361173 L26.5802949,43.7932418 L26.6097464,43.8265358 L26.6374954,43.8562198 L26.6636812,43.8824835 L26.6884435,43.9055164 L26.7119217,43.9255082 L26.7342554,43.9426484 L26.7555842,43.9571266 L26.7760475,43.9691324 C26.7793937,43.9709378 26.7827096,43.9726482 26.7859982,43.9742674 L26.8054249,43.9829201 L26.8243351,43.9895745 L26.8428681,43.99442 L26.8611636,43.9976464 L26.879361,43.9994432 L26.8976,44 L26.915839,43.9994432 L26.9340364,43.9976464 L26.9523319,43.99442 L26.9708649,43.9895745 L26.9897751,43.9829201 L27.0092018,43.9742674 L27.0292847,43.9634267 L27.0396158,43.9571266 L27.0396158,43.9571266 L27.0609446,43.9426484 L27.0832783,43.9255082 L27.1067565,43.9055164 L27.1315188,43.8824835 L27.1577046,43.8562198 L27.1854536,43.8265358 L27.2149051,43.7932418 L27.2625802,43.7361173 L27.2968988,43.6929688 L27.3525284,43.620174 L27.4135586,43.5371238 L27.4574784,43.4757435 L27.5285562,43.3741789 L27.6337624,43.2200416 L27.7519186,43.0431222 L27.9156668,42.7948727 L28.0095929,42.6539076 L28.0986305,42.522022 L28.1834303,42.3984881 C28.1972466,42.3785547 28.2109134,42.3589389 28.2244443,42.3396256 L28.3041071,42.2272546 L28.3811587,42.1214156 C28.5837261,41.8472409 28.7653795,41.6349781 28.9816385,41.4225184 L29.0644663,41.3427155 L29.1511889,41.2621662 C29.9235921,40.5568646 30.8549247,40.16 31.944,40.16 C33.0330753,40.16 33.9644079,40.5568646 34.7368111,41.2621662 L34.8235337,41.3427155 L34.9063615,41.4225184 C35.1226205,41.6349781 35.3042739,41.8472409 35.5068413,42.1214156 L35.5838929,42.2272546 L35.6635557,42.3396256 L35.7464805,42.4592566 L35.8333179,42.5868754 L35.9723332,42.7948727 L36.196848,43.1345245 L36.2817096,43.2606525 L36.3838528,43.4093313 L36.4305216,43.4757435 L36.4954139,43.5659862 L36.5354716,43.620174 L36.5911012,43.6929688 L36.6254198,43.7361173 L36.6730949,43.7932418 L36.7025464,43.8265358 L36.7302954,43.8562198 L36.7564812,43.8824835 L36.7812435,43.9055164 L36.8047217,43.9255082 L36.8270554,43.9426484 L36.8483842,43.9571266 L36.8688475,43.9691324 C36.8721937,43.9709378 36.8755096,43.9726482 36.8787982,43.9742674 L36.8982249,43.9829201 L36.9171351,43.9895745 L36.9356681,43.99442 L36.9539636,43.9976464 L36.972161,43.9994432 L36.9904,44 L37.008639,43.9994432 L37.0268364,43.9976464 L37.0451319,43.99442 L37.0636649,43.9895745 L37.0825751,43.9829201 L37.1020018,43.9742674 L37.1220847,43.9634267 L37.1324158,43.9571266 L37.1324158,43.9571266 L37.1537446,43.9426484 L37.1760783,43.9255082 L37.1995565,43.9055164 L37.2243188,43.8824835 L37.2505046,43.8562198 L37.2782536,43.8265358 L37.3077051,43.7932418 L37.3553802,43.7361173 L37.3896988,43.6929688 L37.4453284,43.620174 L37.5063586,43.5371238 L37.5502784,43.4757435 L37.6213562,43.3741789 L37.7265624,43.2200416 L37.8447186,43.0431222 L38.0084668,42.7948727 L38.1023929,42.6539076 L38.1914305,42.522022 L38.2762303,42.3984881 C38.2900466,42.3785547 38.3037134,42.3589389 38.3172443,42.3396256 L38.3969071,42.2272546 L38.4739587,42.1214156 C38.6765261,41.8472409 38.8581795,41.6349781 39.0744385,41.4225184 L39.1572663,41.3427155 L39.2439889,41.2621662 C40.0163921,40.5568646 40.9477247,40.16 42.0368,40.16 Z M23,14.16 C25.7614237,14.16 28,17.2581895 28,21.08 C28,24.9018105 25.7614237,28 23,28 C20.2385763,28 18,24.9018105 18,21.08 C18,17.2581895 20.2385763,14.16 23,14.16 Z M41.08,14.16 C43.8414237,14.16 46.08,17.2581895 46.08,21.08 C46.08,24.9018105 43.8414237,28 41.08,28 C38.3185763,28 36.08,24.9018105 36.08,21.08 C36.08,17.2581895 38.3185763,14.16 41.08,14.16 Z M21.9144047,8.48751895 C22.1520029,8.52050317 22.3921811,8.60581902 22.6998595,8.75324371 L22.8185298,8.81145841 L22.9442891,8.87561039 L23.0888346,8.95166818 L23.2576736,9.04301538 L24.1441377,9.53808255 L24.3604656,9.65703757 L24.493647,9.72897011 L24.620563,9.79632978 L24.7555626,9.86642758 L24.88516,9.93195071 L25.0093562,9.99289067 C25.0296056,10.0026649 25.0496298,10.0122479 25.0694291,10.0216393 L25.1855251,10.0756885 C25.2233239,10.092938 25.2602229,10.1094201 25.2962221,10.1251333 L25.401521,10.1699651 C25.6067213,10.25501 25.7795384,10.3123261 25.920005,10.3416068 L25.9544476,10.3483427 C26.476057,10.443362 26.8218766,10.9432383 26.7268573,11.4648476 C26.631838,11.986457 26.1319617,12.3322766 25.6103524,12.2372573 C25.1571584,12.154701 24.6653116,11.9662785 24.0655074,11.6688823 L23.8991957,11.58507 C23.8428315,11.5562304 23.7855329,11.5264879 23.7272183,11.4958401 L23.588601,11.4222801 L23.3696392,11.3035786 L23.0940785,11.1509875 L22.4262611,10.7770212 L22.2231742,10.6660792 L22.1168755,10.6095407 L22.0184333,10.5585339 L21.9289726,10.5137077 C21.9147989,10.5067458 21.9009906,10.500037 21.8875429,10.4935791 L21.8111505,10.4578246 L21.7432008,10.4279855 L21.69184,10.4072 L21.6768124,10.4130269 C21.6345114,10.4300818 21.5829187,10.4549108 21.5237456,10.4875897 L21.4873458,10.5081397 C21.2493301,10.6453562 20.9514493,10.8706384 20.6208195,11.1665453 C19.935407,11.7799756 19.1710506,12.6399958 18.5215606,13.5316302 C18.2093926,13.9601814 17.608921,14.0545286 17.1803698,13.7423606 C16.7518186,13.4301926 16.6574714,12.829721 16.9696394,12.4011698 L17.074865,12.2579159 L17.1807442,12.1161706 C17.1984423,12.0926761 17.2161656,12.0692476 17.2339129,12.0458864 L17.3406766,11.9065403 L17.4479663,11.7688844 L17.5557308,11.6329914 L17.6639191,11.4989337 C17.681983,11.4767478 17.7000624,11.4546413 17.7181563,11.4326159 L17.8268846,11.3014475 C17.8450321,11.2797522 17.8631919,11.2581409 17.881363,11.2366152 L17.9905165,11.1084995 L18.0998895,10.9825096 L18.2094311,10.8587182 L18.3190902,10.7371979 L18.4288158,10.6180213 L18.5385568,10.5012609 L18.6482621,10.3869895 L18.7578807,10.2752795 L18.8673615,10.1662037 C18.9038265,10.1302921 18.94026,10.0948317 18.9766536,10.0598345 L19.0857058,9.95624473 C19.1401634,9.90515676 19.1945119,9.85513827 19.2487227,9.80623009 L19.3569518,9.70990627 L19.4647625,9.61661589 C19.4826932,9.60132432 19.5006044,9.58616216 19.5184949,9.57113094 L19.6255821,9.48252689 L19.732123,9.3971378 C19.76754,9.36921867 19.8028574,9.34184747 19.8380668,9.3150363 L19.9433622,9.23629499 C20.6780425,8.69703586 21.3613226,8.41008718 21.9144047,8.48751895 Z M47.4510804,12.5716415 C47.6690995,13.0549351 47.4540521,13.6234613 46.9707585,13.8414804 C46.4874649,14.0594995 45.9189387,13.8444521 45.7009196,13.3611585 C44.7163374,11.1785872 42.5981982,10.3747805 40.6757876,11.121987 C40.1816104,11.3140648 39.6252908,11.0691649 39.433213,10.5749876 C39.2411352,10.0808104 39.4860351,9.52449082 39.9802124,9.33241301 C42.8346765,8.22293402 46.03765,9.43842139 47.4510804,12.5716415 Z\",\n id: \"FACE-OCEAN\",\n fill: \"#1B3140\",\n fillRule: \"nonzero\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMood3);\nexport default __webpack_public_path__ + \"static/media/mood-3.6de9747e.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMood4(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"64px\",\n height: \"64px\",\n viewBox: \"0 0 64 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"EMOJI 04 SLIGHTLY SAD 64x64@2x\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"EMOJI-04-SLIGHTLY-SAD-64x64\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"YELLOW-BACKGROUND-BLEED\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\",\n cx: 32,\n cy: 32,\n r: 31\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,1.92 C36.0624,1.92 40,2.7152 43.7072,4.2832 C47.2896,5.7984 50.5056,7.968 53.2688,10.7296 C56.032,13.4928 58.2016,16.7104 59.7152,20.2912 C61.2832,23.9984 62.0784,27.9376 62.0784,31.9984 L62.071181,32.6676006 C62.065746,32.9191504 62.0572436,33.1702069 62.0456791,33.4207438 L62.0613958,33.024657 C62.0552181,33.2106557 62.0473585,33.3963769 62.0378191,33.5818097 L62.0456791,33.4207438 C62.0348553,33.6552376 62.021349,33.8892761 62.0051647,34.1228375 L62.0378191,33.5818097 C62.0235238,33.8596901 62.0054564,34.1369229 61.9836242,34.413472 L62.0051647,34.1228375 C61.9884763,34.3636735 61.9689406,34.6040022 61.9465622,34.8437998 L61.9836242,34.413472 C61.966116,34.6352474 61.9461867,34.8565831 61.9238401,35.0774602 L61.9465622,34.8437998 C61.921304,35.1144572 61.8924245,35.3844381 61.8599307,35.6537081 L61.9238401,35.0774602 C61.9025669,35.2877273 61.8791029,35.4975789 61.8534516,35.7069989 L61.8534889,35.7066939 C61.8219757,35.9639705 61.7872063,36.2202922 61.7491493,36.4759341 L61.7425822,36.5198243 L61.7425822,36.5198243 C60.8377745,36.5958422 59.9234081,36.6352 59,36.6352 L59,36.6368 C41.3264,36.6368 27,22.3104 27,4.6368 C27,3.85749652 27.0284811,3.08462426 27.0837204,2.31916779 L27.7565027,2.21535524 C27.9600536,2.18669592 28.1640282,2.16011533 28.3684117,2.13561651 L27.8309626,2.20574561 C28.0837741,2.17065861 28.3372185,2.13880197 28.5912704,2.11017618 L28.3684117,2.13561651 C28.6024547,2.10756249 28.8370339,2.08223827 29.0721266,2.05964843 L28.5912704,2.11017618 C28.8140717,2.08507161 29.0373403,2.06245195 29.2610588,2.04231753 L29.0721266,2.05964843 C29.2901201,2.03870163 29.5085553,2.0201059 29.7274141,2.00386489 L29.2610588,2.04231753 C29.4940536,2.02134825 29.7275365,2.00307459 29.9614881,1.98749694 L29.7274141,2.00386489 C29.9437443,1.98781153 30.1604883,1.97405878 30.377629,1.96261017 L29.9614881,1.98749694 C30.1908848,1.97222256 30.4207321,1.95954024 30.6510117,1.94945033 L30.377629,1.96261017 C30.6556643,1.94795091 30.9343499,1.93706933 31.2136494,1.92997281 L30.6510117,1.94945033 C30.8667111,1.93999927 31.0827897,1.93282274 31.2992324,1.92792105 L31.2997527,1.92790542 L32,1.92 L32,1.92 Z M40.8352,14.16 C38.0737763,14.16 35.8352,17.2581895 35.8352,21.08 C35.8352,24.9018105 38.0737763,28 40.8352,28 C43.5966237,28 45.8352,24.9018105 45.8352,21.08 C45.8352,17.2581895 43.5966237,14.16 40.8352,14.16 Z M39.177195,7.90143581 C38.9062639,7.4456932 38.3171784,7.29587389 37.8614358,7.56680501 C37.4056932,7.83773613 37.2558739,8.42682159 37.526805,8.88256419 C39.0384778,11.4254013 41.7892,11.8920918 44.2475826,10.6374849 C44.719833,10.3964774 44.9072924,9.81826774 44.6662849,9.34601738 C44.4252774,8.87376702 43.8470677,8.68630762 43.3748174,8.92731509 C41.7457726,9.75867909 40.1170168,9.48234261 39.177195,7.90143581 Z\",\n id: \"RIGHT-DANDELION\",\n fill: \"#FAE6B9\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8129734,2.55418304 C23.7241247,4.40979325 21.8799604,6.5346673 20.3349435,8.87440947 C19.8907818,8.72142721 19.3903585,8.91523761 19.1705151,9.34601738 C18.9755202,9.72810687 19.0610059,10.1795589 19.3508761,10.4656586 C16.6214317,15.1742053 15.0592,20.6444002 15.0592,26.48 C15.0592,36.6122653 19.7678904,45.6443987 27.1164864,51.5076157 C27.8571558,54.0478184 29.6549545,55.84 31.7552,55.84 C32.343198,55.84 32.9074898,55.6995268 33.4315111,55.4415055 C37.347893,57.2878436 41.7005916,58.3630646 46.2926917,58.4710006 C45.9172206,58.6757101 45.535398,58.8714693 45.1489438,59.0592444 L45.609587,58.8302444 C45.3946418,58.9393765 45.178143,59.0459998 44.9601385,59.1500977 L45.1489438,59.0592444 C44.9355697,59.1629213 44.7207836,59.2641642 44.5046066,59.3629588 L44.9601385,59.1500977 C44.7571821,59.2470102 44.5529207,59.3417339 44.3473928,59.4342556 L44.3469165,59.4344791 L43.7072,59.7136 L43.7072,59.7136 C40.1951158,61.1990737 36.47481,61.990954 32.6401523,62.070195 L32,62.0768 C27.9392,62.0768 24,61.2816 20.2928,59.7136 C16.7104,58.1984 13.4944,56.0288 10.7312,53.2672 C10.1472927,52.6836308 9.5898922,52.0796278 9.05958729,51.4560969 C7.08072265,49.1285237 5.47869061,46.5300473 4.2848,43.7056 C2.7168,39.9984 1.9216,36.0592 1.9216,31.9984 C1.9216,27.9376 2.7168,23.9984 4.2848,20.2912 C5.8,16.7088 7.9696,13.4928 10.7312,10.7296 C13.4944,7.9664 16.712,5.7968 20.2928,4.2832 L20.9349038,4.02025808 C21.1375572,3.93997852 21.3408754,3.86197962 21.5448408,3.78626495 L21.0715107,3.96652707 C21.3291715,3.86590693 21.5878975,3.76896407 21.8476525,3.67570582 L21.5448408,3.78626495 C21.7494363,3.71031638 21.9546829,3.63666619 22.1605629,3.56531798 L21.8476525,3.67570582 C22.0506333,3.60283085 22.2542425,3.53220584 22.4584629,3.46383428 L22.1605629,3.56531798 C22.3841624,3.48782902 22.608509,3.41305535 22.8335798,3.34100161 L22.4584629,3.46383428 C22.6766467,3.39078785 22.895528,3.32031357 23.1150859,3.25241569 L22.8335798,3.34100161 C23.041902,3.27430973 23.2508447,3.20994802 23.4603897,3.14792017 L23.1150859,3.25241569 C23.3254875,3.18734941 23.5365103,3.12464913 23.7481359,3.0643186 L23.4603897,3.14792017 C23.6976943,3.07767517 23.9357714,3.01042333 24.1745947,2.94617 L23.7481359,3.0643186 C23.9577295,3.00456734 24.1679144,2.94714055 24.3786726,2.89204187 L24.1745947,2.94617 C24.3982605,2.88599466 24.6225808,2.82844928 24.847534,2.77353826 L24.3786726,2.89204187 C24.6048001,2.83292519 24.8315876,2.77648856 25.0590127,2.72273647 L25.058675,2.72281629 L25.7053588,2.57756524 L25.7053588,2.57756524 L25.8129734,2.55418304 Z\",\n id: \"LEFT-DANDELION\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.3558778,2.44663197 C26.585114,2.40314779 26.8149433,2.36234447 27.0453437,2.32422647 L27.0452508,2.32424185 L27.0853093,2.31764233 L27.0853093,2.31764233 C27.0284958,3.08422723 27,3.85729635 27,4.6368 C27,22.133664 41.0413046,36.3499373 58.4708071,36.6325131 L59,36.6368 C59.9233977,36.6358775 60.837754,36.59613 61.7412289,36.5190905 C61.6787582,36.9442388 61.6058412,37.366914 61.5238801,37.787572 L61.6007678,37.3757553 C61.5612997,37.5948725 61.5193887,37.8134533 61.475039,38.0314789 L61.5238801,37.787572 C61.4831363,37.9966862 61.4401574,38.2053018 61.3949471,38.4134022 L61.475039,38.0314789 C61.4295915,38.2549015 61.381583,38.4777411 61.331018,38.6999777 L61.3949471,38.4134022 C61.3512885,38.6143595 61.305549,38.8148362 61.2577316,39.0148174 L61.331018,38.6999777 C61.2821466,38.9147711 61.230887,39.1290011 61.1772434,39.3426497 L61.2577316,39.0148174 C61.1996976,39.2575255 61.138603,39.4995036 61.0744532,39.7407246 L61.1772434,39.3426497 C61.1271141,39.5423015 61.0749029,39.7414456 61.020613,39.9400671 L61.0744532,39.7407246 C61.0227066,39.9353061 60.968972,40.1293949 60.9132523,40.3229769 L61.020613,39.9400671 C60.9579178,40.1694402 60.8924503,40.3981165 60.8242159,40.626073 L60.9132523,40.3229769 C60.848965,40.5463242 60.7820353,40.7689969 60.7124674,40.9909732 L60.8242159,40.626073 C60.7713302,40.8027527 60.7167823,40.979 60.6605746,41.1548045 L60.7124674,40.9909732 C60.6472982,41.1989144 60.5798139,41.4062445 60.5100182,41.6129456 L60.6605746,41.1548045 C60.5852725,41.3903314 60.5069913,41.6250634 60.4257366,41.858975 L60.5100182,41.6129456 C60.4474907,41.7981216 60.3831082,41.9827928 60.3168732,42.1669462 L60.4257366,41.858975 C60.3665409,42.0293843 60.3057671,42.1993582 60.2434173,42.3688867 L60.2434676,42.3687619 C60.1182995,42.7090813 59.9868355,43.0474827 59.8490431,43.3840115 L59.7152,43.7056 C59.66971,43.8131524 59.6236301,43.9203746 59.5769621,44.0272641 L59.7152,43.7056 C58.2,47.288 56.0304,50.504 53.2688,53.2672 C52.9624103,53.5735897 52.6504338,53.8726812 52.3329948,54.1643894 L52.3330464,54.164342 C52.0222485,54.4499474 51.7062676,54.7284302 51.3851688,54.999758 L51.6355731,54.78582 C51.5164374,54.8887322 51.3965809,54.9906457 51.2760099,55.0915563 L51.3851688,54.999758 C51.2299181,55.1309445 51.073471,55.2604583 50.9158406,55.3882905 L51.2760099,55.0915563 C51.0725961,55.2618014 50.8671483,55.4291921 50.6596959,55.5937082 L50.9158406,55.3882905 C50.747309,55.5249631 50.5774248,55.6597135 50.4062042,55.7925306 L50.6596959,55.5937082 C50.4748368,55.7403072 50.288386,55.8846236 50.1003642,56.0266434 L50.4062042,55.7925306 C50.2492364,55.9142916 50.0911454,56.0344279 49.9319435,56.1529307 L50.1003642,56.0266434 C49.9384766,56.1489231 49.7754244,56.2695001 49.6112209,56.3883654 L49.9319435,56.1529307 C49.755583,56.2842058 49.5778592,56.4134765 49.3987893,56.5407312 L49.6112209,56.3883654 C49.4437826,56.5095724 49.2751471,56.6289996 49.1053285,56.7466374 L49.3987893,56.5407312 C49.231739,56.6594443 49.0635171,56.7764029 48.8941374,56.8915977 L49.1053285,56.7466374 C48.9207527,56.8744979 48.7347792,57.0002445 48.547426,57.1238649 L48.8941374,56.8915977 C48.7240197,57.0072944 48.552734,57.1212119 48.3802942,57.2333408 L48.547426,57.1238649 C48.3988883,57.2218739 48.2494833,57.3185465 48.0992202,57.4138764 L48.3802942,57.2333408 C48.1778017,57.3650114 47.9737177,57.4942155 47.7680648,57.6209378 L48.0992202,57.4138764 C47.9368792,57.5168687 47.7735364,57.6182939 47.6092033,57.7181442 L47.7680648,57.6209378 C47.5969053,57.7264054 47.4246589,57.8301539 47.2513388,57.9321745 L47.6092033,57.7181442 C47.4319973,57.8258162 47.2536396,57.9316568 47.0741445,58.0356565 L47.2513388,57.9321745 C47.0581185,58.0459087 46.8635637,58.1574953 46.6676921,58.2669221 L47.0741445,58.0356565 C46.8865282,58.1443616 46.6976692,58.2510554 46.5075838,58.3557267 L46.5076641,58.3556825 L46.2927331,58.4728916 L46.2927331,58.4728916 C41.7028258,58.3635443 37.3494085,57.2883257 33.4313994,55.4415416 C35.3686358,54.4874511 36.7552,51.9278293 36.7552,48.92 C36.7552,45.0981895 34.5166237,42 31.7552,42 C28.9937763,42 26.7552,45.0981895 26.7552,48.92 C26.7552,49.8346897 26.8834275,50.7079298 27.1163611,51.5071667 C19.7678177,45.6442593 15.0592,36.6121871 15.0592,26.48 C15.0592,20.6442037 16.6215369,15.173837 19.350812,10.4638094 C19.4188984,10.5328928 19.498843,10.5913634 19.5892174,10.6374849 C22.0473596,11.8919692 24.7965429,11.4254445 26.309745,8.8829845 C26.5809082,8.42737996 26.431389,7.83821827 25.9757845,7.56705502 C25.52018,7.29589177 24.9310183,7.44541097 24.659855,7.9010155 L24.659855,7.9010155 L24.6275032,7.95442205 C23.6816472,9.4885653 22.0724438,9.74919517 20.4619826,8.92731509 C20.4205572,8.90617408 20.3783164,8.88832999 20.3355594,8.87368583 C21.879538,6.53539335 23.7226822,4.41149101 25.8102932,2.5565642 Z M22.7552,14.16 C19.9937763,14.16 17.7552,17.2581895 17.7552,21.08 C17.7552,24.9018105 19.9937763,28 22.7552,28 C25.5166237,28 27.7552,24.9018105 27.7552,21.08 C27.7552,17.2581895 25.5166237,14.16 22.7552,14.16 Z\",\n id: \"MIDDLE-DANDELION\",\n fill: \"#F9D076\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,0 C49.6736,0 64,14.3264 64,32 C64,49.6736 49.6736,64 32,64 C14.3264,64 0,49.6736 0,32 C0,14.3264 14.3264,0 32,0 Z M32,1.92 C27.9392,1.92 24,2.7152 20.2928,4.2832 C16.712,5.7968 13.4928,7.9664 10.7312,10.7296 C7.9696,13.4928 5.8,16.7088 4.2848,20.2912 C2.7168,23.9984 1.9216,27.9376 1.9216,31.9984 C1.9216,36.0592 2.7168,39.9984 4.2848,43.7056 C5.7984,47.2864 7.968,50.5056 10.7312,53.2672 C13.4944,56.0288 16.7104,58.1984 20.2928,59.7136 C24,61.2816 27.9392,62.0768 32,62.0768 C36.0608,62.0768 40,61.2816 43.7072,59.7136 C47.288,58.2 50.5056,56.0304 53.2688,53.2672 C56.0304,50.504 58.2,47.288 59.7152,43.7056 C61.2832,39.9984 62.0784,36.0592 62.0784,31.9984 C62.0784,27.9376 61.2832,23.9984 59.7152,20.2912 C58.2016,16.7104 56.032,13.4928 53.2688,10.7296 C50.5056,7.968 47.2896,5.7984 43.7072,4.2832 C40,2.7152 36.0624,1.92 32,1.92 Z M31.7552,42 C34.5166237,42 36.7552,45.0981895 36.7552,48.92 C36.7552,52.7418105 34.5166237,55.84 31.7552,55.84 C28.9937763,55.84 26.7552,52.7418105 26.7552,48.92 C26.7552,45.0981895 28.9937763,42 31.7552,42 Z M22.7552,14.16 C25.5166237,14.16 27.7552,17.2581895 27.7552,21.08 C27.7552,24.9018105 25.5166237,28 22.7552,28 C19.9937763,28 17.7552,24.9018105 17.7552,21.08 C17.7552,17.2581895 19.9937763,14.16 22.7552,14.16 Z M40.8352,14.16 C43.5966237,14.16 45.8352,17.2581895 45.8352,21.08 C45.8352,24.9018105 43.5966237,28 40.8352,28 C38.0737763,28 35.8352,24.9018105 35.8352,21.08 C35.8352,17.2581895 38.0737763,14.16 40.8352,14.16 Z M39.177195,7.90143581 C40.1170168,9.48234261 41.7457726,9.75867909 43.3748174,8.92731509 C43.8470677,8.68630762 44.4252774,8.87376702 44.6662849,9.34601738 C44.9072924,9.81826774 44.719833,10.3964774 44.2475826,10.6374849 C41.7892,11.8920918 39.0384778,11.4254013 37.526805,8.88256419 C37.2558739,8.42682159 37.4056932,7.83773613 37.8614358,7.56680501 C38.3171784,7.29587389 38.9062639,7.4456932 39.177195,7.90143581 Z M25.9757845,7.56705502 C26.431389,7.83821827 26.5809082,8.42737996 26.309745,8.8829845 C24.7965429,11.4254445 22.0473596,11.8919692 19.5892174,10.6374849 C19.116967,10.3964774 18.9295076,9.81826774 19.1705151,9.34601738 C19.4115226,8.87376702 19.9897323,8.68630762 20.4619826,8.92731509 C22.0724438,9.74919517 23.6816472,9.4885653 24.6275032,7.95442205 L24.659855,7.9010155 C24.9310183,7.44541097 25.52018,7.29589177 25.9757845,7.56705502 Z\",\n id: \"FACE-OCEAN\",\n fill: \"#1B3140\",\n fillRule: \"nonzero\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMood4);\nexport default __webpack_public_path__ + \"static/media/mood-4.b138c5f5.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMood5(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"64px\",\n height: \"64px\",\n viewBox: \"0 0 64 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"EMOJI 05 NORMAL 64x64@2x\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"EMOJI-05-NORMAL-64x64\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"YELLOW-BACKGROUND-BLEED\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\",\n cx: 32,\n cy: 32,\n r: 31\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,1.92 C36.0624,1.92 40,2.7152 43.7072,4.2832 C47.2896,5.7984 50.5056,7.968 53.2688,10.7296 C56.032,13.4928 58.2016,16.7104 59.7152,20.2912 C61.2832,23.9984 62.0784,27.9376 62.0784,31.9984 L62.071181,32.6676006 C62.065746,32.9191504 62.0572436,33.1702069 62.0456791,33.4207438 L62.0613958,33.024657 C62.0552181,33.2106557 62.0473585,33.3963769 62.0378191,33.5818097 L62.0456791,33.4207438 C62.0348553,33.6552376 62.021349,33.8892761 62.0051647,34.1228375 L62.0378191,33.5818097 C62.0235238,33.8596901 62.0054564,34.1369229 61.9836242,34.413472 L62.0051647,34.1228375 C61.9884763,34.3636735 61.9689406,34.6040022 61.9465622,34.8437998 L61.9836242,34.413472 C61.966116,34.6352474 61.9461867,34.8565831 61.9238401,35.0774602 L61.9465622,34.8437998 C61.921304,35.1144572 61.8924245,35.3844381 61.8599307,35.6537081 L61.9238401,35.0774602 C61.9025669,35.2877273 61.8791029,35.4975789 61.8534516,35.7069989 L61.8534889,35.7066939 C61.8219757,35.9639705 61.7872063,36.2202922 61.7491493,36.4759341 L61.7425822,36.5198243 L61.7425822,36.5198243 C60.8377745,36.5958422 59.9234081,36.6352 59,36.6352 L59,36.6368 C41.3264,36.6368 27,22.3104 27,4.6368 C27,3.85749652 27.0284811,3.08462426 27.0837204,2.31916779 L27.7565027,2.21535524 C27.9600536,2.18669592 28.1640282,2.16011533 28.3684117,2.13561651 L27.8309626,2.20574561 C28.0837741,2.17065861 28.3372185,2.13880197 28.5912704,2.11017618 L28.3684117,2.13561651 C28.6024547,2.10756249 28.8370339,2.08223827 29.0721266,2.05964843 L28.5912704,2.11017618 C28.8140717,2.08507161 29.0373403,2.06245195 29.2610588,2.04231753 L29.0721266,2.05964843 C29.2901201,2.03870163 29.5085553,2.0201059 29.7274141,2.00386489 L29.2610588,2.04231753 C29.4940536,2.02134825 29.7275365,2.00307459 29.9614881,1.98749694 L29.7274141,2.00386489 C29.9437443,1.98781153 30.1604883,1.97405878 30.377629,1.96261017 L29.9614881,1.98749694 C30.1908848,1.97222256 30.4207321,1.95954024 30.6510117,1.94945033 L30.377629,1.96261017 C30.6556643,1.94795091 30.9343499,1.93706933 31.2136494,1.92997281 L30.6510117,1.94945033 C30.8667111,1.93999927 31.0827897,1.93282274 31.2992324,1.92792105 L31.2997527,1.92790542 L32,1.92 L32,1.92 Z M41.08,14.16 C38.3185763,14.16 36.08,17.2581895 36.08,21.08 C36.08,24.9018105 38.3185763,28 41.08,28 C43.8414237,28 46.08,24.9018105 46.08,21.08 C46.08,17.2581895 43.8414237,14.16 41.08,14.16 Z\",\n id: \"RIGHT-DANDELION\",\n fill: \"#FAE6B9\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8129734,2.55418304 C19.2157279,8.41478763 15.0592,16.9612893 15.0592,26.48 C15.0592,33.1787837 17.1173591,39.396702 20.6358393,44.5359169 C20.214952,44.8839251 19.9472,45.4110941 19.9472,46.0008 C19.9472,47.0536756 20.8007244,47.9072 21.8536,47.9072 L21.8536,47.9072 L23.292339,47.9082444 C28.9897794,54.2235 37.1686885,58.2565436 46.2926917,58.4710006 C45.9172206,58.6757101 45.535398,58.8714693 45.1489438,59.0592444 L45.609587,58.8302444 C45.3946418,58.9393765 45.178143,59.0459998 44.9601385,59.1500977 L45.1489438,59.0592444 C44.9355697,59.1629213 44.7207836,59.2641642 44.5046066,59.3629588 L44.9601385,59.1500977 C44.7571821,59.2470102 44.5529207,59.3417339 44.3473928,59.4342556 L44.3469165,59.4344791 L43.7072,59.7136 L43.7072,59.7136 C40.1951158,61.1990737 36.47481,61.990954 32.6401523,62.070195 L32,62.0768 C27.9392,62.0768 24,61.2816 20.2928,59.7136 C16.7104,58.1984 13.4944,56.0288 10.7312,53.2672 C7.968,50.504 5.7984,47.2864 4.2848,43.7056 C2.7168,39.9984 1.9216,36.0592 1.9216,31.9984 C1.9216,27.9376 2.7168,23.9984 4.2848,20.2912 C5.8,16.7088 7.9696,13.4928 10.7312,10.7296 C13.4944,7.9664 16.712,5.7968 20.2928,4.2832 L20.2928,4.2832 L20.9349038,4.02025808 C21.1375572,3.93997852 21.3408754,3.86197962 21.5448408,3.78626495 L21.0715107,3.96652707 C21.3291715,3.86590693 21.5878975,3.76896407 21.8476525,3.67570582 L21.5448408,3.78626495 C21.7494363,3.71031638 21.9546829,3.63666619 22.1605629,3.56531798 L21.8476525,3.67570582 C22.0506333,3.60283085 22.2542425,3.53220584 22.4584629,3.46383428 L22.1605629,3.56531798 C22.3841624,3.48782902 22.608509,3.41305535 22.8335798,3.34100161 L22.4584629,3.46383428 C22.6766467,3.39078785 22.895528,3.32031357 23.1150859,3.25241569 L22.8335798,3.34100161 C23.041902,3.27430973 23.2508447,3.20994802 23.4603897,3.14792017 L23.1150859,3.25241569 C23.3254875,3.18734941 23.5365103,3.12464913 23.7481359,3.0643186 L23.4603897,3.14792017 C23.6976943,3.07767517 23.9357714,3.01042333 24.1745947,2.94617 L23.7481359,3.0643186 C23.9577295,3.00456734 24.1679144,2.94714055 24.3786726,2.89204187 L24.1745947,2.94617 C24.3982605,2.88599466 24.6225808,2.82844928 24.847534,2.77353826 L24.3786726,2.89204187 C24.6048001,2.83292519 24.8315876,2.77648856 25.0590127,2.72273647 L25.058675,2.72281629 L25.7053588,2.57756524 L25.7053588,2.57756524 L25.8129734,2.55418304 Z\",\n id: \"LEFT-DANDELION\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.3558778,2.44663197 C26.585114,2.40314779 26.8149433,2.36234447 27.0453437,2.32422647 L27.0452508,2.32424185 L27.0853093,2.31764233 L27.0853093,2.31764233 C27.0284958,3.08422723 27,3.85729635 27,4.6368 C27,22.133664 41.0413046,36.3499373 58.4708071,36.6325131 L59,36.6368 C59.9233977,36.6358775 60.837754,36.59613 61.7412289,36.5190905 C61.6787582,36.9442388 61.6058412,37.366914 61.5238801,37.787572 L61.6007678,37.3757553 C61.5612997,37.5948725 61.5193887,37.8134533 61.475039,38.0314789 L61.5238801,37.787572 C61.4831363,37.9966862 61.4401574,38.2053018 61.3949471,38.4134022 L61.475039,38.0314789 C61.4295915,38.2549015 61.381583,38.4777411 61.331018,38.6999777 L61.3949471,38.4134022 C61.3512885,38.6143595 61.305549,38.8148362 61.2577316,39.0148174 L61.331018,38.6999777 C61.2821466,38.9147711 61.230887,39.1290011 61.1772434,39.3426497 L61.2577316,39.0148174 C61.1996976,39.2575255 61.138603,39.4995036 61.0744532,39.7407246 L61.1772434,39.3426497 C61.1271141,39.5423015 61.0749029,39.7414456 61.020613,39.9400671 L61.0744532,39.7407246 C61.0227066,39.9353061 60.968972,40.1293949 60.9132523,40.3229769 L61.020613,39.9400671 C60.9579178,40.1694402 60.8924503,40.3981165 60.8242159,40.626073 L60.9132523,40.3229769 C60.848965,40.5463242 60.7820353,40.7689969 60.7124674,40.9909732 L60.8242159,40.626073 C60.7713302,40.8027527 60.7167823,40.979 60.6605746,41.1548045 L60.7124674,40.9909732 C60.6472982,41.1989144 60.5798139,41.4062445 60.5100182,41.6129456 L60.6605746,41.1548045 C60.5852725,41.3903314 60.5069913,41.6250634 60.4257366,41.858975 L60.4258081,41.8588014 C60.2477524,42.3713462 60.0555014,42.879781 59.8490431,43.3840115 L59.7152,43.7056 C59.6476027,43.8654209 59.5787029,44.0245125 59.5085063,44.1828672 L59.7152,43.7056 C58.2,47.288 56.0304,50.504 53.2688,53.2672 C52.9624103,53.5735897 52.6504338,53.8726812 52.3329948,54.1643894 L52.3330464,54.164342 C52.0222485,54.4499474 51.7062676,54.7284302 51.3851688,54.999758 L51.6355731,54.78582 C51.5030198,54.9003226 51.3695744,55.0135889 51.2352451,55.1256131 L51.3851688,54.999758 C51.2292663,55.1314953 51.0721572,55.2615458 50.9138551,55.3899005 L51.2352451,55.1256131 C51.0451572,55.2841375 50.8532995,55.4401746 50.6596959,55.5937082 L50.9138551,55.3899005 C50.7459747,55.5260215 50.5767525,55.6602351 50.4062042,55.7925306 L50.6596959,55.5937082 C50.4748368,55.7403072 50.288386,55.8846236 50.1003642,56.0266434 L50.4062042,55.7925306 C50.2492364,55.9142916 50.0911454,56.0344279 49.9319435,56.1529307 L50.1003642,56.0266434 C49.9384766,56.1489231 49.7754244,56.2695001 49.6112209,56.3883654 L49.9319435,56.1529307 C49.755583,56.2842058 49.5778592,56.4134765 49.3987893,56.5407312 L49.6112209,56.3883654 C49.4437826,56.5095724 49.2751471,56.6289996 49.1053285,56.7466374 L49.3987893,56.5407312 C49.231739,56.6594443 49.0635171,56.7764029 48.8941374,56.8915977 L49.1053285,56.7466374 C48.9207527,56.8744979 48.7347792,57.0002445 48.547426,57.1238649 L48.8941374,56.8915977 C48.7240197,57.0072944 48.552734,57.1212119 48.3802942,57.2333408 L48.547426,57.1238649 C48.3988883,57.2218739 48.2494833,57.3185465 48.0992202,57.4138764 L48.3802942,57.2333408 C48.1778017,57.3650114 47.9737177,57.4942155 47.7680648,57.6209378 L48.0992202,57.4138764 C47.9368792,57.5168687 47.7735364,57.6182939 47.6092033,57.7181442 L47.7680648,57.6209378 C47.5969053,57.7264054 47.4246589,57.8301539 47.2513388,57.9321745 L47.6092033,57.7181442 C47.4319973,57.8258162 47.2536396,57.9316568 47.0741445,58.0356565 L47.2513388,57.9321745 C47.0581185,58.0459087 46.8635637,58.1574953 46.6676921,58.2669221 L47.0741445,58.0356565 C46.8865282,58.1443616 46.6976692,58.2510554 46.5075838,58.3557267 L46.5076641,58.3556825 L46.2927331,58.4728916 L46.2927331,58.4728916 C37.1703792,58.2572382 28.9904299,54.2240114 23.2924497,47.9082678 L42.0936,47.9072 C43.1464756,47.9072 44,47.0536756 44,46.0008 C44,44.9479244 43.1464756,44.0944 42.0936,44.0944 L42.0936,44.0944 L21.8536,44.0944 C21.3905428,44.0944 20.9660454,44.2594939 20.6357577,44.5340316 C17.1173591,39.396702 15.0592,33.1787837 15.0592,26.48 C15.0592,16.9625784 19.2146022,8.41710246 25.8102932,2.5565642 Z M23,14.16 C20.2385763,14.16 18,17.2581895 18,21.08 C18,24.9018105 20.2385763,28 23,28 C25.7614237,28 28,24.9018105 28,21.08 C28,17.2581895 25.7614237,14.16 23,14.16 Z\",\n id: \"MIDDLE-DANDELION\",\n fill: \"#F9D076\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,0 C49.6736,0 64,14.3264 64,32 C64,49.6736 49.6736,64 32,64 C14.3264,64 0,49.6736 0,32 C0,14.3264 14.3264,0 32,0 Z M32,1.92 C27.9392,1.92 24,2.7152 20.2928,4.2832 C16.712,5.7968 13.4944,7.9664 10.7312,10.7296 C7.9696,13.4928 5.8,16.7088 4.2848,20.2912 C2.7168,23.9984 1.9216,27.9376 1.9216,31.9984 C1.9216,36.0592 2.7168,39.9984 4.2848,43.7056 C5.7984,47.2864 7.968,50.504 10.7312,53.2672 C13.4944,56.0288 16.7104,58.1984 20.2928,59.7136 C24,61.2816 27.9392,62.0768 32,62.0768 C36.0608,62.0768 40,61.2816 43.7072,59.7136 C47.288,58.2 50.5056,56.0304 53.2688,53.2672 C56.0304,50.504 58.2,47.288 59.7152,43.7056 C61.2832,39.9984 62.0784,36.0592 62.0784,31.9984 C62.0784,27.9376 61.2832,23.9984 59.7152,20.2912 C58.2016,16.7104 56.032,13.4928 53.2688,10.7296 C50.5056,7.968 47.2896,5.7984 43.7072,4.2832 C40,2.7152 36.0624,1.92 32,1.92 Z M42.0936,44.0944 C43.1464756,44.0944 44,44.9479244 44,46.0008 C44,47.0536756 43.1464756,47.9072 42.0936,47.9072 L21.8536,47.9072 C20.8007244,47.9072 19.9472,47.0536756 19.9472,46.0008 C19.9472,44.9479244 20.8007244,44.0944 21.8536,44.0944 L42.0936,44.0944 Z M23,14.16 C25.7614237,14.16 28,17.2581895 28,21.08 C28,24.9018105 25.7614237,28 23,28 C20.2385763,28 18,24.9018105 18,21.08 C18,17.2581895 20.2385763,14.16 23,14.16 Z M41.08,14.16 C43.8414237,14.16 46.08,17.2581895 46.08,21.08 C46.08,24.9018105 43.8414237,28 41.08,28 C38.3185763,28 36.08,24.9018105 36.08,21.08 C36.08,17.2581895 38.3185763,14.16 41.08,14.16 Z\",\n id: \"FACE-OCEAN\",\n fill: \"#1B3140\",\n fillRule: \"nonzero\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMood5);\nexport default __webpack_public_path__ + \"static/media/mood-5.84dfe834.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMood6(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"64px\",\n height: \"64px\",\n viewBox: \"0 0 64 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"EMOJI 06 SLIGHTLY HAPPY 64x64@2x\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"EMOJI-06-SLIGHTLY-HAPPY-64x64\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"YELLOW-BACKGROUND-BLEED\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\",\n cx: 32,\n cy: 32,\n r: 31\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,1 C49.1208272,1 63,14.8791728 63,32 C63,49.1208272 49.1208272,63 32,63 C14.8791728,63 1,49.1208272 1,32 C1,14.8791728 14.8791728,1 32,1 Z\",\n id: \"RIGHT-DANDELION\",\n fill: \"#FAE6B9\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8129734,2.55418304 C23.5267992,4.58508562 21.5337217,6.93852756 19.9051427,9.54319534 C18.5936858,10.1063527 17.4601116,11.1853858 16.7619019,12.7312377 C16.5436597,13.2144306 16.7584448,13.783056 17.2416377,14.0012981 C17.3419534,14.0466074 17.4459515,14.0732524 17.549732,14.0827061 C15.9457422,17.8952642 15.0592,22.0839513 15.0592,26.48 C15.0592,36.5375363 19.6986901,45.5111087 26.9543228,51.3773697 C23.5783459,50.482396 20.5420179,48.692057 18.1436223,46.1810463 C17.4112079,45.4142419 16.1958508,45.3863633 15.4290463,46.1187777 C14.6622419,46.8511921 14.6343633,48.0665492 15.3667777,48.8333537 C19.6331341,53.3000339 25.5746006,55.8704 32,55.8704 C32.724404,55.8704 33.443406,55.8373168 34.155117,55.7721798 C37.8818103,57.415886 41.9817597,58.3696734 46.2926917,58.4710006 C45.9172206,58.6757101 45.535398,58.8714693 45.1489438,59.0592444 L45.609587,58.8302444 C45.3946418,58.9393765 45.178143,59.0459998 44.9601385,59.1500977 L45.1489438,59.0592444 C44.9355697,59.1629213 44.7207836,59.2641642 44.5046066,59.3629588 L44.9601385,59.1500977 C44.7571821,59.2470102 44.5529207,59.3417339 44.3473928,59.4342556 L44.3469165,59.4344791 L43.7072,59.7136 L43.7072,59.7136 C40.1951158,61.1990737 36.47481,61.990954 32.6401523,62.070195 L32,62.0768 C27.9392,62.0768 24,61.2816 20.2928,59.7136 C16.7104,58.1984 13.4944,56.0288 10.7312,53.2672 C7.968,50.504 5.7984,47.2864 4.2848,43.7056 C2.7168,39.9984 1.9216,36.0592 1.9216,31.9984 C1.9216,27.9376 2.7168,23.9984 4.2848,20.2912 C5.8,16.7088 7.9696,13.4928 10.7312,10.7296 C13.4944,7.9664 16.712,5.7968 20.2928,4.2832 L20.2928,4.2832 L20.9349038,4.02025808 C21.1375572,3.93997852 21.3408754,3.86197962 21.5448408,3.78626495 L21.0715107,3.96652707 C21.3291715,3.86590693 21.5878975,3.76896407 21.8476525,3.67570582 L21.5448408,3.78626495 C21.7494363,3.71031638 21.9546829,3.63666619 22.1605629,3.56531798 L21.8476525,3.67570582 C22.0506333,3.60283085 22.2542425,3.53220584 22.4584629,3.46383428 L22.1605629,3.56531798 C22.3841624,3.48782902 22.608509,3.41305535 22.8335798,3.34100161 L22.4584629,3.46383428 C22.6766467,3.39078785 22.895528,3.32031357 23.1150859,3.25241569 L22.8335798,3.34100161 C23.041902,3.27430973 23.2508447,3.20994802 23.4603897,3.14792017 L23.1150859,3.25241569 C23.3254875,3.18734941 23.5365103,3.12464913 23.7481359,3.0643186 L23.4603897,3.14792017 C23.6976943,3.07767517 23.9357714,3.01042333 24.1745947,2.94617 L23.7481359,3.0643186 C23.9577295,3.00456734 24.1679144,2.94714055 24.3786726,2.89204187 L24.1745947,2.94617 C24.3982605,2.88599466 24.6225808,2.82844928 24.847534,2.77353826 L24.3786726,2.89204187 C24.6048001,2.83292519 24.8315876,2.77648856 25.0590127,2.72273647 L25.058675,2.72281629 L25.7053588,2.57756524 L25.7053588,2.57756524 L25.8129734,2.55418304 Z\",\n id: \"LEFT-DANDELION\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.3558778,2.44663197 C26.585114,2.40314779 26.8149433,2.36234447 27.0453437,2.32422647 L27.0452508,2.32424185 L27.0853093,2.31764233 L27.0853093,2.31764233 C27.0284958,3.08422723 27,3.85729635 27,4.6368 C27,22.133664 41.0413046,36.3499373 58.4708071,36.6325131 L59,36.6368 C59.9233977,36.6358775 60.837754,36.59613 61.7412289,36.5190905 C61.6787582,36.9442388 61.6058412,37.366914 61.5238801,37.787572 L61.6007678,37.3757553 C61.5612997,37.5948725 61.5193887,37.8134533 61.475039,38.0314789 L61.5238801,37.787572 C61.4831363,37.9966862 61.4401574,38.2053018 61.3949471,38.4134022 L61.475039,38.0314789 C61.4295915,38.2549015 61.381583,38.4777411 61.331018,38.6999777 L61.3949471,38.4134022 C61.3512885,38.6143595 61.305549,38.8148362 61.2577316,39.0148174 L61.331018,38.6999777 C61.2821466,38.9147711 61.230887,39.1290011 61.1772434,39.3426497 L61.2577316,39.0148174 C61.1996976,39.2575255 61.138603,39.4995036 61.0744532,39.7407246 L61.1772434,39.3426497 C61.1271141,39.5423015 61.0749029,39.7414456 61.020613,39.9400671 L61.0744532,39.7407246 C61.0227066,39.9353061 60.968972,40.1293949 60.9132523,40.3229769 L61.020613,39.9400671 C60.9579178,40.1694402 60.8924503,40.3981165 60.8242159,40.626073 L60.9132523,40.3229769 C60.848965,40.5463242 60.7820353,40.7689969 60.7124674,40.9909732 L60.8242159,40.626073 C60.7713302,40.8027527 60.7167823,40.979 60.6605746,41.1548045 L60.7124674,40.9909732 C60.6472982,41.1989144 60.5798139,41.4062445 60.5100182,41.6129456 L60.6605746,41.1548045 C60.5852725,41.3903314 60.5069913,41.6250634 60.4257366,41.858975 L60.4258081,41.8588014 C60.2098465,42.4804677 59.9729655,43.0961687 59.7152,43.7056 C58.2,47.288 56.0304,50.504 53.2688,53.2672 C53.0526208,53.4833792 52.8336603,53.6959252 52.6119622,53.904808 C52.4812237,54.0279903 52.3494382,54.1499849 52.2167083,54.2706976 C51.9434078,54.5192507 51.6662492,54.7622457 51.3851688,54.999758 L51.6355731,54.78582 C51.5220008,54.8839264 51.4077734,54.9811252 51.2928964,55.0774129 L51.3851688,54.999758 C51.2292663,55.1314953 51.0721572,55.2615458 50.9138551,55.3899005 L51.2928964,55.0774129 C51.0839679,55.2525326 50.8728905,55.4246384 50.6596959,55.5937082 L50.9138551,55.3899005 C50.7459747,55.5260215 50.5767525,55.6602351 50.4062042,55.7925306 L50.6596959,55.5937082 C50.4748368,55.7403072 50.288386,55.8846236 50.1003642,56.0266434 L50.4062042,55.7925306 C50.2492364,55.9142916 50.0911454,56.0344279 49.9319435,56.1529307 L50.1003642,56.0266434 C49.9384766,56.1489231 49.7754244,56.2695001 49.6112209,56.3883654 L49.9319435,56.1529307 C49.755583,56.2842058 49.5778592,56.4134765 49.3987893,56.5407312 L49.6112209,56.3883654 C49.4437826,56.5095724 49.2751471,56.6289996 49.1053285,56.7466374 L49.3987893,56.5407312 C49.231739,56.6594443 49.0635171,56.7764029 48.8941374,56.8915977 L49.1053285,56.7466374 C48.9207527,56.8744979 48.7347792,57.0002445 48.547426,57.1238649 L48.8941374,56.8915977 C48.7240197,57.0072944 48.552734,57.1212119 48.3802942,57.2333408 L48.547426,57.1238649 C48.3988883,57.2218739 48.2494833,57.3185465 48.0992202,57.4138764 L48.3802942,57.2333408 C48.1778017,57.3650114 47.9737177,57.4942155 47.7680648,57.6209378 L48.0992202,57.4138764 C47.9368792,57.5168687 47.7735364,57.6182939 47.6092033,57.7181442 L47.7680648,57.6209378 C47.5969053,57.7264054 47.4246589,57.8301539 47.2513388,57.9321745 L47.6092033,57.7181442 C47.4319973,57.8258162 47.2536396,57.9316568 47.0741445,58.0356565 L47.2513388,57.9321745 C47.0581185,58.0459087 46.8635637,58.1574953 46.6676921,58.2669221 L47.0741445,58.0356565 C46.8865282,58.1443616 46.6976692,58.2510554 46.5075838,58.3557267 L46.5076641,58.3556825 L46.2927331,58.4728916 L46.2927331,58.4728916 C41.9842394,58.3701447 37.8837864,57.4164536 34.1564423,55.7722712 C39.7744292,55.2574074 44.9374328,52.7460225 48.7174189,48.7439663 C49.4455325,47.9730768 49.4108558,46.7578947 48.6399663,46.0297811 C47.8690768,45.3016675 46.6538947,45.3363442 45.9257811,46.1072337 C42.3886539,49.8521634 37.3815236,52.0304 32,52.0304 C30.2621509,52.0304 28.5693892,51.8066285 26.9543655,51.3781276 C19.6986901,45.5111087 15.0592,36.5375363 15.0592,26.48 C15.0592,22.0836084 15.9458806,17.8946108 17.5501882,14.0818514 C17.9464951,14.118427 18.338911,13.9041169 18.5116981,13.5215623 C19.4976098,11.338732 21.6160813,10.5347993 23.5367872,11.2818995 L23.5367872,11.2818995 L23.571357,11.2946023 C24.0565973,11.4625825 24.5917671,11.2178503 24.7794995,10.7352128 C24.9717016,10.2410839 24.7269416,9.68470268 24.2328128,9.49250054 C22.7876855,8.93038697 21.2526598,8.96494147 19.9057124,9.54314228 C21.5332621,6.93933662 23.5253429,4.58683498 25.8102932,2.5565642 Z M23,14.16 C20.2385763,14.16 18,17.2581895 18,21.08 C18,24.9018105 20.2385763,28 23,28 C25.7614237,28 28,24.9018105 28,21.08 C28,17.2581895 25.7614237,14.16 23,14.16 Z\",\n id: \"MIDDLE-DANDELION\",\n fill: \"#F9D076\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,0 C49.6736,0 64,14.3264 64,32 C64,49.6736 49.6736,64 32,64 C14.3264,64 0,49.6736 0,32 C0,14.3264 14.3264,0 32,0 Z M32,1.92 C27.9392,1.92 24,2.7152 20.2928,4.2832 C16.712,5.7968 13.4944,7.9664 10.7312,10.7296 C7.9696,13.4928 5.8,16.7088 4.2848,20.2912 C2.7168,23.9984 1.9216,27.9376 1.9216,31.9984 C1.9216,36.0592 2.7168,39.9984 4.2848,43.7056 C5.7984,47.2864 7.968,50.504 10.7312,53.2672 C13.4944,56.0288 16.7104,58.1984 20.2928,59.7136 C24,61.2816 27.9392,62.0768 32,62.0768 C36.0608,62.0768 40,61.2816 43.7072,59.7136 C47.288,58.2 50.5056,56.0304 53.2688,53.2672 C56.0304,50.504 58.2,47.288 59.7152,43.7056 C61.2832,39.9984 62.0784,36.0592 62.0784,31.9984 C62.0784,27.9376 61.2832,23.9984 59.7152,20.2912 C58.2016,16.7104 56.032,13.4928 53.2688,10.7296 C50.5056,7.968 47.2896,5.7984 43.7072,4.2832 C40,2.7152 36.0624,1.92 32,1.92 Z M48.6399663,46.0297811 C49.4108558,46.7578947 49.4455325,47.9730768 48.7174189,48.7439663 C44.4580713,53.253546 38.4426876,55.8704 32,55.8704 C25.5746006,55.8704 19.6331341,53.3000339 15.3667777,48.8333537 C14.6343633,48.0665492 14.6622419,46.8511921 15.4290463,46.1187777 C16.1958508,45.3863633 17.4112079,45.4142419 18.1436223,46.1810463 C21.6893649,49.8932769 26.6293792,52.0304 32,52.0304 C37.3815236,52.0304 42.3886539,49.8521634 45.9257811,46.1072337 C46.6538947,45.3363442 47.8690768,45.3016675 48.6399663,46.0297811 Z M23,14.16 C25.7614237,14.16 28,17.2581895 28,21.08 C28,24.9018105 25.7614237,28 23,28 C20.2385763,28 18,24.9018105 18,21.08 C18,17.2581895 20.2385763,14.16 23,14.16 Z M41.08,14.16 C43.8414237,14.16 46.08,17.2581895 46.08,21.08 C46.08,24.9018105 43.8414237,28 41.08,28 C38.3185763,28 36.08,24.9018105 36.08,21.08 C36.08,17.2581895 38.3185763,14.16 41.08,14.16 Z M47.2910804,12.7316415 C47.5090995,13.2149351 47.2940521,13.7834613 46.8107585,14.0014804 C46.3274649,14.2194995 45.7589387,14.0044521 45.5409196,13.5211585 C44.5563374,11.3385872 42.4381982,10.5347805 40.5157876,11.281987 C40.0216104,11.4740648 39.4652908,11.2291649 39.273213,10.7349876 C39.0811352,10.2408104 39.3260351,9.68449082 39.8202124,9.49241301 C42.6746765,8.38293402 45.87765,9.59842139 47.2910804,12.7316415 Z M24.2328128,9.49250054 C24.7269416,9.68470268 24.9717016,10.2410839 24.7794995,10.7352128 C24.5917671,11.2178503 24.0565973,11.4625825 23.571357,11.2946023 L23.5367872,11.2818995 C21.6160813,10.5347993 19.4976098,11.338732 18.5116981,13.5215623 C18.293456,14.0047552 17.7248306,14.2195403 17.2416377,14.0012981 C16.7584448,13.783056 16.5436597,13.2144306 16.7619019,12.7312377 C18.1769049,9.59838954 21.3800246,8.38284671 24.2328128,9.49250054 Z\",\n id: \"FACE-OCEAN\",\n fill: \"#1B3140\",\n fillRule: \"nonzero\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMood6);\nexport default __webpack_public_path__ + \"static/media/mood-6.e7f27beb.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMood7(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"64px\",\n height: \"64px\",\n viewBox: \"0 0 64 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"EMOJI 07 QUITE HAPPY 64x64@2x\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"EMOJI-07-QUITE-HAPPY-64x64\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"YELLOW-BACKGROUND-BLEED\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\",\n cx: 32,\n cy: 32,\n r: 31\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,1.92 C36.0624,1.92 40,2.7152 43.7072,4.2832 C47.2896,5.7984 50.5056,7.968 53.2688,10.7296 C56.032,13.4928 58.2016,16.7104 59.7152,20.2912 C61.2832,23.9984 62.0784,27.9376 62.0784,31.9984 C62.0784,33.5246735 61.9660643,35.0337689 61.7425822,36.5198243 C60.8377745,36.5958422 59.9234081,36.6352 59,36.6352 L59,36.6368 C57.4688644,36.6368 55.9628511,36.5292738 54.4890991,36.3213604 C54.5702845,35.5750022 54.6112,34.8177743 54.6112,34.0512 C54.6112,32.9908133 53.7515867,32.1312 52.6912,32.1312 C51.6308133,32.1312 50.7712,32.9908133 50.7712,34.0512 L50.7712,34.0512 L50.7686901,34.34802 C50.7618482,34.7523138 50.7410545,35.1534089 50.7067476,35.5508785 C37.0530526,31.8978178 27,19.4416995 27,4.6368 C27,3.85749652 27.0284811,3.08462426 27.0837204,2.31916779 C28.6976308,2.05310101 30.3386387,1.92 32,1.92 Z M41.08,14.16 C38.3185763,14.16 36.08,17.2581895 36.08,21.08 C36.08,24.9018105 38.3185763,28 41.08,28 C43.8414237,28 46.08,24.9018105 46.08,21.08 C46.08,17.2581895 43.8414237,14.16 41.08,14.16 Z\",\n id: \"RIGHT-DANDELION\",\n fill: \"#FAE6B9\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8129734,2.55418304 C19.2157279,8.41478763 15.0592,16.9612893 15.0592,26.48 C15.0592,36.5340054 19.6954331,45.5048078 26.946682,51.3711901 C19.0254537,49.2564663 13.2288,42.2917521 13.2288,34.0512 L13.2288,34.0512 L13.228192,34.002404 C13.2023028,32.9645671 12.3528731,32.1312 11.3088,32.1312 C10.2484133,32.1312 9.3888,32.9908133 9.3888,34.0512 C9.3888,46.1189163 19.5286099,55.8704 32,55.8704 C32.7268163,55.8704 33.4457135,55.83728 34.1551463,55.7725117 C37.8828497,57.4162481 41.9832724,58.3699744 46.2946941,58.4710476 C45.4563992,58.9246873 44.5929102,59.3392113 43.7072,59.7136 C40,61.2816 36.0608,62.0768 32,62.0768 C27.9392,62.0768 24,61.2816 20.2928,59.7136 C16.7104,58.1984 13.4944,56.0288 10.7312,53.2672 C7.968,50.5056 5.7984,47.2864 4.2848,43.7056 C2.7168,39.9984 1.9216,36.0592 1.9216,31.9984 C1.9216,27.9376 2.7168,23.9984 4.2848,20.2912 C5.8,16.7088 7.9696,13.4928 10.7312,10.7296 C13.4928,7.9664 16.712,5.7968 20.2928,4.2832 C22.0488421,3.54046316 23.8569396,2.97112465 25.7053588,2.57756524 Z\",\n id: \"LEFT-DANDELION\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.4708071,36.6325131 L59,36.6368 C59.9237373,36.6358772 60.8384265,36.5961007 61.7422258,36.5190055 C61.3714942,38.9874731 60.6938775,41.3917269 59.7152,43.7056 C58.2,47.288 56.0304,50.504 53.2688,53.2672 C51.1889282,55.3470718 48.8516101,57.0906315 46.2957381,58.4712685 C41.9832808,58.3699746 37.8828656,57.4162518 34.1555476,55.771978 C44.845993,54.7961004 53.3868429,46.6337904 54.4904549,36.320978 C55.7927388,36.5052748 57.1216219,36.6106394 58.4708071,36.6325131 Z M27,4.6368 C27,19.4416995 37.0530526,31.8978178 50.7054096,35.5514068 C49.911886,44.7643861 41.8547591,52.0304 32,52.0304 C30.2484711,52.0304 28.5537285,51.8008703 26.9464532,51.371668 C19.6953846,45.5047142 15.0592,36.5339529 15.0592,26.48 C15.0592,16.9620942 19.215025,8.41623292 25.8112999,2.55566971 C26.2338936,2.46684089 26.658625,2.38763896 27.0853093,2.31764233 C27.0284958,3.08422723 27,3.85729635 27,4.6368 Z M23,14.16 C20.2385763,14.16 18,17.2581895 18,21.08 C18,24.9018105 20.2385763,28 23,28 C25.7614237,28 28,24.9018105 28,21.08 C28,17.2581895 25.7614237,14.16 23,14.16 Z\",\n id: \"MIDDLE-DANDELION\",\n fill: \"#F9D076\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,0 C49.6736,0 64,14.3264 64,32 C64,49.6736 49.6736,64 32,64 C14.3264,64 0,49.6736 0,32 C0,14.3264 14.3264,0 32,0 Z M32,1.92 C27.9392,1.92 24,2.7152 20.2928,4.2832 C16.712,5.7968 13.4928,7.9664 10.7312,10.7296 C7.9696,13.4928 5.8,16.7088 4.2848,20.2912 C2.7168,23.9984 1.9216,27.9376 1.9216,31.9984 C1.9216,36.0592 2.7168,39.9984 4.2848,43.7056 C5.7984,47.2864 7.968,50.5056 10.7312,53.2672 C13.4944,56.0288 16.7104,58.1984 20.2928,59.7136 C24,61.2816 27.9392,62.0768 32,62.0768 C36.0608,62.0768 40,61.2816 43.7072,59.7136 C47.288,58.2 50.5056,56.0304 53.2688,53.2672 C56.0304,50.504 58.2,47.288 59.7152,43.7056 C61.2832,39.9984 62.0784,36.0592 62.0784,31.9984 C62.0784,27.9376 61.2832,23.9984 59.7152,20.2912 C58.2016,16.7104 56.032,13.4928 53.2688,10.7296 C50.5056,7.968 47.2896,5.7984 43.7072,4.2832 C40,2.7152 36.0624,1.92 32,1.92 Z M52.6912,32.1312 C53.7515867,32.1312 54.6112,32.9908133 54.6112,34.0512 C54.6112,46.1189163 44.4713901,55.8704 32,55.8704 C19.5286099,55.8704 9.3888,46.1189163 9.3888,34.0512 C9.3888,32.9908133 10.2484133,32.1312 11.3088,32.1312 C12.3528731,32.1312 13.2023028,32.9645671 13.228192,34.002404 L13.2288,34.0512 C13.2288,43.9638688 21.6165587,52.0304 32,52.0304 C42.2796068,52.0304 50.6032453,44.1243928 50.7686901,34.34802 L50.7712,34.0512 C50.7712,32.9908133 51.6308133,32.1312 52.6912,32.1312 Z M23,14.16 C25.7614237,14.16 28,17.2581895 28,21.08 C28,24.9018105 25.7614237,28 23,28 C20.2385763,28 18,24.9018105 18,21.08 C18,17.2581895 20.2385763,14.16 23,14.16 Z M41.08,14.16 C43.8414237,14.16 46.08,17.2581895 46.08,21.08 C46.08,24.9018105 43.8414237,28 41.08,28 C38.3185763,28 36.08,24.9018105 36.08,21.08 C36.08,17.2581895 38.3185763,14.16 41.08,14.16 Z\",\n id: \"FACE-OCEAN\",\n fill: \"#1B3140\",\n fillRule: \"nonzero\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMood7);\nexport default __webpack_public_path__ + \"static/media/mood-7.609fb6a3.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMood8(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"64px\",\n height: \"64px\",\n viewBox: \"0 0 64 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"EMOJI 08 HAPPY 64x64@2x\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"EMOJI-08-HAPPY-64x64\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"YELLOW-BACKGROUND-BLEED\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\",\n cx: 32.5,\n cy: 32.5,\n r: 31.5\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,1.92 C36.0624,1.92 40,2.7152 43.7072,4.2832 C47.2896,5.7984 50.5056,7.968 53.2688,10.7296 C56.032,13.4928 58.2016,16.7104 59.7152,20.2912 C61.2832,23.9984 62.0784,27.9376 62.0784,31.9984 L62.071181,32.6676006 C62.065746,32.9191504 62.0572436,33.1702069 62.0456791,33.4207438 L62.0613958,33.024657 C62.0552181,33.2106557 62.0473585,33.3963769 62.0378191,33.5818097 L62.0456791,33.4207438 C62.0348553,33.6552376 62.021349,33.8892761 62.0051647,34.1228375 L62.0378191,33.5818097 C62.0235238,33.8596901 62.0054564,34.1369229 61.9836242,34.413472 L62.0051647,34.1228375 C61.9901907,34.3389323 61.9729244,34.5546187 61.953369,34.7698795 L61.9836242,34.413472 C61.966116,34.6352474 61.9461867,34.8565831 61.9238401,35.0774602 L61.953369,34.7698795 C61.9265311,35.0653055 61.895382,35.3599298 61.8599307,35.6537081 L61.9238401,35.0774602 C61.8996219,35.316836 61.8725644,35.5556732 61.8426726,35.7939481 L61.8599307,35.6537081 C61.8267746,35.9284666 61.7898553,36.202485 61.7491802,36.4757269 L61.7491493,36.4759341 L61.7425822,36.5198243 L61.7425822,36.5198243 C60.8377745,36.5958422 59.9234081,36.6352 59,36.6352 L59,36.6368 C57.3349242,36.6368 55.6995582,36.5096387 54.1030832,36.2644972 C54.1774797,35.5388301 54.2144,34.8066248 54.2144,34.0688 C54.2144,32.832 54.1072,31.5856 53.8944,30.3648 C53.7648,29.6176 53.1296,29.0656 52.3728,29.04 L52.3728,29.04 L52.3184,29.04 L52.1728474,29.0466133 C51.5003164,29.1079396 50.9290667,29.5901867 50.7648,30.2592 C50.3726358,31.8633469 49.5160167,33.4020569 48.2642426,34.7907516 C35.8707484,30.3784532 27,18.5439012 27,4.6368 C27,3.85749652 27.0284811,3.08462426 27.0837204,2.31916779 L27.7565027,2.21535524 C27.9600536,2.18669592 28.1640282,2.16011533 28.3684117,2.13561651 L27.8309626,2.20574561 C28.0837741,2.17065861 28.3372185,2.13880197 28.5912704,2.11017618 L28.3684117,2.13561651 C28.6024547,2.10756249 28.8370339,2.08223827 29.0721266,2.05964843 L28.5912704,2.11017618 C28.8140717,2.08507161 29.0373403,2.06245195 29.2610588,2.04231753 L29.0721266,2.05964843 C29.2901201,2.03870163 29.5085553,2.0201059 29.7274141,2.00386489 L29.2610588,2.04231753 C29.4940536,2.02134825 29.7275365,2.00307459 29.9614881,1.98749694 L29.7274141,2.00386489 C29.9437443,1.98781153 30.1604883,1.97405878 30.377629,1.96261017 L29.9614881,1.98749694 C30.1908848,1.97222256 30.4207321,1.95954024 30.6510117,1.94945033 L30.377629,1.96261017 C30.6556643,1.94795091 30.9343499,1.93706933 31.2136494,1.92997281 L30.6510117,1.94945033 C30.8667111,1.93999927 31.0827897,1.93282274 31.2992324,1.92792105 L31.2997527,1.92790542 L32,1.92 L32,1.92 Z M41.08,14.16 C38.3185763,14.16 36.08,17.2581895 36.08,21.08 C36.08,24.9018105 38.3185763,28 41.08,28 C43.8414237,28 46.08,24.9018105 46.08,21.08 C46.08,17.2581895 43.8414237,14.16 41.08,14.16 Z\",\n id: \"RIGHT-DANDELION\",\n fill: \"#FAE6B9\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8129734,2.55418304 C19.2157279,8.41478763 15.0592,16.9612893 15.0592,26.48 C15.0592,29.6492808 15.5198897,32.7109266 16.3779582,35.6016268 C14.6907128,34.012346 13.5518658,32.1828213 13.0816,30.2592 C12.9056,29.5408 12.2624,29.04 11.528,29.04 L11.528,29.04 L11.4704,29.04 L11.3300187,29.0509055 C10.636175,29.13555 10.0703,29.6658 9.9488,30.3648 C9.736,31.5856 9.6288,32.832 9.6288,34.0688 C9.6288,39.92 11.952,45.4208 16.1696,49.5552 C20.3792,53.6816 25.9728,55.9536 31.9216,55.9536 C32.7196513,55.9536 33.5113099,55.9127106 34.2940921,55.8319399 C37.9833802,57.4393764 42.0351411,58.3709281 46.2926917,58.4710006 C45.9172206,58.6757101 45.535398,58.8714693 45.1489438,59.0592444 L45.609587,58.8302444 C45.3946418,58.9393765 45.178143,59.0459998 44.9601385,59.1500977 L45.1489438,59.0592444 C44.9355697,59.1629213 44.7207836,59.2641642 44.5046066,59.3629588 L44.9601385,59.1500977 C44.7571821,59.2470102 44.5529207,59.3417339 44.3473928,59.4342556 L44.3469165,59.4344791 L43.7072,59.7136 L43.7072,59.7136 C40.1951158,61.1990737 36.47481,61.990954 32.6401523,62.070195 L32,62.0768 C27.9392,62.0768 24,61.2816 20.2928,59.7136 C16.7104,58.1984 13.4944,56.0288 10.7312,53.2672 C7.968,50.504 5.7984,47.2864 4.2848,43.7056 C2.7168,39.9984 1.9216,36.0592 1.9216,31.9984 C1.9216,27.9376 2.7168,23.9984 4.2848,20.2912 C5.8,16.7088 7.9696,13.4928 10.7312,10.7296 C13.4944,7.9664 16.712,5.7968 20.2928,4.2832 L20.2928,4.2832 L20.9349038,4.02025808 C21.1375572,3.93997852 21.3408754,3.86197962 21.5448408,3.78626495 L21.0715107,3.96652707 C21.3291715,3.86590693 21.5878975,3.76896407 21.8476525,3.67570582 L21.5448408,3.78626495 C21.7494363,3.71031638 21.9546829,3.63666619 22.1605629,3.56531798 L21.8476525,3.67570582 C22.0506333,3.60283085 22.2542425,3.53220584 22.4584629,3.46383428 L22.1605629,3.56531798 C22.3841624,3.48782902 22.608509,3.41305535 22.8335798,3.34100161 L22.4584629,3.46383428 C22.6766467,3.39078785 22.895528,3.32031357 23.1150859,3.25241569 L22.8335798,3.34100161 C23.041902,3.27430973 23.2508447,3.20994802 23.4603897,3.14792017 L23.1150859,3.25241569 C23.3254875,3.18734941 23.5365103,3.12464913 23.7481359,3.0643186 L23.4603897,3.14792017 C23.6976943,3.07767517 23.9357714,3.01042333 24.1745947,2.94617 L23.7481359,3.0643186 C23.9577295,3.00456734 24.1679144,2.94714055 24.3786726,2.89204187 L24.1745947,2.94617 C24.3982605,2.88599466 24.6225808,2.82844928 24.847534,2.77353826 L24.3786726,2.89204187 C24.6048001,2.83292519 24.8315876,2.77648856 25.0590127,2.72273647 L25.058675,2.72281629 L25.7053588,2.57756524 L25.7053588,2.57756524 L25.8129734,2.55418304 Z\",\n id: \"LEFT-DANDELION\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.4708071,36.6325131 L59,36.6368 C59.9233977,36.6358775 60.837754,36.59613 61.7412289,36.5190905 C61.6787582,36.9442388 61.6058412,37.366914 61.5238801,37.787572 L61.6007678,37.3757553 C61.5614207,37.5942008 61.5196457,37.8121131 61.4754468,38.0294737 L61.5238801,37.787572 C61.4831363,37.9966862 61.4401574,38.2053018 61.3949471,38.4134022 L61.4754468,38.0294737 C61.4298787,38.2535682 61.3817343,38.4770763 61.331018,38.6999777 L61.3949471,38.4134022 C61.3512885,38.6143595 61.305549,38.8148362 61.2577316,39.0148174 L61.331018,38.6999777 C61.2822995,38.9140991 61.2312077,39.1276607 61.1777468,39.3406446 L61.2577316,39.0148174 C61.2019461,39.2481221 61.1433325,39.4807523 61.0818956,39.7126839 L61.1777468,39.3406446 C61.1274637,39.5409682 61.0750846,39.7407807 61.020613,39.9400671 L61.0818956,39.7126839 C61.0278638,39.9166607 60.9716482,40.1200971 60.9132523,40.3229769 L61.020613,39.9400671 C60.959571,40.1633917 60.8959012,40.3860556 60.8296081,40.6080379 L60.9132523,40.3229769 C60.850413,40.5412936 60.7850489,40.7589658 60.7171642,40.975973 L60.8296081,40.6080379 C60.7750401,40.7907591 60.7186947,40.9730186 60.6605746,41.1548045 L60.7171642,40.975973 C60.650542,41.188944 60.5814921,41.4012747 60.5100182,41.6129456 L60.6605746,41.1548045 C60.5864557,41.3866305 60.5094506,41.6176865 60.4295647,41.847948 L60.4296202,41.8478207 C60.2505099,42.3640515 60.0569824,42.8761639 59.8490431,43.3840115 L59.7152,43.7056 C59.6399502,43.8835138 59.5630863,44.0605239 59.484616,44.2366197 L59.7152,43.7056 C58.2,47.288 56.0304,50.504 53.2688,53.2672 C52.9624103,53.5735897 52.6504338,53.8726812 52.3329948,54.1643894 L52.3330464,54.164342 C52.0222485,54.4499474 51.7062676,54.7284302 51.3851688,54.999758 L51.6445703,54.7780449 C51.5090588,54.8951958 51.3726141,55.0110539 51.2352451,55.1256131 L51.3851688,54.999758 C51.2292663,55.1314953 51.0721572,55.2615458 50.9138551,55.3899005 L51.2352451,55.1256131 C51.0516981,55.2786827 50.866501,55.4294332 50.6796753,55.5778501 L50.9138551,55.3899005 C50.748911,55.5236407 50.5826716,55.6555396 50.4151519,55.7855871 L50.6796753,55.5778501 C50.4882732,55.7299026 50.2951618,55.8795056 50.1003642,56.0266434 L50.4151519,55.7855871 C50.2552446,55.909725 50.0941708,56.0321759 49.9319435,56.1529307 L50.1003642,56.0266434 C49.9384766,56.1489231 49.7754244,56.2695001 49.6112209,56.3883654 L49.9319435,56.1529307 C49.755583,56.2842058 49.5778592,56.4134765 49.3987893,56.5407312 L49.6112209,56.3883654 C49.4437826,56.5095724 49.2751471,56.6289996 49.1053285,56.7466374 L49.3987893,56.5407312 C49.231739,56.6594443 49.0635171,56.7764029 48.8941374,56.8915977 L49.1053285,56.7466374 C48.9207527,56.8744979 48.7347792,57.0002445 48.547426,57.1238649 L48.8941374,56.8915977 C48.7240197,57.0072944 48.552734,57.1212119 48.3802942,57.2333408 L48.547426,57.1238649 C48.3988883,57.2218739 48.2494833,57.3185465 48.0992202,57.4138764 L48.3802942,57.2333408 C48.1778017,57.3650114 47.9737177,57.4942155 47.7680648,57.6209378 L48.0992202,57.4138764 C47.9368792,57.5168687 47.7735364,57.6182939 47.6092033,57.7181442 L47.7680648,57.6209378 C47.5969053,57.7264054 47.4246589,57.8301539 47.2513388,57.9321745 L47.6092033,57.7181442 C47.4319973,57.8258162 47.2536396,57.9316568 47.0741445,58.0356565 L47.2513388,57.9321745 C47.0581185,58.0459087 46.8635637,58.1574953 46.6676921,58.2669221 L47.0741445,58.0356565 C46.8865282,58.1443616 46.6976692,58.2510554 46.5075838,58.3557267 L46.5076641,58.3556825 L46.2927331,58.4728916 L46.2927331,58.4728916 C42.0369735,58.3713815 37.9841237,57.4396554 34.2933775,55.8322913 C39.346292,55.3106335 44.0287318,53.1280297 47.6736,49.5552 C51.3595144,45.9419972 53.5985525,41.286408 54.104498,36.2633902 C55.5302308,36.4836295 56.988262,36.6084773 58.4708071,36.6325131 Z M26.3558778,2.44663197 C26.585114,2.40314779 26.8149433,2.36234447 27.0453437,2.32422647 L27.0452508,2.32424185 L27.0853093,2.31764233 L27.0853093,2.31764233 C27.0284958,3.08422723 27,3.85729635 27,4.6368 C27,18.5441898 35.8711166,30.3789444 48.2636117,34.7913258 C47.2586597,35.9063263 45.9980702,36.9250913 44.5184,37.8032 C41.0272,39.8768 36.5536,41.0176 31.9232,41.0176 C27.2928,41.0176 22.8192,39.8752 19.328,37.8032 C18.2160052,37.1429698 17.2275021,36.4032239 16.3779414,35.6025993 C15.519996,32.7116336 15.0592,29.6496467 15.0592,26.48 C15.0592,16.9625784 19.2146022,8.41710246 25.8102932,2.5565642 Z M23,14.16 C20.2385763,14.16 18,17.2581895 18,21.08 C18,24.9018105 20.2385763,28 23,28 C25.7614237,28 28,24.9018105 28,21.08 C28,17.2581895 25.7614237,14.16 23,14.16 Z\",\n id: \"MIDDLE-DANDELION\",\n fill: \"#F9D076\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,0 C49.6736,0 64,14.3264 64,32 C64,49.6736 49.6736,64 32,64 C14.3264,64 0,49.6736 0,32 C0,14.3264 14.3264,0 32,0 Z M32,1.92 C27.9392,1.92 24,2.7152 20.2928,4.2832 C16.712,5.7968 13.4944,7.9664 10.7312,10.7296 C7.9696,13.4928 5.8,16.7088 4.2848,20.2912 C2.7168,23.9984 1.9216,27.9376 1.9216,31.9984 C1.9216,36.0592 2.7168,39.9984 4.2848,43.7056 C5.7984,47.2864 7.968,50.504 10.7312,53.2672 C13.4944,56.0288 16.7104,58.1984 20.2928,59.7136 C24,61.2816 27.9392,62.0768 32,62.0768 C36.0608,62.0768 40,61.2816 43.7072,59.7136 C47.288,58.2 50.5056,56.0304 53.2688,53.2672 C56.0304,50.504 58.2,47.288 59.7152,43.7056 C61.2832,39.9984 62.0784,36.0592 62.0784,31.9984 C62.0784,27.9376 61.2832,23.9984 59.7152,20.2912 C58.2016,16.7104 56.032,13.4928 53.2688,10.7296 C50.5056,7.968 47.2896,5.7984 43.7072,4.2832 C40,2.7152 36.0624,1.92 32,1.92 Z M11.528,29.04 C12.2624,29.04 12.9056,29.5408 13.0816,30.2592 C13.7888,33.152 16.008,35.832 19.328,37.8032 C22.8192,39.8752 27.2928,41.0176 31.9232,41.0176 C36.5536,41.0176 41.0272,39.8768 44.5184,37.8032 C47.84,35.832 50.0576,33.152 50.7648,30.2592 C50.9290667,29.5901867 51.5003164,29.1079396 52.1728474,29.0466133 L52.3184,29.04 L52.3728,29.04 C53.1296,29.0656 53.7648,29.6176 53.8944,30.3648 C54.1072,31.5856 54.2144,32.832 54.2144,34.0688 C54.2144,39.9216 51.8912,45.4208 47.6736,49.5552 C43.464,53.6816 37.8704,55.9536 31.9216,55.9536 C25.9728,55.9536 20.3792,53.6816 16.1696,49.5552 C11.952,45.4208 9.6288,39.92 9.6288,34.0688 C9.6288,32.832 9.736,31.5856 9.9488,30.3648 C10.0703,29.6658 10.636175,29.13555 11.3300187,29.0509055 L11.4704,29.04 L11.528,29.04 Z M37.824,50.3968 C35.4416,50.3968 33.1696,50.656 31.0896,51.1232 C29.0096,50.6544 26.7376,50.3968 24.3552,50.3968 C23.6224,50.3968 21.1968,50.9312 20.4864,50.9776 C23.1568,53.432 28.2848,54.3984 32.0176,54.3984 C35.7504,54.3984 40.3632,53.3952 43.008,51.0352 C41.7696,50.8848 39.144,50.3968 37.824,50.3968 Z M23,14.16 C25.7614237,14.16 28,17.2581895 28,21.08 C28,24.9018105 25.7614237,28 23,28 C20.2385763,28 18,24.9018105 18,21.08 C18,17.2581895 20.2385763,14.16 23,14.16 Z M41.08,14.16 C43.8414237,14.16 46.08,17.2581895 46.08,21.08 C46.08,24.9018105 43.8414237,28 41.08,28 C38.3185763,28 36.08,24.9018105 36.08,21.08 C36.08,17.2581895 38.3185763,14.16 41.08,14.16 Z\",\n id: \"FACE-OCEAN\",\n fill: \"#1B3140\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.008,51.0352 C41.7696,50.8848 39.144,50.3968 37.824,50.3968 C35.4416,50.3968 33.1696,50.656 31.0896,51.1232 C29.0096,50.6544 26.7376,50.3968 24.3552,50.3968 C23.6224,50.3968 21.1968,50.9312 20.4864,50.9776 C23.1568,53.432 28.2848,54.3984 32.0176,54.3984 C35.7504,54.3984 40.3632,53.3952 43.008,51.0352 Z\",\n id: \"ACCA-TONGUE--RED\",\n fill: \"#D33333\",\n fillRule: \"nonzero\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMood8);\nexport default __webpack_public_path__ + \"static/media/mood-8.9b91ab0c.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMood9(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"64px\",\n height: \"64px\",\n viewBox: \"0 0 64 64\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"EMOJI 09 VERY HAPPY 64x64@2x\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"EMOJI-09-VERY-HAPPY-64x64\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"YELLOW-BACKGROUND-BLEED\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\",\n cx: 32,\n cy: 32,\n r: 31\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.9824,18.272 L32.042374,18.2734957 C32.0560772,18.2738155 32.0697787,18.2742454 32.0834771,18.2747853 L32.0834771,18.2747853 L32.1622519,18.2783178 L32.2126509,18.2831499 C32.222985,18.2840818 32.2333152,18.2850765 32.2434454,18.2853287 C32.3420077,18.2954204 32.4401336,18.3112421 32.5376646,18.3336188 L32.5376646,18.3336188 L32.60955,18.3498782 C32.7229506,18.3784559 32.8349896,18.4148962 32.9444182,18.4596335 L32.9444182,18.4596335 L33.0263894,18.4936124 C33.0536076,18.5056601 33.0806848,18.5181988 33.107486,18.5317391 L33.107486,18.5317391 L33.1793097,18.5672772 C33.2130724,18.5848975 33.2465748,18.6033058 33.2797479,18.6229335 L33.2797479,18.6229335 L33.3337931,18.6545542 C33.3620697,18.6717878 33.3901282,18.6896032 33.4181074,18.7084529 L33.4546426,18.7329711 L33.4907065,18.7578089 C33.5138822,18.7742301 33.5368826,18.7910674 33.5596013,18.8084769 C33.5882073,18.8300811 33.6165237,18.8523388 33.6448343,18.8753417 L33.6448343,18.8753417 L33.7065889,18.9275227 C33.7350767,18.9522276 33.7632218,18.9776317 33.7910714,19.0037665 C33.8069356,19.018685 33.8226822,19.0338314 33.837892,19.0487923 C33.8705037,19.0808433 33.9025856,19.1138872 33.9338689,19.1477341 L33.9338689,19.1477341 L33.9737183,19.1915598 C33.9945149,19.214927 34.0150526,19.2387399 34.034932,19.2626309 C34.0590331,19.2914671 34.0827572,19.3209321 34.1063007,19.3512071 C34.1404015,19.3952133 34.1736552,19.4405663 34.2059577,19.4872107 C34.2109262,19.4943755 34.2158737,19.5015719 34.2208,19.5088 C34.5658526,20.0159579 34.8546172,20.5518416 35.1190772,21.1001111 L35.1190772,21.1001111 L35.2750925,21.4304285 C35.326296,21.5409425 35.3767831,21.6518213 35.4268099,21.7629341 L35.4268099,21.7629341 L35.7234919,22.4313731 C37.1505363,25.6656244 38.6207158,28.8768 46.3744,28.8768 C52.3631744,28.8768 57.4955002,25.2752978 59.6564921,20.1545686 C59.6765885,20.2001647 59.6959473,20.245653 59.7152,20.2912 C61.2832,23.9984 62.0784,27.9376 62.0784,31.9984 L62.071181,32.6676006 C62.0659558,32.9094379 62.0578955,33.1508194 62.047005,33.3917214 L62.0635204,32.958547 C62.0574414,33.1542632 62.0495012,33.3496736 62.0397022,33.5447658 L62.047005,33.3917214 C62.035965,33.6359276 62.0220166,33.8796412 62.0051647,34.1228375 L62.0397022,33.5447658 C62.0251219,33.8350529 62.0064264,34.1246354 61.9836242,34.413472 L62.0051647,34.1228375 C61.9884763,34.3636735 61.9689406,34.6040022 61.9465622,34.8437998 L61.9836242,34.413472 C61.966116,34.6352474 61.9461867,34.8565831 61.9238401,35.0774602 L61.9465622,34.8437998 C61.921304,35.1144572 61.8924245,35.3844381 61.8599307,35.6537081 L61.9238401,35.0774602 C61.9025669,35.2877273 61.8791029,35.4975789 61.8534516,35.7069989 L61.8534889,35.7066939 C61.8219757,35.9639705 61.7872063,36.2202922 61.7491493,36.4759341 L61.7425822,36.5198243 L61.7425822,36.5198243 C60.8377745,36.5958422 59.9234081,36.6352 59,36.6352 L59,36.6368 C57.3359679,36.6368 55.7016084,36.509798 54.1060854,36.264958 C54.1791165,35.5396999 54.216,34.8078569 54.216,34.0704 L54.216,34.0704 L54.216,34.024 L54.2104973,33.8607497 C54.1259264,32.5670298 53.07776,31.5776 51.7568,31.5776 C51.088,31.5776 50.4592,31.8432 49.9856,32.3248 C49.648,32.6688 48.9888,33.1264 47.1872,33.1264 C46.2016452,33.1264 45.0695021,32.9962453 43.8059387,32.8062995 C37.99977,29.6681896 33.2749818,24.7886431 30.3304025,18.8676793 L30.3926377,18.8181111 C30.4184925,18.7983365 30.444587,18.7790985 30.4706938,18.760733 C30.5013856,18.7389412 30.532386,18.7178793 30.5639563,18.6971207 C30.5789518,18.6873691 30.5940134,18.6777853 30.6088746,18.6688062 C30.6527148,18.6415352 30.6970916,18.6156726 30.7420262,18.5908175 C30.7526664,18.5850107 30.7633336,18.5792831 30.7741679,18.5739402 C30.8021819,18.5591633 30.8303765,18.5449302 30.8588025,18.530777 C30.8854436,18.5179027 30.9122321,18.5055085 30.9387669,18.4942489 C30.9606283,18.4845842 30.9825799,18.4752358 31.0047866,18.4656135 C31.127523,18.4152463 31.252868,18.3747011 31.3796924,18.3447127 C31.394372,18.3411653 31.4090729,18.3377491 31.4240021,18.3336992 C31.4592237,18.3258301 31.494558,18.3187134 31.5299721,18.3131035 C31.5486996,18.3097444 31.5674525,18.3065953 31.5860762,18.3029131 C31.6827447,18.2877509 31.7800043,18.2781651 31.8770601,18.2749766 C31.8920494,18.274358 31.9070424,18.2738712 31.9224038,18.2727047 L31.9224038,18.2727047 L31.9824,18.272 Z M32,1.92 C36.0624,1.92 40,2.7152 43.7072,4.2832 C44.3883214,4.57128486 45.0561977,4.88302587 45.710235,5.21799416 C45.8833486,5.30665922 46.0549886,5.396681 46.2256539,5.4883126 C46.6335243,5.70729322 47.0362393,5.93571476 47.4332259,6.17324196 L47.1359981,5.99772844 C47.3195379,6.10468304 47.5018785,6.2135621 47.6830054,6.32435517 L47.4332259,6.17324196 C47.6383685,6.29598396 47.8419814,6.42115744 48.044044,6.54874751 L47.6830054,6.32435517 C47.8584043,6.43164451 48.032665,6.54072871 48.2057744,6.65159831 L48.044044,6.54874751 C48.2094235,6.65317443 48.3737645,6.75922016 48.5370557,6.86687652 L48.2057744,6.65159831 C48.3896735,6.76937828 48.5722733,6.88917314 48.7535581,7.01097152 L48.5370557,6.86687652 C48.7073256,6.97913389 48.8764542,7.09314252 49.0444284,7.20889314 L48.7535581,7.01097152 C48.928896,7.12877448 49.1030038,7.24845167 49.2758672,7.3699928 L49.0444284,7.20889314 C49.236027,7.3409232 49.4261238,7.47521971 49.6146999,7.61176892 L49.2758672,7.3699928 C49.4439934,7.48820321 49.6109424,7.6081768 49.7767012,7.72990411 L49.6146999,7.61176892 C49.7430297,7.70469343 49.8706553,7.79866118 49.9975705,7.89366784 L49.7767012,7.72990411 C49.9638689,7.86735335 50.149519,8.00703857 50.3336327,8.14894615 L49.9975705,7.89366784 C50.1732474,8.02517665 50.3475634,8.15867604 50.5205025,8.29415455 L50.5204293,8.29409717 C50.764819,8.48554925 51.0063877,8.68089387 51.2451637,8.88015603 L27.2789178,8.88069682 C27.0949472,7.49219696 27,6.07559014 27,4.6368 C27,3.85749652 27.0284811,3.08462426 27.0837204,2.31916779 L27.7565027,2.21535524 C27.9600536,2.18669592 28.1640282,2.16011533 28.3684117,2.13561651 L27.8309626,2.20574561 C28.0837741,2.17065861 28.3372185,2.13880197 28.5912704,2.11017618 L28.3684117,2.13561651 C28.6024547,2.10756249 28.8370339,2.08223827 29.0721266,2.05964843 L28.5912704,2.11017618 C28.8140717,2.08507161 29.0373403,2.06245195 29.2610588,2.04231753 L29.0721266,2.05964843 C29.2901201,2.03870163 29.5085553,2.0201059 29.7274141,2.00386489 L29.2610588,2.04231753 C29.4940536,2.02134825 29.7275365,2.00307459 29.9614881,1.98749694 L29.7274141,2.00386489 C29.9437443,1.98781153 30.1604883,1.97405878 30.377629,1.96261017 L29.9614881,1.98749694 C30.1908848,1.97222256 30.4207321,1.95954024 30.6510117,1.94945033 L30.377629,1.96261017 C30.6556643,1.94795091 30.9343499,1.93706933 31.2136494,1.92997281 L30.6510117,1.94945033 C30.8667111,1.93999927 31.0827897,1.93282274 31.2992324,1.92792105 L31.2997527,1.92790542 L32,1.92 L32,1.92 Z\",\n id: \"RIGHT-DANDELION\",\n fill: \"#FAE6B9\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.32754192,20.1938569 C6.19385451,24.5739541 10.2397145,27.8352066 15.1330056,28.6685003 C15.2341874,30.1692036 15.4390548,31.6419089 15.7403525,33.0791458 C14.6165659,32.9546843 14.1348016,32.602679 13.8608,32.3248 C13.3872,31.8432 12.7584,31.5776 12.0896,31.5776 C10.7136,31.5776 9.6336,32.6512 9.6304,34.024 L9.6304,34.024 L9.6304,34.0704 L9.63497502,34.5197841 C9.75078396,40.202794 12.0617436,45.5284103 16.1712,49.5568 C20.3808,53.6832 25.9744,55.9552 31.9232,55.9552 C32.7216257,55.9552 33.5136528,55.9142722 34.2967939,55.8334262 C37.9855731,57.4398805 42.0362932,58.3709552 46.2926917,58.4710006 C45.9172206,58.6757101 45.535398,58.8714693 45.1489438,59.0592444 L45.609587,58.8302444 C45.3946418,58.9393765 45.178143,59.0459998 44.9601385,59.1500977 L45.1489438,59.0592444 C44.9355697,59.1629213 44.7207836,59.2641642 44.5046066,59.3629588 L44.9601385,59.1500977 C44.7571821,59.2470102 44.5529207,59.3417339 44.3473928,59.4342556 L44.3469165,59.4344791 L43.7072,59.7136 L43.7072,59.7136 C40.1951158,61.1990737 36.47481,61.990954 32.6401523,62.070195 L32,62.0768 C27.9392,62.0768 24,61.2816 20.2928,59.7136 C16.7104,58.1984 13.4944,56.0288 10.7312,53.2672 C7.968,50.504 5.7984,47.2864 4.2848,43.7056 C2.7168,39.9984 1.9216,36.0592 1.9216,31.9984 C1.9216,27.9376 2.7168,23.9984 4.2848,20.2912 L4.2848,20.2912 L4.2856,20.288092 Z M25.8129734,2.55418304 C23.7223307,4.41138696 21.8767928,6.53831744 20.3309633,8.88043848 L12.7550394,8.87929263 C12.9087451,8.75100006 13.063609,8.62433458 13.2196184,8.49930483 L12.9209406,8.74182265 C13.0725953,8.61706838 13.225361,8.49388411 13.3792258,8.37227798 L13.2196184,8.49930483 C13.3736746,8.37584037 13.5288479,8.25397093 13.685126,8.13370484 L13.3792258,8.37227798 C13.5783697,8.21488576 13.7793547,8.06013719 13.9821549,7.90804996 L13.685126,8.13370484 C13.8568892,8.0015219 14.0299872,7.87127578 14.2044036,7.74297753 L13.9821549,7.90804996 C14.1591062,7.77534781 14.3374394,7.64467181 14.5171375,7.5160337 L14.2044036,7.74297753 C14.3696183,7.62144799 14.536016,7.5016662 14.7035831,7.38364155 L14.5171375,7.5160337 C14.6827861,7.397453 14.8495945,7.28060398 15.0175491,7.16549586 L14.7035831,7.38364155 C14.8830779,7.25721568 15.0639145,7.132806 15.2460759,7.01042405 L15.0175491,7.16549586 C15.2129276,7.03159276 15.4098572,6.90004548 15.6083169,6.77086852 L15.2460759,7.01042405 C15.4160814,6.89620889 15.5872408,6.78375987 15.7595405,6.67308634 L15.6083169,6.77086852 C15.7392168,6.68566602 15.8707824,6.60149471 16.0030076,6.51835875 L16.0030525,6.5183305 C16.3545642,6.29731907 16.7107833,6.08359836 17.0715506,5.87727477 L17.0713009,5.87741754 C17.4435896,5.66450479 17.8204656,5.45960139 18.202053,5.26265026 L18.2024111,5.26246548 C18.584107,5.06545835 18.9708841,4.87623817 19.3622586,4.69507574 L19.3621935,4.69510586 L19.7091118,4.53717081 L19.7091118,4.53717081 L20.2928,4.2832 L20.2928,4.2832 L20.9349038,4.02025808 C21.1375572,3.93997852 21.3408754,3.86197962 21.5448408,3.78626495 L21.0944847,3.95756625 C21.3445498,3.86014837 21.5956167,3.76619266 21.8476525,3.67570582 L21.5448408,3.78626495 C21.7494363,3.71031638 21.9546829,3.63666619 22.1605629,3.56531798 L21.8476525,3.67570582 C22.0506333,3.60283085 22.2542425,3.53220584 22.4584629,3.46383428 L22.1605629,3.56531798 C22.3841624,3.48782902 22.608509,3.41305535 22.8335798,3.34100161 L22.4584629,3.46383428 C22.6766467,3.39078785 22.895528,3.32031357 23.1150859,3.25241569 L22.8335798,3.34100161 C23.041902,3.27430973 23.2508447,3.20994802 23.4603897,3.14792017 L23.1150859,3.25241569 C23.3278,3.18663427 23.541149,3.12327115 23.755114,3.06233019 L23.4603897,3.14792017 C23.6976943,3.07767517 23.9357714,3.01042333 24.1745947,2.94617 L23.755114,3.06233019 C23.9623946,3.00329304 24.1702533,2.94652909 24.3786726,2.89204187 L24.1745947,2.94617 C24.3982605,2.88599466 24.6225808,2.82844928 24.847534,2.77353826 L24.3786726,2.89204187 C24.6048001,2.83292519 24.8315876,2.77648856 25.0590127,2.72273647 L25.058675,2.72281629 L25.7053588,2.57756524 L25.7053588,2.57756524 L25.8129734,2.55418304 Z\",\n id: \"LEFT-DANDELION\",\n fill: \"#F8BC2D\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.4708071,36.6325131 L59,36.6368 C59.9233977,36.6358775 60.837754,36.59613 61.7412289,36.5190905 C61.6787582,36.9442388 61.6058412,37.366914 61.5238801,37.787572 L61.6191421,37.2727069 C61.5743749,37.5263545 61.5263384,37.7792881 61.475039,38.0314789 L61.5238801,37.787572 C61.4822203,38.0013874 61.4382238,38.2146817 61.3918944,38.4274369 L61.475039,38.0314789 C61.4370238,38.2183638 61.3972168,38.4048407 61.3556205,38.5908981 L61.3918944,38.4274369 C61.3449237,38.6431373 61.295555,38.8582835 61.243792,39.0728569 L61.3556205,38.5908981 C61.2998008,38.8405762 61.240759,39.0894986 61.1785016,39.3376369 L61.243792,39.0728569 C61.1956044,39.2726094 61.145342,39.4718655 61.0930077,39.67061 L61.1785016,39.3376369 C61.1225128,39.5607902 61.0639233,39.7833094 61.0027376,40.0051738 L61.0930077,39.67061 C61.0349637,39.8910376 60.9743712,40.110836 60.9112343,40.3299846 L61.0027376,40.0051738 C60.9517989,40.1898818 60.8990609,40.374136 60.8445261,40.5579245 L60.9112343,40.3299846 C60.849497,40.5442749 60.785327,40.757944 60.718728,40.9709724 L60.8445261,40.5579245 C60.7764456,40.7873633 60.705565,41.0160764 60.6318894,41.2440405 L60.718728,40.9709724 C60.6513079,41.1866272 60.5813987,41.4016255 60.5090044,41.6159474 L60.6318894,41.2440405 C60.5684858,41.4402212 60.5030123,41.6358472 60.4354722,41.8309037 L60.5090044,41.6159474 C60.4386423,41.8242528 60.3659327,42.0319193 60.2908793,42.2389283 L60.4354722,41.8309037 C60.3587003,42.0526215 60.2792581,42.2736035 60.1971506,42.4938281 L60.1972993,42.4934381 C60.045574,42.900379 59.8849137,43.3043484 59.7152,43.7056 C58.2,47.288 56.0304,50.504 53.2688,53.2672 C52.9752435,53.5607565 52.6765585,53.8476132 52.3728543,54.1276956 L52.3723598,54.1281516 C52.0416362,54.4331516 51.7044484,54.7305502 51.3614325,55.0197942 L51.361358,55.019857 C51.0405089,55.2904091 50.7144838,55.5538861 50.3834735,55.8101455 L50.6591015,55.5941796 C50.5068997,55.714874 50.353619,55.8340212 50.1992709,55.9516133 L50.3834735,55.8101455 C50.2339768,55.9258819 50.0834633,56.0401461 49.9319435,56.1529307 L50.1992709,55.9516133 C50.0049385,56.0996679 49.8089141,56.2452572 49.6112209,56.3883654 L49.9319435,56.1529307 C49.755583,56.2842058 49.5778592,56.4134765 49.3987893,56.5407312 L49.6112209,56.3883654 C49.4437826,56.5095724 49.2751471,56.6289996 49.1053285,56.7466374 L49.3987893,56.5407312 C49.2303944,56.6603998 49.0608091,56.7782855 48.8900473,56.8943789 L49.1053285,56.7466374 C48.9355292,56.8642618 48.7645471,56.9800973 48.5923961,57.0941342 L48.8900473,56.8943789 C48.711171,57.0159889 48.5310038,57.1356322 48.3495617,57.2532977 L48.5923961,57.0941342 C48.4352848,57.1982084 48.2771999,57.3007846 48.1181522,57.4018555 L48.3495617,57.2532977 C48.1571565,57.3780728 47.9633178,57.5006239 47.7680648,57.6209378 L48.1181522,57.4018555 C47.94958,57.508979 47.7799261,57.6144115 47.6092033,57.7181442 L47.7680648,57.6209378 C47.5942004,57.7280721 47.4192147,57.8334326 47.243121,57.9370099 L47.6092033,57.7181442 C47.4293216,57.8274419 47.2482532,57.9348526 47.066013,58.0403662 L47.243121,57.9370099 C47.061228,58.0439983 46.8781529,58.1490842 46.6939107,58.2522574 L47.066013,58.0403662 C46.8732692,58.1519611 46.6792147,58.2614339 46.4838669,58.3687725 L46.4842663,58.368553 L46.293287,58.4725924 L46.293287,58.4725924 C42.038351,58.3714138 37.9867455,57.440258 34.296959,55.8338508 C39.3491295,55.3116566 44.0308135,53.1291576 47.6752,49.5568 C51.3616026,45.9431186 53.6007456,41.2867746 54.106299,36.2629941 C55.5319307,36.483775 56.9891262,36.6084913 58.4708071,36.6325131 Z M43.555554,32.6699993 L43.8069342,32.8064491 C43.098873,32.7000213 42.3495385,32.5748104 41.5616,32.4432 C38.8795733,31.9952 35.8644338,31.4900551 32.6228518,31.4246936 L32.6228518,31.4246936 L31.9248,31.4176 L31.9232,31.4176 L31.2251482,31.4246737 C27.9835662,31.489856 24.9684267,31.9937067 22.2864,32.4432 C20.0928,32.8096 18.1984,33.1264 16.6592,33.1264 C16.312482,33.1264 16.0081344,33.1094519 15.7402724,33.079627 C15.4390544,31.6419008 15.2341874,30.1691994 15.132829,28.6681084 C15.9375473,28.8054699 16.7642924,28.8768 17.608,28.8768 C24.974481,28.8768 26.680987,26.1079145 27.9809062,23.1233198 L27.9809062,23.1233198 L28.1188668,22.8028327 L28.3231143,22.3205332 C28.3911068,22.1596711 28.4592786,21.9988441 28.5284374,21.8384448 L28.5284374,21.8384448 L28.6683101,21.5183327 C28.975256,20.8264963 29.3108456,20.1476051 29.7408,19.5136 C29.8172114,19.4009995 29.8987913,19.2960628 29.9849053,19.1987575 C30.0028692,19.1784479 30.0210272,19.1584717 30.0392278,19.1389504 C30.0667522,19.1094834 30.0947003,19.0807683 30.1236481,19.0522212 C30.1379304,19.0381363 30.1523144,19.0242419 30.1665429,19.0107915 C30.198032,18.9810033 30.2299901,18.9521168 30.262554,18.9239292 C30.2810467,18.9079485 30.2996827,18.8922614 30.3184702,18.8769478 L30.3184702,18.8769478 L30.3305093,18.867894 C33.2329061,24.703927 37.8648136,29.528188 43.555554,32.6699993 Z M27.0853093,2.31764233 C27.0284958,3.08422723 27,3.85729635 27,4.6368 C27,6.07562314 27.0949515,7.49226195 27.2789305,8.88079238 L20.3312732,8.87996896 C21.8763788,6.53903407 23.7208931,4.41308075 25.8102932,2.5565642 C26.2199129,2.46974725 26.631708,2.39265937 27.0453437,2.32422647 L27.0452508,2.32424185 L27.0853093,2.31764233 L27.0853093,2.31764233 Z\",\n id: \"MIDDLE-DANDELION\",\n fill: \"#F9D076\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32,0 C40.5840607,0 48.3785031,3.37965668 54.1253466,8.88098939 L54.5152,8.8816 L54.7350899,8.88581203 C58.0909175,9.01462816 60.7056,12.0818723 60.7056,15.848 C60.6635872,16.3796957 60.5916797,16.9031431 60.4915285,17.4167169 C62.7342922,21.7893358 64,26.7468088 64,32 C64,49.6736 49.6736,64 32,64 C14.3264,64 0,49.6736 0,32 C0,26.7660797 1.25643851,21.825712 3.48416318,17.4640491 C3.39955914,17.0377944 3.33420572,16.6038426 3.28937631,16.1639494 L3.2608,15.848 L3.26453061,15.6033968 C3.37609584,11.9517068 5.97654617,9.01472978 9.2584024,8.88600078 L9.4832,8.8816 L9.87439321,8.88123849 C9.88617298,8.86996171 9.89796135,8.85869385 9.90975831,8.84743491 C15.653219,3.36591744 23.4334054,0 32,0 Z M31.9824,18.272 C31.1424,18.272 30.3024,18.6864 29.7408,19.5136 C29.3108456,20.1476051 28.975256,20.8264963 28.6683101,21.5183327 L28.5284374,21.8384448 C28.4592786,21.9988441 28.3911068,22.1596711 28.3231143,22.3205332 L28.1188668,22.8028327 L27.9809062,23.1233198 C26.680987,26.1079145 24.974481,28.8768 17.608,28.8768 C11.6278397,28.8768 6.49986153,25.2932393 4.32711407,20.1928526 L4.2848,20.2912 L4.2848,20.2912 C2.7168,23.9984 1.9216,27.9376 1.9216,31.9984 C1.9216,36.0592 2.7168,39.9984 4.2848,43.7056 C5.7984,47.2864 7.968,50.504 10.7312,53.2672 C13.4944,56.0288 16.7104,58.1984 20.2928,59.7136 C24,61.2816 27.9392,62.0768 32,62.0768 C36.0608,62.0768 40,61.2816 43.7072,59.7136 C47.288,58.2 50.5056,56.0304 53.2688,53.2672 C56.0304,50.504 58.2,47.288 59.7152,43.7056 C61.2832,39.9984 62.0784,36.0592 62.0784,31.9984 C62.0784,27.9376 61.2832,23.9984 59.7152,20.2912 L59.6563633,20.1548739 C57.4952962,25.275441 52.3630554,28.8768 46.3744,28.8768 C38.6207158,28.8768 37.1505363,25.6656244 35.7234919,22.4313731 L35.4268099,21.7629341 C35.3767831,21.6518213 35.326296,21.5409425 35.2750925,21.4304285 L35.1190772,21.1001111 C34.8546172,20.5518416 34.5658526,20.0159579 34.2208,19.5088 C33.6592,18.6848 32.8224,18.272 31.9824,18.272 Z M31.9248,31.4176 L32.6228518,31.4246936 C35.8644338,31.4900551 38.8795733,31.9952 41.5616,32.4432 C43.7552,32.8096 45.6496,33.1264 47.1872,33.1264 C48.9888,33.1264 49.648,32.6688 49.9856,32.3248 C50.4592,31.8432 51.088,31.5776 51.7568,31.5776 C53.07776,31.5776 54.1259264,32.5670298 54.2104973,33.8607497 L54.216,34.024 L54.216,34.0704 C54.216,39.9232 51.8928,45.4224 47.6752,49.5568 C43.4656,53.6832 37.872,55.9552 31.9232,55.9552 C25.9744,55.9552 20.3808,53.6832 16.1712,49.5568 C12.0617436,45.5284103 9.75078396,40.202794 9.63497502,34.5197841 L9.6304,34.0704 L9.6304,34.024 C9.6336,32.6512 10.7136,31.5776 12.0896,31.5776 C12.7584,31.5776 13.3872,31.8432 13.8608,32.3248 C14.2,32.6688 14.8576,33.1264 16.6592,33.1264 C18.1984,33.1264 20.0928,32.8096 22.2864,32.4432 C24.9684267,31.9937067 27.9835662,31.489856 31.2251482,31.4246737 L31.9232,31.4176 L31.9248,31.4176 Z M41.056,44.7952 C37.4352,44.7952 33.9808,45.4768 30.8208,46.712 C27.6592,45.4768 24.2048,44.7952 20.5856,44.7952 C19.635382,44.7952 16.8119213,45.8215227 15.3357594,46.198637 C19.1087526,51.1489715 25.1335116,54.3536 31.9216,54.3536 C38.6380873,54.3536 44.6072635,51.2162201 48.387736,46.3548253 C46.3604312,45.8647377 42.8858009,44.7952 41.056,44.7952 Z M31.9214,33.01744 L31.2780765,33.0239831 C25.4936551,33.1374776 20.3065143,34.7264 16.6592,34.7264 C14.9968,34.7264 13.6544,34.3952 12.72,33.4448 C12.5376,33.2592 12.3104,33.176 12.0896,33.176 C11.6834462,33.176 11.2950154,33.4582059 11.2376601,33.9093579 L11.2304,34.0256 L11.2304,34.0688 C11.2304,35.3523315 11.3519983,36.608015 11.5849612,37.8242954 C13.4942585,37.9529102 17.5061371,38.2168861 21.5924521,38.446858 L22.030464,38.47136 L23.1169807,38.5307769 C26.6090152,38.718425 29.97034,38.8656 31.9232,38.8656 L32.1924121,38.8647335 C34.2222469,38.8521204 37.5444521,38.7033212 40.9642741,38.5181068 L41.4533551,38.4914106 L42.1785064,38.4510994 L42.5407519,38.430655 L43.263011,38.38932 C46.556362,38.1991666 49.6906142,37.9958373 51.5836728,37.8703243 L52.2586834,37.8253842 C52.4579848,36.7819249 52.575794,35.7103163 52.6053863,34.6171494 L52.6128,34.0688 L52.6128,34.0256 C52.6112,33.5072 52.1936,33.176 51.7536,33.176 C51.5312,33.176 51.3056,33.2592 51.1232,33.4448 C50.1904,34.3968 48.8464,34.7264 47.184,34.7264 C43.4,34.7264 37.9632,33.0176 31.9214,33.01744 Z M9.4848,10.8016 L9.24647024,10.8092455 C9.23001828,10.8103037 9.21359067,10.8114707 9.19718792,10.8127459 C9.13364639,10.8176772 9.0699747,10.8242988 9.00671272,10.8325351 L9.19718792,10.8127459 C9.11660253,10.8190112 9.03661722,10.8278895 8.95729315,10.8393091 L9.00671272,10.8325351 C8.83602679,10.8547573 8.66832328,10.8887339 8.50420543,10.933757 C8.48150514,10.9399815 8.45843406,10.9465468 8.43543596,10.9533298 L8.50420543,10.933757 C8.43621535,10.952409 8.36884066,10.9729569 8.30212424,10.9953503 L8.43543596,10.9533298 C8.35999338,10.9755806 8.28533605,11.0001737 8.21152366,11.0270389 L8.30212424,10.9953503 C8.2129733,11.0252738 8.12499777,11.0584928 8.03830002,11.094887 L8.21152366,11.0270389 C8.14398967,11.051619 8.07716298,11.0781011 8.01108934,11.1064317 L8.03830002,11.094887 C7.96123123,11.1272391 7.88517215,11.1621004 7.81019465,11.1993865 L8.01108934,11.1064317 C7.92295049,11.1442232 7.83615161,11.1853039 7.75080124,11.2295463 L7.81019465,11.1993865 C7.74162601,11.2334855 7.67396195,11.2696124 7.60725746,11.3077028 L7.75080124,11.2295463 C6.66597574,11.7918783 5.81515811,12.8649915 5.42120631,14.1873664 L5.34942963,14.4516 C5.34503498,14.4694774 5.34072252,14.4873952 5.33649277,14.5053528 C5.31796002,14.5831183 5.3011107,14.6622471 5.2858716,14.7420731 L5.33649277,14.5053528 C5.3129695,14.6052223 5.29200432,14.7063242 5.27368546,14.8085551 L5.2858716,14.7420731 C5.26893324,14.8308003 5.25398423,14.9203889 5.24108477,15.010774 L5.27368546,14.8085551 C5.25096912,14.9353266 5.2323221,15.0638342 5.21791263,15.1938804 C5.21196095,15.2474787 5.20675545,15.3012358 5.20227765,15.3552376 L5.21791263,15.1938804 C5.20760555,15.2869023 5.19946662,15.3807114 5.1935574,15.4752355 L5.20227765,15.3552376 C5.19081895,15.4934285 5.18412569,15.6332221 5.1824,15.7744 C5.20375771,16.0234414 5.23280659,16.2709946 5.269407,16.5167766 C5.27894942,16.5808718 5.28907274,16.6452533 5.29971365,16.7095077 L5.269407,16.5167766 C5.28845284,16.6446747 5.30954353,16.7720933 5.33265941,16.8989923 L5.29971365,16.7095077 C5.31810652,16.8205718 5.33804582,16.9312563 5.3595185,17.0415346 L5.33265941,16.8989923 C5.35686523,17.0318749 5.38329171,17.1641878 5.41191627,17.2958854 L5.3595185,17.0415346 C5.38332224,17.1637846 5.40901035,17.2855356 5.4365651,17.4067515 L5.41191627,17.2958854 C5.43879243,17.4195388 5.46760635,17.5426498 5.49833932,17.6651804 L5.4365651,17.4067515 C5.95340354,19.6803727 7.12695254,21.7657594 8.84003133,23.4255453 L9,23.576 L8.9148,23.4946 L8.83264609,23.2758564 C8.11916876,21.3221972 7.39490663,18.279753 7.8976,14.7152 C8.18126482,12.7044971 9.32287524,11.550594 10.5456036,10.8884095 L10.7098,10.8016 L9.4848,10.8016 Z M32,1.92 C27.9392,1.92 24,2.7152 20.2928,4.2832 C17.5536718,5.44102633 15.0270687,6.98270875 12.7538126,8.88031659 L51.2461601,8.88098761 C49.138409,7.12188409 46.8130284,5.66805752 44.3008593,4.54178189 L43.7072,4.2832 C40,2.7152 36.0624,1.92 32,1.92 Z\",\n id: \"FACE-OCEAN\",\n fill: \"#1B3140\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.056,44.7952 C42.8858009,44.7952 46.3604312,45.8647377 48.387736,46.3548253 C44.6072635,51.2162201 38.6380873,54.3536 31.9216,54.3536 C25.1335116,54.3536 19.1087526,51.1489715 15.3357594,46.198637 C16.8119213,45.8215227 19.635382,44.7952 20.5856,44.7952 C24.2048,44.7952 27.6592,45.4768 30.8208,46.712 C33.9808,45.4768 37.4352,44.7952 41.056,44.7952 Z\",\n id: \"ACCA-TONGUE--RED\",\n fill: \"#D33333\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.8976,14.7152 C7.37557227,18.4168511 8.17669625,21.555459 8.91485212,23.4964145 C6.75423102,21.4380865 5.43412271,18.7096111 5.1824,15.7744 C5.216,13.0256 7.1328,10.8016 9.4848,10.8016 L9.4848,10.8016 L10.7127692,10.8011252 C9.42843062,11.4474639 8.19415867,12.6131015 7.8976,14.7152 Z\",\n id: \"LEFT-MIDDLE-GLASSES\",\n fill: \"#EBEFF2\",\n fillRule: \"nonzero\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.9214,33.01744 C37.9632,33.0176 43.4,34.7264 47.184,34.7264 C48.8464,34.7264 50.1904,34.3968 51.1232,33.4448 C51.3056,33.2592 51.5312,33.176 51.7536,33.176 C52.1936,33.176 52.6112,33.5072 52.6128,34.0256 L52.6128,34.0688 L52.6128,34.0688 C52.6128,35.3523315 52.4912017,36.608015 52.2586834,37.8253842 C50.5055384,37.9425708 46.9859295,38.174364 43.263011,38.38932 L42.5407519,38.430655 C42.4200924,38.4374975 42.2993265,38.4443138 42.1785064,38.4510994 L41.4533551,38.4914106 C37.7077148,38.697425 34.01074,38.8656 31.9232,38.8656 C29.97034,38.8656 26.6090153,38.718425 23.1169807,38.5307769 L22.030464,38.47136 C17.7953817,38.2359141 13.5624476,37.9575036 11.5849612,37.8242954 C11.3519983,36.608015 11.2304,35.3523315 11.2304,34.0688 L11.2304,34.0256 L11.2304,34.0256 C11.2304,33.5072 11.6496,33.176 12.0896,33.176 C12.3104,33.176 12.5376,33.2592 12.72,33.4448 C13.6544,34.3952 14.9968,34.7264 16.6592,34.7264 C20.3065143,34.7264 25.4936551,33.1374776 31.2780765,33.0239831 L31.9214,33.01744 Z\",\n id: \"WHITE-TEETH\",\n fill: \"#F1F2F2\",\n fillRule: \"nonzero\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMood9);\nexport default __webpack_public_path__ + \"static/media/mood-9.96f38569.svg\";\nexport { ForwardRef as ReactComponent };","/*\r\n * A central library to server images from. \r\n */\r\n\r\nimport RetinaImage from 'react-retina-image';\r\n\r\nimport ImgAccaLogoX1 from '../../assets/img/acca_logo.png';\r\nimport ImgAccaLogoX2 from '../../assets/img/acca_logo@2x.png';\r\nimport ImgAccaLogoX3 from '../../assets/img/acca_logo@3x.png';\r\nimport ImgAccaLogoTxtX1 from '../../assets/img/acca_logo_txt.png';\r\nimport ImgAccaLogoTxtX2 from '../../assets/img/acca_logo_txt@2x.png';\r\nimport ImgAccaLogoTxtX3 from '../../assets/img/acca_logo_txt@3x.png';\r\n\r\nimport ImgQuadX1 from '../../assets/img/quad.png';\r\nimport ImgQuadX2 from '../../assets/img/quad@2x.png';\r\nimport ImgQuadX3 from '../../assets/img/quad@3x.png';\r\n\r\nimport TickWht from '../../assets/img/tick-wht.png';\r\nimport TickBlk from '../../assets/img/tick-blk.png';\r\n\r\nimport Pointer from '../../assets/img/pointer.svg';\r\nimport { ReactComponent as ImgTick } from '../../assets/img/tick.svg';\r\nimport { ReactComponent as ImgReset } from '../../assets/img/reset.svg';\r\nimport { ReactComponent as ImgTickCircled } from '../../assets/img/icon-tick-circled.svg';\r\nimport { ReactComponent as ImgFlagCircled } from '../../assets/img/icon-flag-circled.svg';\r\nimport { ReactComponent as ImgPlusCircled } from '../../assets/img/icon-plus-circled.svg';\r\nimport { ReactComponent as ImgStudyPlanning } from '../../assets/img/icon-study-planning.svg';\r\nimport { ReactComponent as ImgExamPlanning } from '../../assets/img/icon-exam-planning.svg';\r\n\r\nimport { ReactComponent as ImgMood1 } from '../../assets/img/mood-1.svg';\r\nimport { ReactComponent as ImgMood2 } from '../../assets/img/mood-2.svg';\r\nimport { ReactComponent as ImgMood3 } from '../../assets/img/mood-3.svg';\r\nimport { ReactComponent as ImgMood4 } from '../../assets/img/mood-4.svg';\r\nimport { ReactComponent as ImgMood5 } from '../../assets/img/mood-5.svg';\r\nimport { ReactComponent as ImgMood6 } from '../../assets/img/mood-6.svg';\r\nimport { ReactComponent as ImgMood7 } from '../../assets/img/mood-7.svg';\r\nimport { ReactComponent as ImgMood8 } from '../../assets/img/mood-8.svg';\r\nimport { ReactComponent as ImgMood9 } from '../../assets/img/mood-9.svg';\r\n\r\n\r\n/*\r\n * Export the jpg, png or svg images.\r\n * Some icons don't appear here as they are custom font icons.\r\n */\r\n// PNG's\r\nexport const ImgLogo = () => ;\r\nexport const ImgLogoTxt = () => ;\r\nexport const ImgQuad = () => ;\r\nexport const ImgQuadx3 = () => ;\r\nexport const IconTickWht = () => \"\";\r\nexport const IconTickBlk = () => \"\";\r\nexport const IconPointer = () => \"Take;\r\n\r\n// SVG's\r\nexport const IconTick = () => ;\r\nexport const IconReset = () => ;\r\nexport const IconTickCircled = () => ;\r\nexport const IconFlagCircled = () => ;\r\nexport const IconPlusCircled = () => ;\r\nexport const IconStudyPlanning = () => ;\r\nexport const IconExamPlanning = () => ;\r\n\r\nexport const IconMood1 = () => ;\r\nexport const IconMood2 = () => ;\r\nexport const IconMood3 = () => ;\r\nexport const IconMood4 = () => ;\r\nexport const IconMood5 = () => ;\r\nexport const IconMood6 = () => ;\r\nexport const IconMood7 = () => ;\r\nexport const IconMood8 = () => ;\r\nexport const IconMood9 = () => ;\r\n\r\n\r\n/*** Scripts end... */","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAylpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmVkYTJiM2ZhYywgMjAyMS8xMS8xNy0xNzoyMzoxOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkJDM0NENEQ3RjdGMTFFQzhBODJBMzgxRUFGMTRCMzgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkJDM0NENEM3RjdGMTFFQzhBODJBMzgxRUFGMTRCMzgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTY4OTE4NUY1Q0RCMTFFQjkxMjNBNTBBMUI1RkI3NzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OTY4OTE4NjA1Q0RCMTFFQjkxMjNBNTBBMUI1RkI3NzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4p4UFPAAAHeklEQVR4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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAylpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmVkYTJiM2ZhYywgMjAyMS8xMS8xNy0xNzoyMzoxOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTUzMDAzMDg3RjdGMTFFQ0ExQjM5OTIwQUJENDA2MzEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTUzMDAzMDc3RjdGMTFFQ0ExQjM5OTIwQUJENDA2MzEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OERGMjc0RDI1RDc0MTFFQjg4NEI5NjE0NjcxQ0I3REYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OERGMjc0RDM1RDc0MTFFQjg4NEI5NjE0NjcxQ0I3REYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4/JXu9AAARvklEQVR4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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAYAAAA9zQYyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAylpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmVkYTJiM2ZhYywgMjAyMS8xMS8xNy0xNzoyMzoxOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjRFQjBDNUM3RjdFMTFFQ0E5QThDMkQyMUJEMEZDRTQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjRFQjBDNUI3RjdFMTFFQ0E5QThDMkQyMUJEMEZDRTQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OThFRkEzRDM1RDc1MTFFQkI5QjZDMENGOUE5MTY2NUYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OThFRkEzRDQ1RDc1MTFFQkI5QjZDMENGOUE5MTY2NUYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7mRVhTAAAbCUlEQVR4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\"","import React from 'react';\r\n\r\nimport { ImgLogo, ImgQuad, ImgQuadx3, IconPointer, IconTick } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This PreRender component temporarily draws some invisible text & images to force\r\n * them to load. So that when the real content appears the fonts don't jump.\r\n */\r\nconst PreRender = () => {\r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n
Font
\r\n
Font
\r\n
Font
\r\n
Font
\r\n
Font
\r\n
Font
\r\n {ImgLogo()}\r\n {ImgQuad()}\r\n {ImgQuadx3()}\r\n {IconTick()}\r\n {IconPointer()}\r\n
\r\n )\r\n \r\n \r\n}\r\n\r\nexport default PreRender\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext } from 'react';\r\nimport { Route, useHistory } from 'react-router-dom';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\n\r\n\r\nconst ProtectedRoute = ({ component: Component, ...rest }) => {\r\n \r\n \r\n // Reference hooks.\r\n const history = useHistory();\r\n \r\n // Reference Context API's. \r\n const authenticationContext = useContext(AuthenticationContext);\r\n \r\n // Destructure Context API's. \r\n const { userAuthenticated,\r\n examStudyDaysData } = authenticationContext;\r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return {\r\n \r\n switch (userAuthenticated) {\r\n case true: \r\n // If the browser was refreshed and we therefore don't have \r\n // any 'examStudyDaysData' redirect the user to the home page.\r\n return examStudyDaysData === null ? history.push('/') : ;\r\n default:\r\n history.push('/');\r\n return null; \r\n }\r\n \r\n }}/>\r\n \r\n \r\n};\r\n\r\nexport default ProtectedRoute;\r\n\r\n/*** Scripts end... */\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAA8CAYAAACEqoEvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjQzRUMzNjcyNUZFNDExRUI5MzM1ODhDN0M1QjQ4RjA0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjQzRUMzNjczNUZFNDExRUI5MzM1ODhDN0M1QjQ4RjA0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDNFQzM2NzA1RkU0MTFFQjkzMzU4OEM3QzVCNDhGMDQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDNFQzM2NzE1RkU0MTFFQjkzMzU4OEM3QzVCNDhGMDQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6S4EnOAAABGklEQVR42rzXgQ2CMBCF4fPGqXM4gsQZHM3OY+cREpuUpu29uyttQqIEPvsDKtwer3cgokT98d2XQMDgfXkK20QCx4FtwjYfDRaEjCQchhNGs1IzNiU1Y1NSuXjtTi0xd2qJuVO5eu9KrTFXao25Urmxzjy7FmY+bi3MnMqdHUypPcyU2sNMqTzYQZ06wtSpI0ydysKnq1IlTJUqYapUCVOlIhicimBwKoLBqSgGpaIYfK+BjIjMfDmW/jd8o7N9R7GInpylGJyIYFFz/S3DVIkSFrVfsSWYOnGERcuvyOWYKbGHmWZ1OWZObGHmWbUw6SlkQzHpCUT6/zxhrsQacyWWmDuxxNyJJeZOzNiUxIxNSczYlMRj/AQYAFoIT36EiHcpAAAAAElFTkSuQmCC\"","import React, { useContext, useRef, useEffect } from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport useWindowDimensions from '../hooks/getWindowDimensions';\r\n\r\nimport ChevronTailB from '../../assets/img/chevron-tail-b.png';\r\nimport ChevronMidB from '../../assets/img/chevron-mid-b.png';\r\nimport ChevronPointB from '../../assets/img/chevron-point-b.png';\r\n\r\n\r\n/*\r\n * This ExamHeader component displays exam section titles.\r\n */\r\nconst ExamHeader = () => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context api's.\r\n const { userAuthenticated } = authenticationContext;\r\n const { staticsData,\r\n toggleCheckboxModal,\r\n setExamHeaderHeight } = appContext;\r\n \r\n // Get window dimensions.\r\n const { winHeight } = useWindowDimensions();\r\n \r\n // Define some DOM reference hooks.\r\n const contentRef = useRef(null);\r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const getTitle = ID => {\r\n \r\n const section = staticsData.examSectionType.find(item => item.ID === ID);\r\n \r\n if ( typeof section !== 'undefined' ) return section.label;\r\n else return '';\r\n \r\n };\r\n \r\n const getDescription = (ID, descID) => {\r\n \r\n const section = staticsData.examSectionType.find(item => item.ID === ID);\r\n \r\n if ( typeof section !== 'undefined' ) {\r\n \r\n if ( descID === 1 ) return section.description1;\r\n else return section.description2;\r\n \r\n }\r\n else return '';\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component event handlers.\r\n */\r\n \r\n const onClickSectionHeader = () => {\r\n \r\n if ( !userAuthenticated ) toggleCheckboxModal(true);\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // Store the height of the exam header bar, used to set the height of the reset button.\r\n if ( contentRef !== null ) setExamHeaderHeight(contentRef.current.clientHeight);\r\n \r\n // eslint-disable-next-line \r\n }, [contentRef, winHeight]);\r\n\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n
\r\n\r\n {/* Tail chevron - this is covered by the reset btn, but will get printed by the snapshot */}\r\n
\"\"
\r\n \r\n {/* Section Title - Applied Knowledge */}\r\n
\r\n
\r\n
\r\n

{getTitle(1)}

\r\n

{getDescription(1, 1)}

\r\n
\r\n
\r\n
\r\n \r\n
\"\"
\r\n \r\n {/* Section Title - Applied Skills */}\r\n
\r\n
\r\n
\r\n

{getTitle(2)}

\r\n

{getDescription(2, 1)}

\r\n
\r\n
\r\n
\r\n \r\n
\"\"
\r\n \r\n {/* Section Title - EPSM (Ethics Module) */}\r\n
\r\n
\r\n
\r\n

{getTitle(3)}

\r\n
\r\n
\r\n
\r\n \r\n
\"\"
\r\n \r\n {/* Section Title - Strategic Professional */}\r\n
\r\n
\r\n
\r\n

{getTitle(4)}

\r\n

\r\n {getDescription(4, 1)}{getDescription(4, 2)}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\"\"
\r\n \r\n
\r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default ExamHeader;\r\n\r\n\r\n/*** Scripts end... */\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI5Mjk3ODZFNUZFNDExRUJBOTgyQjY1RUM0MEFGMTcxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjI5Mjk3ODZGNUZFNDExRUJBOTgyQjY1RUM0MEFGMTcxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MjkyOTc4NkM1RkU0MTFFQkE5ODJCNjVFQzQwQUYxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MjkyOTc4NkQ1RkU0MTFFQkE5ODJCNjVFQzQwQUYxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz67L/CtAAABAElEQVR42qzWTQrCMBBA4Rh1rx7Cegh1J6ije8/g+RrsXg+hl9ADKGiEBkpIMg+xMJvy0R9em7a3OhyvxpjKKJv1UxuwfaGj8OLnTuDTT0OgIacPsGmPrMJ7e60qVE//E7y2o8LiUX+G2UoxzFayiX2OwmSlFExWspmbdBTWFN7iSraQ1/0dnruVSvDVrWSVV8VReAqVNPgIlSxYJByFNYVvCvcUCoEjP3MCt36GBAop0/ezJnDpZ0Kg0OcRwamfGYF7+hYKgeNQQ4ObUEODQlazQbdGCS66NUpQ6BqOYBXXyMEd/XIJgckaKZiskYJC/gCyNWKYrRFDAasFhx8BBgBcjC597F8p/wAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU2M0U2NjI1NUZFNDExRUJCMTlCQzkwMUQ2NkU5MjA4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU2M0U2NjI2NUZFNDExRUJCMTlCQzkwMUQ2NkU5MjA4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTYzRTY2MjM1RkU0MTFFQkIxOUJDOTAxRDY2RTkyMDgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTYzRTY2MjQ1RkU0MTFFQkIxOUJDOTAxRDY2RTkyMDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7TEm+xAAAA0klEQVR42qzW7QmDMBCA4euN4x4d4Q5n6Gi5eZp5WkMVP2Lu/VEhoPLAG0wUH8/5NYlIleTQ7zABxwKdwuk3Uigkv0KnMM3r7twodAqHeT1dG4VO4W1eO/ecQqOwm9ebuTuFRuElr4NVcwqNwkNek/3qFBqFW17Bm+oUGoUtT2DLU2gUCoXxV7h8ZN8EBp0jgi1LYNDHg+CWzWDQlUHwkB3BoJsCwUv2Dgbdjwh2sz0Y9FUoBNbRL4OS7BkWAmv2p6Iku4eFwDS7wqDfnkLgR4ABABVRKH+aGnuBAAAAAElFTkSuQmCC\"","/*\r\n * A collection of useful functions globally accessible to the app.\r\n */\r\n\r\n\r\n// Open an external link in the browser.\r\nexport const openExtLink = (url, newTab) => {\r\n \r\n if ( typeof newTab === 'undefined' ) newTab = false;\r\n \r\n if ( newTab ) window.open(url);\r\n else window.location.assign(url);\r\n \r\n};\r\n\r\n// Define the current & next 11 months based on user location.\r\nexport const defineMonths = (isStr) => {\r\n \r\n const date = new Date();\r\n const curMonthIdx = date.getMonth();\r\n \r\n let monthsArr = [];\r\n \r\n if ( isStr ) monthsArr = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];\r\n else monthsArr = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\r\n \r\n // Rearrange monthsArr dependent on current month.\r\n const passedArr = monthsArr.filter((item, idx) => idx < curMonthIdx);\r\n const ongoingArr = monthsArr.filter((item, idx) => idx >= curMonthIdx);\r\n \r\n return [...ongoingArr, ...passedArr];\r\n \r\n};\r\n\r\n// Define the current & next 11 months based on user location with matching year.\r\nexport const defineMonthsYears = (isStr) => {\r\n \r\n const date = new Date();\r\n const curMonthIdx = date.getMonth();\r\n const curYearNum = date.getFullYear();\r\n \r\n let monthsArr = [\r\n { month: '01', year: ''},\r\n { month: '02', year: ''},\r\n { month: '03', year: ''},\r\n { month: '04', year: ''},\r\n { month: '05', year: ''},\r\n { month: '06', year: ''},\r\n { month: '07', year: ''},\r\n { month: '08', year: ''},\r\n { month: '09', year: ''},\r\n { month: '10', year: ''},\r\n { month: '11', year: ''},\r\n { month: '12', year: ''}\r\n ];\r\n \r\n // Rearrange monthsArr dependent on current month.\r\n const passedArr = monthsArr.filter((item, idx) => idx < curMonthIdx);\r\n const ongoingArr = monthsArr.filter((item, idx) => idx >= curMonthIdx);\r\n \r\n // Inject the current year + 1 as this month will now appear next year.\r\n passedArr.forEach(item => {\r\n \r\n item.year = (curYearNum + 1).toString();\r\n \r\n });\r\n \r\n // Inject the current year as this month hasn't passed yet so is this year.\r\n ongoingArr.forEach(item => {\r\n \r\n item.year = (curYearNum).toString();\r\n \r\n });\r\n \r\n return [...ongoingArr, ...passedArr];\r\n \r\n};\r\n\r\n// Return month name based on month number.\r\nexport const getMonthLongName = (ukDate) => {\r\n \r\n const dateArr = ukDate.split('/');\r\n const usDate = dateArr[1] + '/' + dateArr[0] + '/' + dateArr[2]\r\n const tmpDate = new Date(usDate);\r\n \r\n return tmpDate.toLocaleString('default', { month: 'long' });\r\n \r\n};\r\n\r\n// Get current year.\r\nexport const defineYear = (rowMonth) => {\r\n \r\n const date = new Date();\r\n const curMonthIdx = date.getMonth();\r\n const monthsArr = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];\r\n const rowMonthIdx = monthsArr.indexOf(rowMonth);\r\n \r\n let curYearNum = date.getFullYear();\r\n \r\n // If the 'rowMonth' has already passed in the current year\r\n // then we will be displaying that month for the next year\r\n // so add 1 to the current year.\r\n if ( rowMonthIdx < curMonthIdx ) curYearNum++;\r\n \r\n return curYearNum;\r\n \r\n};\r\n\r\n// Get matching date suffix, i.e. 'st' for 1st, 'nd' for 2nd, etc.\r\nexport const getDateSuffix = (val) => {\r\n \r\n switch (val) {\r\n case 1:\r\n case 21:\r\n case 31:\r\n return 'st';\r\n case 2:\r\n case 22:\r\n return 'nd';\r\n case 3:\r\n case 23:\r\n return 'rd';\r\n default:\r\n return 'th';\r\n }\r\n \r\n};\r\n\r\nexport const getSince1970 = (units) => {\r\n \r\n // Return the current number of months/weeks since computer date staretd on 01/01/1970.\r\n const curDate = new Date();\r\n const misSince1970 = curDate.getTime();\r\n \r\n if ( units === 'mn' ) return Math.round(misSince1970 / 2629800000);\r\n else if ( units === 'wk' ) return Math.round(misSince1970 / 604800000);\r\n else return Math.round(misSince1970 / 86400000);\r\n \r\n};\r\n\r\nexport const getSessionDate = (sessionUNID, examsSessionData, type) => {\r\n \r\n const monthArr = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n const monthShoArr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\n const session = examsSessionData.find(item => item.UNID === sessionUNID);\r\n const dateObj = new Date(session.date);\r\n\r\n if ( type === 'short' ) return monthShoArr[dateObj.getMonth()] + ' ' + dateObj.getFullYear();\r\n else return monthArr[dateObj.getMonth()] + ' ' + dateObj.getFullYear();\r\n \r\n};\r\n\r\nexport const getSessionWeek = (sessionUNID, examsSessionData, units) => {\r\n \r\n // Return the exam week number since computer date started on 01/01/1970.\r\n const session = examsSessionData.find(item => item.UNID === sessionUNID);\r\n \r\n // 'session' may be undefined because we can't find an examSession with a UNID that matches \r\n // the usergiven userExam examSessionUNID. This could happen if the session took place\r\n // in a different year to the one currently displayed on the planner.\r\n if ( typeof session === 'undefined' ) return null;\r\n \r\n const dateObj = new Date(session.date);\r\n const misSince1970 = dateObj.getTime();\r\n\r\n if ( units === 'mn' ) return Math.round(misSince1970 / 2629800000);\r\n else if ( units === 'wk' ) return Math.round(misSince1970 / 604800000);\r\n else return Math.round(misSince1970 / 86400000);\r\n \r\n};\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useRef, useState, useEffect } from 'react';\r\n\r\nimport AppContext from '../../context/app/AppContext';\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport { getSince1970,\r\n getSessionWeek } from '../hooks/utilityFunctions';\r\n\r\n\r\n/*\r\n * This ExamCell component displays the exam button & countdown leading up to that exam.\r\n */\r\nconst ExamCell = ({ monthObj, eventsArr, examData, examStatus, dimBtns, onClickExamEvent, onClickGotoStudyPlanner, onClickExamTimeline }) => {\r\n \r\n \r\n // Reference Context api's. \r\n const appContext = useContext(AppContext);\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { staticsData } = appContext;\r\n const { userAuthenticated,\r\n userExamData,\r\n examsSessionData,\r\n curFetching } = authenticationContext;\r\n const { isVisible } = modalContext;\r\n \r\n // Element reference hooks.\r\n const cellRef = useRef(null);\r\n const timelineRef = useRef(null);\r\n \r\n // Component state.\r\n const [eventObj, setEventObj] = useState(null);\r\n const [btnDisabled, setBtnDisabled] = useState(true);\r\n const [btnPlanActive, setBtnPlanActive] = useState(false);\r\n const [hideTimeline, setHideTimeline] = useState(false);\r\n const [timeoutPlan, setTimeoutPlan] = useState(false);\r\n\r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const drawButton = () => {\r\n \r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n const matchingEvent = staticsData.examType.find(item => item.ID === examData.type);\r\n const typeOnDemandExam = staticsData.examType.find(item => item.ID === 1);\r\n const typeExam = staticsData.examType.find(item => item.ID === 2);\r\n const typeEPSExam = staticsData.examType.find(item => item.ID === 3);\r\n const btnPlanObj = staticsData.callToActionButtons.find(item => item.ID === 1)\r\n const cellHeight = cellRef.current.clientHeight;\r\n const timelinePos = cellHeight - 1;\r\n const btnDimDisable = ( userAuthenticated && typeof userExam !== 'undefined' && userExam.studyPeriodLength > 0 ) ? ' btn-dim btn-disable' : ' btn-dim';\r\n const noTime = ( typeof userExam !== 'undefined' && userExam.examSessionUNID !== null && examData.type !== 3 ) ? noStudyTime(userExam.examSessionUNID) : false;\r\n \r\n // Event type can be 'BOOK', 'EXAM' or 'ONDEMANDEXAM'.\r\n return (\r\n <>\r\n \r\n {/* Exam timeline: START */}\r\n
onClickTimeline(eventObj.UNID)}>\r\n
\r\n
\r\n
\r\n
\r\n {/* Exam timeline: STOP */}\r\n \r\n {/* Exam/Plan buttons: START */}\r\n { examData.type === typeExam.ID && \r\n <>\r\n { userExam && userExam.examSessionUNID === eventObj.UNID && userExam.studyPeriodLength > 0 ?\r\n <>\r\n { curFetching === 'userexam/session' && btnPlanActive ?\r\n
\r\n \r\n
\r\n :\r\n \r\n }\r\n \r\n :\r\n \r\n }\r\n \r\n }\r\n { examData.type === typeOnDemandExam.ID && \r\n <>\r\n { userExam && userExam.examSessionUNID === eventObj.UNID && userExam.studyPeriodLength > 0 ?\r\n <>\r\n { curFetching === 'userexam/session' && btnPlanActive ?\r\n
\r\n \r\n
\r\n :\r\n \r\n }\r\n \r\n :\r\n \r\n }\r\n \r\n }\r\n { examData.type === typeEPSExam.ID && \r\n \r\n }\r\n {/* Event button: STOP */}\r\n \r\n \r\n );\r\n \r\n };\r\n \r\n const cssHighlight = sessionUNID => {\r\n \r\n const session = userExamData.find(item => item.examSessionUNID === sessionUNID);\r\n \r\n if ( typeof session !== 'undefined' ) return true;\r\n else return false;\r\n \r\n };\r\n \r\n const cssDim = sessionUNID => {\r\n \r\n const session = userExamData.find(item => item.examSessionUNID === sessionUNID);\r\n \r\n if ( dimBtns && typeof session === 'undefined' ) return true;\r\n else return false;\r\n \r\n };\r\n \r\n const drawTimeline = userExam => {\r\n \r\n // If userExam status is 1/exempt or 2/passed there is no timeline so bail.\r\n if ( userExam.statusType === 1 || userExam.statusType === 2 ) return;\r\n \r\n // Get height of a cell & a bar in the cell.\r\n const cellHeight = cellRef.current.clientHeight;\r\n const barHeight = Math.round( ( cellHeight + 2 ) / 4 ); \r\n const planning = staticsData.studyActivityType.find(item => item.ID === 2);\r\n const learning = staticsData.studyActivityType.find(item => item.ID === 3);\r\n const revision = staticsData.studyActivityType.find(item => item.ID === 4);\r\n const planningPeriod = getStudyPeriods('planning');\r\n const learningPeriod = getStudyPeriods('learning');\r\n const revisionPeriod = getStudyPeriods('revision');\r\n const weeksUntil = getWeeksUntil(userExam.examSessionUNID);\r\n const periodArr = [];\r\n \r\n // Guard against a null value in 'weeksUntil', if so then bail.\r\n if ( weeksUntil === null || weeksUntil < 1 ) return;\r\n \r\n // Populate array with period types.\r\n for ( let i = 0; i < planningPeriod; i++ ) { periodArr.push('planning'); }\r\n for ( let i = 0; i < learningPeriod; i++ ) { periodArr.push('learning'); }\r\n for ( let i = 0; i < revisionPeriod; i++ ) { periodArr.push('revision'); }\r\n \r\n // Trim array if weeksUntil is less than length of array.\r\n let trimmedArr = periodArr.slice(-weeksUntil);\r\n let barType = planning;\r\n let htmlStr = '';\r\n \r\n for ( let i = 0; i < trimmedArr.length; i++ ) {\r\n \r\n if ( trimmedArr[i] === 'planning' ) barType = planning;\r\n else if ( trimmedArr[i] === 'learning' ) barType = learning;\r\n else if ( trimmedArr[i] === 'revision' ) barType = revision;\r\n \r\n htmlStr += `
`;\r\n \r\n }\r\n\r\n // Insert the html into the timeline element.\r\n timelineRef.current.innerHTML = htmlStr;\r\n \r\n };\r\n \r\n const getStudyPeriods = activity => {\r\n \r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n const studyData = staticsData.sessionStudyPeriods.find(item => item.ID === examData.type);\r\n const studyType = studyData[userExam.statusType === 3 ? 'take' : 'retake'];\r\n const studyPeriod = studyType.studyPeriod.find(item => item.weeksUntil === userExam.studyPeriodLength);\r\n const lastStudyPeriod = studyType.studyPeriod[studyType.studyPeriod.length - 1];\r\n const revisionWeeks = typeof studyPeriod === 'undefined' && studyType.exceedMax ? lastStudyPeriod.revisionWeeks : studyPeriod.revisionWeeks;\r\n const planningWeeks = ( userExam.studyPeriodLength - revisionWeeks ) > 1 ? 1 : 0;\r\n \r\n if ( activity === 'planning' ) return planningWeeks;\r\n else if ( activity === 'learning' ) return userExam.studyPeriodLength - ( revisionWeeks + planningWeeks );\r\n else return revisionWeeks;\r\n \r\n };\r\n \r\n const noStudyTime = sessionUNID => {\r\n \r\n // Set the number of weeks until the event, if the current month has already passed in the year do something...\r\n const weeksUntil = getWeeksUntil(sessionUNID);\r\n \r\n // Get the Study Period data that matches this userExam (Exam type: 1/ondemandExam, 2/exam & exam StatusType: 3/taking, 4/retaking).\r\n const examUser = userExamData.find(item => item.examUNID === examData.UNID);\r\n const statusKey = examUser.statusType === 3 ? 'take' : 'retake';\r\n const studyPeriods = staticsData.sessionStudyPeriods.find(item => item.ID === examData.type);\r\n const studyPeriod = studyPeriods[statusKey];\r\n \r\n // If 'weeksUntil' is null then return false to noStudyTime().\r\n if ( weeksUntil === null ) return false;\r\n \r\n // Else check if the number of weeks until the event is less than the number of min study weeks for the event & return.\r\n else return ( weeksUntil - studyPeriod.minWeeks ) < 0;\r\n \r\n };\r\n \r\n const getWeeksUntil = sessionUNID => {\r\n \r\n // Get the Current day number & Session day number (should be first day of the month).\r\n const curDayNum = getSince1970('dy');\r\n const sessionDayNum = getSessionWeek(sessionUNID, examsSessionData, 'dy');\r\n \r\n if ( sessionDayNum === null ) return null;\r\n else return Math.round((sessionDayNum - curDayNum) / 7);\r\n \r\n };\r\n \r\n \r\n \r\n \r\n /*\r\n * Component event handlers.\r\n */\r\n \r\n const onClickBtnPlan = () => {\r\n \r\n if ( userAuthenticated ) setTimeoutPlan(true);\r\n \r\n onClickGotoStudyPlanner();\r\n \r\n };\r\n \r\n const onClickTimeline = sessionUNID => {\r\n \r\n if ( userAuthenticated ) setTimeoutPlan(true);\r\n \r\n onClickExamTimeline(sessionUNID);\r\n \r\n };\r\n \r\n \r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // If this month cell has a matching exam for this month & year, then draw a button.\r\n eventsArr.forEach(item => {\r\n \r\n if ( item.date !== '' ) {\r\n \r\n // Convert JSON ISO date to a date object.\r\n const dateObj = new Date(item.date);\r\n const sessionMonth = dateObj.getMonth() + 1;\r\n const sessionYear = dateObj.getFullYear();\r\n \r\n if ( sessionMonth === parseInt(monthObj.month) && \r\n sessionYear === parseInt(monthObj.year) ) setEventObj(item);\r\n \r\n }\r\n\r\n });\r\n\r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n // Check that we have an eventObj.\r\n if ( eventObj !== null ) {\r\n \r\n // If we have a matching 'userExam' & Session & 'studyPeriodLength' draw a timeline.\r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n \r\n if ( typeof userExam !== 'undefined' && \r\n userExam.statusType !== 0 &&\r\n userExam.examSessionUNID === eventObj.UNID && \r\n userExam.studyPeriodLength > 0 ) drawTimeline(userExam);\r\n \r\n }\r\n\r\n // eslint-disable-next-line \r\n }, [eventObj]);\r\n \r\n useEffect(() => {\r\n \r\n // Check that we have an eventObj.\r\n if ( eventObj !== null ) {\r\n \r\n // Check that we have a matching userExam.\r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n \r\n // If 'userExamData' changes & the one that's changed matches this one update the timeline.\r\n if ( typeof userExam !== 'undefined' && \r\n userExam.statusType !== 0 ) {\r\n \r\n if ( userExam.examSessionUNID === eventObj.UNID &&\r\n userExam.studyPeriodLength > 0 ) drawTimeline(userExam);\r\n else timelineRef.current.innerHTML = '';\r\n \r\n }\r\n // Else clear any timeline.\r\n else timelineRef.current.innerHTML = '';\r\n \r\n }\r\n\r\n // eslint-disable-next-line \r\n }, [userExamData]);\r\n\r\n useEffect(() => {\r\n \r\n // If examStatus equals 1/exempt or 2/passed then hide the timeline\r\n // otherwise it can sometimes be seen when the exam stick is collapsed.\r\n if ( examStatus === 1 || examStatus === 2 ) setHideTimeline(true);\r\n else setHideTimeline(false);\r\n \r\n \r\n // eslint-disable-next-line \r\n }, [examStatus]);\r\n \r\n useEffect(() => {\r\n \r\n // If we have a modal open then no need to disable the btns below it.\r\n if ( userAuthenticated && isVisible ) return;\r\n \r\n setBtnDisabled(curFetching === '' ? false : true);\r\n \r\n if ( curFetching === '' ) setBtnPlanActive(false);\r\n \r\n // eslint-disable-next-line \r\n }, [curFetching]);\r\n \r\n useEffect(() => {\r\n \r\n let timer = null;\r\n \r\n // Trigger a Timeout for the Plan button spinner.\r\n if ( timeoutPlan ) {\r\n \r\n setTimeoutPlan(false);\r\n \r\n timer = setTimeout(() => { setBtnPlanActive(true) }, 100);\r\n \r\n }\r\n \r\n // When component unmounts, clear any timeouts.\r\n return () => {\r\n \r\n if ( timer !== null ) clearTimeout(timer);\r\n \r\n };\r\n \r\n // eslint-disable-next-line \r\n }, [timeoutPlan]);\r\n \r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n \r\n { eventObj !== null ? drawButton() : null}\r\n \r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default ExamCell;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useEffect} from 'react';\r\nimport DOMPurify from 'dompurify';\r\n\r\nimport { ImgQuad } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This TmplInsModal component is a wrapper template for instructional modals (the blue ones). It creates the generic\r\n * header & footer content & dislays the body content passed through to it via transclusion.\r\n */\r\nconst TmplInsModal = ({children, txtTitleA, txtFooter}) => {\r\n \r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n //...\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n \r\n {/* Quad graphic */}\r\n
\r\n
\r\n {ImgQuad()}\r\n Compass\r\n
\r\n
\r\n \r\n {/* Modal headers */}\r\n

\r\n \r\n {/* Modal body */}\r\n {children}\r\n \r\n {/* Modal footer */}\r\n { typeof txtFooter !== 'undefined' \r\n && \r\n
\r\n }\r\n \r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default TmplInsModal;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useEffect} from 'react';\r\nimport DOMPurify from 'dompurify';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\n\r\n\r\n/*\r\n * This TmplSysModal component is a wrapper template for system modals (the white ones). It creates the generic\r\n * header & footer content & dislays the body content passed through to it via transclusion.\r\n */\r\nconst TmplSysModal = ({children, txtTitleA, txtTitleB, txtFooter, showLoginLnk}) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context api's.\r\n const { signInUser } = authenticationContext;\r\n const { staticsData } = appContext;\r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n //...\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, [staticsData]);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n \r\n {/* Modal headers */}\r\n
\r\n

\r\n \r\n {/* Modal body */}\r\n {children}\r\n \r\n {/* Modal footer - Text */}\r\n { txtFooter !== '' ? \r\n
\r\n : null }\r\n \r\n {/* Modal footer - Login link shown on modals when user is not logged in. */}\r\n { ( typeof showLoginLnk !== 'undefined' && showLoginLnk ) &&\r\n
\r\n \r\n
\r\n }\r\n \r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default TmplSysModal;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport { openExtLink } from '../hooks/utilityFunctions';\r\nimport useWindowDimensions from '../hooks/getWindowDimensions';\r\n\r\n\r\n/*\r\n * This ModalContentLogin component displays the HTML for the Tag Exam modal.\r\n */\r\nconst ModalContentLogin = ({ cusAction }) => {\r\n \r\n \r\n // Reference Context api's\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { signInUser } = authenticationContext;\r\n const { hideModal } = modalContext;\r\n \r\n // Get window dimensions.\r\n const { winWidth } = useWindowDimensions();\r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const onClickContinue = () => {\r\n \r\n // \r\n if ( typeof cusAction !== 'undefined' && \r\n cusAction !== null ) cusAction();\r\n \r\n // Else if there is no custom action just hide the modal.\r\n else hideModal();\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n { winWidth > 360 &&\r\n

Plan for exam success in the year ahead:

\r\n }\r\n \r\n
Schedule and book your exams
\r\n \r\n { winWidth < 360 ?\r\n
Create day-to-day study plans
\r\n :\r\n
Add targets and tasks to detailed
day-to-day study plans
\r\n }\r\n \r\n { winWidth < 360 ?\r\n
Check off tasks and reflect!
\r\n :\r\n
Check off completed tasks and reflect
on your progress
\r\n } \r\n \r\n
\r\n We use cookies to personalise your experience, and by using this tool you are consenting to this. openExtLink('https://www.accaglobal.com/gb/en/footertoolbar/privacy/cookies-notice.html', true)}>Find out more about ACCA's use of cookies\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n Only logged in users can save their Exam Plans \r\n
and use the day-to-day Study Planning toolkit.\r\n
\r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default ModalContentLogin;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useState, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport { IconTick } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This ModalContentTagExam component displays the HTML for the Tag Exam modal.\r\n * The user can set the exam status to one of Exempt, Passed, Taking or Retaking.\r\n */\r\nconst ModalContentTagExam = ({ exmStatusArr, examData, onClickAddExamStatusDone }) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context api's.\r\n const { userExamData, \r\n curFetching } = authenticationContext;\r\n const { staticsData } = appContext;\r\n \r\n // Component state.\r\n const [curStatusID, setCurStatusID] = useState(0);\r\n const [btnDisabled, setBtnDisabled] = useState(true);\r\n \r\n // Local variables.\r\n const btnStatusArr = ['1', '2', '3', '4'];\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n // Actions to toggle button & selected Status for current exam state.\r\n const onClickSelect = (statusID) => {\r\n \r\n // Toggle status off.\r\n if ( statusID === curStatusID ) setCurStatusID(0);\r\n \r\n // Toggle status on.\r\n else setCurStatusID(statusID);\r\n\r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // Check whether this exam is currently selected by the user.\r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n \r\n // Set the initial selected Status if we have one.\r\n if ( typeof userExam !== 'undefined' ) setCurStatusID(userExam.statusType);\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n setBtnDisabled(curFetching === '' ? false : true);\r\n \r\n // eslint-disable-next-line \r\n }, [curFetching]);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n { examData.shortName === 'EPSM' ?
Set this module:
:
Set this exam:
}\r\n \r\n
\r\n \r\n {btnStatusArr.map((item, idx) => {\r\n \r\n // Query 'statics.examStatusType' array for matching tag.\r\n const statusObj = staticsData.examStatusType.find(tag => tag.ID === parseInt(item));\r\n const exists = exmStatusArr.includes(item) ? true : false;\r\n \r\n return (\r\n \r\n );\r\n\r\n })}\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default ModalContentTagExam;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useState, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport { IconTick } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This ModalContentExamSelect component displays the HTML for the 1st Exam Session modal.\r\n * The user can choose to select an exam or cancel current selection.\r\n */\r\nconst ModalContentExamSelect = ({ sessionUNID, noTime, ctaBtnTxtA, ctaBtnTxtB, ctaBtnFncA, ctaBtnFncB }) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { curFetching } = authenticationContext;\r\n const { hideModal } = modalContext;\r\n \r\n // Component state.\r\n const [selectedBtn, setSelectedBtn] = useState(0);\r\n const [btnDisabled, setBtnDisabled] = useState(true);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const onClickBtnDone = () => {\r\n \r\n if ( selectedBtn === 1 ) ctaBtnFncA(sessionUNID);\r\n else if ( selectedBtn === 2 ) ctaBtnFncB();\r\n else hideModal();\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // If we already have a selected exam session show a tick on the select exam button.\r\n //const userExam = userExamData.find(item => item.examUNID === examUNID);\r\n \r\n //if ( userExam.examSessionUNID !== null ) setSelectedBtn(1);\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n setBtnDisabled(curFetching === '' ? false : true);\r\n \r\n // eslint-disable-next-line \r\n }, [curFetching]);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n { noTime &&
This exam session does not allow for the minimum recommended study period
}\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default ModalContentExamSelect;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useState, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport { getSince1970,\r\n getSessionWeek } from '../hooks/utilityFunctions';\r\n\r\n\r\n/*\r\n * This ModalContentExamPeriod component displays the study period selector for the selected exam.\r\n */\r\nconst ModalContentExamPeriod = ({ sessionUNID, examData, ctaBtnTxtA, ctaBtnTxtB, ctaBtnFncA, ctaBtnFncB }) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { userExamData,\r\n examsSessionData,\r\n curFetching } = authenticationContext;\r\n const { staticsData } = appContext;\r\n const { hideModal } = modalContext;\r\n \r\n // Component state.\r\n const [selStudyWeeks, setSelStudyWeeks] = useState(null);\r\n const [btnIncStatus, setBtnIncStatus] = useState(false);\r\n const [btnDecStatus, setBtnDecStatus] = useState(false);\r\n const [planningPeriod, setPlanningPeriod] = useState(0);\r\n const [learningPeriod, setLearningPeriod] = useState(0);\r\n const [revisionPeriod, setRevisionPeriod] = useState(0);\r\n const [studyTypesArr, setStudyTypesArr] = useState([]);\r\n const [btnDisabled, setBtnDisabled] = useState(true);\r\n const [btnClicked, setBtnClicked] = useState(0);\r\n \r\n // Local variables.\r\n const activityTypeArr = [2, 3, 4];\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n\r\n const updateStudyPeriods = () => {\r\n \r\n // Get matching Study Data.\r\n const studyData = getSessionStudyData();\r\n \r\n // Calculate the Revision period.\r\n let studyObj = null;\r\n \r\n // If selected number of weeks is greater than 'maxWeeks' use the\r\n // 'revisionWeeks' value from the highest 'weeksUntil'.\r\n if ( selStudyWeeks > studyData.maxWeeks ) studyObj = studyData.studyPeriod.find(item => item.weeksUntil === studyData.maxWeeks);\r\n \r\n // Else match the 'selStudyWeeks' with it's counterpart in the 'studyArr'.\r\n else studyObj = studyData.studyPeriod.find(item => item.weeksUntil === selStudyWeeks);\r\n \r\n // Set the time periods for Planning, Revision & Learning.\r\n const tmpArr = [];\r\n const numWeeksPlanning = ( studyObj.weeksUntil - studyObj.revisionWeeks ) > 1 ? 1 : 0;\r\n const numWeeksLearning = calculateLearningWeeks(selStudyWeeks, numWeeksPlanning, studyObj.revisionWeeks);\r\n const numWeeksRevision = studyObj.revisionWeeks;\r\n const numWeeksExam = examData.type === 1 ? 4 : 2;\r\n\r\n for ( let i = 0; i < numWeeksPlanning; i++ ) { tmpArr.push(2); } \r\n for ( let i = 0; i < numWeeksLearning; i++ ) { tmpArr.push(3); } \r\n for ( let i = 0; i < numWeeksRevision; i++ ) { tmpArr.push(4); } \r\n for ( let i = 0; i < numWeeksExam; i++ ) { tmpArr.push(6); } \r\n \r\n setPlanningPeriod(numWeeksPlanning);\r\n setLearningPeriod(numWeeksLearning);\r\n setRevisionPeriod(numWeeksRevision);\r\n setStudyTypesArr(tmpArr);\r\n \r\n };\r\n \r\n const getUserExamData = () => {\r\n \r\n return userExamData.find(item => item.examUNID === examData.UNID);\r\n \r\n };\r\n \r\n const getSessionStudyData = () => {\r\n \r\n // Use the sessionUNID to find the matching study period data & return it.\r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n const statusKey = userExam.statusType === 3 ? 'take' : 'retake';\r\n const studyData = staticsData.sessionStudyPeriods.find(item => item.ID === examData.type);\r\n \r\n return studyData[statusKey];\r\n \r\n };\r\n \r\n const getWeeksUntil = () => {\r\n \r\n // Get the Current day number & Session day number (should be first day of the month).\r\n const curDayNum = getSince1970('dy');\r\n const sessionDayNum = getSessionWeek(sessionUNID, examsSessionData, 'dy');\r\n \r\n return Math.round((sessionDayNum - curDayNum) / 7);\r\n \r\n };\r\n \r\n const calculateLearningWeeks = (selStudyWeeks, planningWeeks, revisionWeeks) => {\r\n \r\n return selStudyWeeks - ( revisionWeeks + planningWeeks );\r\n \r\n };\r\n \r\n \r\n \r\n \r\n \r\n /*\r\n * Component event handlers.\r\n */\r\n \r\n const onClickBtnA = sessionUNID => {\r\n \r\n setBtnClicked(1);\r\n ctaBtnFncA(sessionUNID);\r\n \r\n };\r\n \r\n const onClickBtnB = (sessionUNID, selStudyWeeks, studyTypesArr) => {\r\n \r\n const userExam = getUserExamData();\r\n \r\n // If nothing was changed just close the modal.\r\n if ( userExam.examSessionUNID === sessionUNID && \r\n userExam.studyPeriodLength === selStudyWeeks ) hideModal();\r\n \r\n // Else submit the change to the server.\r\n else {\r\n \r\n setBtnClicked(2);\r\n ctaBtnFncB(sessionUNID, selStudyWeeks, studyTypesArr);\r\n \r\n }\r\n\r\n };\r\n \r\n \r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n const examUser = getUserExamData();\r\n const studyData = getSessionStudyData();\r\n const numWeeks = examUser.studyPeriodLength !== 0 ? examUser.studyPeriodLength : studyData.defaultWeeks;\r\n \r\n // If we are amending the study period (user clicked on timeline, as oppossed to event btn), then there is \r\n // already a study periods chosen, so use this as the default, crop it if it is greater tha weeks until.\r\n // Else use the default value from statics. \r\n setSelStudyWeeks(numWeeks > getWeeksUntil() ? getWeeksUntil() : numWeeks);\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n if ( selStudyWeeks === null ) return;\r\n\r\n const studyData = getSessionStudyData();\r\n const minAllowed = studyData.minWeeks;\r\n const maxAllowed = studyData.exceedMax ? getWeeksUntil() : studyData.maxWeeks;\r\n \r\n // Enable/disable DECREMENT button.\r\n if ( selStudyWeeks <= minAllowed ) setBtnDecStatus(false);\r\n else setBtnDecStatus(true);\r\n \r\n // Enable/disable INCREMENT button.\r\n if ( selStudyWeeks >= maxAllowed ) setBtnIncStatus(false);\r\n else setBtnIncStatus(true);\r\n \r\n // Calculate the number of weeks devoted to Planning, Revision & Learning. \r\n updateStudyPeriods();\r\n \r\n // eslint-disable-next-line \r\n }, [selStudyWeeks]);\r\n \r\n useEffect(() => {\r\n \r\n if ( curFetching === '' ) setBtnClicked(0);\r\n \r\n setBtnDisabled(curFetching === '' ? false : true);\r\n \r\n // eslint-disable-next-line \r\n }, [curFetching]);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n
Select a study period for this exam:
\r\n \r\n {/* Period selector: START */}\r\n
\r\n \r\n
{selStudyWeeks} weeks
\r\n \r\n
\r\n {/* Period selector: STOP */}\r\n \r\n {/* Period chart: START */}\r\n
\r\n \r\n {staticsData.studyActivityType\r\n .filter(item => activityTypeArr.includes(item.ID))\r\n .map((item, idx) => (\r\n
\r\n {item.label}\r\n {/* Planning */}\r\n { item.ID === 2 && { planningPeriod > 1 ? planningPeriod + ' weeks' : planningPeriod + ' week' } }\r\n {/* Learning */}\r\n { item.ID === 3 && { learningPeriod > 1 ? learningPeriod + ' weeks' : learningPeriod + ' week' } }\r\n {/* Revision/Mock Exam */}\r\n { item.ID === 4 && { revisionPeriod > 1 ? revisionPeriod + ' weeks' : revisionPeriod + ' week' } }\r\n
\r\n ))\r\n }\r\n \r\n
\r\n {/* Period chart: STOP */}\r\n \r\n {/* Period CTA: START */}\r\n
\r\n { ctaBtnFncA !== null &&\r\n \r\n }\r\n \r\n
\r\n {/* Period CTA: STOP */}\r\n \r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default ModalContentExamPeriod;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useState, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\n\r\n\r\n/*\r\n * This ModalContentEPSMEvent component displays the HTML for the EPSM select exam modal.\r\n * The user can set the exam as Complete for the selected month.\r\n */\r\nconst ModalContentEPSMEvent = ({ sessionUNID, ctaBtnTxtA, ctaBtnTxtB, ctaBtnFncA, ctaBtnFncB }) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n \r\n // Destructure Context api's.\r\n const { curFetching } = authenticationContext;\r\n \r\n // Component state.\r\n const [btnDisabled, setBtnDisabled] = useState(true);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n //...\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n setBtnDisabled(curFetching === '' ? false : true);\r\n \r\n // eslint-disable-next-line \r\n }, [curFetching]);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default ModalContentEPSMEvent;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useRef, useState, useEffect} from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport { openExtLink,\r\n getSince1970,\r\n getSessionDate,\r\n getSessionWeek,\r\n defineMonthsYears } from '../hooks/utilityFunctions';\r\nimport useWindowDimensions from '../hooks/getWindowDimensions';\r\nimport { IconTickWht } from '../hooks/ImageAssets';\r\nimport ExamCell from './ExamCell';\r\nimport TmplInsModal from '../modals/TmplInsModal';\r\nimport TmplSysModal from '../modals/TmplSysModal';\r\nimport ModalContentLogin from '../modals/ModalContentLogin';\r\nimport ModalContentTagExam from '../modals/ModalContentTagExam';\r\nimport ModalContentExamSelect from '../modals/ModalContentExamSelect';\r\nimport ModalContentExamPeriod from '../modals/ModalContentExamPeriod';\r\nimport ModalContentEPSMEvent from '../modals/ModalContentEPSMEvent';\r\n\r\n\r\n/*\r\n * This ExamStick component displays the available date slots for a particular exam.\r\n */\r\nconst ExamStick = ({ examUNID, sectionType }) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Reference hooks.\r\n const history = useHistory();\r\n \r\n // Destructure Context api's.\r\n const { userAuthenticated,\r\n curFetching,\r\n examsData,\r\n examsSessionData,\r\n userExamData,\r\n updateUserExam,\r\n examsCompleted,\r\n updateCompletedArr,\r\n postDataNoPayload,\r\n responseStatus,\r\n resetResponseStatus,\r\n getStudyDayData,\r\n examStudyDaysData } = authenticationContext;\r\n const { staticsData,\r\n showPlanBtnModal,\r\n setScreenshotEnable,\r\n disablePlanBtnModal,\r\n modalFtrTxt,\r\n hasTransition,\r\n setHasTransition } = appContext;\r\n const { showModal,\r\n hideModal, \r\n updateModal,\r\n isVisible } = modalContext;\r\n \r\n // Define some DOM reference hooks.\r\n const headRef = useRef(null);\r\n const bodyRef = useRef(null);\r\n const footerRef = useRef(null);\r\n \r\n // Get window dimensions.\r\n const { winWidth, \r\n winHeight } = useWindowDimensions();\r\n \r\n // Component state.\r\n const [monthsArr, setMonthsArr] = useState([]);\r\n const [eventsArr, setEventsArr] = useState([]);\r\n const [hdrMinHeight, setHdrMinHeight] = useState(0);\r\n const [bdyMinHeight, setBdyMinHeight] = useState(0);\r\n const [ftrMinHeight, setFtrMinHeight] = useState(0);\r\n const [examStatus, setExamStatus] = useState(0);\r\n const [statusLabel, setStatusLabel] = useState('');\r\n const [isStill, setIsStill] = useState(true);\r\n const [examData, setExamData] = useState(null);\r\n const [dimBtns, setDimBtns] = useState(false);\r\n const [completed, setCompleted] = useState(false);\r\n const [statusColor, setStatusColor] = useState('transparent'); \r\n const [btnDisabled, setBtnDisabled] = useState(true);\r\n const [examStatusClass, setExamStatusClass] = useState('');\r\n \r\n // Local variables.\r\n const activityTypeArr = [2, 3, 4, 5];\r\n const exemptID = 1;\r\n const passedID = 2;\r\n const takingID = 3;\r\n const retakingID = 4;\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n // Set minHeights just before the stick closes and opens and then reset to 0\r\n // after the transition. So that sticks can still resize when the browser does.\r\n const setMinHeights = () => {\r\n \r\n setHdrMinHeight(headRef.current.clientHeight + 'px');\r\n setBdyMinHeight(bodyRef.current.clientHeight + 'px');\r\n setFtrMinHeight(footerRef.current.clientHeight + 'px');\r\n \r\n };\r\n \r\n const getShortName = () => {\r\n \r\n const exam = examsData.find(item => item.UNID === examUNID);\r\n \r\n return exam.shortName;\r\n \r\n };\r\n \r\n const getSectionTitle = () => {\r\n \r\n const section = staticsData.examSectionType.find(item => item.ID === sectionType);\r\n \r\n return section.ID === 3 ? section.longLabel : section.label;\r\n \r\n };\r\n \r\n // Events are also known as Sessions.\r\n // Get all the events that match the current exams UNID.\r\n const getEvents = (examUNID) => {\r\n \r\n setEventsArr(examsSessionData.filter(item => item.examUNID === examUNID));\r\n \r\n };\r\n \r\n const drawFooterBtn = () => {\r\n \r\n //const userExam = userExamData.find(item => item.examUNID === examUNID);\r\n const typeOnDemandExam = staticsData.examType.find(item => item.ID === 1);\r\n const typeExam = staticsData.examType.find(item => item.ID === 2);\r\n const btnBookObj = staticsData.callToActionButtons.find(item => item.ID === 0);\r\n //const btnEditObj = staticsData.callToActionButtons.find(item => item.ID === 2);\r\n \r\n // If this exam is of type 'ONDEMANDEXAM' or 'EXAM' then show a 'BOOK' or 'EDIT' \r\n // button below the session buttons. Else if type is 'EPSEXAM' show no button.\r\n if ( eventsArr.length > 0 ) {\r\n \r\n if ( examData.type === typeOnDemandExam.ID || \r\n examData.type === typeExam.ID ) {\r\n \r\n // If we have a Study Period show the 'Edit' button.\r\n // if ( typeof userExam !== 'undefined' && \r\n // userExam.studyPeriodLength > 0 ) {\r\n \r\n // return (\r\n // \r\n // );\r\n \r\n // }\r\n \r\n // Else no Study Period exists show 'Book' button.\r\n //else {\r\n \r\n return (\r\n \r\n );\r\n \r\n //}\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n else return null;\r\n \r\n };\r\n \r\n const updateAddExamStatusModalStep1 = () => {\r\n \r\n // System - define modal content.\r\n const txtTitleA = getSectionTitle();\r\n const txtTitleB = examData.shortName === 'EPSM' ? examData.shortName : examData.name;\r\n const exmStatusArr = examData.statusTypes.split(',');\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n \r\n // System - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 0,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // System - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n const updateTagExamModalStep2 = () => {\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n

Select your preferred exam session

\r\n

Consider preparation time of this and any other exams that you will be sitting

\r\n

To book the exam follow the link

\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n );\r\n };\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n const showModalExamSelectEPSM = sessionUNID => {\r\n\r\n // System - define modal content.\r\n const txtTitleA = getSectionTitle();\r\n const txtTitleB = examData.shortName + ' complete by
' + getSessionDate(sessionUNID, examsSessionData, 'long');\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n \r\n // System - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 0,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // System - show modal.\r\n showModal(props);\r\n \r\n };\r\n\r\n const showModalExamSelect = sessionUNID => {\r\n \r\n // System - define modal content.\r\n const txtTitleA = getSectionTitle();\r\n const txtTitleB = examData.name + '
' + getSessionDate(sessionUNID, examsSessionData, 'long') + ' Exam';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n const txtFooterPrv = `NOTE Reducing your study period or cancelling the plan may result in some of your existing tasks being hidden from view. Nothing is deleted, you can recover your planning by restoring previous settings.`;\r\n const txtFooterPub = `NOTE Only logged in users can save their Exam Plans and add day-to-day tasks, milestones and reflections using the Study Planning toolkit.`;\r\n \r\n // System - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 0,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // System - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n const showModalExamPeriod = (sessionUNID, isAmend) => {\r\n \r\n // System - define modal content.\r\n const txtTitleA = getSectionTitle();\r\n const txtTitleB = examData.name + '
' + getSessionDate(sessionUNID, examsSessionData, 'long') + ' Exam';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n const txtFooterPrv = `NOTE Reducing your study period or cancelling the plan may result in some of your existing tasks being hidden from view. Nothing is deleted, you can recover your planning by restoring previous settings.`;\r\n const txtFooterPub = `NOTE Only logged in users can save their Exam Plans and add day-to-day tasks, milestones and reflections using the Study Planning toolkit.`;\r\n \r\n // System - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 0,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // System - show modal.\r\n if ( isAmend ) showModal(props);\r\n else updateModal(props);\r\n \r\n };\r\n \r\n const showModalExamSummary = studyPeriodLength => {\r\n \r\n // Get study period weeks.\r\n const planningPeriod = getStudyPeriods('planning', studyPeriodLength);\r\n const learningPeriod = getStudyPeriods('learning', studyPeriodLength);\r\n const revisionPeriod = getStudyPeriods('revision', studyPeriodLength);\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n

Your selected study period suggests the ACCA recommended approach to this exam:

\r\n \r\n
\r\n \r\n {staticsData.studyActivityType\r\n .filter(item => activityTypeArr.includes(item.ID))\r\n .map((item, idx) => (\r\n
\r\n {item.label}\r\n {/* Planning */}\r\n { item.ID === 2 && { planningPeriod > 1 ? planningPeriod + ' weeks' : planningPeriod + ' week' } }\r\n {/* Learning */}\r\n { item.ID === 3 && { learningPeriod > 1 ? learningPeriod + ' weeks' : learningPeriod + ' week' } }\r\n {/* Revision/Mock Exam */}\r\n { item.ID === 4 && { revisionPeriod > 1 ? revisionPeriod + ' weeks' : revisionPeriod + ' week' } }\r\n {/* Final Steps/Exam */}\r\n { item.ID === 5 && }\r\n
\r\n ))\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n );\r\n };\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n };\r\n\r\n const gotoStudyPlannerModal = () => {\r\n \r\n // Show the Plan modal if this is the first time the Plan Btn has been clicked.\r\n if ( showPlanBtnModal ) {\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n { winWidth < 360 ?\r\n
Add day-to-day tasks and milestones
\r\n :\r\n
Add day-to-day tasks and target milestones
\r\n }\r\n \r\n
(Check out the exam curriculum for suggested topics)
\r\n \r\n { winWidth < 360 ?\r\n
Configure Final Steps and Exam Date*
\r\n :\r\n
Configure your Final Steps and Exam Date*
\r\n }\r\n \r\n
*Exact dates for scheduled exam sessions are usually released 6 months prior to the session window
\r\n \r\n { winWidth < 360 ?\r\n
Check off tasks as you go and reflect!
\r\n :\r\n
Check off tasks as you go
and reflect on your progress
\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n };\r\n const cusFtrTxt = 'In future releases we\\'ll add the facility to auto-fill
tasks and get reminders on your device';\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n }\r\n \r\n // Else just go straight to the Study Planner page.\r\n else gotoStudyPlanner();\r\n \r\n };\r\n \r\n const defineExamStatusClass = statusID => {\r\n \r\n const statusObj = staticsData.examStatusType.find(item => item.ID === statusID); \r\n const newClass = typeof statusObj !== 'undefined' ? ` ${statusObj.label.toLowerCase()}` : '';\r\n \r\n setExamStatusClass(newClass);\r\n\r\n };\r\n \r\n const hasSessionSelected = () => {\r\n \r\n if ( examData === null ) return false;\r\n \r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n \r\n if ( typeof userExam !== 'undefined' &&\r\n userExam.statusType !== 0 ) {\r\n \r\n if ( userExam.examSessionUNID !== null ) return true;\r\n else return false;\r\n \r\n }\r\n else return false;\r\n \r\n };\r\n \r\n const noStudyTime = sessionUNID => {\r\n \r\n // Get the Current day number & Session day number (should be first day of the month).\r\n const curDayNum = getSince1970('dy');\r\n const sessionDayNum = getSessionWeek(sessionUNID, examsSessionData, 'dy');\r\n \r\n // Set the number of days until the exam session, then convert that into weeks.\r\n const weeksUntil = Math.round((sessionDayNum - curDayNum) / 7);\r\n \r\n // Get the Study Period data that matches this userExam (Exam type: 1/ondemandExam, 2/exam & exam StatusType: 3/taking, 4/retaking).\r\n const examUser = userExamData.find(item => item.examUNID === examUNID);\r\n const statusKey = examUser.statusType === 3 ? 'take' : 'retake';\r\n const studyPeriods = staticsData.sessionStudyPeriods.find(item => item.ID === examData.type);\r\n const studyPeriod = studyPeriods[statusKey];\r\n \r\n // Check if the number of weeks until the event is less than the number of min study weeks for the event & return.\r\n return ( weeksUntil - studyPeriod.minWeeks ) < 0;\r\n \r\n };\r\n \r\n const getStudyPeriods = (activity, studyPeriodLength) => {\r\n \r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n const studyData = staticsData.sessionStudyPeriods.find(item => item.ID === examData.type);\r\n const studyType = studyData[userExam.statusType === 3 ? 'take' : 'retake'];\r\n const studyPeriod = studyType.studyPeriod.find(item => item.weeksUntil === studyPeriodLength);\r\n const lastStudyPeriod = studyType.studyPeriod[studyType.studyPeriod.length - 1];\r\n const revisionWeeks = typeof studyPeriod === 'undefined' && studyType.exceedMax ? lastStudyPeriod.revisionWeeks : studyPeriod.revisionWeeks;\r\n const planningWeeks = ( userExam.studyPeriodLength - revisionWeeks ) > 1 ? 1 : 0;\r\n \r\n if ( activity === 'planning' ) return planningWeeks;\r\n else if ( activity === 'learning' ) return studyPeriodLength - ( revisionWeeks + planningWeeks );\r\n else return revisionWeeks;\r\n \r\n };\r\n \r\n const updateExamStatus = statusID => {\r\n \r\n hideModal();\r\n \r\n // If an event is selected then dim other buttons, but don't disable them.\r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n \r\n if ( typeof userExam !== 'undefined' ) {\r\n \r\n if ( userExam.examSessionUNID === null ) setDimBtns(false);\r\n else setDimBtns(true);\r\n \r\n }\r\n \r\n // Make sure any 'completed' state is removed.\r\n const tmpArr = examsCompleted.filter(item => item.UNID !== examUNID);\r\n \r\n updateCompletedArr(tmpArr);\r\n \r\n // Remove the 'still' class from the stick, this enables setting of maxHeight on\r\n // 'exam-header', 'exam-body' & 'exam-footer', required on mobile when stick closes.\r\n if ( statusID === exemptID || statusID === passedID ) setIsStill(false);\r\n \r\n // Add 'still' class back to 'exam-stick', else sticks won't resize when required.\r\n if ( statusID === takingID || statusID === retakingID || ( statusID === '' && completed === false ) ) setTimeout(() => setIsStill(true), 500);\r\n \r\n const matchingStatus = staticsData.examStatusType.find(item => item.ID === statusID);\r\n const statusLabel = statusID === 0 ? '' : matchingStatus.label;\r\n const statusColor = statusID === 0 ? 'transparent' : 'rgb(' + matchingStatus.color + ')';\r\n \r\n setExamStatus(statusID);\r\n defineExamStatusClass(statusID);\r\n setStatusLabel(statusLabel);\r\n setStatusColor(statusColor);\r\n \r\n //const exSeUNID = typeof userExam !== 'undefined' ? userExam.examSessionUNID : null;\r\n //const stPeLn = typeof userExam !== 'undefined' ? userExam.studyPeriodLength : 0;\r\n \r\n // If 'userExam' is undefined then this is a new exam, certain values don't yet exist.\r\n // Or if 'statusID' is 0 then reset 'examSessionUNID' && 'studyPeriodLength'\r\n const exSeUNID = typeof userExam === 'undefined' || statusID === 0 ? null : userExam.examSessionUNID;\r\n const stPeLn = typeof userExam === 'undefined' || statusID === 0 ? 0 : userExam.studyPeriodLength;\r\n \r\n // Add exam to 'userExamData' array, Context method will check array for duplicates.\r\n updateUserExam({\r\n UNID : new Date().getTime(),\r\n examUNID : examUNID,\r\n examSessionUNID : exSeUNID,\r\n studyPeriodLength : stPeLn,\r\n statusType : statusID\r\n });\r\n \r\n // Show the instructional modal if status is taking/retaking & Section is not 'Ethics Module'.\r\n if ( sectionType !== 3 && \r\n ( statusID === takingID || statusID === retakingID ) ) updateTagExamModalStep2();\r\n \r\n };\r\n \r\n const updateExamSession = (sessionUNID, studyPeriodLength) => {\r\n \r\n hideModal();\r\n \r\n // If an event is selected then dim other buttons, but don't disable them.\r\n if ( sessionUNID === null ) setDimBtns(false);\r\n else setDimBtns(true);\r\n\r\n // Enable the screenshot button, \r\n setScreenshotEnable(true);\r\n \r\n // Get matching userExam which will be updated.\r\n const userExam = userExamData.find(item => item.examUNID === examUNID);\r\n \r\n // Update exam in 'userExamData' array, adding selected Session UNID.\r\n if ( typeof userExam !== 'undefined' &&\r\n userExam.statusType !== 0 ) {\r\n \r\n userExam.examSessionUNID = sessionUNID;\r\n userExam.studyPeriodLength = studyPeriodLength;\r\n \r\n updateUserExam(userExam);\r\n \r\n }\r\n \r\n // Open Instructional modal showing a summary of study periods (only if study periods are set).\r\n if ( studyPeriodLength !== 0 ) showModalExamSummary(studyPeriodLength);\r\n \r\n };\r\n \r\n const gotoStudyPlanner = () => {\r\n \r\n history.push('/study-planner');\r\n \r\n };\r\n \r\n \r\n \r\n \r\n \r\n /*\r\n * Component event handlers.\r\n */\r\n \r\n const onClickAddExamStatusDone = statusID => {\r\n \r\n // If new 'statusID' matches old 'statusID' just close the modal & bail.\r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n \r\n if ( typeof userExam !== 'undefined' && \r\n userExam.statusType === statusID ) {\r\n \r\n hideModal();\r\n return;\r\n \r\n }\r\n\r\n // If 'authenticated' update server.\r\n // If 'statusID' is 0 then the exam is marked as no status.\r\n if ( userAuthenticated ) {\r\n \r\n // If 'userExam' is undefined then this is a new exam, certain values don't yet exist.\r\n // Or if 'statusID' is 0 then reset 'examSessionUNID' && 'studyPeriodLength'\r\n const exSeUNID = typeof userExam === 'undefined' || statusID === 0 ? null : userExam.examSessionUNID;\r\n const stPeLn = typeof userExam === 'undefined' || statusID === 0 ? 0 : userExam.studyPeriodLength;\r\n \r\n postDataNoPayload('userexam', { examUNID, statusID }, { userExam: { examUNID, examSessionUNID: exSeUNID, studyPeriodLength: stPeLn, statusType: statusID } });\r\n \r\n }\r\n \r\n // Else only update local data.\r\n else updateExamStatus(statusID);\r\n\r\n };\r\n \r\n const onClickSessionSelectEPSM = sessionUNID => {\r\n \r\n onClickNoPeriod(sessionUNID);\r\n \r\n };\r\n \r\n const onClickSessionSelect = sessionUNID => {\r\n \r\n // If there is not enough time to select a study period\r\n // before the event starts then just highlight the event.\r\n if ( noStudyTime(sessionUNID) ) onClickNoPeriod(sessionUNID);\r\n \r\n // Else allow the user to select a study period.\r\n else showModalExamPeriod(sessionUNID);\r\n \r\n };\r\n \r\n // Close the modal and unselect all sessions,\r\n // if authenticated submit exam data to the server.\r\n const onClickSessionUnselect = () => {\r\n\r\n // If 'authenticated' update server, passing a null sessionUNID.\r\n if ( userAuthenticated ) onClickNoPeriod(null);\r\n \r\n // Else only update local data.\r\n else updateExamSession(null, 0);\r\n\r\n };\r\n\r\n const onClickNoPeriod = sessionUNID => {\r\n \r\n // If 'authenticated' update server.\r\n if ( userAuthenticated ) {\r\n \r\n const requestObj = {\r\n userExamSession: {\r\n examUNID: examUNID,\r\n examSessionUNID: sessionUNID,\r\n studyPeriodLength: 0,\r\n studyPlanningLength: 0,\r\n studyExamLength: 0,\r\n studyTypes: [],\r\n starterTasks : [\r\n staticsData.copy.starterTask1,\r\n staticsData.copy.starterTask2,\r\n staticsData.copy.starterTask3,\r\n staticsData.copy.starterTask4,\r\n staticsData.copy.starterTask5,\r\n staticsData.copy.starterTask6,\r\n staticsData.copy.starterTask7\r\n ]\r\n }\r\n };\r\n \r\n postDataNoPayload('userexam/session', { examUNID, sessionUNID, studyPeriodLength: 0 }, requestObj);\r\n \r\n }\r\n \r\n // Else only update local data.\r\n else updateExamSession(sessionUNID, 0);\r\n \r\n }\r\n \r\n const onClickAddPeriod = (sessionUNID, studyPeriodLength, studyTypesArr) => {\r\n \r\n // If 'authenticated' update server.\r\n if ( userAuthenticated ) {\r\n \r\n const exam = examsData.find(item => item.UNID === examUNID);\r\n const requestObj = {\r\n userExamSession: {\r\n examUNID : examUNID,\r\n examSessionUNID : sessionUNID,\r\n studyPeriodLength : studyPeriodLength,\r\n studyPlanningLength : 0,\r\n studyExamLength : exam.type === 1 ? 4 : 2,\r\n studyTypes : studyTypesArr,\r\n starterTasks : [\r\n staticsData.copy.starterTask1,\r\n staticsData.copy.starterTask2,\r\n staticsData.copy.starterTask3,\r\n staticsData.copy.starterTask4,\r\n staticsData.copy.starterTask5,\r\n staticsData.copy.starterTask6,\r\n staticsData.copy.starterTask7\r\n ]\r\n }\r\n };\r\n \r\n postDataNoPayload('userexam/session', { examUNID, sessionUNID, studyPeriodLength }, requestObj);\r\n \r\n }\r\n \r\n // Else only update local data.\r\n else updateExamSession(sessionUNID, studyPeriodLength);\r\n \r\n }\r\n\r\n // Open a modal & set the status of the current exam (Exempt, Passed, Taking...etc)\r\n const onClickAddExamStatusModal = () => {\r\n \r\n // Open the modal & show content for step 1.\r\n updateAddExamStatusModalStep1();\r\n \r\n };\r\n \r\n // Open a modal & select an event date for the current exam.\r\n // This begins the process to select a study period.\r\n const onClickExamEventModal = sessionUNID => {\r\n \r\n // Open the modal & show content for step 1.\r\n // EM/EPSM has a different modal to all others.\r\n if ( sectionType === 3 ) showModalExamSelectEPSM(sessionUNID);\r\n else {\r\n \r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n const noTime = noStudyTime(sessionUNID);\r\n \r\n // If the exam already has a 'examSessionUNID' then we can go straight to 'showModalExamPeriod' skipping the first modal.\r\n if ( noTime ||\r\n userExam.examSessionUNID === null || \r\n userExam.examSessionUNID !== sessionUNID ) showModalExamSelect(sessionUNID);\r\n else showModalExamPeriod(sessionUNID, true);\r\n \r\n }\r\n\r\n };\r\n \r\n // If the 'Plan' button or 'Timeline' bars are clicked & the user is authenticated show the planner intro modal\r\n // else open a modal to ask the user to login before accessing the Study Planner.\r\n const onClickGotoStudyPlanner = () => {\r\n \r\n // Go to Study Planner.\r\n if ( userAuthenticated ) {\r\n \r\n // Fetch the study planner data before showing the info modal.\r\n const userExam = userExamData.find(item => item.examUNID === examData.UNID);\r\n \r\n getStudyDayData('userexam/session', examUNID, userExam.examSessionUNID);\r\n \r\n }\r\n \r\n // Else show login prompt modal.\r\n else {\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n }\r\n \r\n };\r\n \r\n // On clicking the exam timeline if the user is logged in go to the Study Planner page,\r\n // else if the user is not logged in open the select Study Periods modal.\r\n const onClickExamTimeline = () => {\r\n \r\n const userExam = userExamData.find(item => item.examUNID === examUNID);\r\n \r\n // Go to Study Planner.\r\n if ( userAuthenticated ) {\r\n \r\n getStudyDayData('userexam/session', examUNID, userExam.examSessionUNID);\r\n \r\n }\r\n \r\n // Open Study Periods modal, skipping the first 2 screens.\r\n else showModalExamPeriod(userExam.examSessionUNID, true);\r\n \r\n };\r\n \r\n // Close the Study Planner intro modal & navigate to the planner page.\r\n const onClickGotoPlan = () => {\r\n \r\n // Instructional - hide modal.\r\n hideModal();\r\n \r\n // Disable modal so it doesn't appear next time the Plan Btn is clicked.\r\n disablePlanBtnModal();\r\n \r\n // Go to Study Planner page.\r\n gotoStudyPlanner();\r\n \r\n };\r\n \r\n \r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // On mobile when exam stick shrinks it's content gets squeezed together since\r\n // their heights are set as percentages to allow for different size devices.\r\n // To fix this set a min-height after each stick has been drawn.\r\n setMinHeights();\r\n \r\n // Define the current set of 12 months & years.\r\n setMonthsArr(defineMonthsYears());\r\n \r\n // Get this exams events.\r\n getEvents(examUNID);\r\n\r\n // Make a local copy of this exams data.\r\n setExamData(examsData.find(item => item.UNID === examUNID ));\r\n\r\n // After a delay to let the page load, enable exam stick transitions.\r\n setHasTransition(false);\r\n \r\n setTimeout(() => {\r\n \r\n setHasTransition(true);\r\n \r\n }, 1000);\r\n\r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n // When local 'examData' & global 'userExamData' are populated check the status of this exam.\r\n if ( examData !== null && userExamData !== null ) {\r\n \r\n // Check whether this exam has been selected by the user.\r\n const userExam = userExamData.find(item => item.examUNID === examUNID);\r\n \r\n if ( typeof userExam !== 'undefined' && \r\n userExam.statusType !== 0 ) {\r\n \r\n const matchingStatus = staticsData.examStatusType.find(item => item.ID === userExam.statusType);\r\n const matchingSession = examsSessionData.find(item => item.UNID === userExam.examSessionUNID);\r\n \r\n if ( typeof matchingSession !== 'undefined' ) setDimBtns(true);\r\n \r\n setExamStatus(userExam.statusType);\r\n defineExamStatusClass(userExam.statusType);\r\n setStatusLabel(matchingStatus.label);\r\n setStatusColor('rgb(' + matchingStatus.color + ')');\r\n \r\n }\r\n \r\n }\r\n\r\n // eslint-disable-next-line \r\n }, [examData, userExamData]);\r\n \r\n useEffect(() => {\r\n \r\n // Update minHeights if browser dimensions change.\r\n setMinHeights();\r\n \r\n // eslint-disable-next-line \r\n }, [winWidth, winHeight]);\r\n \r\n // Exams completed set by checkboxes in modal.\r\n useEffect(() => {\r\n \r\n const exam = examsCompleted.find(item => item.UNID === examUNID);\r\n \r\n if ( typeof exam !== 'undefined' ) {\r\n \r\n setMinHeights();\r\n setIsStill(false);\r\n setCompleted(true);\r\n setDimBtns(false);\r\n setExamStatus(0);\r\n defineExamStatusClass(0);\r\n setStatusLabel('');\r\n setStatusColor('transparent');\r\n \r\n }\r\n else setCompleted(false);\r\n \r\n // eslint-disable-next-line \r\n }, [examsCompleted]);\r\n \r\n // Listen for 'userExamData' changes and reset.\r\n useEffect(() => {\r\n \r\n const userExam = userExamData.find(item => item.examUNID === examUNID);\r\n \r\n if ( typeof userExam === 'undefined' && !completed ) {\r\n \r\n // Reset all local exam props.\r\n setExamStatus(0);\r\n defineExamStatusClass(0);\r\n setStatusLabel('');\r\n setStatusColor('transparent');\r\n setDimBtns(false);\r\n \r\n }\r\n \r\n // eslint-disable-next-line \r\n }, [userExamData]);\r\n \r\n // Listen for 'examStudyDaysData' changes, if data has been added go to the\r\n // next step in showing the Study Planner page.\r\n useEffect(() => {\r\n \r\n if ( examStudyDaysData !== null && \r\n examStudyDaysData.examUNID === examUNID ) {\r\n \r\n gotoStudyPlannerModal();\r\n \r\n }\r\n \r\n // eslint-disable-next-line \r\n }, [examStudyDaysData]);\r\n \r\n // Listen for 'responseStatus' changes and if they are TRUE \r\n // continue updating local model.\r\n useEffect(() => {\r\n \r\n if ( responseStatus !== null && \r\n responseStatus.status === true && \r\n responseStatus.props.examUNID === examUNID ) {\r\n \r\n if ( responseStatus.endPoint === 'userexam' ) updateExamStatus(responseStatus.props.statusID);\r\n if ( responseStatus.endPoint === 'userexam/session' ) updateExamSession(responseStatus.props.sessionUNID, responseStatus.props.studyPeriodLength);\r\n \r\n resetResponseStatus();\r\n \r\n }\r\n \r\n // eslint-disable-next-line \r\n }, [responseStatus]);\r\n \r\n useEffect(() => {\r\n \r\n // If we have a modal open then no need to disable the btns below it.\r\n if ( isVisible ) return;\r\n \r\n setBtnDisabled(curFetching === '' ? false : true);\r\n\r\n // eslint-disable-next-line \r\n }, [curFetching]);\r\n \r\n \r\n\r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n
\r\n \r\n {/* Exam stick header: START */}\r\n
\r\n \r\n \r\n \r\n
\r\n {/* Exam stick header: STOP */}\r\n \r\n {/* Exam stick body: START */}\r\n
\r\n\r\n {monthsArr.map((monthObj, idx) => (\r\n \r\n ))}\r\n \r\n
\r\n
\r\n {/* Exam stick body: STOP */}\r\n \r\n {/* Exam stick footer: START */}\r\n
\r\n {drawFooterBtn()}\r\n \r\n
\r\n
\r\n {/* Exam stick footer: STOP */}\r\n \r\n {/* Full height button */}\r\n { examStatus === 0 && (\r\n \r\n ) }\r\n \r\n \r\n
\r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default ExamStick;\r\n\r\n\r\n/*** Scripts end... */\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAA6CAYAAAAJO/8DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFDOUNBQTcyNjYxRDExRUI5NjJDRERGRkNCMEYzNUE5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFDOUNBQTczNjYxRDExRUI5NjJDRERGRkNCMEYzNUE5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MUM5Q0FBNzA2NjFEMTFFQjk2MkNEREZGQ0IwRjM1QTkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MUM5Q0FBNzE2NjFEMTFFQjk2MkNEREZGQ0IwRjM1QTkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4V6kUWAAADmElEQVR42uybz29NQRTH72v9bBqiQggb0gWNX6E7aUKIsLSoSOwkXSAWrKRWxE4iaSxK/AFvg0TSriywaEJIKBIblVIJqaBqQ4vxPUzrvuf+mDl3Zu7c+/pNvk3TNvee+fTemXPOzKsIIYI5hdQoQDDO+fBZ+I2I1t0/LBoBCMa4DX4SA+In3As3lR4IxjZPPhXTMTAm4D01b0tZgWBcm+BHIl6j8Mb/po8yAsGYjsPfEmDQ67Mqcj4tExCMZRl8UyTrAbw0doEpCxCMY2fCCpIKozRAEH8FPgP/SIHxOAlGKYAg9lb4ukjXC3iFUk5WVCCIux1+rgCDXqO1yklqEYEg5gPwZwUY9DcdWll70YAg3lMyu0zTd7hLu4wpChDE2QxfFmr6BXez6roiAEGMLfAtoa5edqHrOxDKKFNS8HpVaSkuJRDEtg5+qQGDwLVkaoX4CgRxbYDfasB4r7q8Fg4IYtoMf9CAQavObiPNMt+AMGCwJ1HvgVB/ggFjgDuJeg0EcazXnDNIY3CbwRj8AEKToeZqMjNvdBmOI38gVIXCz4S+zluIJV8g1J+AHzJgDFED2QkQ2Y7vhNdYhrEAvs2A8ZUSNksx1QLB96vh+/LG1IG6Bi+x1OWqCp56LP6T/gFJmNiowbLf8I0vMWEMWn5q/36R3afXCut9h4GbnmbC+EhPsCsgo4pB0Wt0BV7JvOFhwdcRB5P8LJBBzeAm5X7oYo2b7YKnmDAGHK16s0Bo+RtmBEqv2SGFG9G24hcmjEnbK17cpEorzCtm0HSUYEtCFjqW4VXpCRwpatltZxRX4VS6H15el3g9zQDjnqnCLUtitkM+plx9kvPLwYQzGSqaMrGqGUnd8bO9GSZAU7qQQykRX8vQZKm4/2FDIzormLPiDr87mROQfTkVm+nVLpXZjmFUc6y+1cp/WeS50ETUyR4fgTQrnMwxoWM5N6vUG0T4u0UyL7AlOt3TVBggoURr2AIM2pzu9KC3q99CzJjix6nfk84/r6eaMcWv1zidHiw0EEMp/oyOerRRlq3rTseiM6b4Qy6LNyfbEHRSh5niU/dta+CRjO3L4BonGED6As9kdKMK1zmnAeOdje0Nr4DIC171pWHsCxBK8W+kwLjj00RqFYi86ELZY43StOsuWO5AQil+VPvwYuCxrO7+y+OUI3WHW1obFkgoxR+XQLoDz+XkfAiuv50+whEUQMSiMvdB5lr9FmAAsadmGi5s30kAAAAASUVORK5CYII=\"","import React, { useContext, useEffect} from 'react';\r\n\r\nimport AppContext from '../../context/app/AppContext';\r\n\r\nimport ChevronTailC from '../../assets/img/chevron-tail-c.png';\r\nimport ChevronMidC from '../../assets/img/chevron-mid-c.png';\r\nimport ChevronPointC from '../../assets/img/chevron-point-c.png';\r\n\r\n\r\n/*\r\n * This ExamsFooter component displays help text below the planner on desktop only.\r\n */\r\nconst ExamsFooter = () => {\r\n \r\n \r\n // Reference Context api's\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context api's.\r\n const { staticsData,\r\n onClickTakeScreenshot } = appContext;\r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n //...\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n
\r\n \r\n
\"\"
\r\n \r\n {/* Section Title - Applied Knowledge */}\r\n
\r\n
\r\n
\r\n
!
\r\n
{staticsData.copy.guidance1}
\r\n
\r\n
\r\n
\r\n \r\n
\"\"
\r\n \r\n {/* Section Title - Applied Skills */}\r\n
\r\n
\r\n
\r\n
!
\r\n
\r\n {staticsData.copy.guidance2}\r\n
\r\n When you're ready for your reference.\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\"\"
\r\n \r\n
\r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default ExamsFooter;\r\n\r\n\r\n/*** Scripts end... */\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NUExQzg1RUQ2NjI5MTFFQjk2NTFDOUM5MkNDQzE4OTMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NUExQzg1RUM2NjI5MTFFQjk2NTFDOUM5MkNDQzE4OTMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MjkyOTc4NkU1RkU0MTFFQkE5ODJCNjVFQzQwQUYxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MjkyOTc4NkY1RkU0MTFFQkE5ODJCNjVFQzQwQUYxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6IHWEzAAAA/klEQVR42qzWTQrCMBBA4Rh1r27dq3gDQV2ro7dt0L0eol5CD6CgERooIck8ioXZlI/+8Nq0velyVRtj5kbZrJ/KgO0HHYU3Pw8CX34uBBpy+gAvzZFV+GiuVYXq6TvBuhkVFo/aGWYrxTBbySb2OQqTlVIwWclmbtJRWFF4jyvZQl73d3htVyrBd7uSVV4VR+E5VNLgM1SyYJFwFFYUfig8USgEjvysCTz4GRIopEzfz47ArZ8JgUKfRwRnfhYEnuhbKASOQw0N7kMNDQpZzQbtGiW4adcoQaFrOILzuEYOHumXSwhM1kjBZI0UFPIHkK0Rw2yNGApYLTj8CjAAON4t9PquYoYAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAA8CAYAAACEqoEvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjY4MTQ5ODA2NjI5MTFFQkEzQUY5OTAwNEM5Njc4M0UiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjY4MTQ5N0Y2NjI5MTFFQkEzQUY5OTAwNEM5Njc4M0UiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDNFQzM2NzI1RkU0MTFFQjkzMzU4OEM3QzVCNDhGMDQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDNFQzM2NzM1RkU0MTFFQjkzMzU4OEM3QzVCNDhGMDQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7KEY9tAAABGUlEQVR42rzXgQ2CMBCF4fPWcIM6gYPIkHYeO4+Q0KQ0be/dXWkTEiXw2R9Q4fEM70BEifrjty+BgMH78hG2iQSOA9uEbb4aLAgZSTgMF4xmpWZsSmrGpqRy8dqdWmLu1BJzp3L13pVaY67UGnOlcmOdeXYtzHzcWpg5lTs7mFJ7mCm1h5lSebCDOnWEqVNHmDqVhU9XpUqYKlXCVKkSpkpFMDgVweBUBINTUQxKRTH4XgMZEZn5ciydN3yjs/1CsYienKUYnIhgUXP9LcNUiRIWtV+xJZg6cYRFy6/I7ZgpsYeZZnU7Zk5sYeZZtTDpKWRDMekJRPr/vGCuxBpzJZaYO7HE3Ikl5k7M2JTEjE1JzNiUxGP8BRgAsh9O9dtRgj0AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjA1MzkxREE2NjI5MTFFQjlEOUZENEU5ODE3NDg2QUIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjA1MzkxRDk2NjI5MTFFQjlEOUZENEU5ODE3NDg2QUIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTYzRTY2MjU1RkU0MTFFQkIxOUJDOTAxRDY2RTkyMDgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTYzRTY2MjY1RkU0MTFFQkIxOUJDOTAxRDY2RTkyMDgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5porQXAAAA0UlEQVR42qzW2w2DMAxAUddrdINs0EHsIeN5yjwtUUE8kvh+FCkSoCPdiATE41leRUQWSQ79DhNwrNApLL+RQiH5DTqFaV4P50ahUzjN6+XaKHQKh3nt3HMKjcJuXgdzdwqNwlteJ6vmFBqFp7wm+9UpNAr3vII31Sk0CluewJan0CgUCuOvcP3IvgkMOkcEW5bAoI8HwT2bwaArg+ApO4NBNwWCt+wIBt2PCHazPRj0VagELrNfBiXZK6wELtmfipLsEVYC0+wGg357KoEfAQYA8ZQn9kkch6IAAAAASUVORK5CYII=\"","import React, { useContext } from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport ExamsHeader from './ExamsHeader';\r\nimport ExamStick from './ExamStick';\r\nimport ExamsFooter from './ExamsFooter';\r\n\r\n\r\n/*\r\n * This LayerExams component displays the exams titles and exam sticks.\r\n */\r\nconst LayerExams = () => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n \r\n // Destructure Context api's.\r\n const { examsData } = authenticationContext;\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const drawExamSticks = ( sectionType, spFilter ) => {\r\n \r\n // Bail if we have no exam data.\r\n if ( examsData === null ) return null;\r\n \r\n // Filter out Section exams & then sort them.\r\n let examsArr = examsData\r\n .filter(item => item.sectionType === sectionType)\r\n .sort((a, b) => a.sectionOrder - b.sectionOrder);\r\n \r\n // If 'sectionType' is 4 'Strategic Professional', then filter\r\n // exams again into 'SBL', 'SBR' & the others.\r\n const spFilterArr = spFilter === 1 ? ['SBL', 'SBR'] : ['AFM', 'APM', 'ATX', 'AAA'];\r\n if ( sectionType === 4 ) examsArr = examsArr.filter(item => spFilterArr.includes(item.shortName));\r\n \r\n return (\r\n <>\r\n {examsArr.map((item, idx) => (\r\n \r\n ))}\r\n \r\n );\r\n \r\n };\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n
\r\n \r\n {/* Exams layer header: START */}\r\n \r\n {/* Exams layer header: STOP */}\r\n \r\n {/* Exams layer body: START */}\r\n
\r\n \r\n {/* Applied Knowledge exams: START */}\r\n
\r\n {drawExamSticks(1, null)}\r\n
\r\n \r\n {/* Applied Skills exams: START */}\r\n
\r\n {drawExamSticks(2, null)}\r\n
\r\n \r\n {/* Ethics Module exams: START */}\r\n
\r\n {drawExamSticks(3, null)}\r\n
\r\n \r\n {/* Strategic Professional 1 exams: START */}\r\n
\r\n {drawExamSticks(4, 1)}\r\n
\r\n \r\n {/* Strategic Professional 2 exams: START */}\r\n
\r\n {drawExamSticks(4, 2)}\r\n
\r\n \r\n
\r\n {/* Exams layer body: STOP */}\r\n \r\n {/* Exams layer footer (only on desktop): START */}\r\n \r\n {/* Exams layer footer (only on desktop): STOP */}\r\n \r\n
\r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default LayerExams;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useState, useEffect} from 'react';\r\n\r\nimport AppContext from '../../context/app/AppContext';\r\nimport { defineMonths,\r\n defineYear } from '../hooks/utilityFunctions';\r\n\r\n\r\n/*\r\n * This LayerCalendar component displays the 12 months as rows starting from \r\n * the users local current month.\r\n */\r\nconst LayerCalendar = () => {\r\n \r\n \r\n // Reference Context api's\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context api's.\r\n const { displayType,\r\n screenshotStatus } = appContext;\r\n \r\n \r\n // Component state.\r\n const [monthsArr, setMonthsArr] = useState([]);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n //...\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // Define the current set of 12 months.\r\n setMonthsArr(defineMonths(true));\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n \r\n { displayType === 'mob' ? \r\n
\r\n
\r\n
\r\n
\r\n \r\n { screenshotStatus && (\r\n
\r\n {monthsArr.map((month, idx) => (\r\n
\r\n
\r\n {month} {defineYear(month)}\r\n
\r\n
\r\n {month} {defineYear(month)}\r\n
\r\n
\r\n ))}\r\n
\r\n ) }\r\n \r\n { !screenshotStatus && (\r\n
\r\n {monthsArr.map((month, idx) => (\r\n
\r\n ))}\r\n
\r\n ) }\r\n \r\n
\r\n
\r\n
\r\n : \r\n <>\r\n {monthsArr.map((month, idx) => (\r\n
\r\n
\r\n {month} {defineYear(month)}\r\n
\r\n
\r\n {month} {defineYear(month)}\r\n
\r\n
\r\n ))}\r\n \r\n }\r\n \r\n \r\n \r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default LayerCalendar;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useState, useEffect} from 'react';\r\n\r\nimport { defineMonths,\r\n defineYear } from '../hooks/utilityFunctions';\r\n\r\n\r\n/*\r\n * This LayerCalendarSticky component displays the calendar over the exams,\r\n * only required on mobile.\r\n */\r\nconst LayerCalendarSticky = () => {\r\n \r\n \r\n // Component state.\r\n const [monthsArr, setMonthsArr] = useState([]);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n //...\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // Define the current set of 12 months.\r\n setMonthsArr(defineMonths(true));\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {monthsArr.map((month, idx) => (\r\n
{month} {defineYear(month)}
\r\n ))}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default LayerCalendarSticky;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport LayerExams from './LayerExams';\r\nimport LayerCalendar from './LayerCalendar';\r\nimport LayerCalendarSticky from './LayerCalendarSticky';\r\n\r\nimport { IconReset } from '../hooks/ImageAssets';\r\nimport ChevronMidBkgrndB from '../../assets/img/chevron-mid-bkgrnd-b.png';\r\n\r\n\r\n/*\r\n * This Planner component only appears on both desktop & mobile\r\n * & dislays the interactive exam planner, including section titles & help text\r\n */\r\nconst Planner = () => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context api's.\r\n const { userAuthenticated,\r\n resetUserExams } = authenticationContext;\r\n const { displayType,\r\n examHeaderHeight } = appContext;\r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n //...\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n\r\n
\r\n \r\n {/* Reset button */}\r\n { !userAuthenticated\r\n &&\r\n
\r\n \r\n
\"\"
\r\n
\r\n }\r\n \r\n {/* Sticky calendar - Mobile only */}\r\n { displayType === 'mob' ? : null }\r\n \r\n {/* Exams header, sticks & footer */}\r\n \r\n \r\n {/* Calendar */}\r\n \r\n
\r\n \r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default Planner;\r\n\r\n\r\n/*** Scripts end... */\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAA8CAIAAAALyBZ4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAydpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDExNi4xNjQ2NTUsIDIwMjEvMDEvMjYtMTU6NDE6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkU1RjdBQjk0NkZBQjExRUJBRTMzQkJDN0YwODIyRTJCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkU1RjdBQjkzNkZBQjExRUJBRTMzQkJDN0YwODIyRTJCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE4IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzRUMzNjcyNUZFNDExRUI5MzM1ODhDN0M1QjQ4RjA0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzRUMzNjczNUZFNDExRUI5MzM1ODhDN0M1QjQ4RjA0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PyfhfwAAAR5JREFUeNqc1EEOgjAQheE6G1mJHsHExMSdN/D+l0Fc4c42NNSWmembmcQggR+/mtDD9fn6LkvYze3+OA5DkIdO44W98JmnoA6NZ76c370yklhVXAK7ilLGjw+cSh84lT4wrQcHOJcOcC4dYNq+WcGltIJLaQXT/4npZ6vStNSqNIGpOcfBbYmD2xIH0/4mEMyUIJgpQTCxj0fAfImA+RIBk/TidsFi2QWLZRdMyr6og7VSB1PwjlZKe9dq0Upp71rXL5bSxrX95+SjaqVOFcsuVSy7VLHsUvkSofIlQuVLhMqUIJUpQSpTgtS2xKltiVPbEqdWpYlalSZqVZqopbRSS2mlltJKzaWDmksHNZcOaip91FT6qKn0UeP8BBgAbM7of6I+LtkAAAAASUVORK5CYII=\"","import React, { useContext, useEffect} from 'react';\r\n\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport TmplInsModal from '../modals/TmplInsModal';\r\nimport { openExtLink } from '../hooks/utilityFunctions';\r\nimport { ImgLogo,\r\n IconExamPlanning } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This MobileIntro component only appears on mobile & displays the \r\n * intro animation & steps to take.\r\n */\r\nconst MobileIntro = () => {\r\n \r\n \r\n // Reference Context api's\r\n const appContext = useContext(AppContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { setScrollToPlanner,\r\n modalFtrTxt } = appContext;\r\n const { showModal,\r\n hideModal } = modalContext;\r\n \r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const onClickShowInfoModal = () => {\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n

Tap an exam and set it as exempt,
passed, taking or retaking

\r\n

Plan out the exams you want to take
in the next 12 months

\r\n

Then review the calendar for booking links
and preferred exam sessions

\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n );\r\n };\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n \r\n
\r\n \r\n {/* Logo */}\r\n
\r\n
\r\n {ImgLogo()}\r\n Exam planning\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {/* Chevron - start button */}\r\n
setScrollToPlanner(true)}>\r\n

Plan exams and build
a day-to-day study plan...

\r\n
\r\n\r\n {/* Copyright text */}\r\n
\r\n
\r\n © ACCA 2022\r\n |\r\n openExtLink('https://www.accaglobal.com/gb/en/student.html', true)}>ACCA Student resources\r\n |\r\n openExtLink('https://www.accaglobal.com/gb/en/footertoolbar/contact-us.html', true)}>Contact us\r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default MobileIntro;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport { openExtLink } from '../hooks/utilityFunctions';\r\n\r\n\r\n/*\r\n * This MobileAction component only appears on mobile & displays the \r\n * snapshot button & help text.\r\n */\r\nconst MobileAction = () => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context api's.\r\n const { userAuthenticated,\r\n userName,\r\n signInUser,\r\n signOutUser } = authenticationContext;\r\n const { staticsData,\r\n onClickTakeScreenshot } = appContext;\r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n //...\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n
\r\n \r\n {/* Top content area: START */}\r\n
\r\n \r\n {/* Log in text & button */}\r\n
\r\n { userAuthenticated ?\r\n <>\r\n Logged in as
\r\n {userName} \r\n \r\n \r\n :\r\n <>\r\n \r\n  to access additional
study planning features\r\n \r\n } \r\n
\r\n \r\n
\r\n {/* Top content area: STOP */}\r\n \r\n {/* Bottom content area: START */}\r\n
\r\n \r\n {/* Snapshot text & button */}\r\n
\r\n When you're ready of your 12 month plan for reference.\r\n
\r\n \r\n {/* Help text */}\r\n
\r\n \r\n
\r\n

{staticsData.copy.guidance1}

\r\n
\r\n\r\n
\r\n

{staticsData.copy.guidance2}

\r\n
\r\n \r\n
\r\n\r\n
\r\n {/* Bottom content area: STOP */}\r\n \r\n
\r\n \r\n {/* Copyright text */}\r\n
\r\n
\r\n © ACCA 2022\r\n |\r\n openExtLink('https://www.accaglobal.com/gb/en/student.html', true)}>ACCA Student resources\r\n |\r\n openExtLink('https://www.accaglobal.com/gb/en/footertoolbar/contact-us.html', true)}>Contact us\r\n
\r\n
\r\n \r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default MobileAction;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useRef, useEffect} from 'react';\r\n\r\nimport AppContext from '../../context/app/AppContext';\r\nimport Planner from './Planner';\r\nimport MobileIntro from './MobileIntro';\r\nimport MobileAction from './MobileAction';\r\n\r\n\r\n/*\r\n * This AppBody component appears on both desktop & mobile\r\n * & displays the interactive planner. For mobile only it will also\r\n * display the intro screen & snapshot/help text screen.\r\n */\r\nconst AppBody = () => {\r\n \r\n \r\n // Reference Context api's\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context api's.\r\n const { displayType,\r\n screenshotStatus,\r\n scrollToPlanner,\r\n setScrollToPlanner } = appContext;\r\n \r\n // Element reference hooks.\r\n const refMobScroll = useRef(null);\r\n \r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const drawForDesktop = () => (\r\n \r\n );\r\n \r\n const drawForMobile = () => (\r\n <>\r\n { !screenshotStatus && }\r\n
\r\n \r\n
\r\n { !screenshotStatus && }\r\n \r\n );\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //... \r\n if ( scrollToPlanner && \r\n refMobScroll.current !== null ) {\r\n \r\n refMobScroll.current.scrollIntoView({ behavior: 'smooth' });\r\n setScrollToPlanner(false);\r\n \r\n }\r\n \r\n // eslint-disable-next-line \r\n }, [scrollToPlanner]);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n \r\n
\r\n\r\n { displayType === 'mob' ? drawForMobile() : drawForDesktop() }\r\n \r\n
\r\n \r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default AppBody;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useEffect} from 'react';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport TmplInsModal from '../modals/TmplInsModal';\r\nimport ModalContentLogin from '../modals/ModalContentLogin';\r\nimport { ImgLogoTxt,\r\n IconStudyPlanning,\r\n IconExamPlanning } from '../hooks/ImageAssets';\r\nimport useWindowDimensions from '../hooks/getWindowDimensions';\r\n\r\nimport ChevronMidA from '../../assets/img/chevron-mid-a.png';\r\n\r\n\r\n/*\r\n * This AppHeader component only shows on desktop & contains \r\n * the ACCA logo & snapshot button.\r\n */\r\nconst AppHeader = () => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Reference hooks.\r\n const history = useHistory();\r\n const location = useLocation();\r\n \r\n // Get window dimensions.\r\n const { winWidth } = useWindowDimensions();\r\n \r\n // Destructure Context api's.\r\n const { userAuthenticated,\r\n userName,\r\n signInUser,\r\n signOutUser,\r\n clearStudyDaysData } = authenticationContext;\r\n const { isIntro,\r\n screenshotEnable,\r\n modalFtrTxt } = appContext;\r\n const { showModal,\r\n hideModal } = modalContext;\r\n \r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const onClickShowInfoModal = () => {\r\n \r\n console.log('location', location);\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n \r\n let htmlBody = null;\r\n let cusFtrTxt = '';\r\n \r\n if ( location.pathname === '/study-planner' ) {\r\n \r\n htmlBody = () => {\r\n return (\r\n
\r\n \r\n { winWidth < 360 ?\r\n
Add day-to-day tasks and milestones
\r\n :\r\n
Add day-to-day tasks and target milestones
\r\n }\r\n \r\n
(Check out the exam curriculum for suggested topics)
\r\n \r\n { winWidth < 360 ?\r\n
Configure Final Steps and Exam Date*
\r\n :\r\n
Configure your Final Steps and Exam Date*
\r\n }\r\n \r\n
*Exact dates for scheduled exam sessions are usually released 6 months prior to the session window
\r\n \r\n { winWidth < 360 ?\r\n
Check off tasks as you go and reflect!
\r\n :\r\n
Check off tasks as you go
and reflect on your progress
\r\n }\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n };\r\n cusFtrTxt = 'In future releases we\\'ll add the facility to auto-fill
tasks and get reminders on your device';\r\n \r\n }\r\n else {\r\n \r\n htmlBody = () => {\r\n return (\r\n
\r\n \r\n

Tap an exam and set it as exempt,
passed, taking or retaking

\r\n

Plan out the exams you want to take
in the next 12 months

\r\n

Then review the calendar for booking links
and preferred exam sessions

\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n };\r\n cusFtrTxt = modalFtrTxt;\r\n \r\n }\r\n\r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n \r\n \r\n \r\n /*\r\n * Component event handlers.\r\n */\r\n \r\n const onClickGoToHome = () => {\r\n \r\n // Clear 'examStudyDaysData' so we fetch new data when returning.\r\n clearStudyDaysData();\r\n \r\n // Navigate to the home page.\r\n history.push('/');\r\n \r\n };\r\n \r\n // When a user click the Study Planning button open a modal notifying them they\r\n // need to login or a modal prompting them to click one of the exam 'Plan' buttons.\r\n const onClickStudyPlanning = () => {\r\n \r\n const txtTitleA = 'Your ACCA Study planner'; \r\n let htmlBody = null;\r\n \r\n // Notify user they need to click a 'Plan' button.\r\n if ( userAuthenticated ) {\r\n \r\n // Instructional - define modal content.\r\n htmlBody = () => {\r\n return (\r\n
\r\n \r\n

To start planning for an exam:

\r\n \r\n
First, select your exam session
and add your study period.
\r\n
Then tap that \"Plan!\" tab, or the exam's study period to access your day-to-day Study Planner.
\r\n
And plan for exam success!
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n );\r\n };\r\n \r\n }\r\n \r\n // Else prompt user to login then click a 'Plan' button.\r\n else {\r\n \r\n // Instructional - define modal content.\r\n htmlBody = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n \r\n }\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n \r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, [screenshotEnable]);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n \r\n
\r\n
\r\n { userAuthenticated ?\r\n <>\r\n You are logged in { userName !== '' ? userName : null }   \r\n \r\n \r\n :\r\n <>\r\n \r\n  to access additional study planning features\r\n \r\n } \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {/* Logo */}\r\n
\r\n
\r\n {ImgLogoTxt()}\r\n
\r\n
\r\n \r\n {/* chevron */}\r\n
\"\"
\r\n \r\n {/* Main navigation buttons */}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default AppHeader;\r\n\r\n\r\n/*** Scripts end... */\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALAAAAA8CAYAAADGxTD9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAylpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmVkYTJiM2ZhYywgMjAyMS8xMS8xNy0xNzoyMzoxOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEEyQzA0Qzk3RjdGMTFFQzkzNjhGNkZEQTU1ODg0NDQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEEyQzA0Qzg3RjdGMTFFQzkzNjhGNkZEQTU1ODg0NDQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTY4OTE4NUY1Q0RCMTFFQjkxMjNBNTBBMUI1RkI3NzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OTY4OTE4NjA1Q0RCMTFFQjkxMjNBNTBBMUI1RkI3NzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5r9WMzAAAOB0lEQVR42uxcCXgURRZ+cyczmYQkkAQUOURu9BOFDxQQOUQ8EBH0E1zkQ/3EVRQU3F1XV9lV0U+R9T4QdxHFlYjIoayoKKKiLHKuipy5T3NNJjOZq2tfdb+ZqenMJFEJuKF+/ZnpV/Wqq7r/7n6vqicGhoBTCwaQaDcw83+KnF1A8VaD0ZrWLgcZ8lWBre9gyPluhzzj7VHAirsaFPABoIjbIxQIgVJTK892exWwMTlNFW97vQMzfxUYU53ybLdDGOUhkJAClpCQApaQkAKWkAKWkJAClpCQApaQkAKWkAKWkJAClpCQApaQkAKWkAKWkJAClpCQApaQApaQkAKWkDgZMLdJq/x3oopClwheIwZD2/pJSAHHg8FgBsVXC0H+eznQfs5rsWUBA0UTW0xlIzCfF0LgBgbRn/6ykPbdBElgsDnRoMTx86BfQwI/OxhtDtxdUz+OoK8SWGQwvK4T6wblmZUCBggF68GcmQNp836vbvt37IKGDblgsqTH/DjdYDBBwFehmhxjLoekKyeCqUsXvIsaQCmrgMYtn4Fn7RoIodgs1k4oOEZ+xqjfZVMgecI4MObkaH6l5eDd/DF4Nr6Dfh70owsnLNdQEP+vhdTrZ4O5fx/cVsD1+FJQ/PVgMCX/Fo7tYuR1yL3IfyNfbqH+WORU5IvIfT9jPxcg30AeQe5G3tsGY8ETDl8gG5BFtI/DJ+GYhsd6DLkfOQ/434UoTM5i+WBmhdZMgZ0YHhFWe98iFkEggPWsrAAskXpFWA9bY4UZ2cyzfiNLBN+uXayk/znsKNYtsnaM+BV17cm8mz9K6Nf4+TZW3KtfxC+833wwsUJHp5i6VbPmqH3mfRfHkoe20j6Dw9XgVzAFORA5DHkBcjiyL3IQbXOeT7Y7kO/TPre2ou3PqO6Sn9mns5HvCofh14wvDTmLxiPaU5FvIfNoH6N/5X5+KZuMNaGACwzJqi1w5GiMSCrHTVbFVGjLUpkHBlaQlMZCRaWsRfiDrKTPIFW4eSjAAkcGU6pqW3RTPI2sqHM37ULh+7VmqUKtmnlr7EWyfYdWx+hsKwHPaKmrcYTE8UEr2h6KfBp55i/s29rjML7HqI3DCconUfkFJ0nAYb4dHmv8WQh8tAeZF+yTpoG5Z4+YopSFc7XoIegFCHjUcCBr/TownpYTqdOwYhVUTpkKFVddDfUvvBJ1tpgg55uvwIiPeP63GrI/3ASGjOhP+d2v/lP1q5w8BRqWr4h2J9kGOV9uA6MVY+FAvUoz/udceFdM36zDhoD9vIsgqNS3VQLYjz6HIs9E9qFt/sjvSbyPbKeJR7QVbfO/unIXhQK/BCnHYXyz6ZOPrVec8m702XiSw7Pk5mPgoF87IrfOalKUdMkYSOp1LvgO71ajUfvw8WAbf1GkvH7J81Cx4A71jHG61r8Hoe8PQofnntTOZFoKJI8YC4EffwTrhUMjfnX3PgSVTyyKXFGudWuhE8bBqfdrIZ2pR1dImTod6lYt0/o2YiJYBvZr0j/HbbPBffNWNSbmsfRxRgXyAPI/OvtRiss43kHyAxcSpinz6PMeZDZyF/Jfgv84JCYNUIX8FlmGvJhsNcgPkL2RN/JUBLmR6iVCJ+QE8nXwewO10Rxmkd9I5DbkfOTtCaZdeVx/Fgke72TwfoL+XIicTN83Ibfoygcir0JmIX9C5tLx1YPfHafQDaIU2ZVLhmau9CFERzUsKM7sHn00f7Gd1T/7SmS77sFH1Uc4DyXq/vZ4xB4sKcV2DOoju9DWSWWBwYE2YGXnjmBlQy5iZeePYgXZOcy19PloaH3kmOqTD8aoH9g1v/NGaX5DR7OSnoNYgSlN3bd7+esR//q/v8QCBw5qz3BXPSs0pMSERMcxhIhHjtwEZR0prOCP9x3IkBBifCTUE+O6m8j2pmBbhvTyQyzYbtDt6yNhfGchq4W6n7RiHA3I/fT9J+q3vs6d1N5SLgtdf27U1X2R7G6kh76/JpQ/IPjWCN+v1LVzg1AmHr//JoiBteSt5u77IjVdi5ew4uweUaEWFrN8k10VsGfNuojdvWKVFh+bMqIxKBejMU0V0TEib9+7eUvUD8Wo+pl1fuCM8SuAJJZvsGJZOlPcDRH/og6dWf3zyyLb1bfO19qjZK4NBWygNlcnKOdZZoDqLBbs4at+PG2bkBeT7WbBNkc4YSPInsFTEbKZhTY3C+Pj9gP81CHH6urF4yDyPYu2h9H2WF292UKsP0oYYx3ZDWSbT9vTBd+byXYNbefrzgcf7yG6MMLtjBCS4G7CMf+GLp6mMTALuMBisINzwdyIrXHLVnCXH4PArr3a4/z0LpBy9TRQZ1tNphZDPQPFowaBkQWLZieijTF+POIJMT84ZswAg8OuWgK794G7thS8azdEg8G5t2gDwxj9BK1kJpp4ZhSmFSL/pJti4xgVnrFElusOIrfV0/dpNI3FUU1TSUCP3jBS6THclcIZG8WynzTTvzDm0+cY5B3I4ULIox8PBxfH5/S9EvmCrt5TFGatEmyvkv+DtM2Px23irC1yEU9lqO8c/6BPHqPmC30oV5cImiwlq8mbD5InXAamzlpSxho8ECoqAWt2Nvj3RKcnHbfMVFsK7N4fjY/Hj1ZbDYXwGBtM2iKF34vbtWDt1h+sPQeBtcdAMDlTIXj4aMTPNnqk2pFQsFoTLS1uKKwOrN0Hog/69ToHTB0z1bPr/EM0efPv2gM2PnccDEYWVywD+kHSoOE4loYTtZrX0k526rZT4/hlxLkYMulTH18G4uQw/KTyPwBXgPwB2YPE1RpcydMO5FLkM8i/CsIRNWKnT30s26ATuI8unkaK2f303UBxLJC4X0LegHwNuRb5EMW2PqrDE8kvm1u/iBVwUDsujjnR5M1gs0L2zq3QvbAI7DOujYoOk7lkSwo0rHwjYuOiz1j6onop+X0VEPBVgp+5IfX2e6Dz4b3Q+dAe6Hx0PyT1PR/qH3sq2pue3SH9/kfVM8d9VOIxSX/wEfTboxF9TV2yweLMAXPvaIJsv+4a6F5QAB035sYMxT5rurrsAcqJ0G+L75S4ddvW8PUXZxZBfGyEe5+kz1UFoYiZOb9jf4PsT2wN+N20I/I8EqiZLoSbaHt6HAGHElyQEXnQQsOfkX8hPkSJ4tXCwo2LLpiBZKuhMYvLvPubnXERY2AeKxZ3OJ21FrV3/pFhysgaN30SY294421WfvkVrGzCpcz19AtN5oLzLSlqHOzb9nVMkXvZCtWv/NKJrP7l12LKQvlF7DD61D/9cqv6FqqsYoX2DHXh5QQkcSsTlKVT+XKdvR/Z5wq28WSbKtgWkq2vzv8lsqcLtr3IEvq+Uxc3t5S85TUztmJhewHZ+unqLYkz9729FcetUmd7IE4738bxreJrXLokzqStvC0UksNQiHne28Aact9lnnc3MHfuOyiMn6LFFZWYXBlZHgoyVFzaKmGVnD0kupDhzGRKdcsLGSyosIL0LizfaI81H8vDPuUyz1rs4+rVrPHDT2PKq2+aq47pBAj48RbKn4mzssVxvW6VSb/KFc76nTr/Z+OMZbvO9pYuUYzHnlRnZILyp6g8U5eIWXT1HtHtewVtz9TV48lktnBcxBXKHLKVxVmd7CXYriPbvhgBqytYHbJjBOBZ/wE7JMwCHERWTpzS5C7M7YWZnVFEuYmXkr/ewUoHD9NmByzRJeiiM85knnXrE/p5P/1MXYL+kU+dPbc8pqz4tN7qXfkYTelxsQYOHYkui7lcKHqbWt4GAuYrZ98J3flad0ccgBSXMcN34d7IgvAMIoliPN1V1FlB5O+QEwVfXv9y8n9CsP9AswHiY2l7nGkqPj2Wpev/3bryMXHKy4RZh53CSiNfqbuC6j0stPM9zWjwmYIvyXYM+bFwgc3TTbN9QUvuh4jh/uTQDEe5IHZ+jCuEfm03i3mIyZEB7udewZigUY1CPG+uBguGRCaTUw1LTCEveDdtAteixWBwONQEKVheBjZjEoSqSqHi2mlgH3kJ2K+9BuNVTKzMJlDKK6Hx4y3gXr1SDWws1o5qKM8Hwd9sCxQcgfKrJoFj/CRInnyFljwajepLQN6N70PDxjWqXxLuw79vHyhPPqMFYZhYBosPYjDpwJzPovY/pNRAzZx5kHTpOIrUQmCypoHSWNEWcS9PGIqRmykBy9RF3CGalF9H5XVCksanc9bQQkUjtbWNZg/OoNjWT4sdZbRoEI6XeZz7Os1G9CPfWnpZyCesltVSfOmgVUF9NuChRZciSrj8ccq3IkuQpyM7IN+ixZy+QvzNE7iVtAgzgOJXRosYC5DXU0JZS7MTb5LfbbTvmXR8+IzHV8iHKdEz09gH0DiG0D6G03h48pelzmMW2bNB8dagHpMxc3dFkzJO/voko5idzyz4fRBgdU3r8D77/ehfF/NaZHQuCYVms8d9nRJ8PjyrriZ+WvtO9EtCO14smBgqQvputmZq/tQmfysuXp2QvwpsfQZDzoFvW7usK/H/9zolA4PFAhaWIU7gRsUbfknXYsa7cmb0fWCxjoW/oZAZfTGdV+HLuUZK0lmcKQFus1pa9OMmE4rRJOxX3ybvR9w6EqfQ+8CtPenN1eNlMQsc0Po2W/JrTf+kcE8ZyN/ESUgBS0hIAUtISAFLSAFLSEgBS0hIAUtISAFLSAFLSEgBS0hIAUtISAFLSAFLSEgBS0hIAUtIAUtISAFLSJwUqL/IULx1oPDfGvrr2uUg+Y+OFFe9PNvtVcDGlAwAbzUYrWntcpDMVwXG9A7ybLdDGLS/035qjVme9vaD/wkwAB7QGWUjnYkgAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWEAAAB4CAYAAAAjUUMwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAylpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmVkYTJiM2ZhYywgMjAyMS8xMS8xNy0xNzoyMzoxOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzNFQjdGNzc3RjdGMTFFQ0E0RjhERjVFRjlCRDRBNjQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzNFQjdGNzY3RjdGMTFFQ0E0RjhERjVFRjlCRDRBNjQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OERGMjc0RDI1RDc0MTFFQjg4NEI5NjE0NjcxQ0I3REYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OERGMjc0RDM1RDc0MTFFQjg4NEI5NjE0NjcxQ0I3REYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6G6FKEAAAgQUlEQVR4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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAABkCAYAAACRiYAFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkNERTgwNzdENUZFODExRUJBNDQ2RjRBQzc0QUZENDE2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkNERTgwNzdFNUZFODExRUJBNDQ2RjRBQzc0QUZENDE2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Q0RFODA3N0I1RkU4MTFFQkE0NDZGNEFDNzRBRkQ0MTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Q0RFODA3N0M1RkU4MTFFQkE0NDZGNEFDNzRBRkQ0MTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5LHINbAAADxElEQVR42ryazUvUYRDHZ2UJhCU8lORFhKRDECR0EOogQUKHLoLgwQohxDSlF4v+hCgzWfMFEaT0IAheOgQG4aGoQ+Ah6BB7EC+GdJAQhJC2eWCCTZ6ZfZnn68D3NM/u58fu75lnZp7JnDx9vp2IPlPcPrHaCWB1rDuG/yWBLIC7WU2Kf4W1jQIfYw0q/t+saRQ4WL88QMzm5AEg4EZWj7Jmh7WMAge7a6ybQILbWJeUdRusDyhwsGFj7SQS3MVqVtausrZQ4CzrtrL2gDWDAge7xapX1s+z9lHgE6xeZf1P1hIKfCQvmQY+x+pQfF9Z6ygwPKBY4GusFsX3hrWJAgffkOL7w5pCgf9trZyxtfZQ4AbWdcW3y1pEgUlSo4yRGhVR4LOsTsX3jbWGAkMCSqXgq6xWxfeWVUCBw7oRY2vlUeBgfcbWWqh2a1UDzgk8ZnsCh4BJfm7tM3n52SHgVnnRYlaQFw0CTra1agF3SlCJ2ZoEFQg4Y1SYxUorzFrAJAdHg+JblAMEAs7JkaltrXkUmCRJ0D4/VW5recAtkh7FbFPSIwjYlRB6wR2SCsdsXVJhCLjmgJIC3CtlT8yWpOyBgOuNrbWvba0UYJLSNqv4ZqTEhYCbpaiP2ZYU9RAwGakRxVKjlOCL0sCJ2Udp4EDAVQWU1ODQpGtUfKFJt4MCh7Zkv+ILbck5FDjYIOl90Wl5AAg4tKC7FV9oQa+gwEQVNN9RYFjOVc5eGL57KHAhFiJLCoIuFDgfOxRKwmoWAd41ireG0qIvNdjqBP3XQUoJDoFh3Iho91Fv9TLpd1Q9dOhuKyV4oppTKxX4/eHztsQux87pVOCnhu8RKnJZTTa1OVeX6L8tGv9tBgH+QfodxSnS7zbc4CnSb2WGSL/NcYEDcNaoLgZQx6JaF5Wpp1zgUO2PGd85ikoEQrX/XfGFLsEZFLiq8JgKvEH6hVcb6RdlbvATw/cYlextGfmUVaq6wZNGPjVsFOcu8C/SO3bHjXaEGzxHeo+yn/Tepgt8QHrrKEt2y8kFtgYTrIEGN/iZ4XuIqp1CsPii+EKwuIACu8NjLeAC6e3fVtLbxm7wGOkN71HPeW59MBzyrxVfOORvoArzWSOfGrDyKQ/YGpmzRu3c4FdGAXaT9OFCF7hobKGMZwuVA1vXdNb1nhv83Fj/IFVNWxfJp94Z+dQVFBgSHsuBt0mfv2wifW7TDc6TPnE6QnpH1gXeMwqwXLkCzANeMPKpvmrzqUrB1gCJNXjiBq+SPjLTRfqojRt8JAHjsP0VYAC5q7EvQ/ldJgAAAABJRU5ErkJggg==\"","import React, { useState, useEffect } from 'react';\r\n\r\nimport { openExtLink } from '../hooks/utilityFunctions';\r\n\r\n\r\n/*\r\n * This AppFooter component only shows on desktop & contains \r\n * the ACCA copyright text.\r\n */\r\nconst AppFooter = () => {\r\n \r\n \r\n // Component state.\r\n const [isLit, setIsLit] = useState(false);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const toggleTxtHighlight = () => {\r\n \r\n setIsLit(!isLit);\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n \r\n
\r\n © ACCA 2022\r\n |\r\n openExtLink('https://www.accaglobal.com/gb/en/student.html', true)}>ACCA Student resources\r\n |\r\n openExtLink('https://www.accaglobal.com/gb/en/footertoolbar/privacy/data-protection.html', true)}>Privacy\r\n |\r\n openExtLink('https://www.accaglobal.com/gb/en/footertoolbar/contact-us.html', true)}>Contact us\r\n
\r\n \r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default AppFooter;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\n\r\n\r\n/*\r\n * This ModalContentPromptLogin component displays the HTML for the prompt user login modal.\r\n * This modal will appear if a user has been logged out but is attempting to call the server.\r\n */\r\nconst ModalContentPromptLogin = ({ statusCodeVal }) => {\r\n \r\n \r\n // Reference Context api's\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { signInUser } = authenticationContext;\r\n const { setIsIntro } = appContext;\r\n const { hideModal } = modalContext;\r\n \r\n // Component state.\r\n //...\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const onClickContinue = () => {\r\n \r\n hideModal();\r\n setIsIntro(false);\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n //...\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <> \r\n
\r\n \r\n { statusCodeVal === '403' ? \r\n <>\r\n
You do not have access to the day-to-day
Study Planning toolkit
\r\n \r\n :\r\n <>\r\n
You have been logged out
\r\n
To continue planning log in again
\r\n \r\n } \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n This tool is designed for general planning purposes, for detailed information on progression rules and exam availability please refer to the ACCA website.\r\n
\r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default ModalContentPromptLogin;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useRef, useState, useEffect} from 'react';\r\nimport html2canvas from 'html2canvas';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport AppBody from '../layout/AppBody';\r\nimport AppHeader from '../layout/AppHeader';\r\nimport AppFooter from '../layout/AppFooter';\r\nimport TmplInsModal from '../modals/TmplInsModal';\r\nimport ModalContentLogin from '../modals/ModalContentLogin';\r\nimport ModalContentPromptLogin from '../modals/ModalContentPromptLogin';\r\nimport { IconTick } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This Home component contains AppHeader, AppBody & AppFooter layout components.\r\n */\r\nconst Home = () => {\r\n \r\n \r\n // Local non-state variables.\r\n let selectedExams = [];\r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { userAuthenticated,\r\n examsData,\r\n examsCompleted,\r\n updateCompletedArr } = authenticationContext;\r\n const { isRedirect,\r\n displayType,\r\n isIntro,\r\n isInitialLoad,\r\n setIsIntro,\r\n screenshotStatus,\r\n setScreenshotTgt,\r\n setScreenshotStatus,\r\n modalFtrTxt,\r\n showChkboxModal,\r\n toggleCheckboxModal } = appContext;\r\n const { showModal,\r\n hideModal } = modalContext;\r\n \r\n // Define some DOM reference hooks.\r\n const tgtRef = useRef(null); \r\n \r\n // Component state.\r\n const [isHide, setIsHide] = useState(true);\r\n \r\n // Check sessionStorage to see whether we have been forcibly logged out & should show\r\n // a login prompt when the site reloads.\r\n const showLoginVal = sessionStorage.getItem(\"show_login\") ? true : false;\r\n const statusCodeVal = sessionStorage.getItem(\"status_code\");\r\n \r\n \r\n\r\n /*\r\n * Component methods.\r\n */\r\n \r\n const updateSelectedExams = (event, examsArr) => {\r\n \r\n // If status is checked ADD exams to local 'selectedExams' array.\r\n if ( event.target.checked ) selectedExams = [...selectedExams, ...examsArr];\r\n \r\n // Else REMOVE exams from local 'selectedExams' array\r\n else selectedExams = [...selectedExams.filter(itemA => !examsArr.find(itemB => itemB.UNID === itemA.UNID))]\r\n \r\n };\r\n \r\n const checkExamsCompleted = examsArr => {\r\n \r\n for ( let i = 0; i < examsArr.length; i++ ) {\r\n \r\n const matchingArr = examsCompleted.filter(itemA => examsArr.find(itemB => itemB.UNID === itemA.UNID));\r\n\r\n if ( typeof matchingArr === 'undefined' ) return false;\r\n \r\n if ( matchingArr.length > 0 ) return true;\r\n else return false;\r\n \r\n }\r\n \r\n };\r\n \r\n // Return a line break if device is desktop.\r\n const addBreakOnDskTop = () => {\r\n \r\n if ( displayType === 'dsk' ) return
;\r\n else return '';\r\n \r\n };\r\n \r\n const showModalStep1 = () => {\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n const showModalStep2 = () => {\r\n \r\n if ( examsData !== null ) {\r\n \r\n // Sync local 'selectedExams' with context state 'examsCompleted'.\r\n selectedExams = examsCompleted;\r\n\r\n // Group Exams by Section.\r\n const arrayAK = examsData.filter(item => item.sectionType === 1);\r\n const arrayAS = examsData.filter(item => item.sectionType === 2);\r\n const arrayEM = examsData.filter(item => item.sectionType === 3);\r\n const arraySP = examsData.filter(item => item.sectionType === 4);\r\n \r\n const completedAK = checkExamsCompleted(arrayAK);\r\n const completedAS = checkExamsCompleted(arrayAS);\r\n const completedEM = checkExamsCompleted(arrayEM);\r\n const completedSP = checkExamsCompleted(arraySP);\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n

Mark any exam levels already completed:

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n );\r\n };\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n }\r\n \r\n };\r\n \r\n const showModalStep3 = () => {\r\n\r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n

Tap an exam and set it as exempt, {addBreakOnDskTop()} passed, taking or retaking

\r\n

Plan out the exams you will be taking {addBreakOnDskTop()} over the next 12 months

\r\n

Select a study period and build your plan

\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n );\r\n };\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n }; \r\n \r\n const screenshotSuccessModal = () => {\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n let ftrText = 'This tool is designed for general planning purposes, for detailed information on progression rules and exam availability please refer to the ACCA website.';\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n

A snapshot of your plan has been downloaded to your web browser

\r\n

Reflect and act on your plan, use this tool at any time to explore your options and think ahead...

\r\n

Good luck!

\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n );\r\n };\r\n \r\n // Create the footer text for the system modals.\r\n if ( displayType === 'dsk' ) ftrText = 'This tool is designed for general planning purposes, for detailed information on progression rules and exam availability please refer to the ACCA website.';\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n const onClickUpdateExams = () => {\r\n \r\n // Update global context state with completed exams.\r\n updateCompletedArr(selectedExams);\r\n \r\n // If required show next modal in sequence (only needed if following intro checkbox modal).\r\n if ( isIntro ) showModalStep3();\r\n \r\n // Else just close the modal.\r\n else hideModal();\r\n \r\n };\r\n \r\n const showPlanner = () => {\r\n \r\n hideModal();\r\n setIsIntro(false);\r\n \r\n };\r\n \r\n const onCloneDoc = (clonedDoc) => {\r\n \r\n clonedDoc.querySelector('.app-root').style.height = 'auto';\r\n clonedDoc.querySelector('.app-home').style.height = '880px';\r\n clonedDoc.querySelector('.app-home').style.maxHeight = '880px';\r\n clonedDoc.querySelector('.app-home .app-body').style.overflow = 'visible';\r\n clonedDoc.querySelector('.app-home .app-body').style.flex = 'none';\r\n clonedDoc.querySelector('.app-home .planner > .content').style.overflowX = 'visible';\r\n clonedDoc.querySelector('.app-home .planner > .content').style.overflowY = 'visible';\r\n clonedDoc.querySelector('.app-home .exams').style.overflowX = 'visible';\r\n clonedDoc.querySelector('.app-home .calendar').style.minWidth = '1370px';\r\n clonedDoc.querySelector('.app-home .exams-footer').style.display = 'block';\r\n\r\n clonedDoc.querySelector('.app-home .app-header').style.height = '100px';\r\n clonedDoc.querySelector('.app-home .exams-header').style.height = '95px';\r\n clonedDoc.querySelector('.app-home .exams-header').style.maxHeight = '95px';\r\n clonedDoc.querySelector('.app-home .exams-body').style.height = '556px';\r\n clonedDoc.querySelector('.app-home .exams-footer').style.height = '90px';\r\n \r\n clonedDoc.querySelectorAll('.app-home .exams-body .exam-header').forEach(el => el.style.minHeight = '0');\r\n clonedDoc.querySelectorAll('.app-home .exams-body .exam-body').forEach(el => el.style.minHeight = '0');\r\n clonedDoc.querySelectorAll('.app-home .exams-body .exam-footer').forEach(el => el.style.minHeight = '0');\r\n \r\n if ( displayType === 'mob' ) clonedDoc.querySelector('.app-home .mob-planner-wrapper').style.padding = '0';\r\n if ( displayType === 'mob' ) clonedDoc.querySelector('.app-home .mob-planner-wrapper .planner').style.padding = '0 50px';\r\n \r\n }\r\n \r\n const takeScreenshot = () => {\r\n \r\n const imgWidth = 1500;\r\n const imgHeight = 880;\r\n \r\n // Use html2canvas to take a screenshot of the planner.\r\n html2canvas(tgtRef.current, {\r\n windowWidth : imgWidth,\r\n windowHeight : imgHeight,\r\n width : imgWidth,\r\n height : imgHeight,\r\n // scale : 4,\r\n onclone : (clonedDoc) => onCloneDoc(clonedDoc)\r\n })\r\n .then(canvas => {\r\n \r\n const dataUrl = canvas.toDataURL('image/png', 1);\r\n const element = document.createElement('a');\r\n\r\n element.setAttribute('href', dataUrl);\r\n element.setAttribute('download', 'planner.png');\r\n element.style.display = 'none';\r\n \r\n document.body.appendChild(element);\r\n \r\n element.click();\r\n \r\n document.body.removeChild(element);\r\n \r\n setScreenshotStatus(false);\r\n screenshotSuccessModal();\r\n \r\n });\r\n\r\n };\r\n \r\n const promptToLogin = () => {\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => ;\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n };\r\n\r\n \r\n \r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n if ( showLoginVal ) {\r\n \r\n sessionStorage.removeItem(\"show_login\");\r\n sessionStorage.removeItem(\"status_code\");\r\n promptToLogin();\r\n \r\n }\r\n\r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n // When tgtRef acquires the content element store in \r\n // app state for global accessibility.\r\n if ( tgtRef ) setScreenshotTgt(tgtRef.current);\r\n \r\n // Show 1st of 3 instructional modals before the planner is revealed,\r\n // fade in the home page. Don't show modals if user is authenticated \r\n // or this is a redirect from login/logout. \r\n if ( !showLoginVal ) {\r\n \r\n if ( userAuthenticated || isRedirect ) showPlanner();\r\n else showModalStep1();\r\n \r\n }\r\n \r\n // Show the app when we are ready.\r\n setIsHide(false);\r\n\r\n // eslint-disable-next-line \r\n }, [tgtRef]);\r\n \r\n useEffect(() => {\r\n \r\n // Monitor global state of checkbox modal, open if TRUE.\r\n if ( showChkboxModal ) {\r\n \r\n showModalStep2();\r\n \r\n // Reset to closed so it can be opened again in future.\r\n toggleCheckboxModal(false)\r\n \r\n }\r\n \r\n // eslint-disable-next-line \r\n }, [showChkboxModal]);\r\n \r\n useEffect(() => {\r\n \r\n // Monitor 'screenshotStatus' if true take a screenshot.\r\n if ( screenshotStatus ) takeScreenshot();\r\n \r\n // eslint-disable-next-line \r\n }, [screenshotStatus]);\r\n \r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n \r\n {/* On mobile mask out content when taking a screenshot */}\r\n { ( screenshotStatus && displayType === 'mob' ) && (\r\n
\r\n
\r\n
\r\n

Taking a snapshot

\r\n
\r\n
\r\n ) }\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default Home;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext } from 'react';\r\nimport DOMPurify from 'dompurify';\r\n\r\nimport AppContext from '../../context/app/AppContext';\r\n\r\n\r\n/*\r\n * This Error page displays 404 errors.\r\n */\r\nconst ErrorPage = () => {\r\n \r\n \r\n // Reference Context api's.\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context api's.\r\n const { staticsData } = appContext;\r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n
\r\n
404
\r\n
\r\n
\r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default ErrorPage;\r\n\r\n/*** Scripts end... */","import React, { useContext, useState, useRef, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\n\r\n\r\n/*\r\n * This ModalChooseMood component displays the HTML for the Choose Mood/Reflection modal.\r\n */\r\nconst ModalChooseMood = ({ moodArr, itemData }) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { putDataNoPayload } = authenticationContext;\r\n const { staticsData } = appContext;\r\n const { hideModal } = modalContext;\r\n \r\n // Component state.\r\n const [curMood, setCurMood] = useState(0);\r\n const [tipTxtArr, setTipTxtArr] = useState([]);\r\n const [moodScroll, setMoodScroll] = useState(false);\r\n \r\n // Define some DOM reference hooks.\r\n const scrollerRef = useRef(null);\r\n const contentRef = useRef(null);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const drawMoodBtns = btnArr => {\r\n \r\n return (moodArr.map((item, idx) => {\r\n \r\n if ( btnArr.includes(item.id) ) {\r\n \r\n return (\r\n \r\n );\r\n \r\n }\r\n else return null;\r\n \r\n }))\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component event handlers.\r\n */\r\n \r\n const onClickUpdateMood = id => {\r\n \r\n // If id matches curMood then unselect it by setting id to 0.\r\n if ( id === curMood ) setCurMood(0);\r\n else setCurMood(id);\r\n\r\n };\r\n \r\n const onClickDone = () => {\r\n \r\n // Update day's current mood.\r\n //updateMood(, curMood);\r\n \r\n // Update any changes to the Mood Type, locally & async on the server.\r\n if ( curMood !== itemData.moodType ) {\r\n \r\n // Update 'moodType' locally.\r\n itemData.moodType = curMood;\r\n \r\n // Update 'moodType' on the server.\r\n // This will be ASYNC so post & forget, but if an error does come back handle that.\r\n putDataNoPayload('userexam/session/day/reflection', { itemUNID: itemData.UNID }, { userExamSessionDay: { UNID: itemData.UNID, moodType: curMood } });\r\n \r\n }\r\n \r\n // Close modal.\r\n hideModal();\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // Update curMood with passed in value for this item.\r\n setCurMood(itemData.moodType);\r\n \r\n // Populate 'tipTxtArr'.\r\n if ( staticsData.studyMoodType !== null ) setTipTxtArr(staticsData.studyMoodType);\r\n \r\n // If we are on a small mobile device & modal body needs to scroll\r\n // then show the scroll shadow just above teh CTA button.\r\n const scrollerHeight = scrollerRef.current.clientHeight;\r\n const contentHeight = contentRef.current.clientHeight;\r\n \r\n if ( contentHeight > scrollerHeight ) setMoodScroll(true);\r\n else setMoodScroll(false);\r\n \r\n // eslint-disable-next-line \r\n }, [staticsData]);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n
\r\n
\r\n \r\n {/* Prompt message */}\r\n

Add a reflection: How do you feel about this?

\r\n \r\n {/* Mood pickers */} \r\n
\r\n {drawMoodBtns([9, 8, 7])}\r\n
\r\n
\r\n {drawMoodBtns([6, 5, 4])}\r\n
\r\n
\r\n {drawMoodBtns([3, 2, 1])}\r\n
\r\n \r\n {/* Accompanying mood tip */}\r\n
\r\n { ( tipTxtArr.length > 0 ) && <>Tip: {tipTxtArr[curMood].tip} }\r\n
\r\n \r\n
\r\n
\r\n \r\n {/* Done button, updates item data & closes modal */}\r\n
\r\n \r\n
\r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default ModalChooseMood;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useRef, useState, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\n\r\nimport { IconTickCircled } from '../hooks/ImageAssets';\r\nimport { IconFlagCircled } from '../hooks/ImageAssets';\r\nimport { IconPlusCircled } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This ModalChooseTask component displays the HTML for the Choose Task modal.\r\n */\r\nconst ModalChooseTask = ({ itemData, addServerTask, updateServerTask, disabledTasks }) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { studyTasksData,\r\n putDataNoPayload,\r\n addStudyDayTask,\r\n updateStudyDayTask,\r\n deleteStudyDayTask} = authenticationContext;\r\n const { staticsData,\r\n toggleDocClicks,\r\n docClicked,\r\n docClickedTgt } = appContext;\r\n const { hideModal } = modalContext;\r\n \r\n // Define some DOM reference hooks.\r\n const txtRefs = useRef([]);\r\n const toggleBtnRef = useRef(null);\r\n const scrollerRef = useRef(null);\r\n const newTextRef = useRef(null);\r\n \r\n // Component state.\r\n const [showSelector, setShowSelector] = useState(false);\r\n const [taskTypesArr, setTaskTypesArr] = useState([]);\r\n const [curTaskType, setCurTaskType] = useState(null);\r\n const [newTaskText, setNewTaskText] = useState('');\r\n const [taskListArr, setTaskListArr] = useState([]);\r\n const [hasMilestone, setHasMilestone] = useState(0);\r\n const [confirmBtnIdx, setConfirmBtnIdx] = useState(null);\r\n const [dirtyText, setDirtyText] = useState('');\r\n const [isAddTask, setIsAddTask] = useState(false);\r\n \r\n // Local variables.\r\n const maxNumTasks = 15;\r\n const maxTaskChars = 144;\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n // Reference this day's tasks from the 'studyTasksData' array.\r\n const filterDaysTasks = () => {\r\n \r\n // Filter then deep clone the tasks array.\r\n const filteredTasksArr = studyTasksData.filter(item => item.userExamStudyDayUNID === itemData.UNID);\r\n const clonedArr = JSON.parse(JSON.stringify(filteredTasksArr));\r\n \r\n // Define the task list array.\r\n setTaskListArr(clonedArr);\r\n \r\n };\r\n\r\n const setTaskHeights = () => {\r\n \r\n if ( txtRefs.current.length > 0 ) {\r\n \r\n txtRefs.current.forEach(item => {\r\n \r\n if ( item !== null ) item.style.height = item.scrollHeight + 'px';\r\n \r\n });\r\n\r\n }\r\n \r\n };\r\n \r\n const drawTaskItems = () => {\r\n \r\n // Reset txtRefs array.\r\n txtRefs.current = [];\r\n \r\n // Return drawn task items.\r\n return taskListArr.map((item, idx) => (\r\n
\r\n \r\n
\r\n
\r\n
\r\n Delete?\r\n \r\n |\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n ));\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component event handlers.\r\n */\r\n \r\n const onClickDone = () => {\r\n \r\n // Update any changes to the Study Type, locally & async on the server.\r\n if ( curTaskType.ID !== itemData.studyType ) {\r\n \r\n // Update 'studyType' locally.\r\n itemData.studyType = curTaskType.ID;\r\n \r\n // Update 'studyType' on the server.\r\n // This will be ASYNC so post & forget, but if an error does come back handle that.\r\n putDataNoPayload('userexam/session/day/type', { itemUNID: itemData.UNID }, { userExamSessionDay: { UNID: itemData.UNID, studyType: curTaskType.ID } });\r\n \r\n }\r\n \r\n // Update any changes to the Milestone status, locally & async on the server.\r\n if ( hasMilestone !== itemData.milestoneType ) {\r\n \r\n // Update 'milestoneType' locally.\r\n itemData.milestoneType = hasMilestone;\r\n \r\n // Update 'milestoneType' on the server.\r\n // This will be ASYNC so post & forget, but if an error does come back handle that.\r\n putDataNoPayload('userexam/session/day/milestone', { itemUNID: itemData.UNID }, { userExamSessionDay: { UNID: itemData.UNID, milestoneType: hasMilestone } });\r\n \r\n }\r\n \r\n // Close modal.\r\n hideModal();\r\n \r\n };\r\n \r\n const onClickSelectorOption = val => {\r\n \r\n // Update type object.\r\n let selType = taskTypesArr.find(item => item.ID === val.ID);\r\n \r\n setCurTaskType(selType);\r\n setShowSelector(false);\r\n \r\n };\r\n \r\n const onClickAddTask = () => {\r\n \r\n // Bail if max number of tasks is exceeded.\r\n if ( taskListArr.length >= maxNumTasks ) return;\r\n \r\n // Note that this is an add task so we can jump scroller to end.\r\n setIsAddTask(true);\r\n \r\n const tmpUNID = new Date().getTime();\r\n \r\n // Create a new task object.\r\n const newTask = {\r\n UNID : tmpUNID,\r\n userExamStudyDayUNID : itemData.UNID,\r\n title : newTaskText,\r\n completed : 0\r\n };\r\n\r\n // Add new task to local array.\r\n addStudyDayTask(newTask);\r\n \r\n // Add new task to the server.\r\n addServerTask({\r\n endPoint : 'userexam/session/task',\r\n requestObj : {\r\n userExamSessionTask: {\r\n userExamStudyDayUNID : itemData.UNID,\r\n title : newTaskText\r\n }\r\n },\r\n taskUNID : tmpUNID\r\n });\r\n\r\n // Clear current task in the new text textarea.\r\n setNewTaskText('');\r\n \r\n // Set focus on the new text textarea, if it exists.\r\n if ( newTextRef !== null ) newTextRef.current.focus();\r\n \r\n };\r\n \r\n const onChangeTaskText = (event, taskUNID, text) => {\r\n \r\n const task = taskListArr.find(item => item.UNID === taskUNID);\r\n \r\n task.title = text;\r\n \r\n // Update local task state.\r\n updateStudyDayTask(task);\r\n \r\n // Also update height of text area to match content.\r\n event.currentTarget.style.height = event.currentTarget.scrollHeight + 'px';\r\n \r\n };\r\n \r\n const onFocusTaskText = (event, taskUNID, text) => {\r\n \r\n // Store text value of currently focused task, when user finished\r\n // editing only post to the server if it has changed.\r\n setDirtyText(text);\r\n \r\n };\r\n \r\n const onBlurTaskText = (event, taskUNID, text) => {\r\n \r\n // If text was not changed bail.\r\n if ( dirtyText === text ) return;\r\n \r\n // Update task on the server.\r\n updateServerTask({\r\n endPoint : 'userexam/session/task/title',\r\n requestObj : {\r\n userExamSessionTask: {\r\n UNID : taskUNID,\r\n title : text\r\n }\r\n },\r\n taskUNID : taskUNID\r\n });\r\n \r\n };\r\n \r\n const onKeyDownTaskText = (event, taskUNID, text) => {\r\n \r\n if ( event.key === 'Enter' ) {\r\n \r\n event.preventDefault();\r\n \r\n // If text was not changed bail.\r\n if ( dirtyText === text ) return;\r\n \r\n // Update task on the server.\r\n updateServerTask({\r\n endPoint : 'userexam/session/task/title',\r\n requestObj : {\r\n userExamSessionTask: {\r\n UNID : taskUNID,\r\n title : text\r\n }\r\n },\r\n taskUNID : taskUNID\r\n });\r\n \r\n // Blur current textarea.\r\n event.currentTarget.blur();\r\n \r\n }\r\n \r\n };\r\n \r\n const onKeyDownTaskSubmit = (event) => {\r\n \r\n if ( event.key === 'Enter' ) {\r\n \r\n event.preventDefault();\r\n \r\n // If textarea is empty, bail.\r\n if ( newTaskText === '' ) return;\r\n \r\n // Update task on the server.\r\n onClickAddTask();\r\n \r\n }\r\n \r\n };\r\n \r\n const onClickDeleteTask = (taskUNID, idx) => {\r\n \r\n // Hide the red delete confirm buttons.\r\n setConfirmBtnIdx(null);\r\n \r\n // Delete the task.\r\n if ( taskUNID !== null ) {\r\n \r\n // Remove task from local array.\r\n deleteStudyDayTask(taskUNID);\r\n \r\n // Update task on the server.\r\n // Status 0 means make the task inactive, akin to deleting it.\r\n updateServerTask({\r\n endPoint : 'userexam/session/task/status',\r\n requestObj : {\r\n userExamSessionTask: {\r\n UNID : taskUNID,\r\n status : 0\r\n }\r\n },\r\n taskUNID : taskUNID\r\n });\r\n \r\n }\r\n\r\n };\r\n \r\n const onClickTaskCompleted = taskUNID => {\r\n \r\n const matchingTask = taskListArr.find(item => item.UNID === taskUNID);\r\n const clonedTask = {...matchingTask};\r\n const newState = clonedTask.completed === 0 ? 1 : 0;\r\n \r\n clonedTask.completed = newState;\r\n \r\n // Update local task state.\r\n updateStudyDayTask(clonedTask);\r\n \r\n // Update task on the server.\r\n updateServerTask({\r\n endPoint : 'userexam/session/task/completed',\r\n requestObj : {\r\n userExamSessionTask: {\r\n UNID : taskUNID,\r\n completed : newState\r\n }\r\n },\r\n taskUNID : taskUNID\r\n });\r\n\r\n };\r\n \r\n\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n\r\n // Define the task types array.\r\n setTaskTypesArr(staticsData.studyActivityType);\r\n\r\n // Set local hasMilestone to match items milestone state.\r\n setHasMilestone(itemData.milestoneType);\r\n \r\n // Set height's of task textarea's to match content.\r\n // Manipulate DOM in a timeout, otherwise the refs aren't ready.\r\n setTimeout(setTaskHeights, 50);\r\n \r\n // Auto scroll the tasks window to the bottom, so the new task area is visible.\r\n setTimeout(() => {\r\n \r\n scrollerRef.current.scrollTop = scrollerRef.current.scrollHeight;\r\n \r\n }, 100);\r\n \r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n // Set the current task type.\r\n if ( taskTypesArr.length > 0 ) {\r\n \r\n const curType = taskTypesArr.find(item => item.ID === itemData.studyType);\r\n \r\n setCurTaskType(curType);\r\n \r\n }\r\n \r\n // eslint-disable-next-line \r\n }, [taskTypesArr]);\r\n \r\n useEffect(() => {\r\n \r\n // Toggle document clicks to close a selector drop down \r\n // when the selector has opened.\r\n if ( showSelector ) toggleDocClicks(true);\r\n \r\n // eslint-disable-next-line \r\n }, [showSelector]);\r\n \r\n useEffect(() => {\r\n \r\n // If document was clicked & we are not on the toggle button then close this popover.\r\n if ( docClicked && docClickedTgt !== toggleBtnRef.current ) {\r\n \r\n setShowSelector(false);\r\n \r\n }\r\n\r\n // eslint-disable-next-line \r\n }, [docClicked, docClickedTgt]);\r\n \r\n useEffect(() => {\r\n\r\n // Update the task list array for this day.\r\n filterDaysTasks();\r\n\r\n // eslint-disable-next-line \r\n }, [studyTasksData]);\r\n \r\n useEffect(() => {\r\n\r\n //Set height's of task textarea's to match content.\r\n setTaskHeights();\r\n \r\n if ( isAddTask ) {\r\n \r\n // Reset isAddTask so that scroller doesn't jump when editing or ticking tasks.\r\n setIsAddTask(false);\r\n \r\n // Auto scroll the tasks window to the bottom, so the new task area is visible.\r\n scrollerRef.current.scrollTop = scrollerRef.current.scrollHeight;\r\n \r\n }\r\n\r\n // eslint-disable-next-line \r\n }, [taskListArr]);\r\n\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
\r\n \r\n {/* Task type selector */}\r\n { curTaskType !== null &&\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
    \r\n {taskTypesArr.map((item, idx) => (\r\n
  • \r\n \r\n
  • \r\n ))}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n \r\n
Add up to {maxNumTasks} tasks and check as completed
\r\n \r\n {/* Task text inputs */}\r\n
\r\n\r\n {/* Current task list with check & delete buttons */}\r\n
\r\n
\r\n \r\n {/* Looping task item, can check, delete or edit task */}\r\n {drawTaskItems()}\r\n\r\n
\r\n
\r\n \r\n {/* Add task control */}\r\n { taskListArr.length < maxNumTasks &&\r\n
\r\n
\r\n \r\n
{newTaskText.length} of {maxTaskChars}
\r\n
\r\n \r\n
\r\n }\r\n \r\n
\r\n \r\n {/* Modal footer: Milestone & Done buttons */}\r\n
\r\n\r\n {/* Mark day's tasks as a milestone button */}\r\n
\r\n \r\n
setHasMilestone(hasMilestone === 0 ? 1 : 0)}>Mark the day's tasks as a milestone?
\r\n
\r\n \r\n {/* Done button, updates item data & closes modal */}\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n \r\n \r\n};\r\n\r\nexport default ModalChooseTask;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useState, useEffect } from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport { getDateSuffix } from '../hooks/utilityFunctions';\r\nimport ModalChooseMood from '../modals/ModalChooseMood';\r\nimport ModalChooseTask from '../modals/ModalChooseTask';\r\nimport TmplSysModal from '../modals/TmplSysModal';\r\n\r\nimport { IconTickCircled } from '../hooks/ImageAssets';\r\nimport { IconFlagCircled } from '../hooks/ImageAssets';\r\nimport { IconMood1,\r\n IconMood2,\r\n IconMood3,\r\n IconMood4,\r\n IconMood5,\r\n IconMood6,\r\n IconMood7,\r\n IconMood8,\r\n IconMood9,\r\n IconPlusCircled } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This StudyPlanItem component displays a Study Planner list item, showing the tasks & mood for that day.\r\n */\r\nconst StudyPlanItem = ({ itemData, examUNID, tasks }) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { examsData,\r\n postDataAsync,\r\n putDataAsync,\r\n updateTaskUNID } = authenticationContext;\r\n const { showModal } = modalContext;\r\n \r\n // Component state.\r\n const [moodArr, setMoodArr] = useState([]);\r\n const [examData, setExamData] = useState(null);\r\n const [itemDate, setItemDate] = useState('');\r\n const [unidValues, setUnidValues] = useState(null);\r\n const [disabledTasks, setDisabledTasks] = useState([]);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const formatDate = val => {\r\n \r\n const daysArr = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n const monthsArr = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n const date = new Date(val);\r\n \r\n return {\r\n dayNum : date.getDate(),\r\n dayName : daysArr[date.getDay()],\r\n monthName : monthsArr[date.getMonth()],\r\n yearNum : date.getFullYear()\r\n }\r\n \r\n };\r\n \r\n const htmlDate = val => {\r\n \r\n const tmpDate = formatDate(val);\r\n \r\n return (\r\n <>\r\n {tmpDate.dayName.substring(0, 3)}
\r\n {tmpDate.dayNum} {tmpDate.monthName.substring(0, 3)}
\r\n {tmpDate.yearNum}\r\n \r\n {tmpDate.dayName}
\r\n {tmpDate.dayNum}{getDateSuffix(tmpDate.dayNum)} {tmpDate.monthName}
\r\n {tmpDate.yearNum}\r\n \r\n );\r\n \r\n };\r\n \r\n const showMood = val => {\r\n \r\n switch (val) {\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n case 3:\r\n return ;\r\n case 4:\r\n return ;\r\n case 5:\r\n return ;\r\n case 6:\r\n return ;\r\n case 7:\r\n return ;\r\n case 8:\r\n return ;\r\n case 9:\r\n return ;\r\n default:\r\n return ;\r\n }\r\n \r\n };\r\n \r\n const showTasks = val => {\r\n \r\n return (\r\n
    \r\n \r\n {/* Milestone */}\r\n { val.milestoneType === 1 ?\r\n
  • Milestone!
  • \r\n : \r\n null\r\n }\r\n \r\n {/* Tasks */}\r\n { tasks.map((item, idx) => (\r\n
  • \r\n { item.completed === 1 ? \r\n \r\n : \r\n }\r\n {item.title}
  • \r\n ))}\r\n \r\n
\r\n );\r\n \r\n };\r\n \r\n const getActivityType = val => {\r\n \r\n switch (val) {\r\n case 1:\r\n return 'none';\r\n case 2:\r\n return 'planning';\r\n case 3:\r\n return 'learning';\r\n case 4:\r\n return 'revision';\r\n case 5:\r\n return 'final';\r\n case 6:\r\n return 'exam';\r\n case 7:\r\n return 'reflection';\r\n default:\r\n return 'none';\r\n }\r\n \r\n };\r\n \r\n const addServerTask = props => {\r\n \r\n // Disble edited task before puting, re-enable if a success. \r\n setDisabledTasks(curItems => [...curItems, props.taskUNID]);\r\n \r\n // Wrap fetch in a promise so we can get back the 'taskUNID'.\r\n postDataAsync(props.endPoint, props.requestObj, props.taskUNID)\r\n .then(response => {\r\n \r\n // Enable task if put was a success.\r\n setDisabledTasks(curItems => [...curItems.filter(item => item !== response.taskUNID)]);\r\n \r\n // Update tasks UNID so that we can edit it.\r\n setUnidValues({\r\n oldUNID : response.taskUNID,\r\n newUNID : response.newTaskUNID\r\n })\r\n \r\n })\r\n .catch(error => {\r\n \r\n console.log('error', error);\r\n \r\n });\r\n \r\n };\r\n \r\n const updateServerTask = props => {\r\n \r\n // Disble edited task before putting, re-enable if a success. \r\n setDisabledTasks(curItems => [...curItems, props.taskUNID]);\r\n \r\n // Wrap fetch in a promise so we can get back the 'taskUNID'.\r\n putDataAsync(props.endPoint, props.requestObj, props.taskUNID)\r\n .then(response => {\r\n \r\n // Enable task if put was a success.\r\n setDisabledTasks(curItems => [...curItems.filter(item => item !== response.taskUNID)]);\r\n \r\n })\r\n .catch(error => {\r\n \r\n console.log('error', error);\r\n \r\n });\r\n \r\n };\r\n \r\n\r\n \r\n \r\n \r\n \r\n /*\r\n * Component event handlers.\r\n */\r\n \r\n const onClickAddMoodModal = () => {\r\n \r\n // System - define modal content.\r\n const txtTitleA = 'Studying for';\r\n const txtTitleB = `${examData.name}
${itemDate}`;\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n \r\n // System - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 0,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // System - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n const onClickAddTaskModal = () => {\r\n \r\n // System - define modal content.\r\n const txtTitleA = 'Studying for';\r\n const txtTitleB = `${examData.name}
${itemDate}`;\r\n const htmlBody = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n \r\n // System - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 0,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // System - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n \r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // Reference the associated exams data.\r\n setExamData(examsData.find(item => item.UNID === examUNID));\r\n \r\n // Store this items date.\r\n const tmpDate = formatDate(itemData.date);\r\n setItemDate(`${tmpDate.dayName} ${tmpDate.dayNum}${getDateSuffix(tmpDate.dayNum)} ${tmpDate.monthName} ${tmpDate.yearNum}`);\r\n \r\n // Populate the mood array.\r\n setMoodArr([{ icon: , id: 9},\r\n { icon: , id: 8},\r\n { icon: , id: 7},\r\n { icon: , id: 6},\r\n { icon: , id: 5},\r\n { icon: , id: 4},\r\n { icon: , id: 3},\r\n { icon: , id: 2},\r\n { icon: , id: 1}]);\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n // Swap UNID values for a task.\r\n if ( unidValues !== null ) {\r\n \r\n updateTaskUNID(unidValues);\r\n setUnidValues(null);\r\n \r\n }\r\n\r\n // eslint-disable-next-line \r\n }, [unidValues]);\r\n \r\n\r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
  • \r\n
    \r\n
    \r\n \r\n {/* Date */}\r\n { itemData.date !== '' ? htmlDate(itemData.date) : null }\r\n \r\n
    \r\n
    \r\n \r\n {/* Mood reflection icons */}\r\n { itemData.moodType !== 0 ? showMood(itemData.moodType) \r\n : \r\n (
    ) }\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {/* Milestone flag & task items */}\r\n { itemData.milestoneType === 1 || tasks.length > 0 ? showTasks(itemData)\r\n :\r\n (
    ) }\r\n\r\n
    \r\n
  • \r\n );\r\n \r\n \r\n};\r\n\r\nexport default StudyPlanItem;\r\n\r\n\r\n/*** Scripts end... */","import React, { useContext, useState, useEffect} from 'react';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport { IconTick } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This ModalContentCancelPlan component displays the HTML for canelling the current exam plan, it is\r\n * launched from the Study Planner page and rdirects the user back to the Exam Planner page if they choose to cancel.\r\n */\r\nconst ModalContentCancelPlan = ({ sessionUNID, noTime, ctaBtnTxtA, ctaBtnTxtB, ctaBtnFncA, ctaBtnFncB }) => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { curFetching } = authenticationContext;\r\n const { hideModal } = modalContext;\r\n \r\n // Component state.\r\n const [selectedBtn, setSelectedBtn] = useState(0);\r\n const [btnDisabled, setBtnDisabled] = useState(true);\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const onClickBtnDone = () => {\r\n \r\n if ( selectedBtn === 1 ) ctaBtnFncA(sessionUNID);\r\n else if ( selectedBtn === 2 ) ctaBtnFncB();\r\n else hideModal();\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // ...\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n setBtnDisabled(curFetching === '' ? false : true);\r\n \r\n // eslint-disable-next-line \r\n }, [curFetching]);\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default ModalContentCancelPlan;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useRef, useState, useEffect } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport { openExtLink,\r\n getSessionDate } from '../hooks/utilityFunctions';\r\nimport useWindowDimensions from '../hooks/getWindowDimensions';\r\nimport AppHeader from '../layout/AppHeader';\r\nimport AppFooter from '../layout/AppFooter';\r\nimport StudyPlanItem from '../layout/StudyPlanItem';\r\nimport TmplSysModal from '../modals/TmplSysModal';\r\nimport ModalContentExamPeriod from '../modals/ModalContentExamPeriod';\r\nimport ModalContentCancelPlan from '../modals/ModalContentCancelPlan';\r\nimport { ImgLogo,\r\n IconStudyPlanning } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This Login component is not used (may require login in a future release),\r\n * but currently redirects user to the Home component.\r\n */\r\nconst StudyPlanner = () => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Reference hooks.\r\n const history = useHistory();\r\n \r\n // Get window dimensions.\r\n const { winWidth } = useWindowDimensions();\r\n \r\n // Destructure Context api's.\r\n const { userAuthenticated,\r\n examStudyDaysData,\r\n clearStudyDaysData,\r\n examsData,\r\n userExamData,\r\n examsSessionData,\r\n studyTasksData,\r\n updateUserExam,\r\n responseStatus,\r\n resetResponseStatus,\r\n getStudyDayData,\r\n postDataNoPayload } = authenticationContext;\r\n const { setIsInitialLoad, \r\n staticsData } = appContext;\r\n const { showModal,\r\n hideModal } = modalContext;\r\n \r\n // Define some DOM reference hooks.\r\n const trackRef = useRef(null);\r\n const scrubberRef = useRef(null);\r\n const listRef = useRef(null);\r\n const scrollerRef = useRef(null);\r\n \r\n // Component state.\r\n const [scrubberPos, setScrubberPos] = useState(0);\r\n const [isScrolling, setIsScrolling] = useState(true);\r\n const [studyDaysArr, setStudyDaysArr] = useState([]);\r\n const [tasksArr, setTasksArr] = useState([]);\r\n \r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const getActivityType = val => {\r\n \r\n switch (val) {\r\n case 1:\r\n return 'none';\r\n case 2:\r\n return 'planning';\r\n case 3:\r\n return 'learning';\r\n case 4:\r\n return 'revision';\r\n case 5:\r\n return 'final';\r\n case 6:\r\n return 'exam';\r\n case 7:\r\n return 'reflection';\r\n default:\r\n return 'none';\r\n }\r\n \r\n };\r\n \r\n const getBreadcrumbTxt = () => {\r\n \r\n const examData = examsData.find(item => item.UNID === examStudyDaysData.examUNID);\r\n const sectionData = staticsData.examSectionType.find(item => item.ID === examData.sectionType);\r\n const sectionName = sectionData.label;\r\n const examNameMob = examData.shortName;\r\n const examNameDsk = examData.name;\r\n const dateMob = getSessionDate(examStudyDaysData.sessionUNID, examsSessionData, 'short') + ' Exam';\r\n const dateDsk = getSessionDate(examStudyDaysData.sessionUNID, examsSessionData, 'long') + ' Exam';\r\n\r\n \r\n return (\r\n <>\r\n {`${examNameMob} / ${dateMob}`}\r\n {`${sectionName} / ${examNameDsk} / ${dateDsk}`}\r\n \r\n );\r\n \r\n };\r\n \r\n const getMatchingTasks = dayUNID => {\r\n \r\n return tasksArr.filter(item => item.userExamStudyDayUNID === dayUNID);\r\n \r\n };\r\n \r\n const updateExamSession = (sessionUNID, studyPeriodLength) => {\r\n \r\n // Get matching userExam which will be updated.\r\n const userExam = userExamData.find(item => item.examUNID === examStudyDaysData.examUNID);\r\n \r\n // If user chose to cancel plan, reset userExam in 'userExamData' array, \r\n // removing current session.\r\n if ( sessionUNID === null ) {\r\n \r\n if ( typeof userExam !== 'undefined' &&\r\n userExam.statusType !== 0 ) {\r\n \r\n userExam.examSessionUNID = null;\r\n userExam.studyPeriodLength = 0;\r\n userExam.studyPlanningLength = 0;\r\n userExam.studyExamLength = 0;\r\n \r\n updateUserExam(userExam);\r\n \r\n }\r\n \r\n hideModal();\r\n \r\n }\r\n \r\n // Else update exam in 'userExamData' array, adding selected Session UNID.\r\n else {\r\n \r\n if ( typeof userExam !== 'undefined' &&\r\n userExam.statusType !== 0 ) {\r\n \r\n userExam.examSessionUNID = sessionUNID;\r\n userExam.studyPeriodLength = studyPeriodLength;\r\n \r\n updateUserExam(userExam);\r\n \r\n }\r\n \r\n getStudyDayData('userexam/session', examStudyDaysData.examUNID, userExam.examSessionUNID); \r\n \r\n hideModal();\r\n \r\n }\r\n \r\n };\r\n \r\n const getModalProps = req => {\r\n \r\n const examData = examsData.find(item => item.UNID === examStudyDaysData.examUNID);\r\n const section = staticsData.examSectionType.find(item => item.ID === examData.sectionType);\r\n \r\n if ( req === 'titleA' ) return section.label;\r\n else if ( req === 'titleB' ) return examData.name + '
    ' + getSessionDate(examStudyDaysData.sessionUNID, examsSessionData, 'long') + ' Exam';\r\n else if ( req === 'titleB2' ) return examData.name + 'Are you sure you want to stop planning for the ' + getSessionDate(examStudyDaysData.sessionUNID, examsSessionData, 'long') + ' exam?';\r\n else if ( req === 'txtFooter' ) return 'NOTE Reducing your study period may result in some of your existing tasks being hidden from view. Nothing is deleted, you can extend the period again to reveal any previous entries.';\r\n else if ( req === 'examData' ) return examData;\r\n else return '';\r\n \r\n };\r\n \r\n const cancelThisPlan = () => {\r\n\r\n // If user is 'authenticated' update the server, then local data.\r\n if ( userAuthenticated ) {\r\n \r\n const requestObj = {\r\n userExamSession: {\r\n examUNID : examStudyDaysData.examUNID,\r\n examSessionUNID : null,\r\n studyPeriodLength : 0,\r\n studyPlanningLength : 0,\r\n studyExamLength : 0,\r\n studyTypes : [],\r\n starterTasks : [\r\n staticsData.copy.starterTask1,\r\n staticsData.copy.starterTask2,\r\n staticsData.copy.starterTask3,\r\n staticsData.copy.starterTask4,\r\n staticsData.copy.starterTask5,\r\n staticsData.copy.starterTask6,\r\n staticsData.copy.starterTask7\r\n ]\r\n }\r\n };\r\n \r\n postDataNoPayload('userexam/session', { examUNID: examStudyDaysData.examUNID, sessionUNID: null, studyPeriodLength: 0 }, requestObj);\r\n \r\n }\r\n \r\n // Else just update local data.\r\n else {\r\n \r\n // Get matching userExam which will be updated.\r\n const userExam = userExamData.find(item => item.examUNID === examStudyDaysData.examUNID);\r\n \r\n // Reset userExam in 'userExamData' array, removing current session.\r\n if ( typeof userExam !== 'undefined' &&\r\n userExam.statusType !== 0 ) {\r\n \r\n userExam.examSessionUNID = null;\r\n userExam.studyPeriodLength = 0;\r\n userExam.studyPlanningLength = 0;\r\n userExam.studyExamLength = 0;\r\n \r\n updateUserExam(userExam);\r\n \r\n }\r\n \r\n hideModal();\r\n \r\n }\r\n\r\n };\r\n \r\n \r\n \r\n \r\n /*\r\n * Component event handlers.\r\n */\r\n \r\n const onScrollTaskList = event => {\r\n \r\n if ( isScrolling ) {\r\n \r\n const scrollTop = Math.round(event.currentTarget.scrollTop);\r\n const scrollHeight = Math.round(event.currentTarget.scrollHeight);\r\n const clientHeight = Math.round(event.currentTarget.clientHeight);\r\n const newScrubPos = ( scrollTop / ( scrollHeight - clientHeight ) * 100 );\r\n \r\n setScrubberPos(newScrubPos);\r\n \r\n }\r\n \r\n };\r\n \r\n // Open the Study period picker modal, skipping the previous two.\r\n // This is triggered by clicking an events timeline.\r\n const onClickExamTimelineModal = () => {\r\n\r\n // System - define modal content.\r\n const htmlBody = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n };\r\n \r\n // System - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 0,\r\n size : 'small',\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // System - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n const onClickCancelPlanModal = () => {\r\n \r\n // System - define modal content.\r\n const htmlBody = () => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n };\r\n \r\n // System - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 0,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // System - show modal.\r\n showModal(props); \r\n \r\n };\r\n \r\n const onClickExamEventUpdatePeriod = (sessionUNID, studyPeriodLength, studyTypesArr) => {\r\n \r\n const examData = examsData.find(item => item.UNID === examStudyDaysData.examUNID);\r\n const requestObj = {\r\n userExamSession: {\r\n examUNID: examStudyDaysData.examUNID,\r\n examSessionUNID: sessionUNID,\r\n studyPeriodLength: studyPeriodLength,\r\n studyPlanningLength: 0,\r\n studyExamLength: examData.type === 1 ? 4 : 2,\r\n studyTypes: studyTypesArr,\r\n starterTasks : [\r\n staticsData.copy.starterTask1,\r\n staticsData.copy.starterTask2,\r\n staticsData.copy.starterTask3,\r\n staticsData.copy.starterTask4,\r\n staticsData.copy.starterTask5,\r\n staticsData.copy.starterTask6,\r\n staticsData.copy.starterTask7\r\n ]\r\n }\r\n };\r\n \r\n postDataNoPayload('userexam/session', { examUNID: examStudyDaysData.examUNID, sessionUNID, studyPeriodLength }, requestObj);\r\n \r\n };\r\n \r\n const onClickGoToHome = () => {\r\n \r\n // Clear 'examStudyDaysData' so we fetch new data when returning.\r\n clearStudyDaysData();\r\n \r\n // Navigate to the home page.\r\n history.push('/');\r\n \r\n };\r\n\r\n const onClickBookExam = () => {\r\n \r\n const exam = examsData.find(item => item.UNID === examStudyDaysData.examUNID);\r\n \r\n openExtLink(exam.bookURL, true)\r\n \r\n };\r\n \r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n // Setting 'isInitialLoad' to false stops home page fading in and removes modal.\r\n setIsInitialLoad(false);\r\n \r\n // eslint-disable-next-line \r\n }, []);\r\n \r\n useEffect(() => {\r\n \r\n // Calculate the new list position offset.\r\n if ( !isScrolling && listRef.current ) {\r\n \r\n scrollerRef.current.scrollTop = ( scrubberPos / 100 ) * ( listRef.current.clientHeight - scrollerRef.current.clientHeight );\r\n \r\n }\r\n \r\n // eslint-disable-next-line \r\n }, [scrubberPos]);\r\n \r\n useEffect(() => {\r\n \r\n setStudyDaysArr(examStudyDaysData.studyDaysData.userExamStudyDay);\r\n \r\n // eslint-disable-next-line \r\n }, [examStudyDaysData.studyDaysData.userExamStudyDay]);\r\n \r\n useEffect(() => {\r\n \r\n setTasksArr(studyTasksData);\r\n \r\n // eslint-disable-next-line \r\n }, [studyTasksData]);\r\n \r\n // Listen for 'responseStatus' changes and if they are TRUE \r\n // continue updating local model.\r\n useEffect(() => {\r\n \r\n if ( responseStatus !== null && \r\n responseStatus.status === true && \r\n responseStatus.props.examUNID === examStudyDaysData.examUNID ) {\r\n \r\n if ( responseStatus.endPoint === 'userexam/session' ) updateExamSession(responseStatus.props.sessionUNID, responseStatus.props.studyPeriodLength);\r\n \r\n resetResponseStatus();\r\n \r\n }\r\n \r\n // eslint-disable-next-line \r\n }, [responseStatus]);\r\n \r\n //\r\n useEffect(() => {\r\n \r\n // Get matching userExam, then if 'examSessionUNID' is null navigate back to the Exam Planner.\r\n const userExam = userExamData.find(item => item.examUNID === examStudyDaysData.examUNID);\r\n \r\n if ( userExam.examSessionUNID === null ) onClickGoToHome();\r\n \r\n // eslint-disable-next-line \r\n }, [userExamData]);\r\n \r\n\r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n {/* MOBILE ONLY header showing logo & section icon */}\r\n
    \r\n
    \r\n
    \r\n \r\n Study planning\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {/* Page breadcrumb */}\r\n
    \r\n
    \r\n
    \r\n {getBreadcrumbTxt()}\r\n
    \r\n
    \r\n \r\n |\r\n \r\n |\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {/* Daily planner */}\r\n
    \r\n
    onScrollTaskList(event)}>\r\n
      \r\n \r\n {/* Daily item */}\r\n {studyDaysArr.map((item, idx) => (\r\n \r\n ))}\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n {/* Daily scrubber */}\r\n { studyDaysArr.length > 0 && (\r\n
    \r\n
    \r\n \r\n
    667 ) ? ' gap' : '' ) }>\r\n \r\n {/* Cell item */}\r\n {studyDaysArr.map((item, idx) => (\r\n \r\n ))}\r\n \r\n
    \r\n \r\n {/* Scrubber button */}\r\n setIsScrolling(false)}\r\n onMouseUp={() => setIsScrolling(true)}\r\n onTouchStart={() => setIsScrolling(false)}\r\n onTouchEnd={() => setIsScrolling(true)}\r\n onChange={event => setScrubberPos(event.target.value)}>\r\n \r\n
    \r\n
    \r\n ) }\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n \r\n \r\n};\r\n\r\nexport default StudyPlanner;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext } from 'react';\r\nimport { Dialog } from 'element-react';\r\n\r\nimport ModalContext from '../../context/modal/ModalContext';\r\n\r\n\r\n/*\r\n * This Modal component displays both the Instructional & System dialog modals.\r\n */\r\nconst Modal = () => {\r\n \r\n \r\n // Reference Context API's. \r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context API's. \r\n const { isVisible,\r\n props,\r\n hideModal } = modalContext;\r\n \r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n \r\n { props &&\r\n <>\r\n \r\n
    {props.content}
    \r\n
    \r\n \r\n }\r\n
    \r\n );\r\n \r\n \r\n};\r\n\r\nexport default Modal;\r\n\r\n/*** Scripts end... */","import React from 'react';\r\n\r\n\r\n/*\r\n * This AppSpinner component displays a spinning white circle,\r\n * used when the app is loading initial authentication & data.\r\n */\r\nconst AppSpinner = () => {\r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n \r\n \r\n};\r\n\r\nexport default AppSpinner;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React from 'react';\r\n\r\nimport { ImgQuadx3 } from '../hooks/ImageAssets';\r\n\r\n\r\n/*\r\n * This Intro component appears when the site first loads in the browser &\r\n * shows the ACCA brand animation, then redirects to the Home page.\r\n */\r\nconst Intro = () => {\r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
    \r\n \r\n {/* Intro animation: START */}\r\n
    \r\n
    \r\n
    \r\n Compass\r\n {ImgQuadx3()}\r\n
    \r\n
    \r\n Your ACCA Study planner\r\n
    \r\n
    \r\n
    \r\n {/* Intro animation: STOP */}\r\n \r\n
    \r\n );\r\n \r\n \r\n};\r\n\r\nexport default Intro;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport AppContext from '../../context/app/AppContext';\r\nimport ProtectedRoute from '../hooks/ProtectedRoute';\r\nimport Home from '../pages/Home';\r\nimport ErrorPage from '../pages/ErrorPage';\r\nimport StudyPlanner from '../pages/StudyPlanner';\r\nimport Modal from '../modals/Modal';\r\nimport AppSpinner from './AppSpinner';\r\nimport Intro from './Intro';\r\n\r\n\r\n/*\r\n * This AppWrapper component wraps the routing component & \r\n * allows the app to load data & the authentication module using the Context API.\r\n */\r\nconst AppWrapper = () => {\r\n \r\n \r\n // Reference Context API's. \r\n const authenticationContext = useContext(AuthenticationContext);\r\n const appContext = useContext(AppContext);\r\n \r\n // Destructure Context API's. \r\n const { publicClientApplication,\r\n examsData } = authenticationContext;\r\n const { setIsRedirect } = appContext;\r\n \r\n // Component state.\r\n const [introEnd, setIntroEnd] = useState(false);\r\n \r\n // Check session storage to see if we have been redirected from login/logout.\r\n const redirectVal = sessionStorage.getItem(\"is_redirect\") ? true : false;\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n setIsRedirect(redirectVal);\r\n \r\n // If redirect is true then clear 'is_redirect' key from session storage.\r\n // As we won't be showing the animation update 'setIntroEnd' to true.\r\n if ( redirectVal ) {\r\n \r\n sessionStorage.removeItem(\"is_redirect\");\r\n setIntroEnd(true);\r\n \r\n }\r\n \r\n // Else delay page render until intro animation has played.\r\n else {\r\n \r\n setTimeout(() => {\r\n \r\n setIntroEnd(true)\r\n \r\n }, 3500);\r\n \r\n }\r\n\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n <>\r\n { publicClientApplication !== null && examsData !== null ? \r\n <>\r\n { redirectVal ?\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n <>\r\n { introEnd ?\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n }\r\n \r\n }\r\n \r\n :\r\n \r\n }\r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default AppWrapper;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\n\r\nimport AuthenticationContext from '../../context/authentication/AuthenticationContext';\r\nimport ModalContext from '../../context/modal/ModalContext';\r\nimport TmplInsModal from '../modals/TmplInsModal';\r\nimport ModalContentPromptLogin from '../modals/ModalContentPromptLogin';\r\n\r\n\r\n/*\r\n * This ErrorBox component dispalys any error messages returned by the server.\r\n */\r\nconst ErrorBox = () => {\r\n \r\n \r\n // Reference Context api's.\r\n const authenticationContext = useContext(AuthenticationContext);\r\n const modalContext = useContext(ModalContext);\r\n \r\n // Destructure Context api's.\r\n const { fetchError,\r\n clearFetchError,\r\n signOutUser } = authenticationContext;\r\n const { isVisible,\r\n showModal,\r\n hideModal } = modalContext;\r\n \r\n // Reference hooks.\r\n const history = useHistory();\r\n \r\n // Component state.\r\n const [errorMsg, setErrorMsg] = useState('');\r\n \r\n \r\n /*\r\n * Component methods.\r\n */\r\n \r\n const setErrorServer = () => {\r\n \r\n console.log('errorCode:', fetchError.code);\r\n console.log('errorDescription:', fetchError.description);\r\n \r\n setErrorMsg(fetchError.description);\r\n \r\n // Hide the error msg after a set period of time.\r\n setTimeout(clearError, 5000);\r\n \r\n };\r\n \r\n const setErrorHTTP = () => {\r\n \r\n let description = '';\r\n \r\n switch (fetchError.code) {\r\n case 400:\r\n description = 'Unable to complete your request.'; \r\n break;\r\n case 401:\r\n signOutUser(401);\r\n break;\r\n case 403:\r\n signOutUser(403);\r\n break;\r\n case 404:\r\n history.push('/error');\r\n break;\r\n case 415:\r\n description = 'Invalid request format.'; \r\n break;\r\n case 429:\r\n description = 'Too many requests, try again later.'; \r\n break;\r\n case 500:\r\n description = 'There was an internal server error. Try again later.'; \r\n break;\r\n default:\r\n description = 'Server error, please try again later.';\r\n }\r\n \r\n if ( fetchError.code !== 404 ) {\r\n\r\n // Set error message & hide it after a short delay.\r\n setErrorMsg(description);\r\n setTimeout(clearError, 5000);\r\n \r\n }\r\n \r\n \r\n };\r\n \r\n const clearError = () => {\r\n \r\n setErrorMsg('');\r\n clearFetchError();\r\n \r\n };\r\n \r\n const promptToLogin = () => {\r\n \r\n // Instructional - define modal content.\r\n const txtTitleA = 'Your ACCA Study planner';\r\n const htmlBody = () => ;\r\n \r\n // Instructional - initialize modal.\r\n const props = {\r\n status : true,\r\n props : {\r\n type : 1,\r\n size : 'small',\r\n closeOnClickModal : false,\r\n content : {htmlBody()}\r\n }\r\n };\r\n \r\n // Instructional - show modal.\r\n showModal(props);\r\n \r\n };\r\n \r\n \r\n \r\n /*\r\n * Component hooks.\r\n */\r\n \r\n useEffect(() => {\r\n \r\n if ( fetchError !== null ) {\r\n \r\n // If we have an open modal then hide it following API call response.\r\n if ( typeof fetchError.req !== 'undefined' && \r\n isVisible ) {\r\n \r\n if ( fetchError.req.endPoint === 'userexam' ||\r\n fetchError.req.endPoint === 'userexam/session' ) hideModal();\r\n \r\n }\r\n \r\n // Handle error type.\r\n if ( fetchError.type === 'server' ) setErrorServer();\r\n else if ( fetchError.type === 'http' ) setErrorHTTP();\r\n else if ( fetchError.type === 'loggedout' ) promptToLogin();\r\n \r\n }\r\n else setErrorMsg('');\r\n \r\n // eslint-disable-next-line \r\n }, [fetchError]);\r\n\r\n\r\n \r\n \r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n
    \r\n
    \r\n {errorMsg}\r\n
    \r\n
    \r\n );\r\n \r\n \r\n};\r\n\r\nexport default ErrorBox;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React from 'react';\r\n\r\nimport AllContexts from './context/AllContexts';\r\nimport PreRender from './components/layout/PreRender';\r\nimport AppWrapper from './components/layout/AppWrapper';\r\nimport ErrorBox from './components/layout/ErrorBox';\r\n\r\nimport 'element-theme-default';\r\nimport './App.css';\r\n\r\n\r\nconst App = () => {\r\n\r\n \r\n /*\r\n * Component view.\r\n */\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n \r\n \r\n};\r\n\r\nexport default App;\r\n\r\n\r\n/*** Scripts end... */\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n\r\n\r\n/*** Scripts end... */\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\n \r\nReactDOM.render(\r\n ,\r\n document.getElementById('app-root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n\r\n\r\n/*** Scripts end... */\r\n"],"sourceRoot":""}